Jovian
⭐️
Sign In
In [2]:
__imp
In [3]:
PATH = "data/landmarks/"
sz=128
bs=32
arch=vgg16
In [139]:
pd.set_option('display.max_colwidth', -1)
In [4]:
torch.cuda.is_available()
Out[4]:
False
In [5]:
torch.backends.cudnn.enabled
Out[5]:
True
In [6]:
df=pd.read_csv(f"{PATH}test_submission_precompute_5.csv")
In [39]:
df_aug = pd.DataFrame(df["landmarks"].str.split(" ", n=2).tolist(), columns=["landmark_id", "confidence"]);df_aug.head()
Out[39]:
In [40]:
df["landmark_id"] = df_aug["landmark_id"]
In [45]:
df["confidence"] = df_aug["confidence"]
In [46]:
df.head()
Out[46]:
In [47]:
df.to_csv(f"{PATH}test_submission_precompute_5_expanded.csv", index=False)
In [48]:
df = pd.read_csv(f"{PATH}test_submission_precompute_5_expanded.csv");df.head()
Out[48]:
In [258]:
def find_by_landmark_id(landmark_id):
#     temp_df = df[(df.landmark_id == landmark_id) & (df.id != filter_id)]
#     temp_df = df[(df.landmark_id == landmark_id)]
    if landmark_id in landmark_index_dict:
        temp_df = df.iloc[landmark_index_dict.get(landmark_id)]
        return temp_df.sort_values(by=["confidence"], ascending=False)["id"].tolist()
    else:
        return []
In [75]:
temp_df = find_by_landmark_id(df, 13170, "ad6e07a847fe912f")
(2846, 4)
In [82]:
def filter_from_list(id_list, filter_out):
    return [k for k in id_list if k != filter_out]
In [84]:
len(filter_from_list(list1, "c3a5a9089c40a853"))
Out[84]:
2845
In [246]:
df.head()
Out[246]:
In [256]:
landmark_index_dict = {}
for index, row in tqdm(df.iterrows()):
    key = row["landmark_id"]
    if key in landmark_index_dict:
        lst = landmark_index_dict.get(key)
        lst.append(index)
        landmark_index_dict[key] = lst
    else:
        landmark_index_dict[key] = [index]
117703it [00:09, 12136.93it/s]
In [230]:
image_index_dict = {}
image_landmark_dict = {}
for index, row in tqdm(df.iterrows()):
    key = row["id"]
    image_index_dict[key] = index
    image_landmark_dict[key] = row["landmark_id"]
117703it [00:10, 10769.65it/s]
In [229]:
df["landmark_id"].nunique()
Out[229]:
6806
In [220]:
df.iloc[[35839, 57415, 58826, 108152, 111053]]
Out[220]:
In [257]:
landmark_dict = {}

def get_match_by_confidence(image_id):
    landmark_id = image_landmark_dict.get(image_id) #df[df.id == image_id]["landmark_id"].tolist()[0]
    if landmark_id in landmark_dict:
        matches = landmark_dict.get(landmark_id)
#         print("match")
    else:
        matches = find_by_landmark_id(landmark_id)
        landmark_dict[landmark_id] = matches
    
    filtered_matches = filter_from_list(matches, image_id)
#     print(len(filtered_matches))
    return filtered_matches
