import numpy as np from PIL import Image, ImageDraw import matplotlib.pyplot as plt polygon_inside = ['1624703953738', '1677843764871', '1684906005406', '1613456188258', '1612354256326', '1614852918378', '1620123908548', '1613365388360', '1612505885674', '1706336250255', '1613478767931', '1614838600285', '1613388991566', '1614762710873', '1711771596326', '1698477566058', '1613193157318', '1614854390976', '1612510162348', '1620191668320', '1621423920299', '1620194317180', '1704953689234', '1613718312299', '1708576356873', '1612769371940', '1620905725978', '1614838400946', '1613190872776', '1613626199423', '1614847953023', '1709112826214', '1615198187105', '1614083311003', '1612605617536', '1614083435075', '1620630188476', '1614159405784', '1620304290692', '1614922517659', '1613111802015', '1614227970144', '1620300938140', '1624882679508', '1614313349704', '1675930368286', '1614142920947', '1614763981694', '1614756881264', '1613195278584', '1624253335033', '1613970013375', '1614849073055', '1615026209073', '1612945767997', '1623912622957', '1611824857184', '1613452777862', '1613024264523', '1624705332258', '1620625798021', '1613805095432', '1614583910642', '1620710869368', '1612931099881', '1611831332781', '1621057609262', '1621338899370', '1613472636074', '1612499030535', '1613128765644', '1612506267698', '1611913320519', '1613195436926', '1612508080465', '1675747639165', '1676529494047', '1613733804099', '1620300381828', '1615200483555', '1675054638861', '1614764748811', '1621055714032', '1613020647492', '1613041148421', '1614314146016', '1614947266743', '1620710081832', '1676092185201', '1614151414246', '1674629069526', '1612336946571', '1611812833957', '1613022788592', '1615201234159', '1621317621681', '1613370839768', '1613805627222', '1697515942343', '1613639066060', '1621411835485', '1620710301521', '1615183467273', '1620714424962', '1622271746930', '1612348658985', '1677665562738', '1620975257262', '1620214384400', '1622183153675', '1614581172645', '1623990371841', '1614579162993', '1620631638556', '1674552289467', '1676444867449', '1620125953167', '1612436341586', '1615183710327', '1622272568267', '1711713693259', '1623730462323', '1711798669281', '1706340026114', '1613373661230', '1615007888207', '1620190173834', '1613456020677', '1624508211578', '1624704506421', '1613475339946', '1612847261783', '1614426642009', '1612520317069', '1711603544575', '1613215660690', '1619612491198', '1674631989366', '1615023852152', '1679740521306', '1620385444112', '1612939457530', '1613726334558', '1674794172481', '1612507455247', '1621073481761', '1709615178320', '1624680226822', '1676267296128', '1614065081380', '1613190646052', '1615187655534', '1675481880024', '1612170970924', '1613019543807', '1620715769443', '1613714119760', '1621411250298', '1700808347231', '1620299043950', '1613992002312', '1613106406215', '1612865031834', '1620102006840', '1613363876496', '1613365769097', '1613021697258', '1674457829808', '1675930428752', '1613627711456', '1614341731948', '1620718134073', '1689750218000', '1613647891476', '1614939283152', '1614595796101', '1613817324112', '1622459306802', '1614759123936', '1624882477124', '1613112270229', '1613190260264', '1704954332838', '1676357661070', '1620298602405', '1676455038371', '1704951766925', '1675417503061', '1612065785634', '1624337464217', '1613720738687', '1619757291352', '1614240115068', '1612418897820', '1623840549803', '1612511204847', '1620968051865', '1613804894809', '1623840981583', '1613453794730', '1620194391561', '1621339059251', '1612585894867', '1614237957666', '1614596602887', '1620904440159', '1698477661861', '1614401357927', '1611832512795', '1613024758259', '1613729264412', '1614235375544', '1613813310597', '1674456394378', '1677910583988', '1614148942204', '1619763820132', '1620883572771', '1614162658878', '1678426503365', '1620127620684', '1711079065249', '1612856718499', '1613387155825', '1613970766418', '1677646753707', '1620890353585', '1621484391239', '1613734283619', '1620360901304', '1678169101192', '1622458778691', '1622438937398', '1711686349604', '1613216659312', '1612603872764', '1624000066258', '1614255056341', '1613636243782', '1613114028575', '1621252770806', '1613994043603', '1612171032101', '1620879428334', '1614843448424', '1611981164281', '1676095946695', '1676545888570', '1612933607572', '1620034631531', '1612867436149', '1614922430715', '1615189824672', '1625031627515', '1614754323597', '1612762346027', '1613020408610', '1620300144553', '1614599770867', '1674629223576', '1680327064249', '1614322067010', '1622439947901', '1675481909438', '1624362483924', '1675744640742', '1615013058288', '1619845271568', '1612251685659', '1620105438989', '1620716089113', '1619754207861', '1698477535095', '1613713539444', '1619585241753', '1674639709355', '1621060111039', '1711688973281', '1614592720632', '1612434538962', '1621230092601', '1613815145229', '1706160646733', '1614332941778', '1613456902075', '1614854128599', '1614058730895', '1614660168650', '1621071091914', '1613623021869', '1614942825486', '1675747575351', '1613215268784', '1612176257078', '1624096601707', '1675747545618', '1612869481411', '1612757727811', '1613627614569', '1615026317829', '1614764363180', '1620276782516', '1679892592254', '1621250248474', '1620038422842', '1613452316781', '1619505105941', '1614228858271', '1614753781504', '1622171913459', '1709011515653', '1613623896162', '1706173823085', '1613454391044', '1613799167778', '1612608692503', '1619758801835', '1612333017906', '1615028032974', '1619674737838', '1621072914084', '1620278478704', '1614062013677', '1621236398837', '1712900326332', '1623821893983', '1612352299545', '1612003945068', '1675398835486', '1706350943763', '1621057351332', '1613727316156', '1621063678446', '1613213428385', '1614062868146', '1621058067952', '1620387844569', '1620902007076', '1674557499228', '1620209993385', '1621311336567', '1621319746328', '1614833388362', '1706178710146', '1613543808014', '1710919159704', '1612174105227', '1613974265461', '1621335171763', '1621487396019', '1613535089528', '1615012149530', '1620192010478', '1619518616455', '1615182369141', '1619756550905', '1612948938270', '1613721807245', '1676436015494', '1620646288252', '1676375580938', '1614330354186', '1677652990725', '1679634096255', '1624272836417', '1612506666007', '1613717660662', '1620277294995', '1620388131197', '1614859597565', '1620628286155', '1621494300599', '1674448780928', '1621312959231', '1674625533569', '1612350582836', '1621247455938', '1622520518838', '1620628909986', '1706173722030', '1698477724887', '1614677638233', '1622171241755', '1613375497223', '1611902025290', '1619757968741', '1613111083562', '1612353226144', '1614593761220', '1620642780254', '1676618786988', '1613632895535', '1709621726387', '1675223820647', '1612761477148', '1615010508652', '1621049488295', '1704949932103', '1711713032207', '1619519554786', '1615199805496', '1674630415274', '1678445520558', '1620886061222', '1614746546096', '1675136806918', '1614413340979', '1674457900066', '1611988204935', '1622177416320', '1624081354849', '1613626423666', '1614055891756', '1614748540262', '1674715094700', '1613038094584', '1613023529878', '1621321226822', '1613625780836', '1620369985596', '1614233892281', '1614314470271', '1614928309367', '1612507639389', '1620883080462', '1614160511257', '1675149928792', '1612432391810', '1613713628690', '1613970146312', '1614341195351', '1614833923729', '1709620810441', '1613475325998', '1620365982114', '1615187714773', '1613467987727', '1620731918548', '1676093735499', '1613626090182', '1676611157957', '1613385818744', '1675930142770', '1613971442380', '1675766059453', '1612245003866', '1621492275469', '1706178907317', '1613628163673', '1620364875344', '1674628320425', '1614165606146', '1611836037897', '1710928832721', '1622112943567', '1619765235247', '1623906548938', '1614771649640', '1677909230671', '1612950606141', '1619765280060', '1613640910659', '1620197390177', '1623670935331', '1706175868852', '1676111357366', '1615032591730', '1675840764514', '1622011918500', '1674558979647', '1613711380850', '1614925179412', '1612508251125', '1676543872736', '1674556564899', '1614150216637', '1612527104343', '1675837674913', '1615008662418', '1679985025197', '1622265957544', '1619671428772', '1614081389626', '1675058576174', '1612762231681', '1613211265566', '1613537299617', '1620472535227', '1675848746059', '1614598487323', '1614750445846', '1613470919116', '1612955318821', '1612261595100', '1613995694750', '1613720944548', '1613620926337', '1621573543445', '1614316962210', '1613545483441', '1621059106121', '1676540557804', '1613646697110', '1614678171877', '1675225465273', '1613370556463', '1612508740132', '1614335706837', '1679649305413', '1676629093363', '1613217145102', '1619675691308', '1613626231351', '1613130995777', '1611827393902', '1711369423787', '1675842457910', '1675062598568', '1611812520685', '1710310381634', '1709011922013', '1674617965381', '1614833559809', '1614859246081', '1612418019402', '1623479040103', '1614078661955', '1613391179623', '1676268891495', '1613542760321', '1612762707979', '1613716255242', '1612243635261', '1675746007914', '1612771613491', '1613734373700', '1615191173617', '1614233388152', '1612154066797', '1620889082337', '1612165947891', '1674618672073', '1615181943100', '1613549959646', '1620191541827', '1615199174467', '1619500742770', '1621575255367', '1619611707715', '1624441303595', '1613474070038', '1614057546568', '1621570203733', '1615878177792', '1676626395452', '1620454101777', '1675746231658', '1613800557311', '1621581535223', '1612931635355', '1615009324290', '1620734452189', '1621341576991', '1619851127289', '1614337028616', '1613974470367', '1624948331888', '1614595033725', '1621401116789', '1615188777560', '1620119138083', '1613556362803', '1613033458743', '1614060982581', '1612932365508', '1614338069651', '1611979289128', '1613626824555', '1614165076860', '1619670440723', '1623912739874', '1615008023101', '1620641309588', '1613988821676', '1613369234328', '1676544654945', '1613540645225', '1674556714579', '1613211552051', '1612767960744', '1612069010566', '1675839940318', '1704955191338', '1620362706922', '1615009358749', '1615184791264', '1614677943252', '1612845544561', '1613027389077', '1613536486442', '1622541013110', '1620727280842', '1675925848998', '1621225934905', '1619524260536', '1615178902732', '1634023060224', '1612851048815', '1621316540672', '1619767930407', '1679719544770', '1620128409366', '1614159591937', '1612424419344', '1613127868403', '1613017430465', '1613547134056', '1674555752170', '1615015885620', '1613370181576', '1621483338491', '1613372997934', '1614945000071', '1613371300919', '1613646784344', '1613641743038', '1613193395385', '1621249217711', '1624254627719', '1612503606164', '1615191174854', '1613107529143', '1620641737417', '1674623704009', '1621249918149', '1615028911212', '1709115688227', '1624086026096', '1614833961822', '1614750495607', '1675403096734', '1619675624054', '1613808500032', '1674542255365', '1676359468126', '1613039180434', '1621582153452', '1613383796171', '1698477864925', '1624946648432', '1612521978809', '1674560938305', '1620620144888', '1613714744798', '1710992467778', '1676548991266', '1621333933606', '1624449115999', '1620299117291', '1614854872219', '1620819646283', '1612502538107', '1612436025749', '1706174255381', '1613820278594', '1613206683811', '1612499535732', '1612510487884', '1706593836110', '1612593294929', '1620622632328', '1612848768844', '1614859086415', '1624682956695', '1614148696155', '1611902384600', '1615024932449', '1614319444169', '1620191201819', '1615179919914', '1615005827285', '1615006474015', '1619611861010', '1614838420150', '1621321712801', '1613022976122', '1612157050779', '1708931074513', '1614249577703', '1620120081511', '1624680724960', '1620194879009', '1613027405472', '1621254101424', '1624084436235', '1613455460178', '1614597648529', '1624946583018', '1676700538018', '1614841387463', '1614849179341', '1620637948533', '1613971971187', '1612606689501', '1619672835811', '1674622819992', '1619505299537', '1614334825990', '1704953877739', '1624703695311', '1624853068590', '1674559589218', '1622440775042', '1619584056797', '1615031465399', '1620815681217', '1620812449347', '1613033981574', '1675916372996', '1613803980293', '1674715441818', '1613387898617', '1711451050123', '1612777540871', '1674631241942', '1612352104164', '1620729535604', '1613971589362', '1614600037447', '1612413431939', '1613973308882', '1614598653025', '1612500618495', '1612850815078', '1612518238011', '1612765405191', '1614147820139', '1620278271362', '1613559525977', '1619765486556', '1612502472616', '1612433234277', '1613386123004', '1623999903851', '1674123381215', '1613625380877', '1613451079181', '1620618958178', '1620193552197', '1613558651457', '1614405590039', '1612510389808', '1612607955448', '1674453763129', '1620024159554', '1623825682236', '1674558702651', '1621324599158', '1675417173426', '1624081846094', '1621494287521', '1613548976372', '1613626253079', '1620900630363', '1613538725224', '1613453157589', '1674626378375', '1674556001941', '1612003087335', '1621060335633', '1621488948189', '1676372975925', '1612163271087', '1612161078787', '1614921471156', '1614405044300', '1624693101997', '1612503876854', '1611832866653', '1621854239679', '1615182260313', '1679912306701', '1620276487549', '1620040195704', '1620886612420', '1674558160207', '1675228535566', '1675917293412', '1614921328564', '1619675099010', '1612345463319', '1613536748904', '1680007595908', '1624079016929', '1613469591643', '1617167339494', '1614678595623', '1612847400101', '1614056997215', '1613200680501', '1623924216030', '1612347680484', '1623408642156', '1613215383125', '1613973598281', '1612339769539', '1676441994286', '1620280203004', '1624359997427', '1613975310421', '1612933046935', '1620363252274', '1621246268401', '1613815726501', '1711714425137', '1677579792470', '1612514804632', '1622626189068', '1620627110795', '1697085850854', '1697692028175', '1612437025353', '1614841508191', '1613543237376', '1613547793975', '1619781749898', '1711430647243', '1619672111044', '1613728098606', '1622171291436', '1614414171149', '1613125788266', '1612780142262', '1619521733791', '1614147944736', '1614848625329', '1612517875944', '1622439096286', '1676372240948', '1619677926449', '1620891032858', '1613120954276', '1614926282508', '1613816515202', '1676094573014', '1676894572235', '1676272594904', '1614251095904', '1613814757853', '1676700135752', '1623988824959', '1679649496512', '1623905483397', '1620888529688', '1620819427181', '1615029570014', '1675241090206', '1612508955211', '1674468439450', '1613025320444', '1619767027437', '1613814323431', '1620040263788', '1613543934038', '1620025682628', '1619697327417', '1624253796482', '1676352170947', '1620299125082', '1615027547876', '1623825538341', '1675339606540', '1620814265840', '1674542734127', '1613803003083', '1614060844733', '1620711174908', '1621249651555', '1674629515258', '1620210549011', '1613044746870', '1614240905319', '1614771354818', '1612948097414', '1614577326957', '1614574913344', '1614339903131', '1674881013341', '1699936525820', '1680259627904', '1623495321871', '1615016899513', '1620212759109', '1614848801401', '1624080391161', '1615010939711', '1676098323887', '1614921360670', '1612755039443', '1615006603915', '1614845739823', '1614334721091', '1613391803645', '1615030731869', '1613977533125', '1676528803487', '1624275632962', '1612007576010', '1612865628213', '1613537793348', '1615196102168', '1614143908742', '1621424554059', '1621936892668', '1622434450202', '1613454627121', '1612501587262', '1620625712701', '1614233166271', '1675312718688', '1620811751788', '1614926604954', '1621330562986', '1619692497500', '1613990762119', '1640264122825', '1613713037613', '1623988942665', '1613022787001', '1679652285332', '1612349671016', '1681358815997', '1612005035150', '1614683895677', '1675311795585', '1614420821958', '1613728818651', '1613368590075', '1612861927613', '1614835904750', '1613373733732', '1623989466232', '1613460469690', '1707975469706', '1674640307040', '1612520598526', '1622180406867', '1704951451879', '1613027385737', '1675064146626', '1622171456403', '1612428979092', '1674620189301', '1620472116188', '1613471973831', '1620215203456', '1612498867646', '1621059660508', '1613038251607', '1613215618486', '1620708736939', '1676368644262', '1621333451641', '1711610001836', '1612600626133', '1612773291825', '1614859586494', '1621575089307', '1614333404235', '1612339972380', '1619610269811', '1711800593771', '1620733794684', '1611896748951', '1677650438356', '1613039124654', '1620199659132', '1674717384892', '1623825613312', '1613459198280', '1613115959969', '1620194717564', '1613623709150', '1622286761345', '1620797182340', '1621239081780', '1614148786119', '1613975893930', '1612175716886', '1621070163453', '1614232919319', '1615019136283', '1612505366604', '1675928146269', '1698309800838', '1674625338857', '1624430661658', '1615182967831', '1614151107176', '1622282876150', '1613536624639', '1709121255076', '1611897838305', '1621488883671', '1621059622051', '1615197987760', '1614401308016', '1613978307825', '1620623074064', '1620819311975', '1619674982803', '1614670496431', '1612778870007', '1613991213401', '1612517677441', '1612263294652', '1620472829170', '1619592845611', '1620789683658', '1613806866734', '1613556223285', '1612521374434', '1674622373482', '1674536288808', '1615186199175', '1679293769220', '1619591844531', '1612327475222', '1620193584941', '1622609072262', '1620277329872', '1621053872317', '1620300764163', '1613384760627', '1614942670514', '1620712974678', '1674537418190', '1615183050800', '1619673372766', '1615028547589', '1613194024856', '1615189262879', '1632293938417', '1677731384815', '1678429118089', '1614318750075', '1613973044348', '1674632119842', '1612782157914', '1615192747627', '1612850865123', '1624967996932', '1709552031344', '1613192406255', '1613458356733', '1620731388979', '1621243956104', '1624258431246', '1619612848849', '1620126542251', '1612066966105', '1674456563517', '1612867317324', '1614083206479', '1676545071635', '1676530832424', '1620295769960', '1613452470583', '1613644821009', '1677818261257', '1619674975869', '1675417039686', '1622458292472', '1613035448390', '1615025566666', '1613473429615', '1620038334914', '1674624497279', '1676351247568', '1621483598513', '1624879860145', '1620193162706', '1613476076618', '1614577366524', '1706174346156', '1619605856379', '1613209218438', '1613799411025', '1620193348480', '1678247686824', '1614577987363', '1612423393178', '1675225493182', '1621401409815', '1621508939943', '1614670002467', '1614252070457', '1614854560466', '1676544613420', '1620381102859', '1612436969896', '1613040410680', '1632026974234', '1621339704651', '1620733842703', '1679906149329', '1619500938783', '1613198708444', '1614146265509', '1675422928971', '1624006264440', '1614232262407', '1620904293527', '1615184216692', '1623825730427', '1613124007189', '1613970173754', '1613209667627', '1613716724249', '1678429034195', '1620642692752', '1675224727849', '1613562920761', '1621320415623', '1614424834487', '1612417730895', '1711684765958', '1621838930951', '1709620422182', '1675337304385', '1620641104013', '1613125905749', '1613385952937', '1620645989902', '1614338978468', '1621250991060', '1620199849301', '1623824012537', '1614919897011', '1613987889531', '1612952214044', '1679119398861', '1615187406468', '1613538560541', '1613561058769', '1613812714893', '1620369179914', '1624079395800', '1711801376715', '1613021042661', '1612327813275', '1613638458046', '1613216150639', '1674534521117', '1679913016095', '1621059701802', '1613022620927', '1614751624685', '1675850540990', '1612351713900', '1621320010391', '1614148751302', '1676452597859', '1675490755975', '1620885484761', '1612608633170', '1614842064975', '1620712109530', '1614147771600', '1620301839994', '1612780223093', '1679902480024', '1619849980789', '1619759130049', '1621414849218', '1612506924547', '1620968770870', '1613468772764', '1614946781891', '1675220484498', '1612504391671', '1621483173129', '1620709979531', '1620797866893', '1704950662473', '1613727810245', '1612351070870', '1620385508962', '1614240284020', '1674628385188', '1612428800246', '1679651953406', '1620388093412', '1612967743362', '1620729837083', '1676542220696', '1620272788107', '1613976613989', '1612590369508', '1613373990236', '1711369305879', '1613104001595', '1612956388354', '1613364367567', '1613210688339', '1621068058128', '1624079532490', '1679914796437', '1621058838818', '1613386534171', '1613469504120', '1675227651946', '1625037557139', '1620888260275', '1614579476137', '1614756876824', '1676954058527', '1620711773625', '1611905718828', '1621574912638', '1620806529520', '1613716628786', '1613191109720', '1615026147383', '1614590518251', '1613123948578', '1621402351490', '1674283633299', '1624600941580', '1613713818775', '1675220563464', '1613389607446', '1679906376753', '1675220176220', '1620210107668', '1619611369182', '1624084406123', '1614321707401', '1621246646969', '1621317074535', '1679905693207', '1619609863557', '1624082467602', '1613041227636', '1612414533334', '1614426292544', '1619583618461', '1620637421398', '1614596630371', '1621072183798', '1620716052676', '1614746562466', '1622171530284', '1613453668432', '1622180070496', '1621488842946', '1704950561904', '1675482006632', '1704953955804', '1613732259130', '1614077734843', '1620902090118', '1620369493313', '1613380871675', '1621334168239', '1620816621724', '1613385207374', '1613822895507', '1614859364497', '1623843977133', '1620189389527', '1612769253286', '1614922239744', '1614168024469', '1612940525136', '1613711785719', '1614593927624', '1613474552014', '1615197240623', '1622171620374', '1679739115382', '1619694469173', '1706176217830', '1676371561876', '1620279756429', '1621853177519', '1620278227184', '1675230211978', '1613214983400', '1619593640625', '1620273532131', '1674560201878', '1619611093285', '1614593950492', '1619671611500', '1614856779443', '1623827642493', '1711370184421', '1613636619565', '1619586666807', '1615189487576', '1612177265821', '1706347708229', '1612355181450', '1614406969973', '1706587965362', '1612432287112', '1674625047722', '1613365103656', '1623490295987', '1612501077801', '1623830302778', '1622281667868', '1620190422088', '1620733432721', '1613017476639', '1679629034573', '1612506362400', '1676530897694', '1614410914334', '1612507509830', '1614924956821', '1614747415004', '1613994439610', '1614255951687', '1614586564390', '1624266642552', '1615029541511', '1615022418829', '1613622453806', '1614247214778', '1619697901573', '1674555700477', '1674550571858', '1621244972079', '1611909597671', '1612777882384', '1675230709640', '1706609849174', '1621683306321', '1621059769416', '1612348950271', '1612436120427', '1623753341989', '1675853079848', '1620620924899', '1614332276349', '1613216684676', '1614835190693', '1621934662573', '1620387765322', '1676551075979', '1613639584907', '1621061256512', '1622544849999', '1612419957800', '1620630731543', '1613710945304', '1623826716780', '1613539052397', '1613112692882', '1620890162325', '1613627544311', '1615188244079', '1675485672917', '1677666749912', '1620644380542', '1620188014029', '1675223834393', '1620188544454', '1614835814610', '1675335655367', '1615183562399', '1674620610163', '1612349837101', '1613728635619', '1613471549944', '1613540820173', '1612414691649', '1612940426121', '1697775617823', '1620385593599', '1613804101918', '1613643927422', '1614231219113', '1613632468186', '1706593177187', '1675220357644', '1620025317173', '1614334193232', '1611914964301', '1614917568091', '1613727599245', '1611900063631', '1613469558988', '1620304407194', '1614749888603', '1614855317958', '1675417713285', '1614683202004', '1624679730196', '1614162545930', '1704950009400', '1620124679206', '1674625737459', '1614580029842', '1613463191508', '1620904114456', '1614928579411', '1613987342931', '1620728327106', '1620642206134', '1613455118773', '1613042622213', '1622265213046', '1612515534736', '1712901236980', '1622290599627', '1619763141939', '1620298870895', '1614252980834', '1622009672499', '1623497148209', '1613643064282', '1613545651561', '1621070938749', '1615187403220', '1624509522531', '1621403663085', '1623924425898', '1612417614623', '1614321307254', '1620715985783', '1613629826109', '1677842159483', '1612944673604', '1706178576145', '1676618710251', '1611894203703', '1614054450555', '1624084623319', '1619673112439', '1612767680537', '1621056385602', '1615188385122', '1622435745366', '1706339260041', '1679119328563', '1612590267194', '1621049529726', '1619782042386', '1697610351030', '1614080695215', '1612958136605', '1621417902602', '1613803960239', '1620816823486', '1613540111478', '1674122916161', '1611816883478', '1613471968135', '1710308461442', '1614227817760', '1615011413219', '1614750500654', '1613543472665', '1613384674785', '1624337389377', '1620644467765', '1612342912373', '1677909055219', '1614924634250', '1611920573837', '1621068713589', '1612951935545', '1612499955569', '1711079326004', '1620367446784', '1620193666225', '1612611672191', '1612004967559', '1620977396413', '1612759285452', '1620371374119', '1613720787441', '1622290139965', '1619592307915', '1624422286585', '1620215779591', '1623926107353', '1614233714959', '1613039397596', '1614672802394', '1615013038963', '1613121727294', '1614928161269', '1620185707054', '1620298832568', '1612852430311', '1615186606219', '1674628993778', '1620120490648', '1614064206121', '1615031161600', '1612437694326', '1679901670396', '1709192664298', '1614836453308', '1704956796931', '1710995598958', '1614150665345', '1614227360608', '1612848800109', '1615184074234', '1710919040541', '1623992999662', '1676371223982', '1619506496306', '1620281286276', '1612587519250', '1613205698207', '1679911307352', '1614233224131', '1674556381989', '1705649756185', '1676547032607', '1613369537175', '1614402939938', '1612952106062', '1612934770880', '1613213772291', '1614162782804', '1614422256831', '1620731320457', '1613726845172', '1706339960412', '1621839632308', '1619758517033', '1611835309629', '1613211934830', '1612854416399', '1674454039870', '1674451029905', '1621678525644', '1613640820626', '1614579923406', '1612521569078', '1620641469151', '1679912476852', '1612412647492', '1620186168167', '1620122260657', '1620728930611', '1614758110033', '1676546241833', '1620624718616', '1619760690914', '1613039638424', '1697174465181', '1613643030974', '1611828683563', '1619518156913', '1614164326550', '1613108441177', '1621076610968', '1615026944399', '1620387903608', '1622284739648', '1674458246095', '1621854813507', '1675747415774', '1615023943157', '1612508600337', '1613540208500', '1624082609877', '1675425044781', '1624958823762', '1613555145414', '1621240388261', '1614753837810', '1623993349750', '1612416445392', '1613024818566', '1612424025758', '1621575637917', '1675417393984', '1611835904317', '1623908027636', '1676441717715', '1622180442682', '1614680718207', '1612503898363', '1612499696209', '1621488911444', '1611896354575', '1612931526403', '1620885897648', '1613449661527', '1621831332263', '1620297328905', '1620188697656', '1699936617201', '1613813664602', '1614754979812', '1613635319314', '1622284949228', '1711778968300', '1621485176821', '1613195520145', '1613385645620', '1706503689413', '1619695272946', '1621312577166', '1622180137920', '1620273419053', '1620026640082', '1675483876531', '1612326660904', '1619523678769', '1621404270704', '1613643518118', '1614929511525', '1614060909681', '1614408113761', '1624259240384', '1620476891572', '1613640490109', '1614918496913', '1620120673227', '1613474227167', '1621400453793', '1614755232350', '1612435574269', '1624969403598', '1621506376350', '1613037678483', '1612346228619', '1619763488754', '1611829085638', '1711773545359', '1613363039596', '1621483419084', '1612433890121', '1675750800840', '1615190058189', '1613970993514', '1612346472803', '1612955908180', '1612350395148', '1613125328722', '1613803564929', '1614763519779', '1709353705555', '1620363759332', '1613474471727', '1613023427181', '1620385631309', '1621340125605', '1614761050376', '1614226767515', '1676699965306', '1697610879946', '1613714365021', '1698310775400', '1612421216066', '1612759776730', '1614856068646', '1613455134769', '1704949676701', '1614763791561', '1620195223648', '1614251277574', '1677911310714', '1624945147718', '1614856541251', '1612766757299', '1621056234249', '1613643338455', '1675229629741', '1619500468175', '1620730248628', '1612440130904', '1613020994851', '1612614180586', '1709012903661', '1613037805582', '1622113559615', '1613383466791', '1620364599971', '1613460320411', '1676696045377', '1612505775044', '1622184146481', '1613631916809', '1613732516569', '1613111983517', '1676631836184', '1614754833472', '1620365785269', '1621248518486', '1622182639378', '1622291174873', '1710917367034', '1621333395224', '1615027634814', '1614770796161', '1622272935362', '1619767744136', '1613023303007', '1613129784348', '1613540729098', '1612503612152', '1621073206037', '1613623267833', '1612843948317', '1614578512717', '1680327130575', '1613208814931', '1620710308449', '1613190930469', '1620189295703', '1621249497677', '1704955807576', '1611922052286', '1613017532420', '1613383393107', '1613542802663', '1621492799994', '1613476201442', '1614340431456', '1612350275106', '1614838836508', '1612768036522', '1613364280692', '1612762515763', '1614918511789', '1621314144101', '1614341123040', '1614837955240', '1615189055135', '1611981727731', '1612587150239', '1711773245238', '1706351792112', '1621236745970', '1614837615329', '1620303922507', '1614837848961', '1621943946080', '1676271705361', '1612434589295', '1704954375290', '1611986679361', '1612956861618', '1613211740884', '1620646332725', '1612607243369', '1674296657516', '1676540385678', '1620121838498', '1614055269349', '1613708256944', '1629353796130', '1675922406397', '1614746033402', '1710991669818', '1613709679465', '1699936680894', '1612845168799', '1613456832288', '1622180316578', '1612603075982', '1613459988090', '1613627094433', '1613034249747', '1678428643800', '1612522421818', '1612265982778', '1624683097492', '1614582069777', '1623821222024', '1612506095772', '1613468276492', '1613625799352', '1613388433882', '1613630398740', '1620798686316', '1614055929527', '1621493369980', '1711778807953', '1620298282299', '1622442087836', '1620647079222', '1620643959252', '1613727937474', '1615027586336', '1613371102714', '1613476885510', '1613644197590', '1613365600090', '1679650088035', '1614151846228', '1676696699456', '1613710315351', '1613029314903', '1621234107053', '1613728565813', '1614337131930', '1620124176362', '1613387491445', '1612348110330', '1614319639638', '1620731153812', '1619694128305', '1612433471740', '1624077591530', '1612351891565', '1613544646018', '1624679812754', '1622171380397', '1614149936264', '1676545610254', '1613021309052', '1620976784713', '1613731057170', '1612960253034', '1611989680440', '1614597768132', '1614572179299', '1611905040552', '1620628608231', '1621318221384', '1621838309597', '1611988392558', '1612505704472', '1624274869383', '1613722774303', '1615192298757', '1613463944173', '1620903731113', '1613386192798', '1612007615942', '1676455168243', '1674558310921', '1709113158169', '1614076835443', '1612168404074', '1675928000546', '1613563192031', '1620382872133', '1620367998446', '1614860884242', '1620901166273', '1613561297558', '1676542746210', '1709623084453', '1613024284100', '1615029773573', '1613472741933', '1620119897961', '1621513456989', '1674460338744', '1614596953354', '1674457983639', '1620277362010', '1619758294979', '1612762245131', '1614082856820', '1676705121917', '1676442334136', '1613636933910', '1622627813019', '1612766054031', '1674298280476', '1615011150978', '1620278559965', '1697089251161', '1621399286713', '1621073983570', '1612351192002', '1674633092249', '1676371256187', '1619677280050', '1679902378274', '1709104369331', '1613132029091', '1620711725823', '1623913001569', '1613453852627', '1676094169209', '1614855155484', '1622171413728', '1676625777522', '1619693530101', '1710475383438', '1676460544763', '1612418615822', '1614766924651', '1614919145344', '1699590204644', '1613715430119', '1614329222253', '1675481011353', '1615185277154', '1620886255491', '1710573072829', '1613717217253', '1675766959137', '1620889764778', '1674557397052', '1613105151500', '1613104088185', '1612948946551', '1612519465937', '1620798752531', '1675853550684', '1613202046628', '1612952233885', '1620793962093', '1621072061500', '1613018177351', '1614233721711', '1614591900844', '1613822373488', '1614754578486', '1622267501390', '1612589318894', '1621839867969', '1620725866130', '1614594469305', '1612343852404', '1613721442789', '1614160016954', '1612759391974', '1615006981190', '1622288798106', '1612434172706', '1613978585624', '1614591627606', '1612173658545', '1624704326794', '1613371611046', '1678426563659', '1613473005478', '1620818305475', '1621423837922', '1620731689866', '1613719846923', '1679903761289', '1612863031261', '1614849396516', '1620733254538', '1614144157169', '1620038540901', '1611833303291', '1619697030598', '1612353904824', '1612943472497', '1622528748675', '1619502583156', '1613975174254', '1617101570620', '1613019641793', '1675417205828', '1620453783131', '1679903522631', '1612264324371', '1613628620042', '1620192477720', '1620185762538', '1624691841105', '1674556546711', '1621830874867', '1620282171898', '1621412489681', '1678439872714', '1613387436744', '1675923743032', '1613621913089', '1612935928254', '1615018687794', '1614763246035', '1674453649889', '1613543655454', '1620718022468', '1613472376012', '1612435606598', '1621253862988', '1674558930173', '1675247471389', '1674455894269', '1613212979855', '1612504250783', '1620023404713', '1612157089856', '1620820330523', '1614229405175', '1704954908252', '1617168585510', '1614843426897', '1612348318072', '1620710879374', '1621234014906', '1620623915327', '1621059758332', '1615006291298', '1613459276311', '1621683755764', '1615184397859', '1613033208657', '1612610279616', '1624679626555', '1614144092759', '1613129558453', '1621336629806', '1611986274648', '1706175671026', '1612502424214', '1613461581724', '1623471550072', '1620453269760', '1614412019770', '1676352236019', '1613973185852', '1709640307016', '1621059605193', '1614857804179', '1615187801555', '1621234075820', '1612849114907', '1617102252735', '1613737247265', '1614937676510', '1620795380136', '1712901559975', '1619585634382', '1624442308139', '1620730945863', '1621070194789', '1614855057123', '1620636609857', '1613210744385', '1675747390846', '1615031529178', '1621510034683', '1679650862139', '1711608885409', '1620642083616', '1622181087421', '1613718369017', '1621483652950', '1612763888990', '1612763633018', '1612761473513', '1613624183524', '1612766909165', '1624688961297', '1675748448549', '1621932362788', '1615187584436', '1613547457461', '1620272779633', '1675840793017', '1709641116635', '1621484289302', '1614164230176', '1612764549901', '1611990067681', '1622012585979', '1675496557138', '1611816985864', '1620791183031', '1614857790385', '1613026269590', '1619504233873', '1676271262977', '1704950161662', '1620215894660', '1620819265729', '1613733611915', '1674458440186', '1674458602465', '1614338397990', '1677652542036', '1620454983277', '1613540925797', '1612864801576', '1711800127645', '1614944124964', '1614246496928', '1614918657179', '1614919970659', '1619500275320', '1612177084237', '1612606478167', '1679113798470', '1613465873503', '1612178668230', '1614163899565', '1614599278600', '1614248714334', '1676624975894', '1620816742199', '1614941565595', '1622117236599', '1706593237845', '1621511676592', '1614250280832', '1620705128733', '1621057947740', '1624696504902', '1706175296906', '1614838114575', '1680587211148', '1612764396772', '1613717245094', '1706352007812', '1613800579805', '1612501589729', '1615009487461', '1613469032471', '1614919358788', '1614580326880', '1712899787390', '1614160867348', '1620886843396', '1613363395134', '1623924350183', '1621489516266', '1617100309833', '1620712642924', '1676283365780', '1613987723961', '1612437837461', '1620195234993', '1621488754185', '1710926257048', '1613816510825', '1621247794078', '1612948019729', '1613215802394', '1621339792871', '1619676478768', '1614830629324', '1614851990183', '1614921659353', '1612508099715', '1612504848483', '1675483839667', '1615200327793', '1611989362994', '1611919394995', '1614831739118', '1612001189015', '1620886478449', '1674626391774', '1612257747464', '1613716843575', '1676274686842', '1620622437516', '1614334259074', '1611996799431', '1614334217500', '1613214782167', '1613807053096', '1709621621734', '1676703509050', '1622434711987', '1613191644200', '1676371928254', '1675852446334', '1614680945716', '1614856072360', '1675926385007', '1620122302168', '1621231897259', '1612854387200', '1620278942229', '1676539595326', '1621060207678', '1624704492450', '1614147163489', '1675745614476', '1614840998070', '1689750138616', '1613992670233', '1620365744320', '1614849776155', '1613456057275', '1615025373275', '1702621047195', '1614399975466', '1711776546030', '1611985575533', '1620638276907', '1675140322032', '1614946258985', '1613388425438', '1613970865834', '1613969599773', '1612240756856', '1611825271766', '1621234697994', '1612520184326', '1697713423842', '1675339461591', '1614922310834', '1614852787133', '1623407313751', '1615195465782', '1620276332698', '1611904705672', '1679901793497', '1675929584271', '1612594510030', '1622180195827', '1676620038108', '1620215157213', '1612246561915', '1614673733688', '1614410576653', '1614166248550', '1620195482427', '1613037595411', '1613363330220', '1616564594180', '1621068091994', '1621340596261', '1620380363483', '1619844151113', '1613037468217', '1621484215973', '1614833586531', '1675418497204', '1677575064823', '1675424527906', '1620301560633', '1676702324246', '1622182675702', '1620887004108', '1622283162275', '1708149872067', '1613989840412', '1711451220830', '1613990609786', '1614677219089', '1620900972461', '1620474030873', '1623479426147', '1679729103205', '1614858164739', '1613472860779', '1612607979098', '1613373816890', '1614408398305', '1613553371674', '1620648164339', '1613036354358', '1620790335541', '1613639475035', '1613623079549', '1615028114255', '1619518237635', '1615029642032', '1623829034386', '1622436797673', '1711797760617', '1612849021978', '1624857809013', '1624881625167', '1613449473880', '1614578663707', '1706347016103', '1615183706498', '1674635452230', '1614147887235', '1624705605833', '1612760057593', '1614854255672', '1619519408608', '1620119947609', '1709551438201', '1613018535261', '1697085556148', '1612591134430', '1611835731130', '1679891317410', '1623919684185', '1623906407936', '1612506907744', '1614404894863', '1677734407665', '1620193505573', '1619669107579', '1615190989378', '1614162509262', '1619779237469', '1713248342397', '1621250269031', '1612613137003', '1614331500344', '1680256684771', '1614334746982', '1620647900443', '1613627347658', '1620451887583', '1675315039902', '1615182326920', '1614917100336', '1620802604127', '1620883513658', '1614751516343', '1612518696828', '1614590582459', '1624945946458', '1612432806561', '1621334966802', '1614852866404', '1622186074119', '1621583135682', '1613039768244', '1613019331926', '1619588880307', '1614851326468', '1710567805181', '1613540932145', '1612507752594', '1612853153228', '1676369968894', '1614676379271', '1612757535054', '1704951541349', '1614163796257', '1613212098681', '1674556456494', '1620188317305', '1621244084941', '1622179588013', '1712900535997', '1619606881082', '1619669691205', '1614925701505', '1611835446042', '1674625093841', '1615023265386', '1615179472385', '1614749113418', '1611904230904', '1614679850689', '1621582569723', '1612435449800', '1675409450451', '1675226932034', '1675337376774', '1620212764985', '1611984237806', '1613214203881', '1674647400242', '1621229124093', '1619758088645', '1612947184592', '1620887533131', '1614330448359', '1623831836487', '1622171671464', '1615193129738', '1613198426389', '1622180782134', '1704981305369', '1620791126210', '1614750467993', '1614837750323', '1613194161943', '1612763189599', '1613559737768', '1620195482409', '1615024744800', '1615013465495', '1613388188977', '1612153890921', '1621233913231', '1624706433423', '1676694266720', '1620731396228', '1619850698009', '1613820584555', '1613626345560', '1614323607625', '1612946130755', '1613045990081', '1675417358658', '1675937124045', '1698923762011', '1621063310720', '1706351717727', '1621838050274', '1613729365547', '1613130238280', '1674633395731', '1612169550309', '1620188779585', '1611829454049', '1614247313629', '1709113262862', '1611835027426', '1614336698054', '1614927302269', '1674559685878', '1678082332855', '1704954121848', '1614067022259', '1613192935627', '1612932982655', '1675399183023', '1674296240176', '1613975605897', '1613712442796', '1677577928634', '1621337183985', '1614832990845', '1620627819051', '1615187467218', '1613539976239', '1614843187644', '1614923684362', '1674632762693', '1711772831433', '1614332973218', '1613132187476', '1619497764834', '1620127944789', '1612868313375', '1674637934017', '1612937369233', '1705648917529', '1624081452427', '1613712548581', '1613545229891', '1615021098458', '1613192455342', '1614407298079', '1613714537809', '1620627677941', '1622434538786', '1614833466031', '1620210522261', '1614420426155', '1619583219259', '1706339650706', '1612433560876', '1614405936937', '1614771092141', '1623988155613', '1621506533090', '1674546418728', '1675224963605', '1613037643163', '1620042508640', '1613977077001', '1620364014295', '1613729811457', '1614408801189', '1612759310182', '1614232350330', '1612949955768', '1612498339553', '1613717976232', '1620362413365', '1620121415172', '1624684640208', '1619594403968', '1620725975276', '1615189098657', '1620819231239', '1620729760030', '1674625138598', '1613367823039', '1620812808079', '1679898427493', '1620375843559', '1620274221429', '1614921989055', '1615181644271', '1622098738809', '1624278261188', '1614832112014', '1621065448336', '1619695708587', '1614236295432', '1614140940720', '1613025881417', '1624960224378', '1613448803365', '1612763793037', '1621234540647', '1675746280703', '1701495567030', '1620190351008', '1613127357872', '1678253877410', '1619520315701', '1613639271025', '1675922346109', '1612507412641', '1613127931112', '1620818210295', '1621403176731', '1620120115206', '1707975212811', '1614745512730', '1612522667561', '1675766885365', '1613539468800', '1621569773330', '1676544165596', '1622267855572', '1615029874331', '1611894624087', '1674629102539', '1712143023826', '1613623304908', '1614248146949', '1613627065660', '1613727237554', '1679546396279', '1623476206721', '1614833352321', '1614235600794', '1710998188893', '1621853527216', '1612507124932', '1614596866994', '1620716203331', '1613641415275', '1613477324381', '1613627070106', '1613214355681', '1708930611552', '1614685064348', '1613806296330', '1612349035809', '1619591963536', '1614932684125', '1620112166877', '1612261053455', '1620189640024', '1623827006665', '1612500564541', '1613125547114', '1619520037984', '1613986688182', '1674551502692', '1613194609558', '1613472326392', '1611979793047', '1620710822427', '1675747451159', '1612847514569', '1674562522189', '1613211514756', '1613126502137', '1679911787702', '1621235604349', '1620128977927', '1613209305667', '1620711922079', '1621493898305', '1615029219233', '1620727636459', '1675487678735', '1620804419326', '1613544938557', '1614840013682', '1621338400787', '1615182424391', '1675331182365', '1615179974030', '1615182792348', '1621336947141', '1612344745680', '1614055041043', '1612521953878', '1675223887830', '1614150358933', '1622099255380', '1612937626623', '1623756578248', '1613374953655', '1613041786033', '1614935997981', '1612867643517', '1612763230044', '1615009228505', '1622171866405', '1621488350399', '1623823019031', '1620455511934', '1619676098625', '1613630517806', '1611912307342', '1611834727679', '1620190247527', '1613716747505', '1613628838213', '1614921766499', '1678426657032', '1621578315284', '1675916374275', '1613210953441', '1614754311518', '1614840686415', '1620364582528', '1613372545803', '1615026038216', '1614926775912', '1611983544965', '1623397807836', '1675416570045', '1612939580008', '1614924185070', '1674123877808', '1679718596398', '1679634506328', '1614406045018', '1615190162512', '1680938638116', '1614254468159', '1612519898755', '1674629173980', '1621509360875', '1613536528066', '1620362556972', '1709615000244', '1613471982805', '1619520904797', '1614754896408', '1613126653557', '1613717153401', '1613637980044', '1679398806045', '1613989621601', '1615030480096', '1612260329859', '1624354825815', '1613978343575', '1613627992148', '1620125305168', '1613025569269', '1674453716233', '1615007973226', '1611832818103', '1613819710085', '1615199446508', '1613202356998', '1620300011015', '1678260690130', '1637667400003', '1614231090345', '1614408277599', '1613540092944', '1675936405016', '1614577997473', '1619499495858', '1711352020225', '1612508384938', '1620276862358', '1674451400309', '1674622418197', '1613650551132', '1615012237328', '1615180289651', '1613463126410', '1614672567789', '1676354893992', '1621249063461', '1620188638062', '1613024265255', '1704961298315', '1613203029753', '1615183920594', '1676632091110', '1677651722851', '1677819718286', '1622181222801', '1622186504201', '1674796773221', '1675483991489', '1676356965288', '1613448217388', '1620120568669', '1613719960134', '1612865383421', '1613729740448', '1679912737326', '1614924833891', '1612259962954', '1620713289019', '1624957413697', '1620644034639', '1613040120934', '1620714903977', '1623750326422', '1712741852669', '1710994656641', '1613211971146', '1676355236536', '1613537760634', '1612501914572', '1613024725334', '1621070830560', '1675938243062', '1612586063105', '1709627834013', '1620818460828', '1704950063081', '1613216905387', '1612507923273', '1612940702057', '1612775623537', '1614598634561', '1620299966279', '1614834138387', '1614856072588', '1679650208876', '1620730439847', '1633585124447', '1674620669078', '1615027841223', '1620705088471', '1612248389724', '1712030299367', '1613129030672', '1674624433957', '1613633396319', '1620627173723', '1615026636298', '1708930447044', '1620801859242', '1612504416405', '1621050643380', '1615020485111', '1612414017776', '1614250573371', '1620629627318', '1620712040879', '1620284670992', '1621057814747', '1620215085271', '1613125519999', '1674553216000', '1621932953873', '1613460085550', '1613129506554', '1621322186168', '1614313265979', '1675312667956', '1675929002078', '1712143182314', '1679914655421', '1624080324293', '1706348650089', '1675230640982', '1674294956587', '1619590266232', '1675481844507', '1614920237376', '1621235010467', '1679119110732', '1676539767824', '1612421000354', '1613195719025', '1614593116849', '1613648661581', '1624438781593', '1613028048290', '1613802885941', '1620880791050', '1621335627569', '1620624005550', '1613472298008', '1621319876378', '1613625098154', '1611902197680', '1612520934683', '1637503110234', '1611912108495', '1613018975039', '1613563179882', '1621234295699', '1613459440274', '1674457778626', '1615025475721', '1613450481726', '1674464530494', '1614931534777', '1619764479331', '1613462176255', '1612264179503', '1613024155369', '1611912478569', '1706176436190', '1613734789433', '1613554699139', '1614150975717', '1620301874030', '1705737587061', '1613027097881', '1613452157806', '1620628887841', '1620218624801', '1612930941397', '1612952511497', '1614421745697', '1705736811055', '1611823622811', '1622291712910', '1704950908472', '1674622576178', '1620795280937', '1612780442845', '1674540554643', '1612586194268', '1623752665585', '1624277024085', '1613191841603', '1709274134907', '1620039673025', '1674453428989', '1620803020294', '1624948403902', '1704955289800', '1611828380129', '1612165303259', '1614918927206', '1614678310682', '1613979623065', '1620630030362', '1613552675123', '1675492947696', '1614919376271', '1624696700701', '1620880124030', '1621325256866', '1623906122907', '1621251629182', '1620705200860', '1613548502725', '1704955398157', '1620276558634', '1621249440412', '1675831579057', '1612952684313', '1612861811557', '1623839707997', '1620186799287', '1613799499966', '1612003828042', '1615197624754', '1621403570693', '1614673486316', '1614835543812', '1619696391373', '1612949963255', '1615188660778', '1615015355610', '1612440952663', '1676545659309', '1620122342035', '1701079271295', '1614579944799', '1620217403568', '1613372042516', '1612416048623', '1614235218509', '1711077686470', '1620191608460', '1612517419506', '1612953604110', '1613969141797', '1623729085646', '1709011711477', '1614851818535', '1613124177879', '1711715069976', '1709192401905', '1613112770224', '1613552879382', '1614752790125', '1612600514672', '1619680320207', '1620820041248', '1613459400247', '1617099627938', '1700206868900', '1613127300259', '1698482712217', '1614756765498', '1613626755279', '1620799431076', '1614938629455', '1612262069206', '1614404669292', '1623913694136', '1620109064609', '1615011377158', '1624703808127', '1620624732480', '1676547093233', '1614146159063', '1613807459411', '1674453590344', '1614152456949', '1614407108246', '1704950228737', '1620379563875', '1613539352817', '1707106593326', '1620123590085', '1621061775276', '1614226746079', '1614585312414', '1676356359025', '1624084550275', '1614751534132', '1613715389713', '1620798023503', '1613970303291', '1613385371883', '1615023311707', '1620625498735', '1612953508881', '1675416970489', '1620187910255', '1620300424729', '1614681424701', '1612954468128', '1613389203568', '1679549843812', '1612589455820', '1697089730853', '1613129219313', '1674453280735', '1615184147023', '1615184268583', '1613211034288', '1620277942697', '1612594613867', '1620127339403', '1675251504111', '1620715990353', '1613717244949', '1611819092032', '1711369263635', '1613987943906', '1611991718110', '1614427171838', '1621064896684', '1619850332067', '1621067969990', '1612157477392', '1614922823371', '1613542731485', '1613993948070', '1612355777647', '1620280921616', '1613388524937', '1613384367401', '1616391835816', '1612352457180', '1614761030096', '1613726698509', '1615184163475', '1614918380933', '1622179846082', '1615017736544', '1678426600984', '1621056340729', '1612784597891', '1613386286991', '1623143738198', '1612955478618', '1613729815464', '1613036470202', '1621334165553', '1614750243981', '1614057109804', '1612172929005', '1613711673488', '1620216286516', '1614597461942', '1674627985796', '1620795666769', '1612343589935', '1621340390236', '1620215024146', '1620022231267', '1615181350847', '1676442554911', '1623828057866', '1614161984967', '1613453033305', '1674626660916', '1613538938833', '1613561492295', '1614061753759', '1612503014866', '1675225021074', '1620192252534', '1613629517841', '1612509546830', '1612342586886', '1622439837999', '1615028487013', '1620798840849', '1622182799607', '1621252795706', '1711347607544', '1613633300307', '1613544918051', '1612434914980', '1615180019040', '1620121572918', '1612783700746', '1679911992317', '1622287570017', '1614919225808', '1624696879392', '1613454513640', '1614751637153', '1621249305040', '1611832637105', '1704954997310', '1612770340133', '1614412181983', '1620644109574', '1614077955789', '1612589014067', '1611823533982', '1611812314024', '1615183331640', '1621231970206', '1621075687419', '1678172060534', '1613471649593', '1620215045481', '1612412572324', '1634023236202', '1613469326430', '1674623363252', '1622441614150', '1674544810467', '1675230593934', '1612346669793', '1621508792906', '1613018299929', '1614925439143', '1613452811325', '1624958311812', '1613191420063', '1614339603083', '1613535248793', '1615179556146', '1619612324454', '1674453326900', '1612008911484', '1619696193492', '1621678114487', '1614058878961', '1612003689603', '1613974109671', '1624601707255', '1621403559151', '1705727512817', '1620185816286', '1612781049997', '1620900799752', '1620187919831', '1612941055369', '1677580196219', '1612528275782', '1622291194496', '1612158167433', '1613038913128', '1614924447718', '1677817823291', '1611818162183', '1613384183892', '1706174875851', '1613732988675', '1612414146555', '1614850662537', '1612776847785', '1620646748758', '1615030898369', '1613382728740', '1611993522981', '1614926526695', '1620631460866', '1614857134089', '1624094466033', '1623476058305', '1624683568160', '1674556497608', '1624275351740', '1674626336638', '1621483566716', '1623494394676', '1613539346477', '1620186770162', '1614928202372', '1674554640299', '1620278186181', '1711799573140', '1614400050823', '1613452223707', '1621684021543', '1614671953481', '1612779814592', '1621061246412', '1620805255932', '1676542888757', '1674820886835', '1612870708104', '1621581341057', '1619584638738', '1613539239554', '1613713709092', '1614750276099', '1613388009710', '1613712501585', '1612356492365', '1613974169749', '1706609979101', '1620281157471', '1677817402254', '1710993860096', '1710310752374', '1682672946776', '1620787803246', '1676358638306', '1622460367163', '1614148111499', '1624087338654', '1613029476389', '1675483102070', '1709115460982', '1620298181250', '1614162542630', '1614330585474', '1623924126783', '1614406647653', '1620039504193', '1612946372302', '1613190075862', '1624683762470', '1620886200498', '1620364552546', '1677652443079', '1614853116473', '1615183115550', '1614164655986', '1620275490133', '1612956767723', '1619500915072', '1620886329070', '1613365835951', '1620817569146', '1613816765732', '1619676077599', '1614590980540', '1613557380665', '1679915561608', '1615186068999', '1614677663345', '1674636056218', '1674628070810', '1676538195671', '1711609139170', '1632293847690', '1612588140187', '1705738047358', '1706342909214', '1614924828853', '1612852165020', '1679656906997', '1624704816424', '1614757486207', '1614150467135', '1613548467531', '1611830602515', '1614144267064', '1674623187408', '1614679134272', '1675832412507', '1622090657803', '1620368750366', '1614426134167', '1709641478381', '1613454239311', '1620731085402', '1676269163263', '1613193019102', '1613709509264', '1622289630011', '1620887923380', '1621401323949', '1615179424016', '1613640967128', '1613465241131', '1613474926715', '1613128381856', '1612329764296', '1620631784751', '1619587863808', '1614749584031', '1613638480905', '1614763472416', '1613632058016', '1614854071583', '1613367273667', '1613973834543', '1612265603155', '1676542975491', '1612507136014', '1612769205816', '1613132621181', '1613363980505', '1614227231972', '1613367014192', '1614576734885', '1620730135797', '1621423304751', '1705735940317', '1612005737578', '1704953774426', '1675484055265', '1621062721887', '1674622138623', '1613038469057', '1612518651148', '1612244099304', '1612501486016', '1613993635829', '1614316277823', '1615007061772', '1620732170181', '1612163667961', '1613381545988', '1614322814713', '1612514857937', '1612937709577', '1612520635477', '1622527116530', '1613380485224', '1613122352355', '1674628431316', '1612349160049', '1612430507808', '1612872604167', '1674453531475', '1619670227419', '1613365255644', '1613996212880', '1613800877055', '1613714431811', '1706349701364', '1620714714404', '1614835325886', '1706173529522', '1706348886315', '1614597428909', '1674294846444', '1612853317642', '1676624881939', '1621506459883', '1620211119044', '1614233221456', '1614232536044', '1706352297160', '1624272767368', '1620477462265', '1613207830194', '1621403377552', '1613459704013', '1614837867887', '1614754323543', '1612353363271', '1614338545937', '1613022173562', '1684905003178', '1622264502758', '1706176052007', '1624681900647', '1615181510728', '1620899516653', '1614596343731', '1620816716405', '1612586186843', '1675058740347', '1621942786946', '1614162629849', '1627469496215', '1613540621412', '1614672103588', '1679739555633', '1612329899480', '1614164454797', '1615018201164', '1614841633824', '1624886269501', '1612431739322', '1621487183584', '1612503126665', '1613624442341', '1612421861597', '1613022172752', '1620276236180', '1701079589593', '1624946466357', '1613639400027', '1613716148855', '1697786790228', '1614921400056', '1612940539205', '1676095590436', '1612242093258', '1612954261628', '1711449127902', '1613555790096', '1706537501014', '1613130607574', '1612341782621', '1613105564714', '1612423786061', '1613477903739', '1682673383086', '1613468001023', '1611817448203', '1614579857734', '1620709612808', '1676975599618', '1620281242138', '1620216876156', '1706177930709', '1613727645767', '1620298517673', '1620126159598', '1612265619894', '1611919506865', '1624001813852', '1613019192232', '1615014455691', '1620361807950', '1614150095116', '1624876183558', '1624946761049', '1612505885716', '1620643350937', '1620893757835', '1612938061463', '1613625197186', '1613130471395', '1614252425982', '1614678333552', '1614075120651', '1620804233719', '1675922212872', '1622012205439', '1620629836226', '1678942943226', '1615030604947', '1675492728198', '1614491511291', '1614916423458', '1612852882375', '1614855088943', '1614682905377', '1674792471176', '1620123400304', '1612771235411', '1621423234601', '1613190184169', '1619847638552', '1614079737274', '1623844302242', '1612501396420', '1621068680591', '1613725465625', '1620301095698', '1677653237471', '1614065338227', '1615191488855', '1612511970685', '1612522032267', '1614846861059', '1613038912036', '1674883560849', '1710995473466', '1615198192539', '1678255979453', '1680326970543', '1615025571549', '1612506157949', '1615191753184', '1624434386356', '1622013524609', '1612345238490', '1613206104162', '1622024834862', '1614839417070', '1674634329820', '1614859756607', '1619590583138', '1614337658154', '1611895463649', '1711369286499', '1613368017665', '1620188355850', '1621243600649', '1675315469543', '1614226205690', '1620629570296', '1613471944601', '1620716518578', '1620797331279', '1676703743218', '1613994636876', '1620121655998', '1614674850804', '1621248579575', '1612439188478', '1676106157047', '1623838894452', '1615179808744', '1706176773069', '1613110346197', '1675335605692'] polygon_inside = ['1624703953738'] text_to_remove = "1613971589362" for item in polygon_inside[:]: if text_to_remove in item: polygon_inside.remove(item) polygon_inside = sorted(polygon_inside) ######################oil_palm_detection########### # Commented out IPython magic to ensure Python compatibility. # Install Ultralytics library # %pip install ultralytics import os import cv2 #from torchvision.models.detection import fasterrcnn_resnet50_fpn from ultralytics import YOLO ROOT_DIR = "satellite_images" # Define the directory where you want to save the images OUTPUT_DIR = f'{ROOT_DIR}/detections/masked_images/' # Path to the trained model file model_file = "Downloads/latest_yolov8_oil_palm_best.pt" TESTING_DIR = f"{ROOT_DIR}/masked/" confidence_thres = 0.15 iou_thres = 0.25 # IoU is a measure of the overlap between two bounding boxes. #It's calculated by dividing the area of intersection between the bounding boxes by the area of their union. #IoU = Area of Intersection / Area of Union #The IoU value ranges from 0 to 1, where 0 indicates no overlap between the bounding boxes, and 1 indicates complete overlap. os.makedirs(OUTPUT_DIR, exist_ok=True) # Load the trained model model = YOLO(model_file) # List all files in the folder #image_files = os.listdir(TESTING_DIR) tree_count = {} # Process each image file for polygon_id in polygon_inside: image_path = f"{ROOT_DIR}/masked/{polygon_id}.png" # Read the image frame = cv2.imread(image_path) height, width, channels = frame.shape model_imgsz = max(height, width) #results = model(frame)[0] results = model(frame, imgsz = model_imgsz, conf=confidence_thres, iou=iou_thres, max_det=1000, save=True, save_txt=True, save_json=True)[0] detect_count = len(results.boxes) #polygon_id = image_file.split('.')[0] tree_count[polygon_id] = detect_count for result in results.boxes.data.tolist(): x1, y1, x2, y2, score, class_id = result # Calculate center coordinates of the bounding box center_x = int((x1 + x2) / 2) center_y = int((y1 + y2) / 2) # Draw circle at the center of the bounding box cv2.circle(frame, (center_x, center_y), radius=5, color=(0, 255, 255), thickness=-1) # -1 thickness fills the circle detect_count = str(detect_count) label = f'Palm tree count:{detect_count}' # Save the annotated image output_path = os.path.join(OUTPUT_DIR, f'{os.path.splitext(polygon_id)[0]}_object_detection.png') cv2.imwrite(output_path, frame) # Release resources #cv2.destroyAllWindows() #####################Read the .json file with polygon_data and calculate tree density######## import json print(tree_count) # Step 1: Read the JSON file with open('Downloads/new_polygon_data_all.json', 'r') as file: data = json.load(file) # Conversion factors sq_m_to_ha = 1 / 10000 # 1 sq m = 0.0001 hectares sq_m_to_acre = 1 / 4046.86 # 1 sq m = 0.000247105 acres # Step 2: Merge with tree_count dictionary for key, value in data.items(): if key in polygon_inside: if key in tree_count.keys(): print(key) value['total_tree_count'] = tree_count[key] area_sq_m = value['field_area'] value['area_hectares'] = round(area_sq_m * sq_m_to_ha,2) value['area_acres'] = round(area_sq_m * sq_m_to_acre,2) if round(area_sq_m * sq_m_to_acre,2) ==0: value['tree_count_per_hectare'] = 0 value['tree_count_per_acre'] = 0 else: value['tree_count_per_hectare'] = round((value['total_tree_count'] / value['area_hectares']),2) value['tree_count_per_acre'] = round((value['total_tree_count'] / value['area_acres']),2) del value['polygon_coordinates'] del value['fieldmaxlat'] del value['fieldminlat'] del value['fieldmaxlong'] del value['fieldminlong'] data[key] = value # Define the file path file_path = 'Downloads/field_data_with_palm_tree_count.json' # Ensure the directory exists os.makedirs(os.path.dirname(file_path), exist_ok=True) # Write data to JSON file with open(file_path, 'w') as file: json.dump(data, file, indent=4) ################################################################################################# ###############write the field details on the image############################################# import cv2 import json # Example list of field_id values polygon_id_list = polygon_inside polygon_id_list = sorted(polygon_id_list) # Process each field_id for polygon_id in polygon_id_list: # 1. Open the .png image ROOT_DIR = "satellite_images" image_path = f'{ROOT_DIR}/detections/masked_images/{polygon_id}_object_detection.png' img = cv2.imread(image_path) if img is not None: # 2. Read the .json file json_file_path = 'Downloads/field_data_with_palm_tree_count.json' # Replace with your JSON file path with open(json_file_path) as f: data = json.load(f) #print(data) # 3. Extract data based on field_id if polygon_id in data.keys(): #print(polygon_id) tree_count = data[polygon_id]['total_tree_count'] # Example key, adjust as per your JSON structure field_id = data[polygon_id]['fieldID'] farmer_id = str(data[polygon_id]['farmerID']) land_id = data[polygon_id]['landID'] tree_count_hect = data[polygon_id]['tree_count_per_hectare'] tree_count_acre = data[polygon_id]['tree_count_per_acre'] # 4. Write values on the image (example: put text on image) text = f''' FarmerCode: {farmer_id} \nLandID: {land_id} \nTree Count: {tree_count} ''' # Position to start writing text x, y = 50,50 # Calculate text size to determine the rectangle size text_lines = text.strip().split('\n') max_text_width = 0 total_text_height = 0 font = cv2.FONT_HERSHEY_SIMPLEX font_scale = 0.5 thickness = 1 # Get maximum width and total height of all lines for line in text_lines: text_size, _ = cv2.getTextSize(line, font, font_scale, thickness) text_width, text_height = text_size max_text_width = max(max_text_width, text_width) total_text_height += text_height + 5 # Add some spacing between lines # Create rectangle coordinates rect_x1, rect_y1 = x, y - total_text_height rect_x2, rect_y2 = x + max_text_width + 130, y + 90 # Adjust as necessary # Draw rectangle with semi-transparent white color (opacity 0.7) overlay = img.copy() cv2.rectangle(overlay, (rect_x1, rect_y1), (rect_x2, rect_y2), (255, 255, 255), cv2.FILLED) cv2.addWeighted(overlay, 0.7, img, 0.3, 0, img) # Split the multi-line text into lines and draw each line lines = text.strip().split('\n') for i, line in enumerate(lines): cv2.putText(img, line, (x, y + i*30), cv2.FONT_HERSHEY_DUPLEX, 0.8, (255, 0, 0), 2) # 5. Save the modified image with a new name annotated_image_path = f'{ROOT_DIR}/detections/with_count/{polygon_id}_annotated.png' cv2.imwrite(annotated_image_path, img) ###############################################################################################