;///////////////////////////////////////////////////////////////////// ; The image embedding code in this script is from Veovis' post here: ; ; http://www.autohotkey.com/forum/topic10957.html ;///////////////////////////////////////////////////////////////////// ;///////////////////////////////////////////////////////////////////// ; The images embedded with that code are from this page: ; ; http://www.jfitz.com/cards/ ; ; ...except for the topmost logo which nobody else would take ; credit for so I have to. ;///////////////////////////////////////////////////////////////////// CoordMode, Mouse, Screen Gui, Color, 000000 SetBatchLines, -1 gosub, definepicture WriteFile("logo.png",picture) Gui, Add, Picture, +Center y20 x130, logo.png FileDelete, logo.png VarSetCapacity(picture,0) picture = gosub, defineyangyin WriteFile("yangyin.png",yangyin) Gui, Add, Picture,yp+110 xp-117 vPic, yangyin.png FileDelete, yangyin.png VarSetCapacity(yangyin,0) yangyin = SetBatchLines, 10 Gosub, SetText Gui, Font, s10 cffffff, Verdana Gui, Add, Text, yp+100 xp-0 vTxt, %Text% Gui, Show, h400 w450, Mind Reader Return WriteFile(file,data) { Handle := DllCall("CreateFile","str",file,"Uint",0x40000000 ,"Uint",0,"UInt",0,"UInt",4,"Uint",0,"UInt",0) Loop { if strlen(data) = 0 break StringLeft, Hex, data, 2 StringTrimLeft, data, data, 2 Hex = 0x%Hex% DllCall("WriteFile","UInt", Handle,"UChar *", Hex ,"UInt",1,"UInt *",UnusedVariable,"UInt",0) } DllCall("CloseHandle", "Uint", Handle) return } definepicture: picture = (join 89504e470d0a1a0a0000000d49484452000000c8000000640806000000c3867f0b000000017352474200aece1ce900000006624b474400ff00ff00ffa0bda793000000097048597300000b1300000b1301009a9c1800001f214944415478daed5d77981455b6ff55ec30d3131840105001416004c4804a1084074a104124892b22690113200b888a22a8c8921646c21a50f4892c9204148912252349e01104140601993cdd5de1bc3fa6bba6aabb3a4c709d50e7fbeafba6a7eebd7d6fd5f9dd7b7203005957e9bc1a346840fbf7efa7df7efb8d468d1a451cc759cfa5f82feb2194c6ebd65b6fa54b972e919e366cd840494949d6f3b10052be2f9ee769f7eedd6446e7ce9da3bbefbedb7a4ec574b1b0a8d4d1983163d0b46953edf392254b50b3664dd4a953075bb66cc1e2c58bad87548c64ed14a5e8bae5965b282727473b31162d5a440cc358cfc612b1ac0b002d5ebc5803c7891327c8e17058cfc502887501a0c68d1b93aaaa1a409a376f6e3d170b20d15d3366cca0b4b4345abd7a353df8e08365f265ad58b14203c7e2c58b2de62d2900a95cb932cd9f3f9fae5dbb46696969b46ad52a6ad5aa55895944cf9e3d0d961c5555e9c30f3f2497cb55665e54c3860db5f5b9dd6ebaedb6db2ce62d0900494e4ea68b172f9a9a143ffcf043b2dbed61fbf7ebd78f6ebef9e63f6d014ea7932e5cb8603abfc3870f979917f5c9279f68eb9a3a75aac5b8250120d5ab57a7df7efb8dc2d19e3d7bc23aa73c1e0f656464509f3e7dfe94058c1933c6309f2b57ae50cb962dc9e170941905b66ad5aae4f1788888282727872a57ae6c31ee5f0d108ee368fbf6ed140d1d3e7c982a56ac1834464c4c8cd6e6faf5ebc53e7987c34157ae5c31cca54d9b3665ee254d9e3c595bdfac59b32ca62d0900193d7a341111c9b24c13264ca0a4a424baf9e69b69e2c489e476bb8340b27bf76e8a8989318c51bb766dedfeb56bd78a7df23367ce34cc61f9f2e565d26b9e9a9a4a44441e8f87aa55ab6631ed5f0d906ad5aa51767636298a622a1ad5af5f9f8e1d3b160492152b56189c564f3cf184766fc99225c53af1fefdfb077dffbdf7de5be65e50b76eddb4f57dfef9e716c39604807cfcf1c744443464c890901d63636369e3c68d414cfae69b6f6a6de6ce9dabfdbf57af5ec536e9071e784093c9fdb471e3c688fddab66d4ba9a9a994929242090909a5e205ad59b3465b6359355f973a801c3e7c98860e1d1ab1b3cd66a3cd9b37079958dbb76f4f1cc7690a7e464606399dce629970e5ca95e9d75f7f0d02e6638f3d16b65f870e1d0c211a274f9e2cf12fa75ab56a24cb3211111d3870c062d6d2e8288c8b8ba313274e189835353595060d1a64300717c764398e333db52e5ebc18361762d0a041244992a1cf8c19334afccb19356a9436dfc183075bcc5a5a3de9c9c9c9949b9b1b749214b7683071e244532bda5b6fbd15b2cfecd9b30d6d3d1e0f8d1831a254bc9c3d7bf6688ec1d222125a0009718d1c39d294798f1e3d5a2ce3b76edd9a1445d182f4f454bb76ed90fd9a356b468b162da22d5bb6d0ecd9b3a94e9d3aa5e2c5d4ac59535bdfd75f7f6d316a690708c77174e8d0a120803cfffcf3451ebb62c58a9a3ef3d5575f1914d77dfbf695c9173376ec586d8dddba75b318b52c042bb669d3260820c3860d2bf2b8cb972f2722a2e3c78f536262226567676be38f1e3dba4cbe98bd7bf71211517a7a3a89a268316a5989e6ddb46953500a28cff3851e6fc080014444949d9d4dc9c9c9d4a2450bc3f875ebd62d732fa56ad5aa9a0e6745ed96b194db03070e183edf76db6de8ddbb77a1c6aa55ab1666ce9c090078f9e59771ecd8313cf4d043dafdb367cfe2d4a953459ef3c89123919696865ebd7a856de770383065ca145cbd7a1583070f2ed277b66cd912478f1ec5952b57307af468701ca7ddebd4a91318860100ac5ab5caca792d2b29b73ccfd3e5cb9783c4ac23478e14382d946559daba75abe6a1f7ff7ff5ead5dab873e6cc09d9ffce3befa4f3e7cfd3dab56ba953a74e2103179f7df659c35c77eedc498d1b370e6a979494a4893d7e2bdd8a152b0a1538d8b163c72047e7f6eddba94a952a86bc0f49922ceb555912b1ba74e91264e2f553e7ce9d0b34d6881123349f4aa54a95b4ff5fbd7a35a2f25ab56a553a7ffebce1fb7ff8e187a076eddbb727b7db4dc3870f37b40d54fc5d2e17eddfbf9f8888c68e1d4b4f3df594a1d44e41d6f5f0c30f1b4ce2c78e1da3050b16d0d6ad5be9f0e1c364b3d9282b2b8b8888366dda6431685902887fe75bb870211d397224a86653b4e3d4ad5b57f37a77eddad534f891880cc0f15f8220d0ae5dbb68c78e1df4c0030f686d737373831290ae5fbf4e7dfaf4a1aa55ab1ac6ddba75abc13af7dd77df1111d184091308003569d2446b2b4952d4ebaa5fbf3e656464687dbff8e28b20fdac63c78edafd575f7dd562d0b202902a55aa90d7eb2522a2a64d9b529f3e7d824e91e4e4e488e3300c43dbb66dd318487f4f3fe6f1e3c74dfbcf9a358b962f5f4e76bbdd00a89d3b771adaeddab58b3a74e84000e8fefbef37cc73faf4e95abb69d3a61111d1071f7c60c80df75366666654cf272121814e9d3aa5f55bba7429b12c1bd46ee1c2855a9bfbefbfdf62d0b20290b7df7e9b8888f6efdfafedbc7a8620229a3f7f7ec471fce24e6a6a2a55a850c170cfcface1c2575e7ae9252dece491471ed1da8f1f3f3e6cd6a39938e84fe55dbf7ebd61a76fdebcb9d6f6e79f7f8eeaf92c5bb64cebb37fff7ed3d8b40a152a6826ecb4b434ab9468590188c3e1d0748301030668ff7feeb9e70c8c979d9d4d898989616b3ef945909e3d7b06dddfb2654b81fc2b7a675ba3468d42b69b3e7dba4114733a9d54bb766d4a4f4fa773e7ce05cd591f82be72e5ca88f3d01b02b2b2b2427af3df7aebad028d6b5da5042083070f2622a2ab57af1a72d40541084ad90de759f75ba8bef9e61b53d12b2d2dad40f15d7e07e32fbffc12b69d5fa4f333a62008b477ef5ef27abda662ce4b2fbda4b59f3c7972c488dcf4f474adfdc0810343b6f32be765d9015aee00c2300c1d3f7e9c8888de79e79da0fbe3c78f3700e4e0c183a6e3f4e8d14393e96bd4a81174bf56ad5ada188aa2440c9f675996fef8e38f8869aaa2281aac4a7dfbf6d58222c78c1963da272525456bffe4934f465de86df3e6cd51b523226ad9b2a5c59c6501207e395d9224aa5ebdba691c5560a46f93264d8242e6fd95ca478d1a65fa3dfaecc4b367cf469c57d3a64da3ca53d77be6737272a855ab56244912fdf8e38f2175007d0eccadb7de1a72ec56ad5a19a288efb8e38e90e6f1cccc4cadadd7ebb52a26960580b02caba5de2e5ab42864bb7ffffbdf0680cc9e3ddb707fce9c395af187506129fa50f7b56bd7469cdb840913b46211e1425dde78e30d4331b6fdfbf793c7e3a17af5ea85ece33f99525353a38aa722229a366d9a699ba4a424ba74e992c10051560330cb1d40faf6ed1b9512acf71bf84bf3f877e77beeb9470b636fd1a245c83156ae5c696a860d751d38708088883efdf4d302e91f444493264d8a2a0c3d9c22ed779a1211ddb87123c822a7b76e2d5cb8d0901c959292623166690788de8cfbdd77df456c1f180adfa64d1b6259564b0a0af479045ee7ce9dd3fa0e1d3a946eb9e5969096ac1a356a44152a9e9898a8a5b4deb87183ae5dbb46bffcf24b58f1a677efde0645ba49932674e6cc99a0767ecf7b385d66d0a04174fefc798a8b8ba32fbffc526b3f68d0208b314b3b40f4e119d194217df1c5170d0099376f1e0d193244337d862b67e372b90c7d3b75ea44cb962d0b094c7ff256767636391c8e90162fbde3d10f944805ee66cd9aa5f5e9debd3b5dba7489de7befbd907a4d464606c5c5c5058dd3b87163cacacaa2d6ad5b13003a79f2a4d6a769d3a654b76e5d5ab76e9dc5a0a51120152a54a0ebd7af07856584bb929292344fbbdf24ec1fe3b5d75e0bdbf7c1071f3400c41f02ffcc33cf844d555db66c193df9e49321e57ffdae4d44b477efde884195fa34d893274fd2a54b9728363636e4b866b9eff1f1f174ead4291a376e9c5621c62f662a8a42952a55a263c78e51972e5d2c062d8d00f12bd5050d425cbf7ebd69c18548161bbf9f45afc4baddee20c60c8cd7fae73fff4967ce9c318d88b5dbed06cb111151bb76edc2ce233e3e5e3b69fcd4bf7fffa072487aab5da0b2cfb22cad59b38656ae5ca981b159b366866a2b5f7cf105ad5ebdda62ced20890e4e4640393ac5ab52aea50f661c3860501a45fbf7e05aea0184eef99346992a10a7aa853a66bd7ae86f176ecd811711e8f3df698a1cf4f3ffd14144fa5af346f968fffde7befd1e9d3a70da01d3a74a8c11c4c4474d75d7759cc59da00d2a95327d39a54d17a7df5cab39fa2a9fcfefdf7df07f51b3972a4a9e1403fbf708eb9a54b971ac66bdfbe7dc479cc9b37cfd0c71fec18caa43d71e2c4a0ecc8cccccc208b9fbec01e11d1b7df7e6b3166690288d3e934449906d2efbfff1ed5973dfdf4d3417da3a9fa6ef6f30b666546f5bbb72ccbd4b061c390fa90bebe703445d918863180cf2cbf24d05af7e8a38f0625493dfef8e3417d76ecd861585bf7eedd2dc62c2d00a953a74e506e875f1458bc78310d1f3e9c1a346810d597e9b301fde4575411a67a63600256565696a997dbaf4013112d58b020e498afbcf28a61bcbe7dfb469cbb3e82379ccf460f3c7fb6e1430f3d4439393921eb71f91d8ffe220d917e73c5ba4a1040f4fe077df293595849a44b1fe4e7dfe503c34ecc12a06edcb811949e1a2e14c5ed766be9ab66973e0cffc2850b240842c4b9ebc5a043870e856ce78f2c5055952a56ac48cf3efb2c656767d3bbefbe1bb28fde586045f1963280f4ecd9d3609559b16245a1f3140441a083070f6a0c14ad43ac458b1674edda356d0e3367ce0c6ae30f982422fae8a38fc28ed7b97367daba752b656464988a3c66d7efbfff1e56fff15f2d5bb634640d4613f13b65ca14ad6da85834eb2ac13a48c3860d69f3e6cd74e6cc992217a1ae57af1e9d3e7d3a6214ac5938f892254b282323c3f4d75ddbb56b473b76eca0ab57af860c0a2ccad5b56b57dab76f1ffdfaebafa6a9be8129c3dbb66da3d3a74fd3134f3c1175cac0e5cb97a966cd9a165396a08bf1a3c4228b4a22ddce70982ec6a212c3e22339171fcb6ea8ffc5efb700625189a59b1916cb6cf1a8cce4976fdba14878c19b89b4ff12dbb2d66bb0a8241207608e186b00070034e704acb2c52399e12c8058547ee9efbc0377b182f6798dec414bf70d3cecbe811f5509ff125d96886551f915ad36d81260f7955f5d2e7b304acafa4be6629d201695381acb3b35709c5515bcfa1781c3028845258eea311c3a71a2f6798c9405cf5f381f0b207f125504834f451778eb51148846084eadb2fd6ad983fdaafc97cec77a7f7f1235e504b4e444f4e5ecf8547103005c607037cbe32e964732cba326c3c10e60bf2a63ba9c830ba496eb677607c3a19deff4f010618a9cf397cfc902c89f448d98bc473b5470a03acbe24156403d8603ebdb1df5548de5f01027a0bb271de7ca314806f076edefcf64377e2b01cfc2b262152355068347391b3a7222ee6579533084a3bd8a845ede8c72f9ec2a81c1367b224486819b082ddd3770bd04b0a67582149144005d381b7a7036dccbf29afc5c18ba8f1330927760869c5bee76ad67783b44dfb35bacb84b0438ac13a4884af8d3bc1d4ff176546422db3a4ea83276a9120eaa324eab0a52494516082c80ea0c8bffe144bcc03b11c330d8a87831cc9b09a99c3c4b0ec04e7b222a312cbc4468e54ec315940c51d33a410a48b160f03cefc0b3ba1d2f14a9449821e76295e2c1c530f2f45952b14076e39caa60be2d0e6d3911037907e6cab9e5e299b6654554f26d326b156f8901076099790b74d4f6e26cd8644fc060c1610a0e95087b14099b142f00e03829489173c382434f3fa8f9674677ce566e9e6d2f3e7fad8b7c16bf9242d60912a502f92fd185fb39c1f4fe4955c632c5835572deee37438805006c570a262455d1896a3733e563efba092c1ef2c55c1d53651cfc8bfd1e16400a48cd590133c4d8203d4321c25ac58b858a3be8a536f70169875a308074d079907f2f27e6dec778119cef34fe427697b8f95900096759e1ec78437006996bbf533c982ae598fa2c1a311c2a322c3c44d85b0080b8c0e039dea17ddead960f15bd934f94f410618d4f34b500520aa8032be24d31c6f0bfeba462ac370b1bc330efc3be5360af2aa120affb35c1a929aa00f07909dc4d8b9baa332c1ab3792cb859f522b3041a542d8084a07f084ec3e713aa8c01de4c5c8e20faf84325361440ffe8cdd9d043e745fe46f6e0082965fe1977d689942b646f899ca305901014a313abceaa0a9ef264444cf3acc6b068c0f22022ac8b525c68cd0a784bc83fa9d249c52429bb5c3ce3477de25526a9d8ac964c805866de10b446c90fb27e53ca8e2a07baa36f473c447254b6fc875801734517041f185522bceccdc2d572e0bbad04060d7d69b33f285289758a5a0009419fc86ec894c7a8072228ccef0b31d8614fc0183e4f2cfb368ad363206fc787a20b36dd493553ce35f842a2a12a60b1cc16875df6448ce41dd8624bc0594712f6d8130b2c4a8ce39df8c99e8825621c1a3345172eee63797c678bc71e7b2206f17603b3b5e1442d2c674314a74771ad3390fcd98bef09313073fb5aa12661688a10831ebc1d5ddd69381c4627f8da168726bafce94eee34fc6cd2be0218dcc3f2f8bbe030b4078025b21b630b285a890096dbe2519f3567e65ab9d7a31e679ee8426b9d4e20fba200e6cab9b89de1708e1414442b6acd0a9827ba0c0ed57d8a8461de4c5c0361bee8423b4e844c847bdc37c22ae8455de71b82135d391b562a1ea448b9b8e6fb2e1ec0325b3ceef48d9b492a56285e4cd0bd07eb040943b3e45c6413e1199d026d460b24a3c569b8906faefdde168fb38e249c7524619fa302e60780090096ca6e8c2b84de3192776a4cb35791d0ce9d56e03104001fe8c021116193e2c5f7aa177fe36d18c73bb1c2168f55b678d48cd279f900cb63ae0e1cffa7ca58ecab67f5992d0e22f2fc4b00b05795235aaf8ab2ceb6ac80677907121816fd780786eadecd08dea98103005c0c8b3e01110c1640c2d02552f1ae948d2e9c0db5c230c716d50b8948a78bd8f0a4ef41bf2665e3ac6abef72a449826e5e01f5276818ff19a0c8bfe3ee0feaa2a18e4cdc4994258bede1762d1c6078eeba4a287271d03bd9978de9b8566ee341c27194e86417d96c7625b7cc4f16a331c1688719ae8b852f6a0a3271daf4ad9e8edcd40474f3a9ab1029cbefb919ca94559673c18bc23c61a4ec58f7ce6f37b591e43783bb288f0a4273dff9d583a48c1e87f150fd6295ef4d339f102e96156d4146d3f4d1062702bc3628f2aa383270d6f7ab371489590492a3249c5b78a075d3ce948296440e2cbbc53fbceb15216320a2129bfc03bf0b82f0e2a9d543cedc90812259fd0eda8a9114cdc2e305820ba10eb9bd7b78a0723a5ac20a6d3e79cef88600e2fca3a270931a8a8d32cd6295e5c22157600d38458b00c83f15216cee936b0c0d3cc32f346c34811aa6a74e1456db76cc8f2a8c572886118cc125de8e1498704e033c58dcf8a2910af26c36a4cb651f1626721e297dab0025ef6815e26c2506f264e0680e33686450b9d38f85504e7e5fb620c6ab27996a9a3aa8c51deac20768e07838e3ed065908a2324ff29ebecced9d08a13b1419534dfd4629f65f225de891a2c87a5b21bdf285edca713b302437cac13a488140b060fb3792f60ade2c10bde4c787ce2562396c71b424cb17fe700dea185bfcc91f24f207dad419942efb495c1e07d3156b3224d9573f0a309f3bdc0e71750c821c24ac51396211ff1317e0e115ef466c20c4efd793b1cbe31f7a87258637861d7793bc3e135c18921de0cd4f699922f93829daa843a0c87e7783b7e53154c94f272deefd601e45c80386c01a488d4891361f3a5896e5325fc4c0ade95f28b0df4e5ede8568ca1eb7160b4f17e5265fca4db81abeaf4a46b61586f9ae842055fdbed8a17ff3639191a311cbaea44a1d58a07a1cc083781c51bbac883b7a56cfc62228edd04160375a26ab858b5a2ac7318efc0142907e944a8e53bd156c95e1080b78518080c83715236fce7dbfdba53f258c0896601a488e47f895b5549db313f53dc58a7db6d270b31a8574cb564bb73366d075e1ac0d8fa68e0a3210c033d389b166d9c45843126d6330ec03bba1306009686393dc60b4eb87c4cfba322e1ab106dc70b4e4d390780436144a6a2ac73a49485c58a4773dc02c037becf4d39016b640fb6ebc0f9870eccbb03e664e92045a01a0cabc9af6b0298e21fde6cd4b3f1b895e5606718cc175de8ea49c78d22b89d36d8120c79227b5419ac4f39eecc8918c9e7efe24b4c4e850a60304eb7d3ff53ca318d2d1bca3b6007032202c330b8a02ad81782999bb23c3afb147d2f11c687d0d7dab28216c809e499930f8718b3a8ebf4933f94e5bcaae0142998c3bb904b844992b19cd0ab5236dc00ee6179fc6401a4f8a8076703c330c825c28600ef792608c3bc9958668b878d615083e5305774e16fde8c4287550cf16662bd3d21df2aa3fb5b4f9fcb6e6c30115f460b4e24f818efa82a9b66ef3564380ce61d58ab7850cb675e5d15e6f47855a7637d26bb4d530012c060b2188b2f653706fafc102748095931b1a8ebf42bf87ef1ea5bc58b3e9c0db7b11ce648394161405ee499e3cdc80248218903b408dc8d8a1766c6da9f49c1eb5236def7d9e29b7202de16620aec31f753139d32f92f29077f10a13d276a21e34754199fc8b9586fc23475190e3d74bad04413df8b13c04cd18519520ebae9d26043e569b4650534f27d7706a9214dd6ef8a31d8a678f1bb8e31c389574559a73637dd69b55df562a6e8c20d5fee7f41c8024821a90d2be026df6ebc3ccc0ebb54f12059e6343f4a4fde8e33a4982ac691a89deea52f513cb8446ad4a6e31142be4568bde2351599260bb1b84c2ad6a95ebccec668569d93211c732fe9c4b5b9722ed24dc4c75e9c0d77323c3a78d3315977da1c0f0390a2acd34fad7d96c5aba4a201cba322c362ba9483ac028ab896925e00ba8561315f7481033486bf4e2ab646f0064f9272b04be7101bcb3bd145c704d19e580ff876d0f3aa824b0548c9bd9de1d0dec730448419527049cfa77ccafb086f265aeaac3a1b429c1ef7b2bc16a69145842fe4e04da21ec3e1752106af4859c802215977329c5015d464587c1af03b1f4559a79f1cbef9f98d06037807b288f0692136250b2005a02a0c8b769c88a9422c9af92c41df289e88417c0a80e1de4c9cf7595c1886c15421568b478a861ab1bc66293a1485c3ac1d2b60a32d4f76efc7db358bd45655c2898013e14e86c3782106237da1f6fa796d5525f4e06cd86033ea017fe3ecba5dde1db433bbc02045742145cec56e558613798e47202facff22299827baf05900d316659df98603418b03abc2b0b88961b15471172a63d1024801a89e2f04bcab4e3eff8f1c5d71fe34109ef36620ddb7230a0c83b9a22bea9f12bb47b7fb1e8ec038ed5801734417e6c9b9b00186d32a90211391378f143957337d36f5815f26422b56c01431160b74fa8513407bdd98ff1b30260360a6188b33a468b5bdeae94ab1fe422a5e17627091d4a0f4e5c2ae534fcd74006fe44b60fbac9029cc16400a406d03cafe1c5765d3b0f650748e54fcdd9ba90536c6320c3eb1c54515257b978e71fe2fcc7776e144a4882e7ca978f01fc58356aca8edc8574935e49be4fd0ea00b3f918c0f7c4c568361b5df05e41906030507b62b5e2cd1e959ad7dce510038a5ca381b20068de69da8c57018e5cd37f9d6d76d04d519168ff3364c3311f50abb4e034074efc9c630d8a3caa68e4b0b20c5480960f0608048f4552176a5ddaa8c7f4859201f482a322c3eb7c5a17a0490d4d531d8f9108cd39fb36386108b5daa84b77d96b2563a6659a7780d06ce378518c4310c46eb18f9ae809c0b9508930318591f9f15985adc93b3e16fbc1d43bd990691a69e6e5c9161f083e235dd5c0abb4ebd68573fe0540ee7e4b400524cf4182782d77981dd445851c832352b152fded1fdf6455586c397621caa8501490ddd4bbf16b01b0ac88b5c7d5d8cc1095230dc9b1f41ab67787d21bbe7383bda7202067a320d26ea86019984ab156f9015abb16e4cfd0fdcb466054c146230c29b19a4e70446127c1542342dec3af5c6037d99264f01ea0358002902750f489a5aad788a54a6e623d98d79ba00bc6a2c87c5621c6e0901127da8b99eb56a312cfe638bc753bc1de75505fd3c190685b9968ee10efac4ab0eac881705079ef3640639cd1a049c209f9a9857f5631ef301e43e96c707a20bef4b39a6cebbdbd9fc3e99a462538834dbc2ae331f20c6537ebb2a15d8b46b01a410543b60075c540c75abde97730ce3546339fcc7166f1ab7355eca42b64f2c6bccf2a8c1b0789577628d2d018d581ee754057d3c195a3aa99ff4f91304a00f67c3bb620c0699ecf200505bc7c86755c5b414e8055f3f22828abcb8a985621c3e91ddf83884bf82d7e565ec56e59035c30abb4eed04648dcfeedb2216a3b3001225e9ad387b14a9d8ea564d90b20df1449518164b6cf1681db013ee5465b475dfc01e45c2d7b678fc604fc440c1011bc3609f22a187271da92691ad29ba536a8fa302c60931f8bb37137b4358888eeafebf310473bd266523cb17a7b5df510153c5587c2ce7626a989f4cd317c2db13c66f54d875fa495f283c9708df1743b546b2aee8aea1bc83f6d913a931c317ebb80c405384183aeb48d2aed3f60af432ef202ea02d0fd0f3bc8376db1369a73d8106f3f6a0368157274ea43df644fa528ca3da0c17b62d07d070df3a1b86695b9361e92b318e36db12e811568c6a9dbd391bedb6275275868dd8b630eb04402c40dd381badb5c5d328de511cefc6aa6a5252e86d21067d03749d9f551929722e0e2832aab12cfa7276dcc7f268e949b31ed87f812c8094301ac73b314870846d335dcac19c72f2e33a16402c0aa241bc1d6375e9ae7a3aa048e8e9cd806a3d260b20e599ba7222de15620d9517cfaa0a7a7ad2f187f5ca2c805894e75c7b4570e20e86c33655c27b524ea1cafb586401c4228bfe14b2fc2016596401c4228b2c8058649105108b2cfa6fd2ff03fa55525f7fb79c6f0000000049454e44ae426082 ) return defineyangyin: yangyin = (join 89504e470d0a1a0a0000000d49484452000001a500000060080200000032e2fa4a000000017352474200aece1ce9000000097048597300000b1300000b1301009a9c1800001f924944415478daed5ddb92eab80eb5283e7c9f2fd7798024ba2cc997d88166929aea62d87413c5f2f2d2bd947fe5d7ae5ba25ba25ba25ba248a27ffffef1af5cfffefdbb25ba25ba25ba258212512985997f09c489e896e896e896e896c84bf428f7755ff7755fff8deb0961f078fdc7019ea42c3fc464a55c7f5828a3697f5ff1ccbafcc8329995facbb0f0cbfcce801d7ce7beeeebbefac00ebef387f16e07ef9f6043bbc3f297347017e76fcb05358df9ef2a1e5c971f51bfd7bafc71416effdd7d7d1389f8a163e9654cfcd841fbd7af1befeeeb06bb1bec6ebcbbaffbfa886dfb3b02dd6077e3dd7ddd5742f17e4aa03b38f675d7f3cfaddc9463f396e8bb247a25a3104996f7a7257a25a39894dd5beb3e2ed1d31eb0c1ef247f8b88b8e8fca9fd75ed05753efa89cf37ffd2ddff225fec3f5fff2c45914fb14b93ba24cabd42d1fbefdf7abdde5eecaf49ff13fec0328972c86bfc5e22724b005e57f965fe000714cc435eef933c034ad3251a4319bc83c43d70113a37b489da257a4c1198ba34ab05ecae3a37e063dadff44be5e56859a76b8ec1e85bdeeab5e956e3ad246047db35fd806e5a7ab00abcbff77ae17fe67f582e9c91ee8c986663f7ae9d940b3e83e4e70064acd3490376c1a6439be8250991d25a12ef775e0ff0b5fd7f45419e79caf09d16b09bb49d8637e7ebdee4f2c0bbad2ad5ebd727a243240ed7be45429ed51ff7bf09d84dc371885255644a208f0a97f77fea75fa0d06ec5e2f77a8e2feeded17bdb22eb186bce482f0fd5eb3e0e77cb0eb871829fec83e22ad958774344c8c1ee117eaffad6af60179f2a11cf04c1e4febcceedc76f27fbfdf9a789f48c6b085a7033c5167a283bb7f20605455c2ca649040c0c1ff521b0db9d48353d30d0afe4bb04fff49ba9e1255358411bab1f827f393da7c35ddbcbbeb90d71ff4fbc86befbe1c1cd27cf908066dc167bb182dfd12ceea3e0566d56980d88f50e33f7e714d888cc6f9225d0fc6e9d4ae58e77b4e547f9da36fa1ee055a6e10a5476caf6e448692f95526f14bb3a950f5401ad1904dc924ae0d6fb471efaa83a52e1c37fbc83e9c4667d8e9c3f5d92572d7767d2d53e231b57f8d02a5262e3c41111b573aa9f156a79333dfcdf309f7deb2363b147d0bd777e006fd45fefca2ab5937228abdaf1d65c7f941310e5bec727f2bd4106a3e8dc0ce72ab7cea886afe7d667ca218b7e6394a73d27f370344bf2dd172d7f846a061e4fb8bbc66d0a7d1e2af99ee9194058e55d8fd888b60e9d19df83721378feee2edb77d29cc0901cfe8005a5c363fa79cee83dbbb93b7fa7d0496c3666d5c8377e7620581470e486b65234a8ede339be17cb820723a30487d38158f3be9eea1f8f9edf642b416ed206bb22be6c46a73adebd10de8666d048e8931cd5ceba6680889abac0b9aef47faee3d6b8b5ab0f3019b7da4341990d8f685e051bca33e575ce3b2e9e0d768f6c9d042a6e8b047e2b24c0ee977e0a0734c6eb95f76c1ef87ac36d1bcaec738271a936b5d9f6e1cbd700696436a029d3066e706a95ae836724c4fe7ddfa91c4724172eaf791592632470e3702599fb3eb11bb48285fedc685dca5c2c0d16e00f7af5f4b3071401bbd176f8cb80dec0448afba644934effc7d8eecedaad635ebc694e8aa82bc21cba0aa75b39e67b2b356d9b3fd9ebb2e30a2f521b2477eb626447af28d31c7cf86a7801d7cdf250c535fa41d41de522fa4e70e82a92d7117ae16abfe4e836e4c097ccbc29f033b1668dd7d41966a1f54fdd17747321fa9190c1364e8e5affc9204eef3fa0d04b1bcc902cd5a7ff0d4d3f72339655deb70c61de38ee1908fe73f6fd0e9f78e0d5290ea3ea2f6b6fefd9af2d0bfcc1176b208ff0d95603458071c68ffa7b76bd8215950bc16bb63fd7dce5b0bf1b128263b27569b6a5dbb6e6c0b645df86347e04708cec940f02ad4ee84bbf7f98a8cd9a4d33827d50dd163197a5c8f5006102c564837d031024aab824ad30e7bdb59db37dadeb4043c5fefc13191af97d94b223acb013a24b5e2030fb0265144f19a115cfcca76b65122c570257ca3d60d10c15d2ecf235a289e60fdb442ebe66ac81e3137a50bcb0fd28e061fb57dc478e354206f54d99ee00fa1e4694e9761cf2f69716d8864a8e3b70eff8be9b372fad8dca34a888f3853bd64069102bbf07063b872f09fe64a044a2a440e6d418d0fd05296822af7bd93658a44b9d6e18fc5ba8173f79b216f0a13af6a5db4b713e5a97152f26779f228c6176808ec441b21b78f3894c59a179360e1d148142905bbddcecd614e2ea748c10b6e606e403da830cf3b49f8c367cfd1df61da58b549306edaf11b4894f0bbe36ee3b5d845362e0b7f26cf97a87db953dd882023293958eb4cedccb3432953d9892243b43e703f99f475ee4ab147f03e92676a7a006fea3703165aebc9b86d7de5067b55a91797da7eb490a338557b5e57a5bc824add923bcfe4521922224184458523b96ac145ee9e76c450140fe66a89f3ccd0ace9f467d83fa58efaf4c35126da9590d75376996177f59e2f15b00fec0eb582fb488286acc5cc30fab474cf0e011a1e854081bdaf0399a61dbc09caa03b45a5abe86a6f328945d090a7a8a814d3dc39a7058c970da601ed28643f28b31cae5604d84a6d3368a6bb90222f1b72a78470fcb7a6e74096d78b74c29ebd5a7c05028c3b0cf849ebe64c8dcad87d23de0ff0bb6a0f278ec0e560102f70a1c4649ebb95aa0db9cc29e497cd80b51496bc0a8a62755e837a029a0f873d8b66766639aab50ce6b1730d3b562c93873ce406e25a913ce77fea6a6bb7ce64dfdb2147b4c43f6edc6ed7a4dd48271533b1fee6205be855ecc81bd950a5eeb0a1917bc1f3f10ef23bb9a3fcb3a61ad221e7118bea5ad4dc6d3a433f42cfa4efe1a075a889b18d53cb9ee9e2cf6e8fcd7afd36923b758f997dfb16c4439e463bf94f4a16b843b8301d216ca88b0bf64f1da1921ef7d0ff18fdfc140d544891a2986989ae1f888ab9d940c162f3482a8076f8c0f097dc4db66d63059adfdb67a41e6390df9903c4a0467b3b9d20228379c492d5e257c9392626be45928ccc8036fcdbaf893f48bcfd0e0b27dafeb1e97bc6ec5bc0efc8c1410076569784e9eb7164114a440e4463af35863565c727ef3887ed1ee812a4734e153bf10556b9c194690a981dad9782dc6def2c0fcd18e1f27e93a24c80827ae7f1a6d3dccfef5ae757087fb6392d0bb3657f2da635d42dcbd8f5d7ad3b76596d06f2ae36f953aad14eeb02b07befc63d34f3fe2473d98edcb9d00092f2dc141edbeb5880481dec68f14ad4c0ce2be1ee0b37fd42027d2bd2a52573308d9fcb77d65a8111b2690564fc1ceba1c3be831b7a66c72b176dcfd0d86f4fe590f0ebd47fa79fd1d1ad870adb0409a987300df6bd5ea853e14cbce3aadb28e080be17023400cd2901f7262d38914ac07a8c4bcbcc3d308efc833c68b0136f1f892c138bdb93fd630c76cbef08ac91073b95e042a9e76f3de41597b02afbb3339700cfbd31a8d02d7a9356b6637baf948033f325acb715a31ef430589db6045bcbece4a820e3d07fbfb3031fab8fc993c68086784a0a5261eec4127e1798b718f212470907b686407abb4897b9550c7780ccced33ae9b0671701408d37268bc441e264ceef8c7d545c2e9e5582cb2bae8e70446c3b1f2b8538a87ff2de5b2476ac41c6e96125e2ad070245e220c2b16f781f46cbc95d59c9efcc5df93b14c18722325e2b3a2c579c9cbf6fff83bd8bf3ec5927e005f75e7cd673b0a29fe80cb78e00e3e6a42bb65618cff260077e0d0764d4a7d685c920676cf2df09b0a37c2ce2e560e70341ce4f6457cae07b4f5931343568fe1a916a7ca5fd7459cb745b62a06792501b5999bd40781398493dd82824507d61c625bb6fe1332ee3667bd62670430356bd4f5b9577fe33a27892ee2ee777ef2d0ebca4a664d8825d5059023d26fbd134ad0c0b1c1b9647800346dc99c9789207a93ca83fc0b12515727699cdf796165fd12ceffd4c2a3f5f2f2e08ccfa0e13d2d565acf27d437932d5786073ac8dd3f99de17a30de5a2d17912b4e6844819b0e5cd6c42b1ac21410f2dee758fcb380538e3cea95ab26a71867b06c7e05c06ebb3f38c2951aeccd45fceea87bf3cf4ddc19cb9c06e7b2b4056a7c35e441a48b00421e5b14f4d14dbcc9bb75c2c1193f6f9d3073b1afbd3a91fb4fa27feab923d1f26305bf8b9d77e46311d21a0dcda9bd69a8de48acfed4ba7c1401aec5246aa4862d753e3b61c69267558b20efd8f0e4ce5e83c2ee24a5e08c65bb789fe90765f16a3b88e43e3998200e02ea48055fcef29c74a6d08528f401356ab5d1679c313e0bc2e579e3ca135b848202529b624cc73ba83366e79686fa1c79e892e9902caa984eba83baf91d4ba64dd69b98b3bf468b6c277a3641642d33aafb050cd891309a6453267faeda01747b209596c21f4ac755c1d96399a8a8d21f3f27ddc4677d90741dd8490b2eea89007b0448f3caff274931ed73ac590bbac2d91aa34f2e1d0ca6e7c62c0923c46cab89fcce533c70def00e1da0c358f69c2972f78f744378746f1ef788219d6ef7e535a2de52434aa6dd966aad970e83c33e747bac90adff9b4cc6c352b00325a5e29e0ec3d09dd21e170ec823fd9756029e09cce559a9c6ae97fbdc23b828d81469e408f2d690557cb29a07cea8d27e008245e86095ffce280fc6325644cf44214272d7088b73edd9e31814a5fe3e2213754979d31c023f93ef8a33e496f03b225563656b62362155e69d3e6c8f5c76db5f0037bf5a5fdfe39a5f226f91afee0eed62729c6e2d6a031e84862882e48cc809084711c8ca197686ed02140ff95da21e9eb04bb723acd16465fb2f695e9fe080ae81d9c69074b553250c76c3823cc6f11c597ff5f0458f13f418cc7609bf6366e30eb1b06b5a0ce89a2ad7e14bdd3fe4c7eb7c7a52b995b5aef99da2cf88dcc9aa6c35bfe6422f9e0923e485aea6c101b71ce1de1141c6f49f6dcc52c6efa2e6a7de9ec55e5ab654928bb22517f9efaab163e79154339173c33f42fc5ea1faeb676b230d0dba47618dea13942853161700daba6bcd654abcd338edb2eb5dd1096d5985e09ebaead348c62e9413bdbcf3e04d6367f377e812b03bca0c90bfb5460eac72c62de784d4e2c5d4043c451a737ee7c12e316c0dc9cd19e244e03335b325ee90b473ce976d67b2cd5ee1664e3d77965b94d20b79fdfd519c4cde8cb5cfd41bb665efb4a19cdf86dc1d7d44cc23bb0c1d52e56b27aaa64e23b2bc1622b874b292f68b1dde09d7b01e4283cb745dd76be8786e94411e30a96af007cbfe2e1ad62320cff7588c80ef8c29b002e63cbf33e7536841dbf47bc0726c0b326faf44607a31bff31b604fa2897c79dec4b05ff2297e3755c33d0bbe98df312477c56617962027ded0decd17b6beabda867311e4c11ba060674272c7f0882a36516e963445a8bdbff76a65458e83a86f70814d03279e49d62c40a72005e0e4198072976f9fcfb767bb3033f99d67762c8c26c8f23c3efa7ac08bf99ddfc9f35e37592e2b10dc5333d3c24fe71bc7db4331c4e5f35b599b99ec6c1c1fe9334d4f2353a8f83a4557aa450bda2398be7511c58b06f6557b6718d420026e9615fcce82143a8dd8e77e32a67bbe0a251c64dec9cdfbfba3b8b82969d3063077a138307ca1ac71d7daa230af73156d1a46cccb9d512df5d273214f3d5b563e1159779dfe85b7d71efd8595634fbdb5b25514bc95c255c876954340339d05ad7bb7575bb028c60bec6deac40157d99ba8be118e6a5aa1d8514f1a0376ad74154dc88335185dd20cf1bbadd0d2fb4d7c0f710a589e91818f4075c8e3a7eb5f6454bed45042fcc9d7d7b0a1d09e755b07b65474f6ac5b011af7789eb1fed449deac038db7a448fdaebada889ebb2ec5f91f15b5491d1dd51e0ebad7a6cdfee5250346d2a1c14737770552a5d8835f0ff9c260671a090fb85ccffaef70f9db168b60029007f131741bb3ea873e17ece01809a2055de32f41076cd5223b149c4f7ec0ae76f0c93f7299382cb24f551a6a3cfff77d87319747333a32c89bab0db6fbf496c310393a7abbbc3067aafede98732df4007f956ea092e14a1b1e86ae5532a0d99bea30c2ef64563ae69c32a318b23cc4ecf07d2fe3777e60922944872d682a4adce54d5b6fcce659c17b4d1bd9fe9722962bfd2987239f3e85e05e49bcb78e9a57dfdb1906f26876dc368918c02fa2a216026219e3be4980e2050d24ce7270b6de3495f8790c0cd836c956b56d014ba4a0853bc830c4d2b940a7f85d971e90aeca501d5d3ecaef8a8b24d80261d15f17fa9e8fff557566870af0e590c7e6d551e9eca6bb33f09c9ac12be6ef5c0676a6a547aedfbed96a9f170c42de9a094480b92053149a0870ffb7f2bb0590a76b7571552c23c2c23a6fe1307277721d8c09f3a9fbf3e3158454b05d1bd8415eee80b0bed0c51cc1ec287204d0d44ebc9dbec6f72cf89185090d795752a1bd4a8084bf5c76f4f585a5f2c1ab7da22b934adccd712e70b3203250d1b3b1c56a785e0894967cad013b8505bad71143ea8ab8613cb3d4b60600aabea61dff5e9854a9f30d5a21f8ce6f55133e52da697827554d761ec6aa1675f74c208f8a018ba3d3e168afab6ebf83e8dfcdee3efd64cca35e47640882b00c5b5a7e05ccc9a69ec77d6ea54562248defc75d443da98a9771d3c65b41f1f6283f97c8eb4ab2610f39a4f3ee5ae7d0a0a00de264ab420e543bfa1420cf89a9f6cd8a2bdc5784c0b112c4b32ad756ffa3d25a588a5b0a56da35fc4e772ec16c25e8ee596579b04d407199531395cf1c32e684872ccf5a2529999690c7578d3dde052093e769c1179f93d2bd02f95d0926b75e097932cf4e4ef982ff558d040aa676e4c1c773be141a03536733da1ec819bfbb70bc9c557552cebb02b25c2d5b8c9a05241da8e6fbef6444c9b7a81bf3e559df591c3498b9b59c2974e482facdc66a984bd1d939b993c820e64593deed0e11e3bf39b4176442b85d20e9073cd79e6860db9061dc2ea938bf8bc6ba029f103ebfd28630a492eb26e2bdf5325739d90ed1b2aabdb70cdde03891c463e827504b9ec804bf4249da55aad41d9f4503cffb42243e626b8e0146bd9eaf0c6b520c5805b53836b0881780df791257fbefe46355cd08712c4f650b4a82e3f218a00eafe9b00620cf0f2d6d0c142847166ae8b008e97a9f52d4e229416d47111c49e7959319cdcdbb7c1448eef0503d1421445df32a4dcca6f9ef0a185bd7e0bf6bf4e5a1f7570d1348b7846928c492d62166073200bc139ab97ce472d314a1078460772cd75949ce00d375fbf3a717caac2be8d2aafe54536028c488bd4e802b4ef6095e14ae8dd1910df7199aea4e3921c5b3ed7279d5de51f305d1464a6a30ec0026d70fdcb41ff74d4627dbb3a48f4491214d9e01150abb7b26797990e5adb69b2869f4927a5f9cc16b3d114411b3a5f2a92b406155a4ed92a7fc2faae99aecbbdcafe6e0652ffe93b580f0a729f8319deb7dcb32e0375ce37f30942b316693252b895f08b5877a3d055a0676c50d902da8d949a945f6a3a0c7f99636fdfebb62e21566a928611584784605f2e2e6c0cb3652318b64837631d8e511f44f11bbc846f25987457b6170a3813885cbf4599962c9bed6df7bacc744f7f9fa60a06d500c3e7d291a17aa75cc00b2306c549ae6af115c14538f68900e92bb1277d88e9a6e94fe307a777cb608378af27905d936d104bcaa01eb19d66c4ba998434936f8d7f69db0d4b46de5c1ce34bcfba22b88cf4add9129266a9948d73fc65eefb91bc99ca33287a3386a69def415178c62ee7ebbd28ae018da50a41d086ae73ba89235a744b8ea314cb12a47b78545202eadd108ecf458abcc05697a6b9bfd25e3b330df70a6ff8e503eb7cf1b2aa5e261893aa9641469cd89f4ca9ee303bc827225f10f841c10fa81341debd7f9f258ef7beb8a55f135b046ac13a711bf6b69b832c0efeccc75f18e0e9d15838cbe9706c1fda957d388b0b434b84d47ec688ea2072d5130991b7c6ca5077ccf8c31a8b46756cb22b362e3b9da2b47db8c1c023de2fd78efae7dd4cdefded1e2dcd3df703c7ad4ab8629e6aed5b1f7f7c98a44e508873bb073b44e1290e2060f978273aa3fe3bd733925d008f547540bbf337326a7f33b719e831099e1e6498214eb8b0824601a07f9d2d62fd444ee38c2be434543aab5ea1c82f626b3329b7c4eab19702e2ddf2d638a691b95f5ca6690c067b2ed24a42ef4df4144f34934b9114a0ef564e9225ce91548a1e6bf15d13efebd54641aca4b03d656d7bb80516434ed2d15567a21d5d655fddc097207c7ec84e7b4eabf83459d13fd8d9070c121a7d0f553dba5aa01e7e5ad5f2cd8b1b31ecccdb0f5b16a98239f7a7989fda03b8fc91a92fcd87861e00697849af76d18c8a48fa8917c80fefe2808f5603c85dbacabe2c6a48713c817749a2d5b9659310d9cb72fa43413ca764c02ee249c8c4297809d45b1b61a03f64f1bc591580c16284745d7f2f46383adf0a7c5fa9a6d9180ddbaf82c8ec9ee272d6a34ed31da1e03811a2cb71fc42486705cbdbb5bdea622c5a5cd6247924db81b90b183df450f51a05e29a8a51d653cd13ea374d0f8920db4d168e0753b325d91d2fba6346e3d32cd58e0dd8f8f0acddd90251b3e7f5383c4dad16e8cfa6ba6de54c12e81aaa34991cdea628f320bf99d67761ac5129ba9b824355df5f4814819a49fce2f612bd077664771dac0a6a88ae50d8bd9c3efd22ff04d71f7fc06e019111d924ba900c4227e07a02b964b8d7770486ddbab901a4a505caba8d5dc27ff00a9e00cf9b3545659a885d3e67f71d53f5f72b52476252777d1f46af57a41bee66f32c7ee8badd75cfda2c921d037eadbb2c10c3be9943c73a63e4fed25445ee5a8f68296d064541355316725bf8b17c6181124333a70ea9081751c298fa6f9b46cc82912994899d72d78bcf9b49b24a5639d445d5ca3c452240cf9e3c051d060e906aac1554daebb32260a1e5bb690c3c2964b6e267acfec4074038f53f2201df7d6b5ecb956d2b1f0d022ab740f9e9cdd5aa27da200f738937d4d958a2146f66cd85da6b74066482215f5461d44f2b58b34190e4fe1cb1164679d9e686494adab95da54addb6fcc18b0a2442169c0435562d86adfcc05bbed278c0ebbbef616ece43e02431a47d1e9794a1e772afa5607a5b59c3b43ba90df9dceee359116ef0332ff64be9a5dd3e0c80ed21f0befe495ebc3e7bacb9961545e22097625ed1b8c9cfaf25738010123c22c894a1c5e88a216d07eacea737d2f4d3d96ec48e9d69e2edcabc98bb4ae0a0ec5d5ff6b2a17eea3c3d945e3377082df51f84e84e5039959a4db05037e47676dddc8968cfec9241ebeb5c4f1269076e414cee4499ace7a74a2e55f24857fbd2757a7657078edaafc6ea244f2a1f9a1e02da9243091a0459f2b1f5e3c2e7de76eed0669a326af58a390f9b6a02d55f6510702a737f018023ba420545556ee5f75d5a29ab2db9893d1d6d2c03249f71a43f6752ec844a2c693bc77ed568b3e10f8d945d8b6902e0deed2e7355a3777d7b46bf20afdabbe9f4733b27d249b4a854e89caa67d94afbca4bf3f00f8ae4379ed399ce8283b2b5136e3fdaab066af62477ed88b1f7e23c5d387e8f05d7e85d67dab4eb4422107895f33b0be02788f6e354ffee2826c326eac44c5ef2ca3189d7c866aaeae3c6fee0baf38e12385fe4e89e48c2158397be234e5217dfe98d65db988235ad7324030e80279e5a9ffe843a0cecfa8668d0dc1a68e87cec5b63be469eb1d7d52d5900547533b68566f66c803c0533e293b65faa56c942b8a5f0ddb7449d47b8499f6ebf314adabda0a03bb6678dda768dde09133c0dbba32ef90208f537bb4ed337e6ee69c7d7bc9d425e7f0cac609b5a0c3be69a3daaf936a97e4a0b4fff13c49301170fa516dba588d419ec6113aa5cfcbb40e67e6af674013b4ae753a3415d22e1db7402dfb28bb49550c5afcac9667efb38965e3c276b7343ecaf1d58ceaf2471d70b94298517e3221284787019fd4140d3e43afe0da914cbca6704122dc9c040aa0f1754e82c262d8367d9eae756314ac4af1da3579b6d651cf275567312ed85402e234923b3b6b4609f52c1fbd269c5ba7d52e571444f8abb02814b419fc284ece3c43481306316b5be6a305cf7c23c9b4555d7a5c254abd3506176b5da31ec2686604eebd9a7cbd19abe1d59688fa8a66afc9dcd2e2395ea07ebce3528841ef610622517530eb3c16b602f2926cdba39d7d7042f62dd21a48ea3a75f4cf06dfb3a6f3dc7fd637e99a4ac7057e003874a22395ac4d9fe73eed9c67659855a3552d9afc6d178356e16e1ff5d6cc0604fc79ea066b8e8c8e24c131488afa2acc80bc9a47dfb7d207fdd4a8d97cf065ad17e868b5731758268e25aad1ccb912f99dc0ac7a5e51e3a1d2a8cfc9a8985147c1c0aeb1fd569d22b66b72341667ce4a3594f5ef3dfbccbaf87dd471577e52d1d9fa8a124c7c838f5226dd9bd6f4e29d96c1ac0cfb05cfb38d736fa31ec2840391a616b22ff72248099ee5068ad48545afdd225e9bff551b8e8214aa9a50e749ba4bc4b73f8f1b6635f3b032ffb0a6cf8b7c7340c7f21157d20bcf21a64f097c9db3ee1943b7a6ea896bc8d4147728cee4fa0aa86b116b40a3d2f13b6d90876f63b64faa5ec95b6b04329cdd0e0bdd1722b89ec4bdabaaff5f6aa01e10f2ce3825c9b69837fd3ec18e8bb04fe1e058a7866846c95c7fab4334186994031c1203b6d167071baf9f803c96ad8412586cd9478377e5275f9cc5bb01b06b38b83f5e7210b7c3ad2c95ef8b9bb1aa0b9b234545cdc998b1ccc99232b5e9f37aa01479e08239647fba1b38b5e833f8c0926186046748b74c95ce21afe509cfd9747212b83a2d15f4183b29f1f6c0dd74f27ab6af47efc96cdb60e62f8a4a649b82bc93250a68f22e6954747d19828fac11aa7fa7da07c6be8ea7ae51d7491abb408634adda6561b14453561f1a8fd77c6fda8170410b835ebcfbe6e0ce0a37ca2dd12d5113e4fd8a44d5b8f0cf68dda3dcd77dddd77a7be23e5d6ebcbbaffbfa9b17d1cf09f49f68f472e3dd7dddd710d8fd10219a1b13b8f1eebeeeeb06bb1bec3e7f3dffb6da95b2b472fb362ba6c8f29122b9e536ecdfd7c0281bfc17d62bd84737bffb96eb539dc8eeebbe7e6c2325ef3c7f47aa5f84bc5b9cef55b9bf2f5db5f7e7ef81c3cdefeeebbeeeebbf723d4a29fffbdfff7e469e972cb744b744b744b7445ea252fefd1c86df12dd12dd12dd122189fe0ff3221192da4c98540000000049454e44ae426082 ) Return defineyinyang: yinyang = (join 89504e470d0a1a0a0000000d494844520000015f000000600802000000358ce61a000000017352474200aece1ce9000000097048597300000b1300000b1301009a9c180000000774494d4507d80605110331ed30abce00001b124944415478daed5ddb72e3b80e045cfef0d92fc779b04de1d280488954121fa95259db9bb144126c028d1bd13ffab6eb1ed13da27b44b346f4efdf3ff996ebdfbf7ff788ee11dd239a3222262211f926c863e67b44f788ee119d1fd183eeebbeeeebbed0f584a0b1bdfee370c87a2c7f5c4bd2631111f7f60b4eaaef198e95babfbb89be597770d0003fb9affb5a0b0df0933f8c0e0deabec28e6a44cb170c241eaddf31b46c747f7a3cef9fbf7cddbcc31f568bbe8c06bbaf1b1deeeb8686fbbad1e1bed6ebe1f7755f373adc17501feeebbe965ecf3f278b538ecd3f3da2973bd385dfdc6b748f68fa889efad95fff68f4bb98b9d1cd9bf3e6f5ba7de2de7e3ee1c1799f38bf3bb7657add498848e4b515dbefb645cf0bcdb1114180187d18666effe2b538f5ebf0cff11d8746547328ed73f7672f91e3d7eabc978bf427ee2db9ff353e5113f7a49e763cabf63991eca5933f77448fd1afe3cf6506bc2b4a716b6a6860fefc98fdb97dbe4439a7f1bdb42142bfc4c4199b88fdbb5f5bdc5d445e1ff7fc763376523a0fa0d8476436917bedffae6fe88086cb0ef636ed4e1ae1fd1d3428bf6fdf039f1bd4a3f331c5e2b77b380f107a01e05bfd8f99c191cd6496fec420b3ed31b448fee0eade1876a07c7293e817eeedb1bbbf2641e8fd43f96b871773a1a140cf17343013710a10fe4c096f3ba16126400c1e6c596c8493bacf738e1c802706f54855edbde54fd14bcfcba61498b7dc460ebe81d5ef53281845c17d020142f223e9b542fd36c5cf066b76defdb5cd767f1a5214d0c0a7d76808741a40c867ff4bf2f63204c71b07c9a1bb4f812450ea98f7d4079e70b83e871061577ffb19a5bf43f8dae150cb5f83868d74b08ba4ad47ba3633efcc469ab0267d7b8c6780f895520731f4ecdc6adaa6cfe26e16362935c7b12d2eb9a60104785ace8dab539645b9068d09535423eb357e3d27fa6daeeb85bbe0bd76e43989f0fd9a88832682f0ea1c69935159b070efcd955071e8815321ec5476a6a9787d42a21507092a43943ad9dfab081ec6c7147c16241fb687fdde504e875deab516c4eba57ff7beda63c3e5c31bc2a53c6adc1fd36cc7d89e1eb47f776dcd76ec525eba4cbbd3585b34733d11133488c8c18d280e6ea1e1d356eac38ceb1194796bf6e733e84eddc61ea1dfc0fd461e2bf7e7f0a4deb82bdc8e719044503acf52e8713cefbfe819d181bbebffc5ea9a6b051cb34aa2cf224390a6d826a238c62f9c42c36e46102a0e4eeae2de91eabe9c2a1583237af49bfd8e2d1cd21d829a2a6a94d2050d6b148e360ac73844cdb031437a38acbc39bb1b7832fb35081f3daff51975a5c3728f05003e0bbd4d9a68fd16738f0778910ff0f93f8f83820334c037dbc73916efa0bd686716a2d75b3b55591dd28de5a886391407317d4407ee5e48e1059b6dd7b152f00e878570e91a05b39f91ff8d75a08f13b95e5bef18cd3132658f3d5545f47f9467a5e1961c0588cf1474d865071487a8acc24f5eb0ddd431e3aae8a49490fa708dfa3ddf4bff1384e8eee72f8040d0f03b8961eef824551c5c58e49183b7d8cb8333f6e8038769d2d0c239b8bf3edd629b8254b48c7b2498cbe058494d4fd27d2d5ba9a86fbaf85dfa2d459876c8357db8b6df922b893f78063caa2dba47f20f850c5a6239786bb2af5a763e6c2792b3f7f6d893c80fb102882c046b37346bd6a0cedcfd172a2345aca4f3659c79ec999694a7d2bce66b0302cce15494ff82cf26917a48b93c391defd0b15d1b486b6ceb700774946f1b84a7ce7de2163ece3b4768688a43d0e435b1af312503889ed71347d47947099a5123fcdbaeab03b4a72048e7883abfaa47bea0efac58978378213b9a6f3b992234ec4a9d081de1240e8de309a7b0d8966ebe5c9edf599ac725719eb3309b5b81ca187b6fe36953c26e781843ada3fd0501848eaa3c793af58fa8f3ee8e9bec8fa49865f9778e6857a2acf36fe700028b386f8dfaf7514b6e7603ef97bad1ad744e7718fc2e6741114ad48618bfaf417ce4af41e9f1c36acfd9b36d0920735b9068d81860a93870104bbc9803bef4eaee519dae55bc48985d30a2ce58c9dd4d6a8c7cb9c4d3bc63980368d818963da9dbf21efbb6d2b1eb39656593f4b28f558f2a4754617c5a5ead6d3fc514afa0a199b29fbbc2589a6d689f158600b1c803dfff9d75550e2a99b0cc5d6a0a0d4cda4ebbcf996537439dda5514d93dd1aff77d6868a01013d9022c3d791fbfe71c425d810ebac28b478d64319543940af3a1695fbc660921346c38fdb11924ca568486cfa36a2b2332cfbfc4095754a9a8432a4cb81419b379dd15c991988ca4550f31317ba00ed1cf4fbe3e48ac2e1626dc6ca8cf107afd9d2763db9e27974d439d5e8c9a196911e8d9825d163e6084c9457c1189520944fdd6258734fc6fd4432610bf122376ff0696663aa5d10dca18292745900df6e790450d0d10fd04d995d01001026e0477d2d430d14ce3a6831c90ba399645b62a05575aa4a8c42377a1f0d1e6eb09fdcd84998d9a10b43a17beb2591c4120749cd54f45f2406bce571f4255b004e8593fa9e600aba7944c486bfc08526bae01aa426ef34b628f6ba0cc683e77fac602530bd141d9e7ad0c1ce487c1430bc2915ab35db1a39c81a3cbf5e98c4cfe680ddaf1c901ce4dce0f1973835c81c31fca522d084b51c79a5844c016849a8b0b8ee29ed3725ce795108673c972d09658a9552157b2b4381a9dc611fd00267b68db6bc327eee3d85269f55b0d29c102fbe3b0edf5dcd131e1266e81caea21b6c8e4736588b4775aab70db57298f00ab72663c2953b37f991a1b42b63c99ae5048c143a66b2b6d0b8d026d2e283019439e94b78f0efc865f7b4d0c181b031c1811f07847610462612594d5b325d9a0af6d323a989819273a2f29b48f5518231a170869564e1a962cd4e747bc06c1a9e689e86ee7302302517d6f7c514ccdd254b4060a36d6dbe899de12ccf4736d16590859ad076de5ceadffdfd90ea3bfe196930b31423bc2642fb648e345463d6876df4b1d7b856215ef20e1f0151532f8da529badc1b5b5dff29f8c506acbfc580de8c306a126aed2900d8e56b15a6f979d0730de4488ac28a9e22c3efd5b63537c80f782203b629b0d54967addd29828753b404d941c38bd09e5cb88d585170d2deaaa512dca0e45949fe6638eb2ba1e70d1e7e80eac8f1193772a84f488377a25bf37078135e6a57da132c9ae43746a1acda687c7b869b69cf0b6d229a9e6be6a5ba4b514033a3aa1060158fd000dee9c65a20b50db4103561fdcc1d5f302aaebea76b2a9c9aba0c1a548144c3c642e75b6745488a0757c40ea1efda3da82344630e2b5b3ddef0217a2236455ad8157449afeadca2e6b747763a7d07e9d39a5f1232da47319a66383bf71525cb1f0fc5795c9c59fbf17a0b622803d089a43921545eacc1fc65119660be9d5ff10872b6ca6060d6c4d0c6b8a56a0af3dbb111a625b0317ff3ab464cfd1b1b92d215ad090ad21315634c97ad2dfcb0910ce5da7b4d49d3d7ab5b9916d4627cdedabb097f41247456d79bf85d2f364f67cd3079d8b1cbf84e48fbb283686224597b658356d2ae818b66c2d6c0c42bab84b06e5b5397de64aced1ee3f64b4ca47c5ef79181a8cfd9c63848e1a8c9eff1c179a30735996720a331476907942ea4f1cf3d36521d229c6cb6122aff349caa0105bbbc871fb80716825f65a30f56acb42b0d3ced977622140c550e21e25517770035f811112255c756374ca66d27fc4f2dff9fc37303d5c51e6d90f0dc040b5c5f02046188030ec778a0b196d3b773bed46d77e806f3b9780f5a8bfc12e98d84988327da5faa0eb0e8a0e12553bc7f739cdc48e8b7757405cec28b961ba65dd5ac563426c1c32e60122c8d4800e0eecc37b836ca72065f685a50f887141ba8832c701e2d9bd48214396fd7e867a840188041a988a2dca8bb4f13aba5667c20830592ba1e1ed347bdf4012236bfa49bb69a73e500d04e77232165f328b0de6b90087a5ba03d2780025ac4b9ff7fc86481dedc74518ee1fdb02440b2cccb39cc1de54351081dd7158ef1eeeb2fbf6a03238ea75f269349e00347c46533040ebca9f6ae328283de6434e48078cdf6498ff981a04cbc9cf123b2f400a1a625c605681b015dadc6a67e57ce452dd01e450a13d160f92e235f459b8526e66f5790934188109e715cc7b6eaee81a385ccdd7182fbfc267215126dab3fa769976639832f5366e83c9ac478ca45aa78a4bc0854cc97c030457aa0714eb0d2b3f3e1d52f57b1759128e3dd164b004639b03506e12a6219b51efc0dc8c9f8b77da511ff7589496faf5aed6b0c85ba189788110a0c2528c8782b0561b8539c05cac233f36b07ede81752173578822959586850e26cb106946eecc550091d3fc31cd3cd20d5ee3457ae94b69d426062d4bc4e2115240f23f8b915dd99fba3a510b82bbd4d35aad7b4a990617331ad9a5b9a65375da7d0e9cb2661f21369f358ba40f6567528d4add90cf22554e70f29f59519bfc9b84acd15e48f9f4b3e94d8bc4c44a428282b44d440e59cea20184e52c971817c96e87cde6383794dea7a81e9d58f688dc61be648d8cf619a0c16f9503fd4190e2e0216981c4c5bc5ea73be4f957680896ed524a3d9fd4209e078647a88f66546962ce59fcd06977ccd5ed9602843361c5927c3a14ca0965921decc7c02dc65c7931561093b5de475517897438859ae19b83ad51f1a0d6e03b5d9f6637c0413e1fef98b2d607487770756ee09a50e8f068fd71408398cc3b0cb100ae9ab8ce083255033a0aabade31d74b8a7a30c55c15bab4128264f68cbe08ad6a07bfb5e184b522e3a9a60db38dd1a536cefa2ed9f243c2597bc830edd5b473d30e21a50b0993f545c8faff0c2d30dba6de20af24133859a7de08c77c87f74cab0999f4f38ac0d963fb28f1ef4772e99fd6d1c8f779f391b428953a2df67283123bb8c7081b3894713a4e55b2ea9843fcebae9c60ab46c75434211bef3a121b82af41eb6882c4596910d91e0b8528e11e73eee668aeee00082a39290c1368300d0e6aeb0949947a5f99645e7b73bdba1b02cfa15ffe9a5ca3c51fa79dc98200cdfb2b32ce089f75148b413310b949a783451967eaece7f09ed1d39279238504211205665d9a39056a2340882f60a82e7ea860f43a065fe5aa4edab181957d69807708a3f4113ad7251c1414c46879298f483d7c514012be9cbe0400657e9e1b266852265a89282014725790e458884d3d4ac97f9b2d9c1c9a3293dc6c577528f0541f33264e2bedfd3c92bb6535930d6456d1de0231dd6d86d29755db6335257691001b339a124550a8ced9ccea05b7916127685ee50b4f16a4abbf94b1d55bdb7491a34cc0f7a6fd8e43408b700b2c363c92711506c0238d15631c1d15d1a92a6eb0ea97f11d668489c17918884704f6b3470f8a5b114fdf1ca5421a9c16b0d0ba001aacf4e83a0e0497525b6215240dda125ecfb420457ea0e659997a0515bacde75edae8306a041d8d5732e0949000296780841be288f68059352ebf9204f7163b90fec7609f94b7397298b6e4081f88721c29a2a416b58071070c7ba6242eef6bb4828e5438fea0e8fd1515108418d6523058545120aa094e44bae81068a655db41783eb5e6768150447adc103b0ab21e209ea213d8a15c5d522a609464cba52099f1a9912db1149aff89ed9c98e7a70b1b887fa897a34775a83aca9a9abcf57cb175a45269f044b155b7a2584f13aff45bf9e37d3a3a9c2f22542832080201bd17ca5d640a13646f46268f51b2a460e3eb6c43b36a4ba6bd316a33097a8457128b60dc7fb49246f1d1082d6745c833e00605cf30ca43393060396280faead5f13ca778c39e3d3d7283604a0d0749293fa3a45aa85e9fad374f3a09f0ee1dd1cdec164c8c0fc4bd78dd65ae71288c9080d8bf2ed63927ff062ece8ffbeeebe6c656c29898a5f94e143a50f4202efe0ea1451c23ec4e6a06423e245393b17a56c666290758be9c9c50a39f8c0a058bd462ee15a3f09bc7bddce4b65b2b3b8f4e84322f71c1a46e41d0a5c204bab680b9ff78a4a416858b43c147b43a20a578d4247ba28321cca56b817089fdfa809e940a14759533fcde3a9bae8976da0ac036301f142adf4f11bb4546da8ed73267f0803e7e2b291e97d14dd76193500fbbfc0056d553044e53abaa21293758798c8b19dab092e902d6ae000820a8c0867c5228088e540386898fd820bce3acbae5d792e799750a8360dabc51946d080454711f8f518614ab686135843a12e6c23e23f170681c610b85768434ea3a969c258cf2ecb5d0cbb469d768786f33c3c302a4b3cb9e3ca29f0ceef5e159e2bf39d267278ae810a29569219db6f99de0b254c77cdb80c208c59419e74707c81eb3ad9564a87e8d2e5ea83773a22568d91c7455c99490e905154c197d5861247d92b00c2e5b0effea5c3d3c3c3798e0e896115a1a42d8577b1d8de0a8e42dd2960bb061a7cc3b8ba2e100379d5389815856e6ba35bf50a2dafbb66f84814ec8069adf0a10ee3dbed21436b92b8bdbe50e80e1fedd49793d49fa8ea9888bc58080db1148d4b358c6db8b3d621a8072760346021ecf93e0b97e4c39fd874507efeb33360c57ad7f3c230e479217c5905e1baccddd6a40b8243889fd9c238c5afb42f7b7f71e767e35c0831e0daf689bc83aa6e6f1d6c65f3b96525bca4395309e51c7056d662ef85a0c3cf39b0d6495d9c34d44f584545e3563752e8c28d2ca27168a003d150e1de1cf5056ac0413bf102d454ac5c8f58b4a99ca610e7da6b165eb346e7554e40d0b2a4e03db615330e841a6772e229d43d1724280eeb0ad8c39d13aa4c90ab5e7f8623f4d5cf166461e928cf5891257a3160ab9b0c29a26bc674871f54ec8e4743256d26856d03a8daa46c32c7488fd06d3bd728789ba6d0ba4e87b6c8de5270798a84a4524f4efb922d154fca74cfb974037bc681f23b0bf9f6e85883d06b746d03eba647e4d4f291df507da065a3d3ca69eb85157b4a3b68702976754fbd807d476cbe83ba03d4675efa828bf7a224c32abe6d7d7a55956a592d6a8eb793789e04ad816c1d57d7bc074e912e96e3d2041642830068904886db98190e1c4acc6ebc66757a34a368a81febbb0beba3ac2b78e53a62bbc2b9f6c0e7a81d642695ad580f6240466be10d7b3425e65c26a1a95083b546bbdf21cd9979a5e4b96276313ac3fa1a942fea03095e4567d3db2676bb1631b9774bf60f116c98ebc688705050540b2f2517a660c4949dcc65c5d3b994a48f9be6583611b47dca1e2f5688d3773cd694f8397d129de7412729ba76a731e58e96b9277a164c726552429d5f58c79d345e30eca1bc900ccf57cb9ff6f19081bf29696cfbab2e6be7627a159e525c8a342f3ba5828722957917c719fda0d15d402884c75754588d0ec5ac392f6bcce6743d0bfd128a695bfe131206729325e8147618561c3f1f0afb23da878a5dd05693b7c7a650b9afbefbc5ab707a11c1919346106fdd8643389ca2ba96ce80cdda96cec31836e3cd7a7cb9206022230c33d1411be770d6600da802e65da4d335b949fd90e743bf756d18d11b2f64ced0168423ac402740c34a4c004aca5e9fb8a2a7ebdfc08818d3052af188c0c3d901c48f885c97691f9af13ab0802dbfe410c9fa1c9539af15dbdd5c7804773fff596820146aa24d35b3df7cfd3209e65f90bc3e689865f73a6d282bea8552f2a516df1e4c5967c9d777875995be5a4cc716ad4bcbcce726f6e45e922e04fa9132d55b0bf0e8033f8604eee54cda8c9c8e48fba4a82946f723057fe6c13cdc24cd7fa61b6a43fed9ec371412dfa535443fdb8c11ed96fd88e56733aa4f06c39fe6d216521d459ef0aa7d7850329baf07955f5bb2469de92ae2e9ed54eaf4f6198006f400cfe3cb030d830e60768d309c8e077917d9c9593da572e8bbc4c47bb245f71929503ecc4e992470ea8b8e416ffc9da7d2f7900bc59c430e3c9ba59e6f3e30a248bfc1d278b1fd343aa1abc0c4ce2799b9467d9b88723bb1903aa7f6561c4ab28f1e1346d5718677f63b70d4ab8ee7dd9fd9d39a6af1da691014e2a65dc85653b2804df111aca46232f64b9d04889245360d29c21248ff2cc1893d39a2ec6b29f1f6eb00b64c6a8e310bf3d7883b3e011a4497d4798b58725588d30778cc8186f0b95e809d42c9295b3e139e7a24af50a71d40f020f6399f2ed7abf5738cec6e5bd3dd59ba8c1e3a73af48caf8e858c10108b37963040f268dcaa448741a83101a94ef86cbc73071388f0980976cd1ac2fd3a4991d7fb6195b083641895b6bd3e2421e0a278aee7d5d85835e9f42beaa3fb03a4eeaa2e1c081244183aa1498c7f8b6e49ead7bc6930f3355c8e719fe043c289bb35fc93226892aab1b6de0fa93bfb609ffcc88628d75a8d94937b3d62718b90c1fda38c63365e9bcf2fba4f8e4b176239dab260eebf64e97e0b97f49218de7d8745d1389d4b474ad94c2ea03076669ca8816ad514655d63e8bce4e2e070df3f26f785084742781ca15e81b4999bc801174e0ce876498b038440519684820ce688a3300a2e7b5531f5cc60e2744a92b4bf9abb4d62c806d7466fe4ec49483bf980a5df10e1386dcf3af54762f2ac953a2f980e210b696bdd790479347fe52e071ea52cd5dc5043203cb8f1a55cccc108587560b06a80f1d74595a9a2bfababb4e759acd442028806ff72f876669ca887a945098118bc48c3b8aaf49edaacc9a458e01447ad64a761286581b8e01f25171e87e1e8043cf0bd05a0e6edad0b71a16ada3396d36333f45bf006562277d4b7559cc72a70657046574ced24498db2bbb38d36051b417cfe41a4e0cdc857541fd45474c13a5cd47b10993d46279ae96c22c4f31cbb1d733e2c0feead4c64384568f6d596846670e251ef9865dbfe06fb3148ac0fc6468a998ed2da8cea059c6fe08119068a98f39cea54e37851db6b99340ace7f9451ba544cfdb2d98bcb9569ab364e7587aac99157b95b2e4301dd8a9f1ca99a93ea1a1148cc6498048cff6955237adda0502871ef501a6d8475745d79e88498472cc672199f303c4456f7a8e6b7206dfe2191981063a9b70718c8e36c9f3294b82ab63155180432640cf33bfc5cbe69bd63f9d07b55c0ecafdb766d5398593b7722898facc1aa57baa8c67d5a74b8fd4c58d85a3efca4f1ec707d3b42067f66b5f43a44de1db2d87842340e8e0f6ae69b844f2324ab2ff19e16ac5f0d849e6cfb632af22dfdb56495e67a19c9db39479a3a7648eece0a0e2f01c1f1fdf72a8f7d7132b39738d4672ba54f1f41da9e3a1b089e49c7e1c19ccfbc7cdf47683ad056be703e60051c4b42d3a9a8616de175f1bb605ae6146c01d3b2bb26600d1334b07d29c26a8480a1afab5fb0810977a9dfb525d632bbd42eafa0fa41db3ab3f45ff97b0539e6e1d27f67ee1888a8cc63f3a22c899fdf511a505c4fee888187570faacd17374b1bfe3ba4774e5831dcb89bcd7e8c7af07ddd77dddbbe2be6e74b8af1fb97e95467d5f373adcd7ef82865b7db8d1e1beeeeb8686efb99e7f57eeb6175f247c5fa3841785e4fe2e587cc728aadd74eb0ebff3faf130c4fbfaff14bbe293e7f78cea1b01e26bc6f21d43fb4ebcce0775eb0ef7755ff795a3c37ffffdf735e3798de51ed13da27b44e74744f4efeb10ef1ed13da27b443346f43f46e993dd427bcb2b0000000049454e44ae426082 ) Return SetText: Text = (Join Choose a card from the deck and concentrate on`n it. Do not move the mouse over the card that you`n select, or in any other way make any gesture that`n could reveal your card to Mind Reader.`n`n Focus on remembering the card and then press`n the space bar when you are sure it is ingrained`n in your mind. ) Return Space:: Hotkey, Space, Off WinGetPos, wx, wy, ww, wh, Mind Reader ControlGetPos, cx, cy,,, Static2, Mind Reader x := wx+cx, y := wy+cy GuiControl,, Txt GuiControl, Hide, Pic Progress, X%x% Y%y% W425 H100 B R0-100 CW000000 CBDe0913 CTffffff,, Probing your thoughts...,, Verdana cx += 30 GuiControl, Move, Pic, x%cx% w351 VarSetCapacity(yinyang, 200*4, 0) VarSetCapacity(yangyin, 200*4, 0) Loop, 100 { ; Copy only the bits of the cards we have returns for If !(*(&yinyang)) DllCall("CopyMemory", UInt, &yinyang, UInt, &yangyin, 200*4) Else NumPut(0, yinyang, 0, "UChar") If A_Index = 50 ; Make sure user is not dreaming Progress,,,Almost finished... Sleep, 75 ; Give process time to settle Progress, %A_Index% If A_Index = 100 ; Make sure user is not dreaming Progress,,,Done. } SetBatchLines, -1 gosub, defineyinyang WriteFile("yinyang.png",yinyang) GuiControl,,Pic, yinyang.png FileDelete, yinyang.png SetBatchLines, 10 VarSetCapacity(yinyang,0) yinyang = GuiControl,, Txt, Mind Reader has removed your card from the`ndeck.`n`nPress F1 to restart. GuiControl, Show, Pic Progress, Off Return F1::Reload GuiEscape: GuiClose: ExitApp