In [78]:
list1 = temp_df["id"].tolist()
In [72]:
" ".join(temp_df["id"].tolist())
Out[72]:
'406b3b6c8d0dc493 c3a5a9089c40a853 611dd1f6c96e007b 04082fd6e4ff65e4 632d125e8f3d0d9b 1b4cda5ff80d9e36 8cccf05f5af8f8d0 170bb691450bb6cb bd6060674a88ce5b 57dbd47178aec95c 5ecbc12d2d5db480 8327119521e4bdb1 62d351e76d1cf976 c7f67905148a772b b821ed6cb30f8772 d6fc53649ec5b5c0 0f1e4162f22f9d77 0ba9ef834e72b8b1 4860e9c433e95fb6 542307c83ac3ee53 eb6a632fa4aeee18 da2ecb52880fccad 81d21d2d0c38bb05 7beb53d7a78eba2f 951f3536211c5d7f 3ac75afe114563bc c5210a5a0a3685fd 35cceabfb59417d1 eeeacffcfadfe1cf 6c9487555e58915d 2f3007e359f62ca0 a9f7ed83b33990c8 ac6b7790c760d179 f60dfacad5a216af c309311aac1d5e63 7c037a7ba838f869 612e610dbf08106a c9e7b2919fb30aeb 50406b5b253fed54 911512cd6c148347 c8c1a5980304870c ee47869ceaeac2da d940549ed6b79379 5baf37e310c17187 e9cccba508250954 96bf00007e546391 64e0c6cb7d9b458a 420d45e1b98d856e 1397d9cd6a74c7b5 75f0e7aecdbb4ce2 7ee40131fb542929 690fcf66ba5672f3 c6ec7c15494ef58b a45b67b3b1bad85f 5720eb4d9c4dd86e a4f475c5e9f2756c f74bcd604a86e562 321275b75f9bf66d 62e9f13a39b7ae9c 611fe1ead05ce832 dd9a4eeec8c8fd0d 482667258e3ed237 c42722fd56bace98 3da00e06018b05f6 a9dc203fe870bbe9 86080dd79ea01e69 936c1f3df1e0e2cb 5bf1de24d621d9b9 d62a33d060501c94 82a3463d167b86bd 42604645b23c7b39 a45ac691a11e7d85 2159b3279c84c693 5041a4314344c17e 623cbcde254a0b93 204b0d77f84771be 283af65ce59790e2 cae90dd23b522c8b 2fef9200a595b0e4 7e1e90f064e04d30 381fcb2ef1d9d0fe cb42be9554651ffd 98c2eef0d904f5ec 623f8cb695cf2989 7078d18ed695caf9 cd05593db6ee972a dbf1da5ea08c2ba4 3eb0141ef76e3ef9 e2dd026ee2d57c4a a57f927a5a09a934 bd28debb1e1e24d9 9622825966da4ce0 f842194712c437a6 90348c5f89fcee59 ce2adc774e779893 a0b9b904e6183392 3d99a68bd3946641 9536fb63e41bbae7 672bac2d20eac716 08db20a4d76dd572 3df326445d11c562 c5ac492c37cafc2f cc5fa5239365ff0b 4299dc787dedcda2 249342d85ca1fe3e edfcc11b671a1811 989d7c4546a8bc90 30e683d11dfba311 0addcb78d7243b38 31a0d4de8c935e3c d67d53b921e8067b 3cd9b179661830e5 4b24d1fc21043639 0de552aa23304fab 2b67a6300e91c9c3 4272f7bcd8db17e2 97c4fc7a301ec23d e5aa85ea52533093 14116c41f489e26c 9b7651eb1f0b9746 ae61376cd9fab939 49b2801f97a347b9 73c2bae24d54cdee 05a3c1ff806bbd90 82029043d327557a fb0ad8d961486c6b fdb8be52af6ea3bf 396291a47823e71e 4626cae47c9e0289 9fc71d6155290929 e33b3133985e3fdc 27c2b8cb29de10c8 6404613e05a51eb8 54fad072a2d99dee f83389cc82517cf0 82c1dd6f7c36c2f4 56e96309c60f32c3 5f6ed5b9dc2b9d15 a210575818f73b11 f5ca7e6ba06fe521 a6d1595590dc4df9 a450506d06628d3f 5f4afde15543286a 76bc04bd69999e27 e6b8b03ad4d9157a a83c8d0b36dc50fe e7be61562bb6e07c 7e3a531dbd77178f bb3c1ddbe98a3104 dd5d88053db4af41 e3cc46627900438a 4bec9436a04c1444 d5b25f2bdc87f472 efa565306522c0b9 86311562fa9cb2cd 49c68eba3d9c1ec8 eb8d0e8f3e25d83a 11021d59dbfa8057 5d65fb7e2d28b7a0 e115448721696fd4 bdd56471e146972a 4a8a36fbd8b2d340 0546a7ac008fd653 2e15881fc0614781 a0a33a504a69daf1 af39130679e49968 26b18c3e8fa33747 d2bcf8937103e48c 516710550b77aed6 2ee662e04dbdbb39 f09d3c88864427c1 b0d180c478f2609e 6dfa8fd7334cda94 a85d3528669313cd 44b63c7131ec0d29 ab5a2a1568133e41 98e5bd7b37d65cf8 29456283d4d843cd 13dfc728d0d263e2 342afbbbadc440fb 50d255c545ab0f1e 530719b60a96dcb7 35cd6b17ba12eacf 65da4f447c40bc03 a2bb8957f3b1beab d76c127469448630 b14bb8379f154577 1e0fb7d94fecba86 abc661fdf2a1c515 68a98ee223f3c97e ebaed17712bb6afa be1bb45e3d77fb79 9b2d9c1b128481c8 57a81f874d1c46de bb63a2e290572edf f94e82210ff12b1b e7379213d34d5017 abb774b171442b8f d7a6d438e29143c2 0f88d6471d145f95 09e0408d8bffd220 c4d6768217740fab 452e501609c011e6 64623730d57d2e54 6fa7c34b875755d7 816a81d807e98d58 81d4a772d0c04920 55e66f20fb740521 f00521faa42cc2c0 15c9630cc9e691b6 6695bc0a621a21b7 11a547c5c7022693 1a64c85e094e4153 a5d6bfe269b91eaf 21b117b8400f2590 bae8b2fbe5125ec1 5de599663d9261ea 374ad06323549129 c5324fb250df1b34 3b9e3c970d7a3d5b dbea51185c00d774 7079f594fe433991 34f917858dac2bbf 7e16dc608d788eae e895892e19597a19 6b8fda0daabd28e3 e0916939be64d1fa fc2447fd8b5307af 92bd9f7d70c36291 64b29b2f41633605 d4c5963ec43d8daf d80f88b27f31602c 2d5bf074b55a1cd2 48f1b05e467928dd bdac869fdcde38c2 e5b9f0ce1cf1fa61 7729a6a8c32fdf76 519afb4be7372a8c 06b86ef2287ba83c d711aa660e23e35a ffae9c56779b77a9 f79e1d794f45e8af d9662bd009d7ea43 e15c0e8b22d010b7 ca50ac347627c331 3f366c9e0cf5a349 9926784019261d60 eeb58e755ee2cfc7 81a47ef582bd1980 83bba72a2a98aeb6 55dfd2580aaabd34 b87e2befcb258beb 5996aaeaabd338a3 8ff8553e57d9ce70 daf376fffdcee775 f9448e74571f6e52 17d7c5d7485bbfad 9768d7f14e433d48 49f41fb74fbcb8e3 b5044199f1b1f84b 9a76ed56bc4e839c c900314cdc0d8c93 ca04b9e6058d74b9 710eba6507f9e1b7 893b031eba0c9435 1fdb5a9c5d9990f6 857709759217265b e634e7feff3a0e2b 90b94ea85c8519af 7ea527c325b09869 e1653a73e948987d 892cc5606e6a4bd8 3d8ec8cfaedb20a8 4180ee3e776a1faf 9de1833727e83e31 566b03c5e1cd92a6 d910d30fcbf7eaa9 68f8113145fb9ef3 67478117cdc1c89e a019cd1978998c86 a47e5ab0fd5321be 51fda2c983883d91 4cf9ce31c79fe2bb a23cd2cba914bb7e 57bef538935b52ee c35ecb6c3f8859f2 e8cfa2ab1226cc4e e353da41cafc4612 b7b4c03f51f9dea7 ff7974d5c053823a 2936d3978c23d542 f9e965c46144f9d0 20c899ff6aed4a62 a2e7642686266557 18b75e29b760d388 3ad7c6aa92f69f6e 29061303393832d7 94dd43555d98f352 9ad09e1bd6095c14 0ae0347d88a9ec4b 94fe608bb40959fb 2c64a63eede6e559 a605f4e13c12a31e d1d53849aa758aa5 50bcfb7947fe3785 6ee4b2c804e5315e ad0bc4c926505953 f4207f560f635985 d8083db654e3a9f9 296cfd03df2ffa23 14276f90a3244202 dc0953f003537326 5cb628d4751ddcb9 4b1d780f8a5efedc 0e3624775883a93c 0c06ba989c0a088c e02c2a87107774d7 6af4907e4f96dd79 7d07f0fb14f7d946 33dd2216b41bd3b3 7c40b9001670ac49 ed2db328ca0578f4 251bf26223c9ac15 a59a61fa147c4b4f 5c6944dcf9721645 3b0e94a3d55e7f86 e539d1eff9258485 5cd5cbefc99121d6 2917b36a294a404b 7a1ebce8d59ddd07 f049c8b6e167a110 88f054f11bde04b1 e9a000f7c4f68848 3a24df2313f3919e 5bef7dac69a17a96 556bccb61719b1b0 eb581ba830ab096c 84eedabf0053cc8a 5ef1faf9a6369b1e 07479058c0718bcb 45a17095c0192035 fb891389001f2a65 5a62ffa78b5dbe0d cf61bb9ad2eb5a9b 080bb721e904a47c 05848d91a627a0ba d7097b3922b033aa a97e2539c7db7d4b 4e6c452a4e6d0f4b 58b1b9b767457c11 4ec251c852204be6 6285b2e9ec8330cc ad35a3d5d57f47ef eb569864f8ea138e ad2318944491da80 b330980310b4510d 11dc77689955966f 7f47b7504a4a443a de93161cd1f6cfb8 39bdd311484f9c19 b2c77effdd0a5d29 34178ee9e1bb9a63 b037d2f6b2b20284 978185aecd4d6dc7 7adf7b61d6740edd dc6f47d740b200f7 1ab1acae494e6ad9 586a9d51ce8e4476 f2df49d96c5ce1f6 7b69e7457b38b9bd 15e87d497a6df918 42d292b4078cc8f2 fdeb5ad8d41c9cc7 5819f4e0f8b00d6b 31f579027e520931 3d95b4673d998ed0 3b458a0b391ec2e5 cb7eab7022146c4e 18882d91d4102a08 00acb4de5715eb68 e8ddce91775f1c0c 8f22f1b34f23c55a b328b1f1f38deafa 951d9ec05089fb13 8632d54b77d823c2 b2c446a7acaa26dd 96186cc4c969de6f d49169e60d87edaa aa4c0952f1836f7b 734c698fcae9db68 36fe07fd5f43b147 d303b57e2a4048cf ccdd023abcd4053e 924de6ab04c41aa3 de2c482507c2b46a 769de2506f3de5ce 0b90c9ac7ab71670 48240a20ece6c984 b27c90d7b09994fc 6988192ca57f4874 c0a364361680862e 81becd403ea5a8df 7f4f7b6a68f2b43d 4f8da938fa37073a 7f2b2f42f666f671 dccc7137bb1379ad e334a2c63380fa09 c9686faa9c3a47e1 38723a7744263e7e 6d2fe451a05faacf bb67c36e0b6b974e e232bb587417adea 84f87e41b24207f6 ebaee121cc80f5f8 73486f5df77cb1d0 4d0bf972a8c2164c 7c59d527a30b5dc2 aba929c6f295bac6 0c0bbc25c4231737 98c9e22134a266eb 229a4f03dcf3e12d 2159940ea7aeacdc 8a7fbf89ead5bb66 f74e183a8868129f 0eedc7f5e21bbdb4 7b0c65352e92193a ae9ee609c0f5f983 9368dc1260b20859 d5f936fdca1f6f87 db499ae5877d76d3 ef64e43cbcf6455a e5cd4d8d35bc8136 560d164f7698b0d9 69e87a57edab3822 b389305f4c54b61b 62d2759409ce3b91 907a089f28e1e67c 008d8ace3de6715d f6530a3f0b5c292d ac96fbb21d434d5c 013fc60492662c35 64755a1bbdb09cea 97bd79e1c4270d15 ae47513891f54043 fea60c5a5fa0e317 ff0c62b599f35cf3 37588b8ce8656e01 e8fabbb48ac6440b 654630c9ff0b5408 e9295000383299f2 b7ff00e76cdf7076 1a1456efd531b98e 3b1ae1eaa7399f01 2683f74b78ea0dd4 13261e426c70c012 a9912cfa41b7ce97 1cad77daad3d7764 d583ea23ba207248 f30b7cd13a33ce0a c9bc5bb8876ff654 a804af6506bf8b2b 9e84744beddf6a1a 22ad5fde60fe6fa7 c8d2d94eb4b4a09e bca53f5f179f0989 950b6d9115d20adf 15e62a4393d68245 2aa60ce5392e274a 402c052b5f6881dc b6aeb5bc37f55be9 c94c64f0126d4f75 8fe8b0eed430bd3e 0f4948f57841668a 4ae88abd10608604 783b2b6c678a7604 dab054324f6b6b1e f7dad44c19ab122b b84347fc00567eba 11a00695b500a31e 781d57253e87a951 2ddb8f0c9405fb89 d0c44be7ccda8a9b c172afe4a8ad5973 a0fe775c5c433740 540def162e2afff0 1c4b9d01ba448738 b74b7b784a9aae9e 79865c80f6403410 6d43aee15fa5480d 4a0f3df96c9d4d23 9ef30dac3e9fa25c 8820c2637f6fbe04 706d728689e85212 e32df548f2eba65f 7194269998f89ac2 d0a807f9ab85800f cbf26907c406518b b4ef2f2afb4b866b 4da99c4cd262204d 4bd3d87ace1e3095 b53f3abd8ee4c44a f778b4751a2d9fd7 766b936a62cb519a afcd8895f3d16b17 f14287db2c067e56 b051cab7ffdafcf5 169a6f7880cd5d82 f6dcabd4dd09e41d cff7afc6c16770a4 f3ace2b292f817ee bda2d31b4044b71f 8668a70410de7384 c92bdbe3a196da83 7d0784f62f3c3cbf 055960bea78c846a aa2b16a202b2a725 35b27cb0d27f350b cc44d127b3ae7015 72d30b71913e7b14 1a7a2afdfe2731d4 9747c734bef55c98 23eca44c66602491 968ac7975f4d0643 7e191f659d23fa71 e023e3986afc939d f60696b845c67f27 94e689d5e4e80222 76043900de5abe53 ae65837884f95ae2 0ae31a67b8c56c23 69ec3c0d5c3c8bfe 9b5cfb0cb354a4ed 0b6ea19260ee2992 e6888a942451a263 b323859c03f3139f f8242e57869b5ec9 4d15f2764a03822c f251e82bda0b7c47 5fbffad5833d4770 56d404114dd923d4 b85349d0273c1979 848b1617d2206f36 b99a7cdcdaa25f0a 3912fa98050d218c ab31ddb100ea2c2d 460b75ea07527a67 8b85f689b2a6d2ae 119fd0d4ccd3ee63 198fb9255a353cba 4ffbfa2033807cb3 41fbcde273606363 922981e1a501dc01 358d839d5d9e885a 5cc40b5de320b889 169c2adbd21fa501 a189901f3aeec7d4 adccc8e6a513939d 6a9168e84e8d6938 f038ecfa658bc6b0 70c81cc2adc7a812 f92e5b9ea5a0eb39 ea61b288030ee41e 0bef1e987b461562 a91f41d73416fa99 60ff2ae7879e7631 0625c36b96bda63c 9a2bfa4338093c4d be548779b8d32ddb 22b89dcd2df2ed37 061b83b680c17c4c 65c521973eac7dca 3aa82ddce2491f84 3ec78c50af4fb1b8 a43b9f72108239a3 ff3aaefd18f254b5 68c7466d8f3fcd51 1cf11b4a00ea793f d50546cd9bd11d6d 165c3cf28c27307d 852e63678088000e 36a09885d58eb607 3e88a4b106c3c97b 796ed54179048ad5 465608df24904c21 0e71f45907c64870 ccd9b5f8fab8a841 c6ecc1566827ca02 ff723c82799126fe 961979aa094fdfe1 96a441e68607ce93 030b4acc512c6d59 5ca8bbdc97fe5f77 6344108305798cc3 88927d6e53cfe556 1098786208fdc4ea 06dd07a2d2472474 e76d9020ceff606f 1d918c7c4b2657bf 18e899244c1ec6ad f4237760ede05c2a 32eabc1f581fba79 511e3ef407afc6e0 724d6c6acc3a48ce 088009757bf2807b e7fc87169e47e6fc b80cdce528cf6962 c4d178525aeb57af cf2f12a5d9432427 4e314feb1472ec1a b2a5bbaa0bd4ec61 945f068321c5f1eb 74217c880a3bf458 452e24df5b0f6a32 c56a851e7ce8f1f1 77f3af6c7b8e58a5 d381a0f915286464 32cc1e1db98d4c29 912604fee0bdf1aa 3672c1b760a89e38 bd56c2aa2367a2b1 279cd56e1c042058 264aea41d6f570ce 2dbf02a104a19975 3b123abe9c319410 c2a7ae2ae552d674 98d990d17204b5d3 db14b2a66d620cb0 b9df9c9c335c2f15 1024c4e5de5729c2 f849684fc99b7614 4e24569fa42203c2 b412736865c2638b ce985da7dda1da9b f130950ca7cfe713 e525826e10e0f19a 50ffca2cf0bfa245 c5cc26355e41eaa2 75af8e65dcd2aa24 a63904fdb9c766f2 83315e66b6feebd5 91b0a82d2cf739de d38d5bc1d63af4ab 8101a5dfac17daeb 3c303765536102d6 8293519d020fa33b c105e7d7c1458dfe db7c77f2fb1b285b e127482e289e8670 57f28d713e08b0ff 312c30bed23d88ac b29407ce1b1186e9 74732164051e1e13 76dea3598b11a51c b3e6bf5610917073 e5363c3509d1aa74 bd7ac8ab83baf4bb 8895c9e946ee4499 931d7e30731f10fc 8378f89304ccb9fb 34bb46d0e99c24b8 22872761b51f0508 4cdfb1580a2b26f2 59f597b29690a0b2 b88fe7e45947a69a c4268dd0d166527d 62c5dce33adc1880 8a85b3888722cbe6 6330e321e0384a62 b91d310a23ef523a c606d0cfe117f332 02fdb60d721af5dd dd3e28ea2eaacf1b 96e3debecdc2704d 407a90170ee8066b 8c251ff0d3807156 3cf89fe09a1b319a f6287006ff7f5610 f6cfe50dff8c5ebc 7f9d75f472b30b41 4d9d86b3f86c8799 83d8b8e113f9f27d 4d438f57c502a9dd 82f6c4a75d3fee8b 4b76fcd06c3ef8e0 54b98e49e631b444 5fac6d9558980315 53d3906470b915b9 65c0b4770813b996 3718b9d434bfc19f 49c9e8dde02d309a 8f29c2f2393dc297 f3c53100b18632ac cca8d9ec01acdbce a1486367d7ce1955 2e704c84aaae8a0b c36011d8aadea4b9 a529c0fedb298ce6 1cc5993db1877b61 5a4b701059752c55 52da1c00ac7fb7b8 5482808c513bf047 12ed921493e3fc95 87ad1facccbc4d70 ff8aecaa6b855c18 bae35d4c0f8d4d30 055117396e5098b1 d9b236e13bb513c8 cd350bb7a957220e 2a280e608bbc27e4 ab12dcc4e2afffba ccc5a1a0c7dd92a1 17e5af8b44c3b854 4fb4259ade47e0a1 28a6485729a540f3 483919e0b98c1605 83337bb972e814c4 4acf7aaac21de53e a7c1fc47b170d15b 5cef746ad4002e13 d94a89e3a2cfb96e 2f4bf4c841ae767a cffa67a91281de50 ee75d7fbd8dfee93 f12d598377190961 4de9231e5a62b2ea 09d9e61eb9e39e86 a30781ca62fc9fd7 7539562d14f99a5a 97c472c155816343 b721fadd76d099d4 c677d8cf2324989b 56bc022fe6a8d0ed 47754735053bc558 cc67f1a2dc9fc840 fdaccc7f584218c3 df22ab300f26acb2 7a01874c9003cd01 a92e5e1ea18eb997 211d1b41bb183f0c 9338e73ce196f867 7a40a14d38e21d5e a5e872443681a63d ad66c4c0a095cfd7 69682a1f0e3a3891 cb6ad7cfa6ee7b25 afcc457e55bfb919 03573920559052fa d3c9891a45364068 4d9eb3509059f60e 7071dea658d8e282 2e593f34063ee3b0 b45a269d80cc51f3 1566874390f19495 8b829b41ec699033 b5a9680c78d7cf6d 94ae98b92e9b2e5d 3dffe01badf6b0b3 383209f1ebba3d3c 4deb980929cbddfa 803d0f7de2330f4f 8eb0d8dec10eb0d1 ac50408d1a71853f e46b078535779938 8605a638e2e6cd0c 27a2111ac49530cf f367c48bbf2165ee dfba99fa081a4444 f0d1cbd52c54fd28 9330d185b912560c 937866c25d07b5ae 62c699443c719392 7e003e45adaab9e7 59b9cec1ae91cead 6c4d3f7012d24f11 7a3deb678c14491d ff53b0ffef2d6d3d a036877d55f9266c 1a1c162b7d8bd1be 1f1993bc9247acf2 e69a9f2284a0f88d 2d35d4d5268ae640 4d7aa3c19cf8a48f 2d30188c9fa10b8d 5fa6e0c955d3799b 9c5b2eb20cb78a37 fab076effee40397 f0f44a1715286278 2089b0eefdbbe69f 2e501dcc2aecb226 37a96e3e59ce27c5 e93e4c49d249a323 3ac2ba5d8ef465bc b40edd2598a2fefa 60ec25feb47257a9 6dc3fcd6dac95a5d 586051e5acd27b16 22be493f4d260521 1138bf5d98d08e01 516a9deae056dc85 ef344a46d14d4f37 f0e418c6ac7ed00b 59c5d7838377a378 2087b574384d3b9e 72a3db3af7d8c81e 904e950bb0ac1d5b 7d6fbc5d1f260b64 92364f3883df0aa5 a1b830033b0e832b 1ac8ac2697415739 6f74bf12776e7ac7 023c3c6c70fe9079 3a52ee55a335a02d 49ab7cac67c68da0 d0ff4d74b1c3b24a 492b08de18815cd5 d2617b76c790006e 0fa0211b23c009dc 9a48a00049a2d803 3d84a8df3e6f3d21 fa9e19875f4c78e5 af329335f020ea25 8dc4be289ec25b80 2a8bf6c30cfc298f 0052f0c1cbd21982 d427b029520ce15e 92c6698e462f025e e6494802cef789d7 65339162a2a585c5 9a8cd6b9af76de45 6bcde4e99df4be26 516d215115e8b125 7a4a6b53fc128e51 f13e17a89173ae6f e021b21de749ca07 872687103b2ed3e0 6d24db9f156d70e5 d2837d697b6c21f0 6c38594e3e5738d4 dcabcb3f27ff99c4 5ced988e4d6933e5 62e26161dcc81c0d dd2f03a57c727280 e3e643a68ee07d33 2d8d20d80188e861 8f0b00e132810629 fc3b47b190565e6d eb6ade9b5e348877 98a8b5ca0cca0046 635b8554aac0c0c1 6c51cb6e66b11147 c1c12a5c0ac0d6aa f23f4a90484da067 1171363155f7710d aead9ca2a1a3f0aa 7e760c26db37a270 f6caa0d8380af9b5 b55ac22d57f69bdc dfffcb0bd0157ca4 49386d5a1225e5e4 f33a0432f1227b12 a8fd2a5dce8516ac 3354094245f677b9 0d2c7cc195f22a54 0995e03846903469 afd292b7f2862588 761db4570faeec19 6b831df58828c4e9 9f319f2dbfec7e8b b96f3a817e08ea8a 4607badeab5582c3 5d9a03392196b7d7 801c35c493ad9553 565d40fad834524b d27aa1af00160b69 bcc80e812b52b51a 631d0b55a4eff49c 5636f70777288e40 b8243afbafa279da 26ddaf3315acb3e4 0056c348f7a5a2aa 7de8679482b05113 d537c7d3f6d12b85 01171e175fcbfc39 4f96bddfbd2f4dc2 a3a6ec9924391625 0994ef425c4c3702 bb648dfac514f224 fa7732c64b502ab8 9b3235c0b53a222c 366653ab398b2fdb cc715e48ee0aa860 c8e09929e734214e 3d5de3a5d7c3c88d 9682546c42634642 f5915fa14f7c8155 9674a609c460472a 685ec48753cb7606 12feb33d8f326eb3 1785e9535d880d99 cafd9a596ae673e0 3759120d88dd47d1 6988cd0d12a89c8f 0feabfeace96fe73 11412d66c0b257d1 4d22bc6f4f4f26b9 7b05f2c807438de8 9a18f8a788e32de2 bca18bd1dbf2cf4a 05585e576c67952b e93fbb7c9fb1a3de ebcdbb5c71b9ba03 2954fed234ec99cc 9da8017685c36e78 a8e3f8abe7ae7fe2 5d815259515513be 4d362454d6042fbb e54b0ca74656a874 a8c51b55f73137bd 2a9167f925ce45df 16509382742cbf8d 11a6e4b5daede34f 5f50c120753db9a6 ed71d776a980952a 53e8a904afc6888d 84a345f33b500de6 9cc3da4e27ed1747 98e2054ae0551ef8 28504fc421c2d917 78a98da82d7f2548 f90bf8c82e5525b8 51021f4ab0e9a4e4 c42f73a099b6c905 ba6555bfe93d5da6 e8d29e846b1ba770 5c59438b58907983 6b7e3b4126c70d08 e9322d93852db8cd b1cc59752a4c57cd 148ed43e7368ab55 5e9a95076556493c 43fcbc73a230cf76 542107fe1bc062ef 5894ab43e3bc5525 9266678215f5bf22 53e7fa4c4584a21d 35fba8793e550791 b7c096805bb30d78 53afabba0da5034b c058a5e1761ece0f 4b0ee26e71696a5e 0995fa004ac18889 a9b945c413f3adf0 f2f1add549503e55 56b17bed960035f2 8a6ebcb0f6e588f8 eaaea7ed362439cb aeea04f7751412e5 ace5164217af0a6d 5779ddaee0df4cbd 858ca957ffddebe5 9b3d5b4601d61938 0fe1e33e358cc073 9772a85316284144 135a18491e936ff0 b93ac46b1a4a5e25 ca4cfdb877461938 f64b55e56c5ad12d d449228ebb570b24 d45181dd568a0b64 ed60ee538823db46 41e831e208f90bb2 a889bb70d88c468b 25b3025f13904e77 80973ce67fc1f436 16fe737666f568fe 75cda3dbd88a13b2 b69f8a944dc06922 30e89261eb05a03c 094a47e66181d56d d21590f111c5cf01 a1925bdc87f98aed 34846e6c81ad522e 0651ddb43d140eb0 cf55c2f695f48bd0 b46f99fb897b13cb ac21085b5977a6f7 923da405d0b35670 82e3c51e316af01a a738835484c82c37 af5e18ceda19b666 d303d259372718be 91a532ea90fa46ec 78e614785be87ef4 38362af4e7ae3830 1a514c08c5c4a126 8e39eb63c10abe4a 79d77a43bb33ced4 09e0476105016eaa 43a9b6beae5cb308 4a05307b546ac5a1 31d2954bf4840e9e 897fc8d2bae440d7 4e341a71f30af75e 896d18ad7aa53b24 8813263eb0d4b009 ac6c1e29338b2b5b d0e19f63abc5056a 13322a46641c8fef 226ca67c9198bf33 151a94487f9786a1 554c9a0e41e0f6e0 339f8e846b73c53c eb7f15b21c0a5e6f 9cd32015b6392148 5380b3bfbf935c4a 225540a68f5a1887 2df4fad513cfcfae 92a521c7866e7f24 67af4058da27a0db e5481ac3658bfeaf 4045060adaa0bffe 70428fd5a7c09140 9da49471f245487a 9303914286335dff d3ec7646e59e6614 6c6af054c6a9b630 66f21e4e7aafe0d8 973fe9b821a44f00 9afc4bdbf67b1693 8eb8d747e532f195 c37df8679e9a74bd 997c6b1c04430fef a63a7a8cffa5433d 8d2f292b67aff854 87f11398da6bfabf aa9287aa4ca39d42 4ab9d1cdc0cde75a 3318eeca6b98137d 363d651d91a65ffc ea9962252b10caab eb6748903f251f1c f5d70e686b208bd5 288c31f38af61480 d4efb5a987908e26 ecfe9624ea5fff9f 0afd160928ecd567 15c31cef72b77df2 2449c5bf5e601342 e127e2f6dc1a14d4 204112d1e69ace2b 4820e05e29126128 d70e5a3224265599 1a33ad706b9beea8 24d2013fb40903d3 559e66c917e45006 30bc033873a243bd 7cf55eb1a9ec11ff 36e15efca227a98a 34e57872ef0b9a6d 1dc9649eb3c61fad 794e3dfddbfddfe0 789c2d8c08c2cf96 e4ea5ccace8b7d9f 3c129a97ef76bf4a 74271c53a43d7442 e422dbb000d5d103 7397d37939f88574 c88a3dcd6d032209 ca144a495feb94f1 6d16480aae29d772 6876444d5b435996 675a0ff6df13717f 1ef2c9cd911381a4 86d7808a309c29fb 91c9cfed3233dad8 968a0c5fc758ced0 0deb05c8c69a1406 0c02dcb0f37669a8 f7609cd86f31c3a8 d4e2690f0257c3c7 a279a32492ca4b48 09770c46d7e2ad92 d381606adf96ff9f cb3aeca7b04a43ac 76e12d4bb12569bf aa5d3125e0c6d68a cc9a3a693801837b a4a041a348f40e7a af136baa32fe7b6d 1e9493d0266b1e1b f92dd63cd8d14a47 a1bede6bd93d50db e10e388ede44336f de0536b3e6db3541 d0da9cbbc03320b9 36c416c1b60355b7 e38fdf55dd0a8f01 0969a46ef147c783 697ba928b7822018 9ebf651b6a7d51b6 2e3578996668e9cf 9740d3464a4b1d74 90f8655e0a0e537e 12c32f2dbb516d02 2d3ed10f97e127ee 1115a558dee83b7f b5dcb6504fa8b9db e988695c88d3e545 2f8a6fc9ddf7e674 10817fc030900211 bf841fdf343b0624 fe49a81a2902c96c 1b761b4db95a362a 6dc657555d9f7202 4a2f38a51cbdb677 ef59c9f19048fe8e 8d239f7fd44d57af 195b8e4d2014d58b 4392740ae79a32a1 6bf7aa7a93a6e0bb 089769d6b280ff47 17dfd88975e89185 9db7b1625cdeae22 08c07393434f1102 6e660de9b2d3f07a 4100df48b5f239ce 351b9d49b497b133 716d3ac36ec4b882 db3b5b78eaf8b4da f52af2db3dd22767 e3959c317b6d7e33 f979786084c612c5 3b4b668b96b93090 75f3fe3a2ac6da52 bdcc784d2b812fe7 9d5708b6a57ace74 3909b322971cadd3 55820ccec81650e0 60df0f6528d12a98 d3eac30947f0ed02 d71696b6727f586d 5c2cae1740136022 3e508cf2bd21c928 c13ff0da0ac57c9b 2d7f6fc7a9dd7cbf 78181e29dd0c4365 11eab2d3a79fe419 44ad9fd07f16e99f 6b4a1367086d7de8 c4afa991c2aba239 62b74dc447dca6cc 28aadd200b0bb0d4 1dd0b55fcd458d39 79f10b9a1c7113fc 05d2c4a8974c6cd9 ddeca5d8081bc6a7 f5dd08bee5dcbb1e f0b85db80b9d8d62 96d68a3e729f86fc 3a2981cc2be9b4bc 7afa35efe9125a5f e1daa54a441d2681 2fed2a1998e43a94 024de1246e2e189c eab9cc380d345447 407c2b9e4f3d1e9b 614dc8c69f0bc1a7 5278bc0f227e84b5 2b90e592771c7dda 187e5146c5c6483c b59f26f502b97579 3aa217ccc1b931a1 312dad2f9eb3fd89 ca9ffc7cf2188141 8ba92ba2733ab6e7 f336bfbe0b10a3b3 7a953c2318037be4 08ac990bc97f578d 2864f99c7b861989 f447e8fb6bc9e6d0 693e20761c04eb11 58dea7d5fb2fa3f9 92e463a17bd28680 0b9fb75c888432e6 78844a866c892033 16aa293a7ebf7870 4655f424630726f6 a7e0e2fc75319b15 0da6a998a03dc0a5 a9a1b9cf2563fa18 8a43a532f272939d 62d1eaacd702f95e 8a63e822f0b4ff8b ba658f06f1f5cfad a2a4c9683bf2fad8 77bd7aa39986bb1a 3e4f97a410c93bd1 30f510a1fa6ba061 25aa06ed743c02c2 f16b1c2ea068b07d 3119c198ca582d56 9f376d6ed2739745 8074bb8f9d0c4c35 49c22d5b985eca37 7ee7d3730ec3c511 9f3c459946fefeda 63343a37bc392fd6 a4d06f5d6a20a911 4db76fb584098958 ef6c38115f2fb809 4e68da62b18c3508 86caddfe8e4f8183 0c6960676e44aee8 bec21cb6c9aa04bb 8ba2b4135764454e 0b86526f9d4413aa aa63cfa0298b058d 9c5726f978eed950 0802a6478a300ec3 5e611ced274a88dd 7dda776f9afbba43 d31ccd0ec108f131 91e7a112ddbe9e97 748af2a9e093298a 634dcd5b71556334 0f8cb418d69e83ff 238134d6b3c34cb5 da496a52f6fa8a82 74445a364e2928d8 3fd6fb52477a55cd 3fb679a41f6f4e27 b3507ef60c5e7ef1 73e6a3a17036b3fe c964ac58414eb246 5129447246521816 212b086138db59bc 7d207673a3e696fc f93f3fdbcb519f7d 1b3de403265e4051 1272317f1e97fb22 3e4e12ebda172778 cb8d8b4463f60927 7c117c7da00f4a1d e773bc907e94d8e9 1c8d23d9cf9fadd3 62ba035f5d19153f 22bf3afa740eb031 56d551eb05c7f06a 694c6899dad39e13 c357bd9be09ac009 2298fb712449fd4d 3cdace2fd38cb463 56df1a216ec9ccb4 a20b152ef7c2c79b eb025d520d109d5f 5b94500ff2960df2 c6abfa1b1935c801 86854e8e76b47f15 57e14089c6783447 e73be716e7c378e1 46fccdc2fb6553a2 e3dc8cd44ae303c2 7444002360343684 94c10a549c3c6d40 27af9b8981df3648 bec7e77795d470e0 d7456bd0f499b06c 05fd56f5c47696e9 0a4d0e709e2e10f6 9c716da27324517b b84f9a8320cd1250 81f31ed027915006 0f01668ef4a1d1c2 41b2c4a8a7654a5a 41b98c592e5b8852 0d89858fe449af07 044a06c41a4c2c2e d523e1a85a7cec5a e4824025945ffaf3 9b6f95b0a2c94bba caec89f6130f7c50 34873555d16ae4f7 32097c718bf4f324 f173723bdd56d44d 2d76d001798e85b5 d7c020156d35f469 0611b2a03eec9e59 810135c3042752e0 74cf07c65adf2f21 7885f4cce1481cda 35ffb40383fb251d d747521679d4170f 300303e7b668fb37 1b4419a7c9f7e489 531e94359afd994b 3b7482cca407544b 5e5ff6332d4b7fde 779cf0a09c889852 7f2193ea356b0609 4aea98f7d7eab5ef 6db2a3db15b92335 567a9b6fe0d78abc a793bdbbac8da3e8 ebbf3e6bc936a7fa 00d53e649c339cac fad9cc735fa3db6d df068be3887dbdad 45e8dc4e06567bae 9640d9ccca5034ec a9be841e556c6d60 3f6e2e1fb2952ebf 8603ab5d55da308a 3f62260992cf10d4 ed9fe00baf13d2a3 2003dad85da9cc93 4cf4bb6cec231dba f00e4c5e801688bc f619debbeb458b26 41a3e3d29bc45fe4 6300d6939ffbbe41 99fff3aa6768047a 42f8077d158bf05d 4e2cc7273928a44a 4e05e8433c10a151 0f823d86386af3d9 902c306314389742 eb13039f23dd4e3e 5f55f9528993b4b2 aa6b2d54882bdd1c be5fb1e15a449887 5e64526962e67318 0a057eb1edc46bb3 af78cf58dd4ab61f f0016ceca6d92a77 7a66017a661d78b5 1569f9ce3999e298 eaba520aca7ce84f f24352cc9e6fd079 accdbc110e4a9afe ec742a265de1550d 0253a295192bc1b2 5ae0d9ad2d31d4db cd608c4bc00bf504 82889edce4744b6c 7f2a91e01feec5b8 e5b0fa1a5a78568a 018127b36e52efdf 3e3f05fc843413ee 3f6ca512c3d9e809 5064675cc16dbad2 d82cd31908f1ff9f ca0c48b7924a4798 b2620fc8e16ffe4c b6b5b296e8936965 3ef0ce3adeb4f2d4 a9d75471e5651b8a ca30b15b4adcc668 016d03090637c37e 6ef99c002b79735d 73fcd76c3e5bcbd1 c70535608867a1dd 3493a3fa7ffe76e3 f8fafa03e370f6b6 dd2adf5b5030dd76 cca725bbd1c0e0ff 486c08d8553d05e8 d6602e431a13e80a 9e63c7113c06bbbe 12956b88af2ba4c9 49956e3258db32a8 2fc0f015df334251 332e0612ffee6478 49b54a5bafd37f4a 4a45be08464e35d4 2f94abc6c1fe383c a959aef6a164f945 7fd4c7192007d3e8 bbc4f8c4599a0116 eaebe0b083d1e4b4 53cca4af9dfc1fc1 4c5ea819636b68bd 1e980999d3dd08b5 ecaa4543bcee9b41 152192fecc159503 a8f2c4f5a3ff13cd c41fbbde4e9e005e 1a8618f6d9fe5884 cabcc5cae75d9361 1b1996622f27f6fc e48fd1ab9d15440b 3a64f853cf8f9b22 b2a22426ce400ca6 2a9c8a30eb66955c 9373362df341df83 392d24d917f9c5d6 897d274ccc244aa7 2d39f735d1577f9e 298985f9eee2ac45 40515e024fe33e39 24a59d2d2fc5991c b4355acbb9276e79 75255e50e23e45b5 11db2b258817bcd4 84425f6543f76523 520add97206f0ce4 a2713b4e3861b9db 60fca4832de9003b b86085676b45e499 2c6e406c512a3da8 e710aae7e3914d84 10a31e0a3c85feee c4d7878a8e9891c7 abcb14a747958067 ac57e4aeef10ca0c ec8724ee949ca1b4 9c350d8ca528fee3 e9ea8d0877fe6426 31170f25c3710f9e 4f93c724ae10f70f d59667dcc3012bd8 72de607b072ab40b 2579cbbf7b3cdd1c b371705f2edfd980 f3d228b786cbb5f9 efd9d2cfe2f74efb 3adae1c46aa36f28 df42d99141271f36 048aad6a081dda75 2dfa4f5f19269a1e f1966ed99d7112ea 6e54646341ffdac5 33c90e16b1068fa8 5fc1455c1b0ef760 0245455fdd26769c 018e2ba6a4fb53b0 dec6a98ca7d90538 f1776b31d8366c14 a186635834701e8c f42851608f21e339 572b4977c0869e33 7c87121df97b16ad 3c6257917d330638 1f5bc36434d2d971 b1599c9d8f5909d7 0ce8f502fd456dc7 ff135152dcb7b60c 84c6c2622c078232 ec47dfeec125a722 2658a0983102cfea 2baaeaa540b97ed3 8701718f07ea1c47 05a00bace83c940e 56054ff84e3a6146 0ce8443b71dde1b2 fce027f24c1a6b06 9cc5e8b74f309aea 2b342516223465ee 258e22f50ef11287 b1a15e9e6d017916 458f2d756b8a8f37 8c35485359ab3fc9 99cbca957cb25c47 710183488b97821d 3042accb740fdbe8 ab2deebb069e501b f4086d200b88fd04 caaa4e0e5a9e1130 e0d3ca9d81b29814 cfe93aacf77bbb92 df538ae06673150c 16b85f5c53793aa7 5b51b0c519757c51 e5e65cf3e0fc6154 68ecccbcc068e2de cc8e9edb47b4cc83 490bbf12d66f8e7c 6668bbea4e34afc7 4a07ca9a178e60c8 cdce45636dd1ac9b 219c67bcfd7e92d6 07c23dfbdef7ab63 dad26ff5d91533e9 fbfa77bbf750d0cd da3f87eaa4fd82a8 3771be403dbaa73d 70c622204de3fc81 5cbc233087d62f89 fdfcdc892efdcf89 060e97707fc7b1f0 205436a7e8a7ef44 924f7bfe6062de4f 5ddb26b557ae6fc2 287b29a675ab85db 727973b6483533f7 f8a1a9b61bb2897c 7cf42b3cd3f9d620 85257d9951779b7a 18df91e99ff83024 80a6f89ad2bc4958 ae9c6b83c62186bf 1048fe370dc66194 d55df056877b73f5 7d17addf5723b150 a8838b799a44cf49 801ac0a7662f9bdf fd08cf2e2401f83a f9a4b97f7f9e5efb 0f196ae3bcd9539b f0002b7372a26975 97ed50e83bfb7f57 2eb0a2911998afb1 ffe0fdd5c7687a9d 3556c52c9acba669 60c50f9686dbf002 ef2a10e4a1951593 07373cf3872e1547 7e01926a4767870e f8719ad35e184f5e 63a36aa7677269a0 a1044af76842ecec 04596efc5bc6ef98 26c9ac35e1dd1b78 76cd50b66c13035b 24b3f08245d10311 bf6f6e981e515a1b ec7b74734997be7a f7843e06c7353384 08a99bb9de4f1106 806ecf8bc00f56fc 62af4d467e0e3108 2fba905ce144aaf1 36a727d085535c70 2838b3342a235307 b9e21c230d23106e 13141f169493a23e 65e5294b3a53d113 65dc0bd48fbb53c7 7fb4e6e353f0442e f6a219c79b684099 a484170a6e4f4df4 201452fcd6d8871b 5f508beeb96ea7cb 26b81ead7899d454 a776aead3ef033d0 aa643ab2636021aa cff1eb9cccb494ee 1f5efb5895455238 7be64851567f70d9 92e8f15631dafb95 7845069876e0e2a9 54e896f4cee8efe0 77d46ff645c1a3bc c54076404221fb71 91479c66b972caed 8278f5120977221a 8c8508d36beb0159 82a10e283a3c1c97 1a4c87308d56771a 0b5d0b74718f6993 524feef3f60d29c3 73bb6c74ed409e33 0d0da0bd5847c17b 04ec0af482e2f61f 12540ad2bc959e49 40a98ef736a31710 df73f564a6b4ae39 0a416f3182573552 33b2fb5ab2da73a8 61f0c2f9b56d7965 23bd9a9e8f8e3b19 2af0dd648fbcf8bd 6f1d40f1dd2f566e 235837a42141b191 90d6cc4e94f74eea a2495b1d5a774ac8 6fd895b7afe119e3 c9539be2d1b16e2f 8d1f27cbfa2b0284 5bbc3a26407f56f0 1352b022b76d19b0 c435819eb64dae59 ed998da729099408 38732db821495e8d 77743c4136c3bb00 76cf21c39e730da1 a134b4a9e459f094 3c2f6f2c1a8c2417 718e0b18a4876c61 3ee15b5413fc976a 17ec40e7d1aa0fde aa2d3abe2b44873c 16641b5b5ce12ddf de39f92b725f9f27 48588815f1496821 970f4e233744a309 b2b7f00b2ffe369f 65189ad33e4eeea7 4b77bf975b2c3dc6 ceeac44397e197dd f5ba032ac66663e4 f04e617d2b4f2d67 39209740780b9043 b0443dd913591bae 5ea0b0b7d3cda783 853b9a4fa2a8392b 10a1532984ea3697 848d7016e4cd13d6 2b19bda0348ba53f 844f40a980c69a54 82ae2f19bd8916f6 1005a4f078d53787 2f42b8dffb9a3dac 7f26d0cc12c18b89 f845a8bf7cf3c610 e895308e9a3a3842 c266b7bb2c7388f0 5cb8e26caa375161 e61052a627869b43 103781eec65e2944 9891baced778d353 a786dc0cc5b7a307 d332d37d07890a4b 1aedd1b1e3d40b29 5b6a62bc26e9278b 4ff5e4e20e0cb67a ab46000b39d70646 694c14566f93eed6 6240a8bed9139eb8 46cb79310d9df162 5f8bb5d6eb6ddfcd c3733ffb5de191dc e2db36de6a0b1c85 4411f8fba5ffd870 84490f2c4474fccd be7a13c8e76bcdec 0a64e270d336be1f c092712d82e653c5 6d71502121c5828c 7c0a733ad3ad7537 53507f47bf1df577 2b7615d15b9fd413 e2f2cdb1de512fe4 cd3695b17964f214 2595dcdf9f425e06 298dfdf044bf7974 bae69f4d0d8e2ab0 38e896f5f81ebf77 d0bb9c9fe0193715 08a06651bbceadd9 a44eb1a9822b7e2a 78e9b40cf581c71d 78a307e0bddb6f9a 4aec230482b26b73 e44020ca7badeb4c e3c5bf8162b16cbd e26f20b994af0fdc e33a15646f4992c0 f3987757a8542b71 72f874bc70367cbe 617d658d33827c6b f9e516a2d101f257 71c408da70771b34 401564037095302c 5f26c19f3e36b236 4ff6aeb203e0babc 48f6b547c0af999b 4f0b255dd45a78be aae349e3b1f15ab0 4da76b6f5db66e72 06357577396a9580 cd54cc510a4f2786 062ec07de9c24d09 15b7f8e280206f6d 6c7891260a1b70d7 5720d6b6bf6fded6 a36292eb581ca721 f4370843c4804716 5c1aaa278ddbaa5a defcc78ec3fc91fe 41ec7a390f990dd6 3ad1a33a85f929e7 37f678c8b43b6bf8 1a8014cc710bf022 be9c8c5504a67479 3abe0034d2fc1bbf 2f7fb9df33a41478 2e2cd35257caa51c 2d361f5f3900d2da 9136cbbcf507a099 02ecc726847ef762 bc5e26eef091e87b 83e1d5baaf376963 29cac754968c6357 9d07ad53d0fa6311 ba2b5dba2a781b5d aac6d2f5ae2d815d 86f41dda54a81c27 b9babd92380ffd11 279c910fe64249f3 0f70e4156852cca5 b6b0e6f5dfe20266 5f176534332d702e ef07cc4959b28e68 10a74e953977e19a 2fdc4f8519eefd28 31be56ef6b78764d 7ab3571273905a0f 9b9d6f5a50879343 aeca2d0c7b3211cc d21f5891a64f9cc5 580f49d069e4a5cd 7d27b8cb4c9f4262 5329d715b249bddb 0c00f590061c66ed b4ae21de3b434f22 34a7f3a05a45cd6a 342713183497e6f3 b4bea104d6c17817 336f3adbe90dd665 32200936dd95a01a 3200bdf427fd22e2 a5ddce9c444dbd3b a026d36c9f1018c2 5965254a2cb9a1f8 a1c8489e7fc2dd58 a46eefe6bdff43e7 fabf88691cf44f6f b17abe8ee08fe218 b1973f81e86bc93c f9540ade1cd670d9 82d63e4d2f6773e4 13677b8dc1480d9e e1f6eface2e22b2e b6cce6cb544c9665 bd8bd6283fa3222b 211e11cb28bb1ac6 75c2f5933d07f7c5 8c35c4ca8010fec3 24532fc91b322dd6 c57a4a9b18f60528 e4917a694252d319 b8a115c617ce3c4a d77c165865fef20f 77aa2900bbfebb1e 32821cb297aff2e9 289af654d36a9ff1 31f1da9168467efc 855e7e2a5073e9be bf6173e5096b2f9d 9756d1a2dff959eb 54aae4e53b14b041 ead9bb978f32b641 2cb0d5bf39e59690 2edd93213dc27ea3 71f9ee9f28a04d43 20f7f5ce8e25aa21 dc8fe19c9ec4dacc df4e148690eee866 f3f35c15b130a165 91ba1b6820c335f4 18fa2b0b279e04d3 dbfe6e73bfa55c8a 4c5cfdb0b1684b87 63f5f9f1914277b2 4940a694bd5805a5 6bcb422c8438940c 1cecd37e1b43295a 0010e7cad366d6fa 62ea7b26b2c18664 56982c6705c4060f 62217b36bd92991d 8098b1bdc46073e2 da77ec7eb19a9405 34aecfdc2355a550 7e05136b8ad99ccd bf5d73491b0b51f0 fb9d050ef95fecbe ab1a4e51131af2d2 0ab160827cf86d3d 9fde3cdcbafb8f4d a0b5a67e1c5d9684 d97590a71dd2a2d9 59c65419a6c6ccb3 ad2f3a1755534814 763860315c3eabf9 3b3c9bccfc62b468 46c59c88bb6cb16c 3c384beab4b378dd 5196f249caacaaee 738fa3322271c27d e0b2bb86bab2c760 a1e8b92ac15e5585 0d61fd4c896f4f91 fcc72bfbe8705094 b251a7b19599b5bb 12859ab3c2195e18 1f4e64a654ed0f8e 55fc793efbbb9709 20e8e5724b364e9e 8dd3c06f3cb08fcc 054ca09d6b9b676a 8a053f058e13526a 99ef6e5611d7786b 9940eaa69fd5a651 17ec6331859b1632 ecac5080d63b8547 ec768846d366f7e6 f3188b41133352ae f4ec8c9540a9d7ba 8545a0eea6f7709d 5daafe4984d652bd 2b687f425de0d48f 030f55ce465c2d00 fdc8d0475b145370 4c5c0d8676db827d facd007c080171ee f16fe630bdf4390c 96c7e3b9f8fcb149 f15a277a85ddc744 f4ab38330d89ea97 f3069c8cf1430533 a4e27f5ea327828d 6d2a8c8e1035bd3a 4146dfa018456d87 04ca72e36be830a0 1a865c8e24989641 465430be32040aa7 4f556f4826a1149d dd94e35ae3d4626d cfe1fc150c34f0df 93a65efabc129404 4852dfe6d5dd11c9 0ae8679dc10064a0 15fd327a77e25d50 4986e42483afaee2 f428bb5d60842d13 ccb6884bf288241f ff7e031e555f564d 8257062c7d4406cd 3ff313f3a817e95b e65e530003291066 54e635a2c52a1f5e 0d9d3fa1d51ee9a8 2fe1550c700240a2 5fb7e1107a810661 afaa4e4e0721a631 5540cf2a45a88870 9cd936dee75981ed e7c89252485b1fe4 341b491183d5599e 7b3461b696914dca f7905f9cd744cc1f 353b96345dabb2f9 f92c16b065e2a015 c97d98f0ca8c6fba 5fcea81e462c199d 530d3dd3942c2726 8d6d08d2d779b978 90766bd0792c36a9 3e02ec60a10943fb e9a09b30139b5d3b 7318c85c415037a5 5940ea7f855b16cd 7e57653cf7974c5b 8b9a2103fb88cd44 b88feb84ce97b629 254fda318616ffc7 2557f1b28a7d1b07 88ae5d7cb1aa3892 a9816a9ed7f4731b 04bb658c32739d6c a91e1462e7167f7b a97759708c0e14af fd7dd9660f4a9447 00c59c9b6c87dc4c 4f5211d20855791c fcdc3ed67ed4eda4 b95f9af24869dcfe bbbb285a5b6a0f0d 831f8276ac95a2e1 2c9d0559e747d17c 542e6060d4490527 2ffa2ba0ffca96e0 5fbf286c9d44e547 c4ac297ae71ee057 c4c7222d5eb36545 e47c069a436ab70d 3b9d046490f30391 735014a794266021 6fdb751816a92173 4057ab7ff02031be d01d404c6fd6cd2b 6e7bbdba8fa50888 622409e9fc9eae79 6a3b408c740dff87 6268ef251515d391 4bf881e72ee54056 ce8a7bc6691591e2 4d433723ecb01a43 cfc80e29ef7fb398 d9fc21fc267cafb0 ba9e6e5837aead59 bc2996fc8a8d3b07 5593fcbb2919653a 985d360e004ef5bb 08267f30826232dc 5c16796ce2c6f501 f93c253881617212 9ee1a7c4a3d00eaa d408beea680928d5 0cf993d074f79f81 9e348b39b02f6e64 9def1899deb44a6e 9bda49df8cf00fb4 121670ed0eeac6d7 23879136fcaff797 f5ee6c107a317ce7 f544bf5ae368800e f36968ee8264db55 2334f97ca480ecd0 eff77e3536df392a 938784459ee0f948 17b4d84101ea6eef 29811d8b99a6e5f1 b0973f09dc2d91a9 c3b683cba827d166 e0cd17fa6772035b c73dc61d8235a731 cb60f926ac376b6b b017c779c1de22a1 b4a3bc9b92b29c6e f2917b7ead52ce37 c9bd482f73377765 c597f060af884676 d4862e2223d3ddde bc183aee678642a5 000088da12d664db 29275e1a33e7d1fa 7bf996ad243500d9 103e0018479d07d4 45522679a2075c51 8370f98b9e175429 650e0bcaa0691be4 9b24b34c596790fe 4e381bf0646dc59d 38a2297c14b48cef 7d47ce2896bd01e3 56efd4e90287f367 251baa444f6ad9fa 2417f65c2b59f4ed 6c107720b5d2c367 7efa8750c550c3d0 9e38b4f7950e880c 50a3722051415bef a66cfde748f3cecc 9e43cf65e557e297 7aa1164e1afd3f1d 925666cf676fc570 1a00cd9c9b92364d 934241b43a2dc437 6006527839f2dc88 257d60c163950e27 26755baa5b6157d0 81092b0bfefa983c 2ee8e7a48cbe1b24 5f835d670861d60a 8c5e841c3f4a1807 5f4157d5559d29ca c8c258d1073634f9 8371c39c81740e69 f990166dbbda3f7b 0e56fd1802158401 7232b5d698d1721b 9cada4039c227b36 374b03757268962a 21a82845d54ff4e5 461ac55d4e8e6ad9 0c93bb34d20ccf36 1149d382141aba6a fd53eaafa8fccd5c 478b99bb8de82b84 75aa463a8598b87b 0dc8e9f930c4133a 0aa83770ef767370 b41b306aa24d55de c4a5a5c6f7938d69 f94d5509994960aa 9620cd4526536bca db4db2c54bb3991a d81f73aca45d990c 3c8b2b12c22f2719 f83fa94b9b575a7b b65d3a4745749be1 1fe068424b99571c f6c40ed4544243a5 e539bdb0f99dff15 9a7b668a20bedae9 48ed5363c4754ac6 c805322b8a5832bf 408342ba382aae53 b70b9509aae43601 a33f65748de5ef4c d50dc1d9b0e764cd 1e31245a136871fd 1c44198902b31c1e be2dfa418ac2f2f5 2d158cabddd40d32 ac9f8201fc4b2f64 06cb7fbb7e9037e7 3f9391300acf796f f29961cce6029431 632e963627585e60 2d952cea0b41dfd0 5d52c9c8fb6aa7d0 5dbbd5b7d69620e1 61c8723c38cd4ece e27a5e9abb86a783 2f92a8633e8ad488 001b715bcc3404d0 ab92103fb7878164 616d1929cdaee122 bb6672607c4fc22c 8456ad7a7fdb8e30 a06165f7af64b187 cc8bf7d2dc7bb01b c32832019d238b80 52fd176c77bdeade 5304a64c385bd694 562f17d3559d9ece 698b677e0ba46d1a af1194c2072d49f8 1cf7cdb6d8e5b454 a31a10a7c4d89096 7b2ea806033c098a 2d123247c34f0113 57b2ebbae5ad6950 3eced0c91f3f601d 6635143a5dfd1281 be54c8bff717d3e9 02cd4e1ed2e859ff 7fb210cfffec3541 8bf8ffed20860c5b 81581408e5d288e5 b6e7ca53969c1918 b52ebac053ab750c 0bbc0fd125b2f861 ddec79c258243c01 c16ead1a62bd33fd 40058a7cffeca0d4 b680dce0937f6fbb 807b8b7e108d050c b5b2d7e2afcf7f05 b63997811dced6cc b8ad00f6d5da00f4 f059da24774c1891 e3c5396094545dcd 9303c0c77a03e81b b02b855df19001de 4426448bf88f3ae1 69d23e8f8075a16a 664be196f9f39245 1704ae9a3e67c552 d562d0c6e9293323 a33087faf910f01a cead1edab5568f50 f3e0c7e2d3364cd3 4384b28853635132 1c26412508edc822 5ddd378708572ba7 e9f1c0a510e5f863 d0afc9963615585f 6131025f37d42110 605990dea8853a39 2ed48d014fd7feb9 6f27485a981a824c 140aca0d89300a0a c997029420f5f59e 42406f38a4594097 2758b4a8271bca56 e427efdf37ae5244 b3a2b9ce8e7faf60 491896685e21177c 7719084fa745ccc2 770033abcdcb9b7c f93912e0d2b3bfd4 e5308c4f1dc37f28 864f6ec564892d46 bcecc7c5e2bde840 c8e0532e51c4ff6a b0b73c9012f1119a 4fa31bd5eecc09e5 e5f618b8bc6189b3 82cb1e4205a0b777 84eb67ba8f6f7f4b dfcfca621953f980 bc4b15e6f7d06808 df82bad5fd23cf2e 5fb863902bce0081 be48c2d1eefff99c 1b15060cac5aad8a 63e7c8b3f965e7fb 1810319001c4449c ce41f8f10168006b 57c1dbcb72201446 5155536f51ba46cf 4f791abbeb27e7e6 1f298905ca0dd0f5 127e18e0109454d9 4e188e459d275de5 c67c24f1b01ab544 f0389c2b3d878784 f717bf00aeb73099 20503ee58ae4a99b 473500f19a586c20 becee600d065e39c 0c538c5c592d9099 45a6613c29fc5086 7f898e7f15925210 43692548b97e4ca2 5fcdbd35477ff0af 40b4ca7c86f89957 34d3eeed58ae9415 2ee0278cbb744e8a 8de6aa2c531e8168 98f8a6c925c34d4b b351e0ecc9405ea1 05ad9f167c9e3c5e 333295466518d12f eb8f729b41cf46f4 2ed816beacc352dd 046fa92ae31aee06 8fc48e6dca862a0f 3775eb743fb93fa3 a9fc79f09ebf4012 ab814a148c32dbde 32601668555ac021 2b980b71cd93348a 8639822150c8a4ea aa7cd93854321124 925134959f46498f 3605369d33c5ed23 fd4de188ef4dff63 48ce16ea99b8226b 7b63e06f260a330f 6564f6cd844ae890 5c66b8fd52a499ec 59aeda6f9d04f678 ade62c8cd0296672 f7161291358825f9 3164db1396f76c5e 91e173d97e06659d 77866b268b44305c 488cd303d7d55e61 580af87fac11087d 7af1f51dc9d40a4b 106602a938b39032 322be013b93ff5a3 3cd70dc07c02a1cf 6464507ab4a94c55 e0d9979527afa440 c6bd7e2b5881de2a a307ad67bdbe8b30 756ee936f30cb1a0 f4d044f864001532 35336ebaf924c6ab 1578fee7f0e5a1f3 55c0175d49d3b9b1 1dc6eccf793bc91f 568dbaa4a10bce30 2e2eb1461deec791 50923149f38acd23 2bcfe5f7a83a0252 501b0094e318a0af 4f9df473ce28fb88 c8fa061d24782ec9 7207005042442cda 68818571d4229ded 0438318b824b383e 9be95a0a2061d2d7 c700bbb2e6fbd50c 749af5f6df37c4a2 392973fd1ab18f85 90af91b6940426d8 1805b06ad59afbc7 0d2f851a7c3c8b02 bfee2e034c1f0bc1 bc786df321a9788f 0b9e403289bb7ecc 8714df35f1af52fc 7dfc0be9dc3fd2c8 e261f83f14882b53 7df7ce79d998c03f 0a00391195a55ff8 7f932b4902309843 0bfc068005af62da 00d5394b518b496e e1d99c5706b33b41 5dc8bf4389a40b81 d01e474009e97d9f 5d5f3bcc01f6eef1 0be21e4824343c85 a8bdbcf50ae014a1 a6ee518aab6bdb73 0b1249a25d317e80 0784a88b9d0f9292 1272337fddfcb090 4e6bea319105c0c7 125b96c5ba607a35 bd36032d3d7a2a7d 666ef577b817af17 8216e2f4a6e940b2 33394b5b125f7821 0abd9d1df116aebb 2b7509aa4e23ddab c985945c8a7f34c3 71319431000adf30 694e68abdb5cb27b 6b3fe2b7938c41f5 0ae825a3f211be96 aa7edba8a696583f fa115672cac68fbb 6dcd034af26b7fdd 83f3f572ef73c33f 1d1ebad1b4727756 9fce2af4529dcf13 4130961878ce9b92 69c695296e53ba41 26279b9786664aa5 af22bafd07ac21cf e1b218dd3157ce99 bc1414de3ef1df29 701e7e88c497cf04 9ab6994ee180ebf0 1a6a6f6b43204561 451e9e217b334a8b b26389bc304cca6e 2c63ae1d543128de 3ecd313a2876edaa c0b39cb5522b601f 3dd049bbfba299f2 a5726c8fe27b1f02 91c1d90161133013 ac0454f002770e5b 3e5c13b64fc30605 92dba927d9642d67 e7f82c27414c8c90 45a6f34969986e4c b6af219fac95d8a2 05224a449e78cb6d 618995489669606f 49389bf1ada19306 77d4c4a8ef528be3 05ec46d6aa0e7974 65afdd0ac506311d fdf5cc0e1216fa7e 400217073ca62a2b 4c0e4aef378c6e5b 4564477691c37a83 f164cd4bdaea09a2 7752a8ccebd32a00 06921cfcc01ddc5a 01030e11908cb048 a6d18951a237d7a1 001b6152e9ebcc55 d2c889f3fdc028df ccf39d6198b543fe a4d7547856eef2eb 2c381995274ea827 cedca898711d79ce 16d4b2dcd1380bed 15fb7bae19ecdf5a 60b036ec84dde34e e8bdf19f2503a04d 57de723702140c1f 6af34ffcd6239dda a36bec271c110628 ad0a51e5e0e2cf55 ab2794f61e4e5393 a3973471ec018eae a30d14172ed0c288 ad15354f712026cd 9fec8fe93601b8b8 1cbb4545f0a82819 d150e02a6d6b0bd8 b209fab69ba628bc 2bf5647632f233c7 77f12a335ce9667b 93172aa6c6789605 798378e1725e94d8 79f0f51609199ea0 9edf342c5fefdc7a 7a0df57fab0e178b 92b81e768acfb785 22bbfd2afd730e57 b60be3dbf75e5ee4 b6808578fe0aa9b0 de3d6e2380bf32a9 dea928af9dabfa46 ef0466ef4caac2ac 7da6a3b91c62e444 06b8a21edea05088 b7c8ddbe8e93a71a 3f74f95b3e85ccc0 8dde31c5b3288685 812c3b1704414777 089eda8074186cea dfb9a85f6d134247 b9210951a18293e3 0ba4cd53aef8af55 dfe6f372159bbdc4 b9caf3a354bd7ea2 e00921438bda0546 3b8392d5ebcb7baa 100fe4eae41e69ea 1067e9149a68e843 4d8eb728e15f919d 2be832c951c81630 35c128847dcea2a0 6efc750be7489d15 039fcbbffe25d739 9e3382965e7b7244 d92e154e3233aeeb 12f44fa91ee81068 fea7b5c58ebafd10 b17a61f9d93fe43a da5a98cdefd46db5 4e4d32eafa447b30 38f182f586a219a2 952d322f6f936a73 95668399546baa27 766373e7c3394bac 3a2c35bc41c5d6d5 3704139d8380f90f e128f7968adbc704 52eef97cae9a50fc d66eb113211c8beb 4b023aa4324579a8 4506f717d1f3e13c 3a85e8269159346a 1a8e7cf03971d290 5f311e65213a8228 3d15aefe2b5088b5 ecde3fa530934423 2290a46e186c3668 e32b2ee7b8aa7c83 dd5eaa9172f57fef 3eb00ae28ea3f1e3 d9bbbf3cda59d9ac 28f685536f5bb62a 1c9932c5ed702ecb 1b27c4c0835033ff 4e40b46ed835324b e3b7263ecc83863e 22da4782918f95ed 413a84fc4591988c d5725047177a35aa 6fce9a5b242c4269 19c5825c40fffc58 f9a2fb62ec9811c7 8c82ce2d0a3db2ef 0a93511c3a962cc4 fac089d636935b07 fa7c461f5251f12f 0aef546e61cb1cfe 8540c647d3a2fcc7 83b372c9ccbd3df1 bc0e71aab51e9b37 f4a5939467124c8c 80c65604c0fc9763 0fd4482cc7448d0a f6f1d8cf7c1aa939 c8332e61167009de 70a59acc454fa754 140d12b4d2735e72 6a76214ad5196726 b780e65b32c3929a 067bc625bca9557a 8fb8bb0479556ac5 90d2c6eb8cd0f94b a9bdaff862a3e7e8 ab7b2d52593e369d ac5ef0d26c14616b a4a728a4d50d3a0b acd4e5c8ae4a5852 a30c99f77e48a7c2 aea576c73b8260bf b032057457249094 04207e4554333811 9cfcf63a655d6a86 b14377f980e6f5e1 04eb9fb347a2ef06 b319cbf6c3cb81c1 b3bc65fa04657660 9301358643a586e4 159dce2e9ce23769 2ec379825ed71f44 cf5ecf72efed5e0e 62ff63f109af38a9 614ff5b0dce18cf9 d0c71a1e8cae3e68 cffad9e1e5876ccb 61495abeccd32355 f40fbc744e113281 2b8bcf89a75d067a d3896e607c424974 73febbf9aa1042da 7453b16b0ed0ed45 18d2d2fb29c526de 5a9862111b629048 8928eee3abfddf35 74876fe59634c4e3 1117425c1efb590e cdc38baf78ad9e46 c7f0649cf3f9052b 1113a5bc8000cbfe 495bd77becba712b dbfa93c459e79dc7 bad4147b00b0ed9e c0ca8a6aea7ef57c 796739bf91ed067c 275cf4940533f817 3c6dcd0d867683c6 470eea058c986d80 273bf37dc378abd4 907ceb5e1df411f7 e340295bee30d48b f7b02c4968b68748 dd75c40f2ad1d432 056eb2e4d0e0f9ab 7bdcff5b1c74e187 6989a394bbd88ca8 417c86400f17a4c5 d7ffe71e45822278 cc17069f79bd20c3 687eb7761077199a d2e8e4dec5c1b6e2 565d705ebb03299a 4285b2fffde7b6c8 bc9ad93269e8d34d ea5def88ad4da53a 67a3f76a75cdc27b ac215e6c73010843 3100f131a4cb710b 310ae30ea14eee9e 15777f7372f54d53 4460de593e18e2ee 822c6a20da27dcc3 6eeada7bf8ad1565 d8e3fb6dc2232ecf eb00d64e15e887a7 710767bc94ac13e9 bd8f6bf539eedc60 d918f97ab6323aeb 640d9472459bfb12 03107c0920fe5f18 616b35d4b7281172 0ad91638da93c8a0 5b1d1166bdbd1245 b874e606aad90947 0a13a968a2c3478d 07609059b1df9304 5c08a79b219317c2 8e0198baf829e19d 1c33cc7a7501c9cc cc2ca10ac098ba26 41824ba8ff6fe02b ba142b7f57f7ac45 fe24af5910757221 5cd4fcbf8c498c16 0549fe0087504b02 a8790a812580bd8f a76347f3e954b7fc abca3c42bee2b99a a3e64fcbd6555a23 a3d1f707f6fee654 331260f9e25d571b a117f65a3d64a20c ff60944284dacf4e e713e3be7e395802 032472ab9addceb4 9f3a5db3c2d0c823 038b5c19c58ec884 f33d1bb76bc9122d 9d781139387bde28 6239eea44d114561 38c0f0b55ffbf550 992d9573691022a0 fe413f227fe8815c 051315dec73b2f72 b397d5ae368919dd 284b775d46f6d93a 27a08033f8f17843 94401a6064ee33d4 ee7dba4790cdfc43 7d948b8576b80367 cab44a39c1d4318b 2087c73b06ea2478 46bc1a0314219873 6ed6e230788b528e 1f49745f91614eb0 177c7a676a4ed900 2364a906b456fa07 c9dd5bfb97ab9bcd 77ff7e0b3b4095ef 471aa3b582c14dcd 1c75bce67296612e 7ba6d779faa71721 dc72ff3d81ec63d6 7848ce71ca39a338 c2ef8ed806928046 f7773e07ba5c99ac c3ff12eb9e2b5c2c 17f4c27770d0e1b6 12e6fdd1b02ad0cd c5a9aaaa76bf0b87 d568671712205c71 bea19829feff1a50 606f4a9517e1a753 c60a42e65d64aec7 bffe0b337cb84a0d 0b14366cfd58d59e 567fa43577dc119a bffdc6b33de95159 55ce101a25f5ec38 0c9ab9c6582e7036 2009532b6121f3bd dfe3ef0047e95847 74c7f8f80d85d698 d6eae27fb5b1b832 d5419c2a27e2b6c9 82220ed9567230dc 18d97afd4ac80c38 ff0ecec1b9af0626 1220ba0c751f5566 36a728abe3275a3f c6b90a2efe665b3f 73d07315e2eb7a99 cdaf2529cb685561 f0fda93c68126d73 9d7c6a4980326d09 d98b4fc557cfc7f1 aaf730a048db37b8 d6a16feb9f184861 564a27eb01005ee4 6a1cea8e833178a6 55beabfaa31a0609 6ab1156bb37785dc f4af74278f747713 318ad5ba61fba16f 153690793c647441 6f0c44fa37113c7e a2ad44f024e2b886 381504dea8afb676 1328a0095d432c5a d96ed5de2d6ccf65 718d9f9464142cc8 9cbaa0893c484087 4a688bb69b59c9d0 84d5df63b1ad1b9d bad83809eda7ff7f 2628f60b8d520b7b 63a5868cba9d2370 cefb2ed75c761975 862abe9999238554 26dcaba374188381 46de2f66b003d62f 9babbcb5a2fa42c0 1c2439a0f87338ab c1458f56719626d4 ba7ebdf1a9eeb834 91225f24150f5c0d 91948a2e59644ed4 8073a5881240634b 271a51f6fd1b4174 bd3f9982e465e23e c3ebde6e4ff065bc b40b54d35d26d057 8527b03be77c9c7f 2036793c500cbe04 f2a372d4d80ccce0 6474062ed73d6db5 39b9ed2ac8e9f339 eeb84f8d45da787e 9657ec783e81872f 99e6657b7fb42fd5 23a68425de675125 1d5af58897f5e9af fe4282dc719ed559 0ca2b166c6290a02 0cb1738276f4f570 194f3bcc5689b882 fc2f252d3b258c15 fca4afb4508b870e 13506b999c874038 0f1638dd54f32c28 ff52a22dab5f898f ff47849e61199855 2098f849d85579b0 2928adc91a163e33 18370f9eb04410a0 aa991cee7477f217 6b802615f9615b5b bb41945772836cdf d77b9095fc4eb8eb bcec5e38bb02e457 4e66e518a7f8a57d 4ca6d20aff892da7 4ca6c2ffdbaf0d2b 70a7678bda27a07e dd2d2a2f39fc5f66 860c04f97d969415 b7f9450715c6b8fc de08a0797b78fecb de96a06f59124bc3 886771f1aa536ba9 8bd279a3026e670a 4393578252e51dad 8c8c07fbafd04ea4 8cdb7d2517542611 5664c5bb08ac04eb 7c94e5b265446a1c aa868989c0cb830d 591c32e40b09080f 6f0e70f4d8edfc00 71511d602d017dc6 72f33d20e44d98c0 69fcbe947310a869 667b8900814e3f33 cda0058f1385a887 c4f987ec1b07259b c4e14cbb5edf2fcf 7865bb260dd0236e cfe68790adfb2167 79349dc955d5ef39 d1f522484e75ba3e 7a05534d2e625cfc 7be8058da0842305 d3cff311a3236a7b 8dd7c1843957870a 83b0ee7a486dd4af 70f742531036b334 e3da9c79b632f375 b0b59bbbc5497e97 38a287ef8cf44295 e26dfae702a56e9e 372aa5d545387dc6 e4b761352965f33c 9c1c06b552d308a8 300b2508510af00b 94353e0315b0cbbb 3c04a44faa993538 b516114fefbb5ea0 e6a077f04e2c0dec 9e7eff02644a900a 2f4a5b42002226aa a98caa9911352064 3ed7fef42fec6c69 352f7f5ee25fda3a b663594e07a24753 7a978cc5a0bf99c9 36d5e4b76ea652f2 531af9f83d997e80 2ac56c470d1b4df9 c6159bc6ed22d08e a2033df9d74543ab 193217000681e204 1722f318c5a6716d cd32387f4b46551f a80957d0875b3bc7 327f424b7c8d664a 796d0f1fa6701433 c1b7a7d0f9a5e8ce 5cbce48d801b2e0c 616375c8d10831a3 0bfe75aca27bbb2a 9fef71260bbed748 d3a592dfcf988e77 e6e8afe7ececbe63 d7bd82539d4f8821 bc7ab3f66cb2ceaf e8806bd450e66514 c738ee4f6d70f677 8ed2a983b0d48dc4 fd3b476e1a1df9fd 4160ad99f446f662 8c2d52ccb98aea05 445efd535ba07b82 2da8ab3c2d6c9454 8a1ea88b673f5430 46ee86c4a5f14773 7306d493f89e3051 0ad84beae7b89b4b 82732b54af9de862 860faaa2a4d6c20c dd4774881d77ddd8 3bef94ef355ede70 49aa60a55aabe0c5 bbf10faf9c36f3f7 684fe4670e158f42 1f78761de9b3d3c9 9c3ffb205a71a9e0 2ca44e0018e397a2 74287c5f5a53a7a7 cecb6adc090af7be c5cb537643bbad6e f720a68ccb9d3726 f5f8aa9a1b4807f9 121e5332c94fcde3 8e01eb324720b141 a225da4b8603c445 0f2b0aea7c2c0530 fc7b0bd3716241fb fc654f8fd13fa32d b644d79f7c28179a fd870cb63f924ad3 8799df32b8b7bef0 85ee61e8da2d1dfe 94d4107b15a651a9 0b4d9e5b3e087218 0b86b1c05ffdf5df 83075073d5c53594 be62824b90031e47 bf4c0e7643f271d2 f841a2565e3cbd3f 00094466c9f054f4 b0acc4da1522fa45 0d77a0dbd7fda4d5 7b9ebde21ce7ddc3 7e693dc876450941 e9e9a90db31b3748 fffd25c399a01768 ee4442ddf2e0d9b8 d22d266740098f94 200ae1a5e3d9ec81 5f46ae3f4dcb314d f2f25700acff5b49 5cb2c1e6c0cb01ea e255fe9f64ebe8e3 578b62be76847f78 242497dfc819a05c cec26b6ea1e8b6f5 debab73b7b0174e6 232f964191aa094e 1ec0b9d1cd6df54b 22e1a9b36b6156ec 1f0f6902397c5859 504f28417da05a3a 4eaab0a3b23baab0 6384e58a2c7d0d71 5f997e82dbf12509 63edb08e72984b19 6559360d1cb525db 6c4591ae5ee38aa1 2c1b1ab667217875 3682a667b55af74a 36beab1dcbe50563 e507b5757280fe26 4cb8b17397b98382 27ad0c11f9587db4 90269f7d2df66c42 b8fd9932d977d3aa f5abcd5d3a3fcc69 2ffd8801f409e74d e79027b56f892eda 3e0b8daa1e7119eb fa5634cf4477b791 904944300610b194 9eb6f4d326c393b1 9e5df68c398a9042 8a47afb86ca2a62a 8f87322bfab9b87f 8ac17661cad1f6c9 946c5ec070c5be23 444530352a3471b2 3cbedf8f29670cb8 946e793085fb0a3e b1b23bdd8a9e616e ed6f7eb8c5f79fce 27068bcd3c04af3c ec2b6bc7882e5d8b b17756861eee06de 70085b9b0f9ec276 85fdbcc2f4342108 8084fd248d372ade 191a3aacc09318ce c576ea432bd6bd6b 108ba5806efc4942 762d46d9d4936084 570f39086260280c 65c29d60aa1870b3 c77313585bad7399 c30081cd08321d6f 73c7752f1b18590e abd77a9099cc6027 4a4776898ff4f54b ca790ba88493af0b 625993ac8dd8263b e42afc8f8c9defa8 2cfe0100cf66fa3e a73c9c5aded50eee b317bc85a1550ed1 9f9438178a31c5d1 96547eeec750ea3f e6ffe02cb888f456 2e594c693c818cef 3af6d5c3a4a7bb28 5846f4e02ed630a9 6b33aa20fa078e64 1130aadc95d5dd43 8321d56af75b7209 0c93607fdd41ade8 4917f9b4d516c6ec 4898b77dce470dac 818a6f229deb4166 22d7f4857a49971f 7d54777a0042c5cd d5b5f8444f6d2b6e 089ed3f78378a4c4 7de8c8cdd77dc1ba 5efd3c5864f2bd9e 485691e2187ae9de 1f353ade4a44cc80 9f8f63f631a11409 87766288b75c0b54 cc72c74ed12ce0ea 161cd4d0d42c56bc ecf4ea779f2d4760 f8b819ca9a02552f 76b528dff297f6f0 f17b94f850dc4020 61b266bd1ce9cdb2 40f4ba791475fe19 3d02d9a8efe6bec5 26239bb0d0d42247 fc21ec1f1801913e c071294040a25587 98793b84e26d14c5 25a422979567b91e 50b4a1ec136a5e00 6e3ee1121e7c733a 2a9d8b33f8e3372b 5ad430ad825f379b 45ee8f027bc80e8f ddb737d42c67c20b 2628b65765a77f16'
In [259]:
rdf = pd.read_csv(f"{PATH}sample_submission.csv");
rdf["images"] = ""
# rdf = rdf.apply(str)
for index, row in tqdm(rdf.iterrows()):
    image_id = row[0]
    filtered_matches = get_match_by_confidence(image_id)
    joined = " ".join(filtered_matches[0:100])
    rdf.at[index, "images"] = joined
#     rdf.at[index, ""]

117703it [00:37, 3161.86it/s]
In [242]:
rdf[rdf.images == ""].shape
Out[242]:
(2363, 2)
In [254]:
rdf[rdf.images == ""].shape
Out[254]:
(4073, 2)
In [265]:
rdf.to_csv(f"{PATH}google_retrieval_test_submission_1.csv.gz", index=None, compression='gzip')
In [ ]:
rdf.to_csv(f"{PATH}google_retrieval_test_submission_1.csv", index=None)
In [263]:
rdf = pd.read_csv(f"{PATH}google_retrieval_test_submission_1.csv")
In [264]:
rdf.head()
Out[264]:
In [151]:
test_df = pd.read_csv(f"{PATH}test.csv");
In [154]:
test_df["images"] = ""
In [158]:
test_df[["id", "images"]].to_csv(f"{PATH}sample_submission.csv", index=None)
In [156]:
test_df.shape
Out[156]:
(117703, 3)
In [159]:
sub_df = pd.read_csv(f"{PATH}sample_submission.csv");
In [160]:
sub_df.head()
Out[160]:
In [161]:
sub_df.shape
Out[161]:
(117703, 2)
In [ ]: