diff --git a/.upgradable/zkSync-local-setup.json b/.upgradable/zkSync-local-setup.json index fd256b8..5ad8e8b 100644 --- a/.upgradable/zkSync-local-setup.json +++ b/.upgradable/zkSync-local-setup.json @@ -1,55 +1,517 @@ { "manifestVersion": "3.2", "admin": { - "address": "0x26b368C3Ed16313eBd6660b72d8e4439a697Cb0B", - "txHash": "0x290b8b26ed8048a09a005146f951a70e3bf5abcede3664b7fb5622a9fe18c0d4" + "address": "0x996462e0eAf00bF6BF0Ea15F29d715C0eD3906F1", + "txHash": "0x65f8be0d223eebdd0688ec9c02924e398d37e1fa21e59bff41cd124cafc24482" }, "proxies": [ { - "address": "0x094499Df5ee555fFc33aF07862e43c90E6FEe501", - "txHash": "0xe8877a939944c60cf34c6861e251b349ced8a51a6ac52d1475a731cc4f60ec9a", + "address": "0x1A2894885076934dAf5a398Ff216c6d665707bbA", + "txHash": "0xd632cf436762796e16dd899dd6af0b42d4600ce6bc9e37a617dad04c4d41e907", "kind": "transparent" }, { - "address": "0xf2FcC18ED5072b48C0a076693eCa72fE840b3981", - "txHash": "0xed8c18d3ca92244ac8807d5eb06ce299f599ac4950c107c5de02364558e24224", + "address": "0xD49036D56f474152891D9eced770D6b90B2cEAE9", + "txHash": "0xe0939a6aabf19f29f0623258d4705c19fce1709b85bcac67d2b469a4372a4182", "kind": "transparent" }, { - "address": "0x5fE58d975604E6aF62328d9E505181B94Fc0718C", - "txHash": "0x493baf9570948127bd828acd9b5c7f395c67ffb719492a94288ef6be781c84a5", + "address": "0x7AddC93ED39C4c64dffB478999B45f5a40619C23", + "txHash": "0x8d77289fbda00a01059dc09cc8c267c073f44c2dce80fd2e9eb1e599d5fccf13", "kind": "transparent" }, { - "address": "0x60Aa68f9D0D736B9a0a716d04323Ba3b22602840", - "txHash": "0x131d7064f0db900efa7262300fc80975bdf31e4569dcc5bfa6947d8650425824", + "address": "0x13706Afd344d905BB9Cb50752065a67Fa8d09c70", + "txHash": "0xc70707578fab9b1122e40a90856ba9cdf6606f9fa25fafdca1b6e0f295aaadac", "kind": "transparent" }, { - "address": "0x65C899B5fb8Eb9ae4da51D67E1fc417c7CB7e964", - "txHash": "0xc625ac7ee5316b110ffe35e507b0a5b00441c7a91f89e43c017b3ec03bac6270", + "address": "0xb47A53D7f201A7F4CA6FDBd1Efb083A041713101", + "txHash": "0x460d59c837e61fc834ab71601c7005db3641016693d8e3539b9c5c9cfc6ff925", "kind": "transparent" }, { - "address": "0x0a67078A35745947A37A552174aFe724D8180c25", - "txHash": "0xedf5ce4c4db8c8f90ee02ec35702fdbebb3d9fbb56daebde5b1dfbd032878aa5", + "address": "0x5A6be02aC21339d38cF0682A77bb24D858902246", + "txHash": "0x41960cf6cb06dbe76bbf6d756203d769bbf9af86c4dad904911bcb28654d2ed0", "kind": "transparent" }, { - "address": "0x1F0151386fB0AbBF0273238dF5E9bc519DE5e20B", - "txHash": "0xff1109528d3b3f4f9dd8f49f6b3773a3549aa49641302ea1f3fdfdd761122170", + "address": "0xB3A273E27D718aadAa7895Ee0eD5B61e89219543", + "txHash": "0x36a3d0dc8c07cf1316dddf8b210e1e1978141469fc5ec14d4499e17106c36bf2", "kind": "transparent" }, { - "address": "0x5B11c36bf87ED2EAc102C42E9528eC99D77f7aFd", - "txHash": "0x2f868d666943bdab7a8b98b92ce5724e4edf326231cbb398ba49d4a14f39072f", + "address": "0xE13BFf7F138853F7c33e6824Ea102D8b5cFe6bC8", + "txHash": "0x268a12ea29c8fa1a962b881dd34bc721baadd2d6cc9f2b608192b3ceb0232166", + "kind": "transparent" + }, + { + "address": "0xcFEbe41427dB860B7760507f50F39370e27e9D61", + "txHash": "0xaf6bcfc14db8c9e8b3603199b83aa47e3b46fef6bc0ee6ff676920280e847e0a", + "kind": "transparent" + }, + { + "address": "0x56DD798Fa6934E3133b0b78A47B41E07ef1c9114", + "txHash": "0xb9e6866789422d7f7f0e9992d1541e3bafa807ed5c157040701c6883f891b5bc", "kind": "transparent" } ], "impls": { + "1dfa8105bed605c2df092c9ebb050cc2ce3862f70be02c8e90a760afca628d60": { + "address": "0xc0431C32561DabE0c8FD791B52590BbBA413c235", + "txHash": "0xf90a7ff0c98001e1e065861ed8f1b2b73f72ed925b28328d6db3ef8d86ff89ed", + "layout": { + "solcVersion": "0.8.24", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "_status", + "offset": 0, + "slot": "1", + "type": "t_uint256", + "contract": "ReentrancyGuardUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" + }, + { + "label": "__gap", + "offset": 0, + "slot": "2", + "type": "t_array(t_uint256)49_storage", + "contract": "ReentrancyGuardUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:88" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "101", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "102", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "priceOracle", + "offset": 0, + "slot": "151", + "type": "t_address", + "contract": "BaseFixMyPicFactory", + "src": "contracts/FixMyPicFactory/BaseFixMyPicFactory.sol:52" + }, + { + "label": "nftContract", + "offset": 0, + "slot": "152", + "type": "t_contract(FixMyPicNFT)3800", + "contract": "BaseFixMyPicFactory", + "src": "contracts/FixMyPicFactory/BaseFixMyPicFactory.sol:53" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(FixMyPicNFT)3800": { + "label": "contract FixMyPicNFT", + "numberOfBytes": "20" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "667ec70103ecd158477678b085304b66d305545084eebc0520d43b576955573c": { + "address": "0x152b752A2203aBb107567fE2e299529c441C5429", + "txHash": "0x063513dbc5c1b9c8efaaebdae03f007cd415f9216cab6be1009c0a1fbc17d506", + "layout": { + "solcVersion": "0.8.24", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "_status", + "offset": 0, + "slot": "1", + "type": "t_uint256", + "contract": "ReentrancyGuardUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" + }, + { + "label": "__gap", + "offset": 0, + "slot": "2", + "type": "t_array(t_uint256)49_storage", + "contract": "ReentrancyGuardUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:88" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "101", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "102", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "priceOracle", + "offset": 0, + "slot": "151", + "type": "t_address", + "contract": "BaseFixMyPicFactory", + "src": "contracts/FixMyPicFactory/BaseFixMyPicFactory.sol:52" + }, + { + "label": "nftContract", + "offset": 0, + "slot": "152", + "type": "t_contract(FixMyPicNFT)3763", + "contract": "BaseFixMyPicFactory", + "src": "contracts/FixMyPicFactory/BaseFixMyPicFactory.sol:53" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(FixMyPicNFT)3763": { + "label": "contract FixMyPicNFT", + "numberOfBytes": "20" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "a3b9f7f994de6de8e138d4ba2f66e99c8e3fbf9c2d06ca2d00adb45ee0e83a28": { + "address": "0xb1Ca5B44ef3627A3E5Ed7a6EE877D9D997A7c7ED", + "txHash": "0xe08e2182593d6e2ee04824248589db99d8590b716073d778abe9482d8018b55a", + "layout": { + "solcVersion": "0.8.24", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "_status", + "offset": 0, + "slot": "1", + "type": "t_uint256", + "contract": "ReentrancyGuardUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" + }, + { + "label": "__gap", + "offset": 0, + "slot": "2", + "type": "t_array(t_uint256)49_storage", + "contract": "ReentrancyGuardUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:88" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "101", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "102", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "priceOracle", + "offset": 0, + "slot": "151", + "type": "t_address", + "contract": "BaseFixMyPicFactory", + "src": "contracts/FixMyPicFactory/BaseFixMyPicFactory.sol:52" + }, + { + "label": "nftContract", + "offset": 0, + "slot": "152", + "type": "t_contract(FixMyPicNFT)3766", + "contract": "BaseFixMyPicFactory", + "src": "contracts/FixMyPicFactory/BaseFixMyPicFactory.sol:53" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(FixMyPicNFT)3766": { + "label": "contract FixMyPicNFT", + "numberOfBytes": "20" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "bf536e5a6bddec3cf20816a6fbd4437ebd1b33edac32d00406786e5e2376efcd": { + "address": "0xd19449266F443e67175e7669be788F94ca6e886e", + "txHash": "0xe8412b9cce56f07b279621274c1d19e68988244538ff8bf9b4bf69468f19ac57", + "layout": { + "solcVersion": "0.8.24", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "_status", + "offset": 0, + "slot": "1", + "type": "t_uint256", + "contract": "ReentrancyGuardUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" + }, + { + "label": "__gap", + "offset": 0, + "slot": "2", + "type": "t_array(t_uint256)49_storage", + "contract": "ReentrancyGuardUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:88" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "101", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "102", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "priceOracle", + "offset": 0, + "slot": "151", + "type": "t_address", + "contract": "BaseFixMyPicFactory", + "src": "contracts/FixMyPicFactory/BaseFixMyPicFactory.sol:52" + }, + { + "label": "nftContract", + "offset": 0, + "slot": "152", + "type": "t_contract(FixMyPicNFT)3803", + "contract": "BaseFixMyPicFactory", + "src": "contracts/FixMyPicFactory/BaseFixMyPicFactory.sol:53" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(FixMyPicNFT)3803": { + "label": "contract FixMyPicNFT", + "numberOfBytes": "20" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, "a2da510b244a18010535462d833c62c4e2e38a20fd6ad5ead2ea3d71b9e9901b": { - "address": "0x4B5DF730c2e6b28E17013A1485E5d9BC41Efe021", - "txHash": "0x8d8edee75d449dafd9915b02ae085991137c51d501dbe87081b1ac196b4450b2", + "address": "0x4cf2E778D384746EaB115b914885e2bB18E893E2", + "txHash": "0xe4dae748f1d9bad2dbf480f08a4a661ae08210b880372fbc43f709b48aaa2a48", "layout": { "solcVersion": "0.8.24", "storage": [ @@ -104,9 +566,399 @@ "namespaces": {} } }, - "a0f8f969e8149bdbf8eaae6d34e623233c13bd282d2bdbb50ff4ae895427b9d8": { - "address": "0xb76eD02Dea1ba444609602BE5D587c4bFfd67153", - "txHash": "0x8ebd7931f2fbca9d1b59af3e0e38499268df657b81401f0e04b0824690b3c536", + "641f8b239ff7b909714c2882a04285c91dec9dcefe425410866c7b267fbdc3ed": { + "address": "0xd5608cEC132ED4875D19f8d815EC2ac58498B4E5", + "txHash": "0x7b02125c21aa4ec117371256ebe249436c885a6892bf93e026f8a39bf6e53932", + "layout": { + "solcVersion": "0.8.24", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC165Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:41" + }, + { + "label": "_name", + "offset": 0, + "slot": "101", + "type": "t_string_storage", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:25" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "102", + "type": "t_string_storage", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:28" + }, + { + "label": "_owners", + "offset": 0, + "slot": "103", + "type": "t_mapping(t_uint256,t_address)", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:31" + }, + { + "label": "_balances", + "offset": 0, + "slot": "104", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34" + }, + { + "label": "_tokenApprovals", + "offset": 0, + "slot": "105", + "type": "t_mapping(t_uint256,t_address)", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:37" + }, + { + "label": "_operatorApprovals", + "offset": 0, + "slot": "106", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:40" + }, + { + "label": "__gap", + "offset": 0, + "slot": "107", + "type": "t_array(t_uint256)44_storage", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:477" + }, + { + "label": "_owner", + "offset": 0, + "slot": "151", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "152", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "_tokenIds", + "offset": 0, + "slot": "201", + "type": "t_struct(Counter)3307_storage", + "contract": "BaseFixMyPicNFT", + "src": "contracts/FixMyPicNFT/BaseFixMyPicNFT.sol:11" + }, + { + "label": "_tokenURIs", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "BaseFixMyPicNFT", + "src": "contracts/FixMyPicNFT/BaseFixMyPicNFT.sol:14" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Counter)3307_storage": { + "label": "struct Counters.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "745e439333f4856ed7ff5ea440e3c188ef06289a19671a4d8cd1010d714abce8": { + "address": "0xdaa47000ab1013592C87c0FCf349aBE90178d2B8", + "txHash": "0xaf73dfbb7ff9f2dace9d823461e2793cad339101564ac790f045b9c9cb2f36cc", + "layout": { + "solcVersion": "0.8.24", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC165Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:41" + }, + { + "label": "_name", + "offset": 0, + "slot": "101", + "type": "t_string_storage", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:25" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "102", + "type": "t_string_storage", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:28" + }, + { + "label": "_owners", + "offset": 0, + "slot": "103", + "type": "t_mapping(t_uint256,t_address)", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:31" + }, + { + "label": "_balances", + "offset": 0, + "slot": "104", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34" + }, + { + "label": "_tokenApprovals", + "offset": 0, + "slot": "105", + "type": "t_mapping(t_uint256,t_address)", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:37" + }, + { + "label": "_operatorApprovals", + "offset": 0, + "slot": "106", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:40" + }, + { + "label": "__gap", + "offset": 0, + "slot": "107", + "type": "t_array(t_uint256)44_storage", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:477" + }, + { + "label": "_tokenURIs", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "ERC721URIStorageUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:17" + }, + { + "label": "__gap", + "offset": 0, + "slot": "152", + "type": "t_array(t_uint256)49_storage", + "contract": "ERC721URIStorageUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:86" + }, + { + "label": "_owner", + "offset": 0, + "slot": "201", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "202", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "_tokenIdCounter", + "offset": 0, + "slot": "251", + "type": "t_uint256", + "contract": "BaseFixMyPicNFT", + "src": "contracts/FixMyPicNFT/BaseFixMyPicNFT.sol:9" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "3176386d6d04678bfe3ad79840003e85c3be1d143b94ef7c590a69e66a78b7d7": { + "address": "0x8A1215E77D2ea1ce759a6bB0366870B21548F502", + "txHash": "0x8b4b2b257c176102d3e45f0cee4b437ce55ec2ab28ac8b85dbc9825ef2a788a0", "layout": { "solcVersion": "0.8.24", "storage": [ @@ -144,12 +996,44 @@ "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:88" }, { - "label": "priceOracle", + "label": "__gap", "offset": 0, "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "101", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "102", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "priceOracle", + "offset": 0, + "slot": "151", "type": "t_address", "contract": "BaseFixMyPicFactory", - "src": "contracts/FixMyPicFactory/BaseFixMyPicFactory.sol:42" + "src": "contracts/FixMyPicFactory/BaseFixMyPicFactory.sol:52" + }, + { + "label": "nftContract", + "offset": 0, + "slot": "152", + "type": "t_contract(FixMyPicNFT)3934", + "contract": "BaseFixMyPicFactory", + "src": "contracts/FixMyPicFactory/BaseFixMyPicFactory.sol:53" } ], "types": { @@ -161,10 +1045,18 @@ "label": "uint256[49]", "numberOfBytes": "1568" }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, "t_bool": { "label": "bool", "numberOfBytes": "1" }, + "t_contract(FixMyPicNFT)3934": { + "label": "contract FixMyPicNFT", + "numberOfBytes": "20" + }, "t_uint256": { "label": "uint256", "numberOfBytes": "32" diff --git a/.upgradable/zkSync-testnet-sepolia.json b/.upgradable/zkSync-testnet-sepolia.json index fb8e43d..92e3335 100644 --- a/.upgradable/zkSync-testnet-sepolia.json +++ b/.upgradable/zkSync-testnet-sepolia.json @@ -1,25 +1,30 @@ { "manifestVersion": "3.2", "admin": { - "address": "0x5ee325e315e9186Ed26A569DF6bA2B0E0Ab9B3CB", - "txHash": "0x1d93ae50c953facc93f8b292ef421a8efbddc765b4c555657e0320cfd9ceb14c" + "address": "0xf9754A9fE6b1cbCDDb9fb2cced6cE673e846e1f4", + "txHash": "0x6f78560cf279083d79b2245dab83b10d6400e933c750593c5717b3e89affb682" }, "proxies": [ { - "address": "0x1f998995E9ef94f82f45E9dDeD0fb13380C173C0", - "txHash": "0xb51b30221938fc1693984eaefaab459801b16eb3def75c9f037e760c43d9127f", + "address": "0x1CbfA25e4425e95C285340a16045D6551cE1DFb8", + "txHash": "0x72c3160145da300086a923d4e6d85b2888675cabbfff6a46ac107cd1596ef9a6", "kind": "transparent" }, { - "address": "0xc21DE9e189b40bfa84D498afbda66A4C130f682B", - "txHash": "0x1cc476c38b220532512eeddf7345234e7e4f63eded7db2c15c385fe5c2c5ff84", + "address": "0x0e5Aa65699dd295EB278726f81178a969ad55260", + "txHash": "0x3662005cbc9119ce27ace34101c0d87842ce579ef9f4105106cef416eb6c7611", + "kind": "transparent" + }, + { + "address": "0x82d4520a8667b064642289979357A98Cd6ddF219", + "txHash": "0xbd705a92bc912fd9f946be0ad97860bf019bc96eedf606bbbde5d011316be702", "kind": "transparent" } ], "impls": { "a2da510b244a18010535462d833c62c4e2e38a20fd6ad5ead2ea3d71b9e9901b": { - "address": "0x31576b36d75d9719511A49786fBDCCa0E062ED4A", - "txHash": "0x3d9472450ab7f30a26dd7b80a2dc36e6ea49771fcbaf93d4e9fafb0d99d89415", + "address": "0x991cE86D69E471852b38C6b5f6c74C5D4fc5CA4E", + "txHash": "0x250d41b1583dbe11cda73a5477da6b03c0877588c9ba5f23c0919ef9e8b83643", "layout": { "solcVersion": "0.8.24", "storage": [ @@ -74,9 +79,202 @@ "namespaces": {} } }, - "a0f8f969e8149bdbf8eaae6d34e623233c13bd282d2bdbb50ff4ae895427b9d8": { - "address": "0x9C7d695E284F8D3D1341852fB004B7a3a3Ec0A41", - "txHash": "0xa2cb2060b345b18910409b1bcb2cf53b5b920b4db88e3cd196b07963967edf47", + "745e439333f4856ed7ff5ea440e3c188ef06289a19671a4d8cd1010d714abce8": { + "address": "0x47E5c2F52247F18800aBD8dA6186c2294806c77D", + "txHash": "0x77dc9b2bef59a187a6e238aa1b940b413c1a724a758f1b660d6d88623cab7e7d", + "layout": { + "solcVersion": "0.8.24", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC165Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:41" + }, + { + "label": "_name", + "offset": 0, + "slot": "101", + "type": "t_string_storage", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:25" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "102", + "type": "t_string_storage", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:28" + }, + { + "label": "_owners", + "offset": 0, + "slot": "103", + "type": "t_mapping(t_uint256,t_address)", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:31" + }, + { + "label": "_balances", + "offset": 0, + "slot": "104", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34" + }, + { + "label": "_tokenApprovals", + "offset": 0, + "slot": "105", + "type": "t_mapping(t_uint256,t_address)", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:37" + }, + { + "label": "_operatorApprovals", + "offset": 0, + "slot": "106", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:40" + }, + { + "label": "__gap", + "offset": 0, + "slot": "107", + "type": "t_array(t_uint256)44_storage", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:477" + }, + { + "label": "_tokenURIs", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "ERC721URIStorageUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:17" + }, + { + "label": "__gap", + "offset": 0, + "slot": "152", + "type": "t_array(t_uint256)49_storage", + "contract": "ERC721URIStorageUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:86" + }, + { + "label": "_owner", + "offset": 0, + "slot": "201", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "202", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "_tokenIdCounter", + "offset": 0, + "slot": "251", + "type": "t_uint256", + "contract": "BaseFixMyPicNFT", + "src": "contracts/FixMyPicNFT/BaseFixMyPicNFT.sol:9" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "3176386d6d04678bfe3ad79840003e85c3be1d143b94ef7c590a69e66a78b7d7": { + "address": "0x176F8720A63dF39EaadBb3B5736ffFC4fa514A1B", + "txHash": "0x52879b5f6ee5ae6506721abc677aa9dc68cc208235173fda4943e7d68a645faa", "layout": { "solcVersion": "0.8.24", "storage": [ @@ -114,12 +312,44 @@ "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:88" }, { - "label": "priceOracle", + "label": "__gap", "offset": 0, "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "101", "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "102", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "priceOracle", + "offset": 0, + "slot": "151", + "type": "t_address", + "contract": "BaseFixMyPicFactory", + "src": "contracts/FixMyPicFactory/BaseFixMyPicFactory.sol:52" + }, + { + "label": "nftContract", + "offset": 0, + "slot": "152", + "type": "t_contract(FixMyPicNFT)3934", "contract": "BaseFixMyPicFactory", - "src": "contracts/FixMyPicFactory/BaseFixMyPicFactory.sol:42" + "src": "contracts/FixMyPicFactory/BaseFixMyPicFactory.sol:53" } ], "types": { @@ -131,10 +361,18 @@ "label": "uint256[49]", "numberOfBytes": "1568" }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, "t_bool": { "label": "bool", "numberOfBytes": "1" }, + "t_contract(FixMyPicNFT)3934": { + "label": "contract FixMyPicNFT", + "numberOfBytes": "20" + }, "t_uint256": { "label": "uint256", "numberOfBytes": "32" diff --git a/contracts/FixMyPicFactory/BaseFixMyPicFactory.sol b/contracts/FixMyPicFactory/BaseFixMyPicFactory.sol index ac0b828..c47d9e2 100644 --- a/contracts/FixMyPicFactory/BaseFixMyPicFactory.sol +++ b/contracts/FixMyPicFactory/BaseFixMyPicFactory.sol @@ -2,13 +2,15 @@ pragma solidity ^0.8.0; import '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol'; +import '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol'; import '@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol'; +import '../FixMyPicNFT.sol'; import '../PictureRequest.sol'; import '../RequestSubmission.sol'; import '../RequestComment.sol'; import '../PriceOracle.sol'; -contract BaseFixMyPicFactory is Initializable, ReentrancyGuardUpgradeable { +contract BaseFixMyPicFactory is Initializable, ReentrancyGuardUpgradeable, OwnableUpgradeable { event PictureRequestCreated( address indexed request, string ipfsHash, @@ -37,12 +39,24 @@ contract BaseFixMyPicFactory is Initializable, ReentrancyGuardUpgradeable { event SubmissionPurchased(address indexed submission, address indexed purchaser, uint256 price, uint256 purchaseDate); + event FixMyPicNFTMinted( + uint256 indexed tokenId, + address indexed submission, + address indexed purchaser, + string tokenURI, + uint256 purchasePrice + ); + error InsufficientPayment(uint256 required, uint256 provided); address public priceOracle; + FixMyPicNFT public nftContract; + + function initialize(address _priceOracle, address _nftContract) public initializer { + __Ownable_init(); - function initialize(address _priceOracle) public initializer { priceOracle = _priceOracle; + nftContract = FixMyPicNFT(_nftContract); } function createPictureRequest(string calldata _ipfsHash, uint256 _budget, uint256 _expiresAt) external { @@ -90,4 +104,17 @@ contract BaseFixMyPicFactory is Initializable, ReentrancyGuardUpgradeable { emit SubmissionPurchased(_submission, msg.sender, msg.value, block.timestamp); } + + function mintNFTForSubmission(address _purchaser, address _submission, string calldata _tokenURI) external onlyOwner { + require(_purchaser != address(0), 'Invalid purchaser address'); + require(_submission != address(0), 'Invalid submission address'); + + RequestSubmission requestSubmission = RequestSubmission(_submission); + require(requestSubmission.hasPurchased(_purchaser), 'Submission has not been purchased'); + + uint256 purchasePrice = requestSubmission.price(); + uint256 tokenId = nftContract.mintNFT(_purchaser, _tokenURI); + + emit FixMyPicNFTMinted(tokenId, _submission, _purchaser, _tokenURI, purchasePrice); + } } diff --git a/contracts/FixMyPicNFT.sol b/contracts/FixMyPicNFT.sol new file mode 100644 index 0000000..3860e0d --- /dev/null +++ b/contracts/FixMyPicNFT.sol @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: SEE LICENSE IN LICENSE +pragma solidity ^0.8.20; + +import './FixMyPicNFT/BaseFixMyPicNFT.sol'; + +contract FixMyPicNFT is BaseFixMyPicNFT {} diff --git a/contracts/FixMyPicNFT/BaseFixMyPicNFT.sol b/contracts/FixMyPicNFT/BaseFixMyPicNFT.sol new file mode 100644 index 0000000..3cc2847 --- /dev/null +++ b/contracts/FixMyPicNFT/BaseFixMyPicNFT.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol'; +import '@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol'; +import '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol'; + +contract BaseFixMyPicNFT is Initializable, ERC721URIStorageUpgradeable, OwnableUpgradeable { + uint256 private _tokenIdCounter; + + function initialize() public initializer { + __ERC721_init('FixMyPicNFT', 'FMPNFT'); + __Ownable_init(); + _tokenIdCounter = 1; // Start token IDs from 1 for clarity + } + + function mintNFT(address _recipient, string memory _tokenURI) public onlyOwner returns (uint256) { + uint256 newItemId = _tokenIdCounter; + _tokenIdCounter += 1; + + _safeMint(_recipient, newItemId); + _setTokenURI(newItemId, _tokenURI); + + return newItemId; + } + + function _burn(uint256 tokenId) internal virtual override(ERC721URIStorageUpgradeable) { + super._burn(tokenId); + } + + function tokenURI(uint256 tokenId) public view virtual override(ERC721URIStorageUpgradeable) returns (string memory) { + return super.tokenURI(tokenId); + } +} diff --git a/contracts/tests/FixMyPicFactory.test.ts b/contracts/tests/FixMyPicFactory.test.ts index ec32dfa..9982d7a 100644 --- a/contracts/tests/FixMyPicFactory.test.ts +++ b/contracts/tests/FixMyPicFactory.test.ts @@ -3,7 +3,13 @@ import { Contract, ContractTransactionReceipt } from 'ethers'; import { convertUsdCentsToWei } from '../../src/utils/currency'; import { getLogger } from '../../src/utils/logging'; -import { _createPictureRequest, _createRequestSubmission, deployFixMyPicFactory, deployPriceOracle } from './utils'; +import { + _createPictureRequest, + _createRequestSubmission, + deployFixMyPicFactory, + deployFixMyPicNFT, + deployPriceOracle, +} from './utils'; // Set a longer timeout for this test file jest.setTimeout(300000); // 300 seconds or 5 minutes @@ -36,6 +42,7 @@ const ACCOUNTS: { [key: string]: Account } = { describe('FixMyPicFactory', function () { let priceOracle: Contract; + let fixMyPicNFT: Contract; let fixMyPicFactory: Contract; let pictureRequest: Contract; let requestSubmission: Contract; @@ -46,12 +53,19 @@ describe('FixMyPicFactory', function () { priceOracle = await deployPriceOracle(ACCOUNTS.DEPLOYER); ethToUsd = await priceOracle.getLatestETHPrice(); - fixMyPicFactory = await deployFixMyPicFactory(ACCOUNTS.DEPLOYER, await priceOracle.getAddress()); + fixMyPicNFT = await deployFixMyPicNFT(ACCOUNTS.DEPLOYER); + + fixMyPicFactory = await deployFixMyPicFactory( + ACCOUNTS.DEPLOYER, + await priceOracle.getAddress(), + await fixMyPicNFT.getAddress() + ); fixMyPicFactoryAddress = await fixMyPicFactory.getAddress(); }); - it('should initialize the price oracle and factory contract', async function () { + it('should initialize upfront contracts', async function () { expect(await priceOracle.getAddress()).to.not.be.undefined; + expect(await fixMyPicNFT.getAddress()).to.not.be.undefined; expect(fixMyPicFactoryAddress).to.not.be.undefined; }); diff --git a/contracts/tests/utils.ts b/contracts/tests/utils.ts index 3e3e399..a610fa9 100644 --- a/contracts/tests/utils.ts +++ b/contracts/tests/utils.ts @@ -47,7 +47,19 @@ export async function deployPriceOracle(account: Account): Promise { return deployContract(contractName, [], { wallet, asProxy: true, proxyConstructorArgs: [ZERO_ADDRESS] }); } -export async function deployFixMyPicFactory(account: Account, priceOracleAddress: string): Promise { +export async function deployFixMyPicNFT(account: Account): Promise { + const wallet = getWallet(account.key); + + const contractName = 'FixMyPicNFT'; + + return deployContract(contractName, [], { wallet, asProxy: true }); +} + +export async function deployFixMyPicFactory( + account: Account, + priceOracleAddress: string, + fixMyPicNFTAddress: string +): Promise { const wallet = getWallet(account.key); const contractName = 'FixMyPicFactory'; @@ -55,7 +67,7 @@ export async function deployFixMyPicFactory(account: Account, priceOracleAddress return deployContract(contractName, [], { wallet, asProxy: true, - proxyConstructorArgs: [priceOracleAddress], + proxyConstructorArgs: [priceOracleAddress, fixMyPicNFTAddress], }); } diff --git a/public/artifacts/BaseFixMyPicFactory.json b/public/artifacts/BaseFixMyPicFactory.json index 8d0aae0..429eb7a 100644 --- a/public/artifacts/BaseFixMyPicFactory.json +++ b/public/artifacts/BaseFixMyPicFactory.json @@ -19,6 +19,43 @@ "name": "InsufficientPayment", "type": "error" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "submission", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "tokenURI", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "purchasePrice", + "type": "uint256" + } + ], + "name": "FixMyPicNFTMinted", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -32,6 +69,25 @@ "name": "Initialized", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -256,6 +312,11 @@ "internalType": "address", "name": "_priceOracle", "type": "address" + }, + { + "internalType": "address", + "name": "_nftContract", + "type": "address" } ], "name": "initialize", @@ -263,6 +324,55 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "_purchaser", + "type": "address" + }, + { + "internalType": "address", + "name": "_submission", + "type": "address" + }, + { + "internalType": "string", + "name": "_tokenURI", + "type": "string" + } + ], + "name": "mintNFTForSubmission", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "nftContract", + "outputs": [ + { + "internalType": "contract FixMyPicNFT", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "priceOracle", @@ -288,10 +398,30 @@ "outputs": [], "stateMutability": "payable", "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ], - "bytecode": "0x0003000000000002000c000000000002000000000301001900000060033002700000019e03300197000200000031035500010000000103550000008004000039000000400040043f00000001002001900000003d0000c13d000000040030008c000003290000413d000000000201043b000000e002200270000001a00020009c000000450000213d000001a40020009c0000006e0000613d000001a50020009c000000770000613d000001a60020009c000003290000c13d000000640030008c000003290000413d0000000002000416000000000002004b000003290000c13d0000000402100370000000000202043b000001a70020009c000003290000213d0000002404100370000000000504043b000001a80050009c000003290000213d0000002304500039000000000034004b000003290000813d0000000407500039000000000471034f000000000604043b000001a80060009c000003290000213d00000000046500190000002404400039000000000034004b000003290000213d0000004401100370000000000101043b000700000001001d000001ca01000041000000800010043f0000000001000414000000040020008c000001a70000c13d0000000003000031000000200030008c00000020040000390000000004034019000001d40000013d0000000001000416000000000001004b000003290000c13d0000002001000039000001000010044300000120000004430000019f01000041000006720001042e000001a10020009c0000008b0000613d000001a20020009c000000ba0000613d000001a30020009c000003290000c13d000000440030008c000003290000413d0000000002000416000000000002004b000003290000c13d0000000402100370000000000202043b000001a70020009c000003290000213d0000002404100370000000000504043b000001a80050009c000003290000213d0000002304500039000000000034004b000003290000813d0000000407500039000000000171034f000000000601043b000001a80060009c000003290000213d00000000016500190000002401100039000000000031004b000003290000213d000001a901000041000000800010043f0000000001000414000000040020008c000001ff0000c13d0000000003000031000000200030008c000000200400003900000000040340190000022c0000013d0000000001000416000000000001004b000003290000c13d0000003301000039000000000101041a000001a701100197000000800010043f000001e501000041000006720001042e000000240030008c000003290000413d0000000401100370000000000201043b000001a70020009c000003290000213d0000000103000039000000000103041a000000020010008c000001130000c13d000001b801000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f000001e401000041000000c40010043f000001e3010000410000067300010430000000240030008c000003290000413d0000000002000416000000000002004b000003290000c13d0000000401100370000000000401043b000001a70040009c000003290000213d00000000020004150000000c0220008a0000000502200210000000000500041a0000ff0001500190000000ee0000c13d00000000020004150000000b0220008a0000000502200210000000ff00500190000000ee0000c13d00000080010000390000003302000039000000000302041a000001c603300197000000000343019f000000000032041b000001c70250019700000001022001bf000000000020041b000000010300003900000000003104350000019e0010009c0000019e01008041000000400110021000000000020004140000019e0020009c0000019e02008041000000c002200210000000000112019f000001c8011001c70000800d02000039000001c904000041067106670000040f0000000100200190000003290000613d0000000001000019000006720001042e000000640030008c000003290000413d0000000002000416000000000002004b000003290000c13d0000000402100370000000000202043b000001a80020009c000003290000213d0000002304200039000000000034004b000003290000813d0000000405200039000000000451034f000000000404043b000001a80040009c000003290000213d00000000024200190000002402200039000000000032004b000003290000213d000900000005001d000a00000004001d0000004402100370000000000202043b000700000002001d0000002401100370000000000101043b000800000001001d000001bb01000041000000a40010043f0000000001000414000001ac02000041000000800020043f000000840000043f0000006002000039000000c40020043f000000e40000043f0000019e0010009c0000019e01008041000000c001100210000001bc011001c70000800602000039067106670000040f0000000100200190000001430000613d000000000101043b000000000001004b0000024b0000c13d00000002010003670000000002000031000001480000013d000a00000002001d000800000001001d000900000005001d000700000004001d000001ae0100004100000000001004390000000001000410000000040010044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b0000012c0000c13d0000000905000029000000ff0150018f000000010010008c000000000100001900000001010060390000000a020000290000000502200270000000000201001f0000012f0000c13d000001e60150019700000001011001bf000000000010041b000000080000006b000003110000c13d000000400100043d0000000704000029000000a00000013d0000000201000039000000000013041b000000000002004b000001210000c13d000001b801000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f000001e201000041000000c40010043f000001e3010000410000067300010430000900000003001d000001d401000041000000800010043f0000000001000414000000040020008c0000016b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000001940000013d0000000a010000290000000501100270000000000100001f000000400100043d0000006402100039000001c30300004100000000003204350000004402100039000001c403000041000000000032043500000024021000390000002e030000390000000000320435000001b80200004100000000002104350000000402100039000000200300003900000000003204350000019e0010009c0000019e010080410000004001100210000001c5011001c700000673000104300002000000010355000000000201001900000060022002700000019e0020019d0000019e02200197000000400300043d0000001f0420018f0000000505200272000001540000613d00000005065002100000000006630019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b000001500000c13d000000000004004b000001630000613d0000000505500210000000000151034f00000000055300190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000019e0020009c0000019e0200804100000060012002100000019e0030009c0000019e030080410000004002300210000000000112019f00000673000104300000019e0010009c0000019e01008041000000c001100210000001aa011001c7000a00000002001d0671066c0000040f000000000301001900000060033002700000019e03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000001800000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c0000017c0000c13d000000000005004b0000018f0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000003010000613d0000000a020000290000001f01400039000000600510018f00000080015001bf000000400010043f000000200030008c000003290000413d0000000006000416000000800300043d000000000036004b000003180000813d000001e004000041000000000041043500000084045001bf0000000000340435000000a40250003900000000006204350000004001100210000001e1011001c70000067300010430000a00000007001d000900000006001d0000019e0010009c0000019e01008041000000c001100210000001aa011001c7000800000002001d0671066c0000040f000000000301001900000060033002700000019e03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000001be0000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c000001ba0000c13d000000000005004b000001cd0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000200000001035500000001002001900000000a070000290000032b0000613d000000080200002900000009060000290000001f01400039000000600110018f00000080041001bf000000400040043f000000200030008c000003290000413d000a00000007001d000900000006001d000800000002001d000000800100043d000000000001004b0000035a0000c13d0000002401400039000001cd0300004100000000003104350000004401400039000000000300041400000060020000390000000000210435000001ac01000041000000000014043500000064014000390000000000010435000000040140003900000000000104350000019e0040009c0000019e0400804100000040014002100000019e0030009c0000019e03008041000000c002300210000000000121019f000001ad011001c70000800602000039067106670000040f00000001002001900000037a0000613d000000000101043b000000000001004b000003d20000c13d000000020100036700000000020000310000037f0000013d000a00000007001d000900000006001d0000019e0010009c0000019e01008041000000c001100210000001aa011001c7000800000002001d0671066c0000040f0000008009000039000000000301001900000060033002700000019e03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000002160000613d000000000701034f000000007807043c0000000009890436000000a00090008c000002120000c13d000000000005004b000002250000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000200000001035500000001002001900000000a070000290000033a0000613d000000080200002900000009060000290000001f01400039000000600110018f00000080081001bf000000400080043f000000200030008c000003290000413d000000800300043d000000000003004b0000000004000019000000010400c039000000000043004b000003290000c13d000a00000007001d000900000006001d000800000002001d000000a405100039000000000003004b00000084061001bf000000c40410003900000040038002100000038e0000c13d000001b8010000410000000000180435000000200100003900000000001604350000001d010000390000000000150435000001b9010000410000000000140435000001ba013001c70000067300010430000001ae020000410000000000200439000001a701100197000600000001001d000000040010044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b0000000a070000290000000903000029000003290000613d000000400800043d000001bd010000410000000001180436000300000001001d000000040180003900000080020000390000000000210435000000840180003900000000007104350000001f0970018f000000a4018000390000002002300039000200000002001d0000000102200367000000050a700272000002760000613d0000000503a002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000002720000c13d000000000009004b000002850000613d0000000503a00210000000000232034f00000000033100190000000304900210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500010000000a001d000500000009001d000000000171001900000000000104350000006401800039000000070200002900000000002104350000002401800039000000080200002900000000002104350000004401800039000000000200041100000000002104350000001f01700039000901e70010019b00000000010004140000000602000029000000040020008c000002b00000613d0000019e0080009c0000019e02000041000000000208401900000040022002100000000903000029000001be0030009c000001be030080410000006003300210000000000223019f0000019e0010009c0000019e01008041000000c001100210000000000112019f000001bf0110009a0000000602000029000400000008001d067106670000040f0000000408000029000000000301001900000060033002700000019e0030019d00020000000103550000000100200190000004c00000613d000001a80080009c000004ba0000213d000000400080043f00000080018000390000000a02000029000000000021043500000080010000390000000000180435000400000008001d000000a001800039000000020200002900000001022003670000000103000029000000000003004b0000000503300210000002c70000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b000002c30000c13d000000050000006b000002d60000613d000000000232034f000000000331001900000005040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000a011000290000000000010435000000080100002900000003020000290000000000120435000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000000101043b0000000404000029000000600240003900000007030000290000000000320435000000400240003900000000001204350000019e0040009c0000019e0400804100000040014002100000000902000029000001c00020009c000001c0020080410000006002200210000000000112019f00000000020004140000019e0020009c0000019e02008041000000c002200210000000000121019f000001c10110009a0000800d020000390000000303000039000001c20400004100000006050000290000000006000411000000b50000013d000000400200043d0000001f0430018f00000005053002720000030d0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003090000c13d000000000004004b000003540000613d0000000505500210000003480000013d0000003301000039000000000201041a000001c60220019700000007022001af000000000021041b0000000001000019000006720001042e000001ae010000410000000000100439000a00000002001d000000040020044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b0000000a02000029000003a70000c13d00000000010000190000067300010430000000400200043d0000001f0430018f00000005053002720000000505500210000003370000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003330000c13d000000000004004b000003540000613d000003480000013d000000400200043d0000001f0430018f00000005053002720000000505500210000003460000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003420000c13d000000000004004b000003540000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000019e0020009c0000019e020080410000004002200210000000000112019f0000067300010430000600000001001d000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000400400043d000000000101043b000000060010006c0000048f0000a13d0000004401400039000001cc03000041000000000031043500000024014000390000001a030000390000000000310435000001b80100004100000000001404350000000401400039000000200300003900000000003104350000019e0040009c0000019e040080410000004001400210000001ba011001c700000673000104300002000000010355000000000201001900000060022002700000019e0020019d0000019e02200197000000400300043d0000001f0420018f00000005052002720000038b0000613d00000005065002100000000006630019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b000003870000c13d000000000004004b000001560000c13d000001630000013d000001ab0700004100000000007504350000000005000414000001ac070000410000000000780435000000000006043500000060020000390000000000240435000000e40110003900000000000104350000019e0050009c0000019e05008041000000c001500210000000000113019f000001ad011001c70000800602000039067106670000040f0000000100200190000004920000613d000000000101043b000000000001004b000004d00000c13d00000002010003670000000002000031000004970000013d000000400400043d000001d5010000410000000001140436000700000001001d0000000401400039000000000300041100000000003104350000000001000414000000040020008c000004a60000c13d000001a80040009c000004ba0000213d000000400040043f000001d801000041000800000004001d00000000001404350000000003000031000000200030008c000000200400003900000000040340190000001f01400039000000600110018f00000008020000290000000001210019000001a80010009c000004ba0000213d000000400010043f000000200030008c000003290000413d0000000004020433000001da0040009c000003290000813d0000000002000414000000040040008c000006000000613d0000019e0020009c0000019e02008041000000c0012002100000000002000416000000000002004b000005f40000c13d0000000002040019000005f80000013d0000003302000039000000000202041a000500000002001d000001ae020000410000000000200439000001a701100197000600000001001d000000040010044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b000000080300002900000009040000290000000a05000029000003290000613d000000400600043d0000002401600039000000a0020000390000000000210435000001ce010000410000000001160436000200000001001d00000004016000390000000000310435000000a40160003900000000004104350003001f00400193000400000006001d000000c4016000390000002002500039000100000002001d0000000102200367000a00050040027a000004050000613d0000000a0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000004010000c13d0000000503000029000001a703300197000000030000006b000004180000613d0000000a040000290000000504400210000000000242034f000000000441001900000003050000290000000305500210000000000604043300000000065601cf000000000656022f000000000202043b0000010005500089000000000252022f00000000025201cf000000000262019f00000000002404350000000901100029000000000001043500000004040000290000008401400039000000000031043500000044014000390000000702000029000000000021043500000064014000390000000002000411000000000021043500000000010004140000000602000029000000040020008c0000043f0000613d00000009020000290000001f02200039000001e702200197000001cf0020009c000001cf02008041000000600220021000000004030000290000019e0030009c0000019e030080410000004003300210000000000232019f0000019e0010009c0000019e01008041000000c001100210000000000112019f000001d00110009a0000000602000029067106670000040f000000000301001900000060033002700000019e0030019d00020000000103550000000100200190000005d40000613d0000000401000029000001a80010009c000004ba0000213d0000000403000029000000400030043f000000600130003900000009020000290000000000210435000000600100003900000000001304350000008001300039000000010200002900000001022003670000000a03000029000000000003004b0000000503300210000004570000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b000004530000c13d000000030000006b000004660000613d000000000232034f000000000331001900000003040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000009011000290000000000010435000000070100002900000002020000290000000000120435000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000000101043b00000004030000290000004002300039000000000012043500000009010000290000001f01100039000001e701100197000001d10010009c000001d10100804100000060011002100000019e0030009c0000019e030080410000004002300210000000000121019f00000000020004140000019e0020009c0000019e02008041000000c002200210000000000121019f000001d20110009a0000800d020000390000000403000039000001d3040000410000000605000029000005810000013d000001cb0040009c000001e00000a13d000004ba0000013d0002000000010355000000000201001900000060022002700000019e0020019d0000019e02200197000000400300043d0000001f0420018f00000005052002720000000505500210000004a30000613d0000000006530019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b0000049f0000c13d000000000004004b000001630000613d000001570000013d0000019e0040009c000800000004001d0000019e03000041000000000304401900060040003002180000019e0010009c0000019e01008041000000c00110021000000006011001af000001d6011001c7067106670000040f000000000301001900000060033002700000019e0030019d00020000000103550000000100200190000005870000613d0000000802000029000001d70020009c000005970000413d000001df0100004100000000001004350000004101000039000000040010043f000001d60100004100000673000104300000019e03300197000000400200043d0000001f0430018f0000000505300272000004cd0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004c90000c13d000000000004004b000003540000613d0000030f0000013d000001ae020000410000000000200439000001a701100197000700000001001d000000040010044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b000000080200002900000009030000290000000a04000029000003290000613d000000400500043d000000240150003900000060060000390000000000610435000001b0010000410000000001150436000300000001001d00000004015000390000000000210435000000640150003900000000003104350005001f00300193000600000005001d00000084015000390000002002400039000400000002001d0000000102200367000a00050030027a000005000000613d0000000a0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000004fc0000c13d000000050000006b000005110000613d0000000a030000290000000503300210000000000232034f000000000331001900000005040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000009011000290000000000010435000000060100002900000044011000390000000002000411000000000021043500000000010004140000000702000029000000040020008c000005330000613d00000009020000290000001f02200039000001e702200197000001b10020009c000001b102008041000000600220021000000006030000290000019e0030009c0000019e030080410000004003300210000000000232019f0000019e0010009c0000019e01008041000000c001100210000000000112019f000001b20110009a0000000702000029067106670000040f000000000301001900000060033002700000019e0030019d00020000000103550000000100200190000005e40000613d0000000601000029000001a80010009c000004ba0000213d0000000603000029000000400030043f000000400130003900000009020000290000000000210435000000400100003900000000001304350000006001300039000000040200002900000001022003670000000a0000006b0000054b0000613d0000000a0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000005470000c13d000000050000006b0000055c0000613d0000000a030000290000000503300210000000000232034f000000000331001900000005040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000009011000290000000000010435000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000000101043b0000000302000029000000000012043500000009010000290000001f01100039000001e701100197000001b50010009c000001b501008041000000600110021000000006020000290000019e0020009c0000019e020080410000004002200210000000000121019f00000000020004140000019e0020009c0000019e02008041000000c002200210000000000121019f000001b60110009a0000800d020000390000000403000039000001b704000041000000070500002900000008060000290000000007000411067106670000040f0000000100200190000003290000613d000000b80000013d0000019e03300197000000400200043d0000001f0430018f0000000505300272000005940000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005900000c13d000000000004004b000003540000613d0000030f0000013d000000400020043f000001d801000041000000000012043500000000010004140000019e0010009c0000019e01008041000000c00110021000000006011001af000001d9011001c70000000a020000290671066c0000040f000000000301001900000060033002700000019e03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000005b20000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000005ae0000c13d000000000005004b000005c10000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000003bb0000c13d000000400200043d0000001f0430018f0000000505300272000005d10000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005cd0000c13d000000000004004b000003540000613d0000030f0000013d0000019e03300197000000400200043d0000001f0430018f00000005053002720000000505500210000005e10000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005dd0000c13d000000000004004b000003540000613d000003480000013d0000019e03300197000000400200043d0000001f0430018f00000005053002720000000505500210000005f10000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005ed0000c13d000000000004004b000003540000613d000003480000013d000001db011001c7000080090200003900000000030004160000000005000019067106670000040f000900000002001d000200000001035500000060011002700000019e0010019d0000019e03100198000006280000613d000000400100043d0000001f02300039000001e7022001970000003f02200039000001e7042001970000000002140019000000000042004b00000000040000190000000104004039000001a80020009c000004ba0000213d0000000100400190000004ba0000c13d000000400020043f0000001f0230018f00000000013104360000000204000367000000050330027200000005033002100000061a0000613d0000000005310019000000000604034f0000000007010019000000006806043c0000000007870436000000000057004b000006160000c13d000000000002004b000006280000613d000000000434034f00000000013100190000000302200210000000000301043300000000032301cf000000000323022f000000000404043b0000010002200089000000000424022f00000000022401cf000000000232019f000000000021043500000009010000290000000100100190000006550000613d000000400200043d0000000001000416000900000002001d0000000001120436000800000001001d000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000000101043b0000000802000029000000000012043500000009010000290000019e0010009c0000019e01008041000000400110021000000000020004140000019e0020009c0000019e02008041000000c002200210000000000112019f000001dd011001c70000800d020000390000000303000039000001de040000410000000a050000290000000006000411067106670000040f0000000100200190000003290000613d0000000101000039000000000011041b0000000001000019000006720001042e000000000001042f000000400100043d0000004402100039000001dc03000041000000000032043500000024021000390000000e030000390000000000320435000001b80200004100000000002104350000000402100039000000200300003900000000003204350000019e0010009c0000019e010080410000004001100210000001ba011001c70000067300010430000000000001042f0000066a002104210000000102000039000000000001042d0000000002000019000000000001042d0000066f002104230000000102000039000000000001042d0000000002000019000000000001042d0000067100000432000006720001042e0000067300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000c4d66de700000000000000000000000000000000000000000000000000000000c4d66de800000000000000000000000000000000000000000000000000000000da8bf5a600000000000000000000000000000000000000000000000000000000e86938e1000000000000000000000000000000000000000000000000000000002630c12f00000000000000000000000000000000000000000000000000000000398f9de50000000000000000000000000000000000000000000000000000000099ba99bd000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff6d3dbe7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000080000000000000000001000087bd2009cf1bb167c807096c445d8276cc341f403b41c9650f726e4a3f9c4d535bdea7cd8a978f128b93471df48c7dbab89d703809115bdc118c235bfd02000000000000000000000000000000000000840000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000007bb7c0d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7bffffffffffffffffffffffffffffffffffffff7c000000000000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff9ffdffffffffffffffffffffffffffffffffffffa000000000000000000000000077d6b9f0192e2433b5dd096ea593a82aa04204683757437da108e37959cff9c908c379a000000000000000000000000000000000000000000000000000000000506963747572655265717565737420646f6573206e6f7420657869737400000000000000000000000000000000000000000000640000000000000000000000000100008d7479837ee722f16eb77463225d6f81b9742abe6a61255863b0529850020000000000000000000000000000000000008400000080000000000000000076d8160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5bffffffffffffffffffffffffffffffffffffff5c00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5ffdffffffffffffffffffffffffffffffffffff60000000000000000000000000ca8986794c4f31f610829437f668ed7cc4f46bcf078e9feb87962398f84440ce647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c7265610000000000000000000000000000000000000084000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000002000000000000000000000000000000000000200000000000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024988622a68900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7b5069637475726552657175657374206861732065787069726564000000000000010000ef41c28e3d268fee2e7bc1984679d30053332a8bb2534460470afff8227a5f022a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff3bffffffffffffffffffffffffffffffffffffff3c00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7ffdffffffffffffffffffffffffffffffffffff800000000000000000000000008065dc333a13520f3cdcebe527dd2495f2ec79d510609a240744a58e0215775cfc504655000000000000000000000000000000000000000000000000000000002e84571400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000100000000000000008dc45d9a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000001000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000005061796d656e74206661696c65640000000000000000000000000000000000000200000000000000000000000000000000000040000000000000000000000000b6f341a65eb19a9f00c69fc73ab895c20d60a9c6718e33e85d576781626ebad04e487b7100000000000000000000000000000000000000000000000000000000b99e2ab7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000496e76616c6964207375626d697373696f6e206164647265737300000000000000000000000000000000000000000000000000640000008000000000000000005265656e7472616e637947756172643a207265656e7472616e742063616c6c000000000000000000000000000000000000000020000000800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0822594153a42c758679d4f51edb7f062053c78f994c94cdb1c84928a14650a8e", - "deployedBytecode": "0x0003000000000002000c000000000002000000000301001900000060033002700000019e03300197000200000031035500010000000103550000008004000039000000400040043f00000001002001900000003d0000c13d000000040030008c000003290000413d000000000201043b000000e002200270000001a00020009c000000450000213d000001a40020009c0000006e0000613d000001a50020009c000000770000613d000001a60020009c000003290000c13d000000640030008c000003290000413d0000000002000416000000000002004b000003290000c13d0000000402100370000000000202043b000001a70020009c000003290000213d0000002404100370000000000504043b000001a80050009c000003290000213d0000002304500039000000000034004b000003290000813d0000000407500039000000000471034f000000000604043b000001a80060009c000003290000213d00000000046500190000002404400039000000000034004b000003290000213d0000004401100370000000000101043b000700000001001d000001ca01000041000000800010043f0000000001000414000000040020008c000001a70000c13d0000000003000031000000200030008c00000020040000390000000004034019000001d40000013d0000000001000416000000000001004b000003290000c13d0000002001000039000001000010044300000120000004430000019f01000041000006720001042e000001a10020009c0000008b0000613d000001a20020009c000000ba0000613d000001a30020009c000003290000c13d000000440030008c000003290000413d0000000002000416000000000002004b000003290000c13d0000000402100370000000000202043b000001a70020009c000003290000213d0000002404100370000000000504043b000001a80050009c000003290000213d0000002304500039000000000034004b000003290000813d0000000407500039000000000171034f000000000601043b000001a80060009c000003290000213d00000000016500190000002401100039000000000031004b000003290000213d000001a901000041000000800010043f0000000001000414000000040020008c000001ff0000c13d0000000003000031000000200030008c000000200400003900000000040340190000022c0000013d0000000001000416000000000001004b000003290000c13d0000003301000039000000000101041a000001a701100197000000800010043f000001e501000041000006720001042e000000240030008c000003290000413d0000000401100370000000000201043b000001a70020009c000003290000213d0000000103000039000000000103041a000000020010008c000001130000c13d000001b801000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f000001e401000041000000c40010043f000001e3010000410000067300010430000000240030008c000003290000413d0000000002000416000000000002004b000003290000c13d0000000401100370000000000401043b000001a70040009c000003290000213d00000000020004150000000c0220008a0000000502200210000000000500041a0000ff0001500190000000ee0000c13d00000000020004150000000b0220008a0000000502200210000000ff00500190000000ee0000c13d00000080010000390000003302000039000000000302041a000001c603300197000000000343019f000000000032041b000001c70250019700000001022001bf000000000020041b000000010300003900000000003104350000019e0010009c0000019e01008041000000400110021000000000020004140000019e0020009c0000019e02008041000000c002200210000000000112019f000001c8011001c70000800d02000039000001c904000041067106670000040f0000000100200190000003290000613d0000000001000019000006720001042e000000640030008c000003290000413d0000000002000416000000000002004b000003290000c13d0000000402100370000000000202043b000001a80020009c000003290000213d0000002304200039000000000034004b000003290000813d0000000405200039000000000451034f000000000404043b000001a80040009c000003290000213d00000000024200190000002402200039000000000032004b000003290000213d000900000005001d000a00000004001d0000004402100370000000000202043b000700000002001d0000002401100370000000000101043b000800000001001d000001bb01000041000000a40010043f0000000001000414000001ac02000041000000800020043f000000840000043f0000006002000039000000c40020043f000000e40000043f0000019e0010009c0000019e01008041000000c001100210000001bc011001c70000800602000039067106670000040f0000000100200190000001430000613d000000000101043b000000000001004b0000024b0000c13d00000002010003670000000002000031000001480000013d000a00000002001d000800000001001d000900000005001d000700000004001d000001ae0100004100000000001004390000000001000410000000040010044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b0000012c0000c13d0000000905000029000000ff0150018f000000010010008c000000000100001900000001010060390000000a020000290000000502200270000000000201001f0000012f0000c13d000001e60150019700000001011001bf000000000010041b000000080000006b000003110000c13d000000400100043d0000000704000029000000a00000013d0000000201000039000000000013041b000000000002004b000001210000c13d000001b801000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f000001e201000041000000c40010043f000001e3010000410000067300010430000900000003001d000001d401000041000000800010043f0000000001000414000000040020008c0000016b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000001940000013d0000000a010000290000000501100270000000000100001f000000400100043d0000006402100039000001c30300004100000000003204350000004402100039000001c403000041000000000032043500000024021000390000002e030000390000000000320435000001b80200004100000000002104350000000402100039000000200300003900000000003204350000019e0010009c0000019e010080410000004001100210000001c5011001c700000673000104300002000000010355000000000201001900000060022002700000019e0020019d0000019e02200197000000400300043d0000001f0420018f0000000505200272000001540000613d00000005065002100000000006630019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b000001500000c13d000000000004004b000001630000613d0000000505500210000000000151034f00000000055300190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000019e0020009c0000019e0200804100000060012002100000019e0030009c0000019e030080410000004002300210000000000112019f00000673000104300000019e0010009c0000019e01008041000000c001100210000001aa011001c7000a00000002001d0671066c0000040f000000000301001900000060033002700000019e03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000001800000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c0000017c0000c13d000000000005004b0000018f0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000003010000613d0000000a020000290000001f01400039000000600510018f00000080015001bf000000400010043f000000200030008c000003290000413d0000000006000416000000800300043d000000000036004b000003180000813d000001e004000041000000000041043500000084045001bf0000000000340435000000a40250003900000000006204350000004001100210000001e1011001c70000067300010430000a00000007001d000900000006001d0000019e0010009c0000019e01008041000000c001100210000001aa011001c7000800000002001d0671066c0000040f000000000301001900000060033002700000019e03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000001be0000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c000001ba0000c13d000000000005004b000001cd0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000200000001035500000001002001900000000a070000290000032b0000613d000000080200002900000009060000290000001f01400039000000600110018f00000080041001bf000000400040043f000000200030008c000003290000413d000a00000007001d000900000006001d000800000002001d000000800100043d000000000001004b0000035a0000c13d0000002401400039000001cd0300004100000000003104350000004401400039000000000300041400000060020000390000000000210435000001ac01000041000000000014043500000064014000390000000000010435000000040140003900000000000104350000019e0040009c0000019e0400804100000040014002100000019e0030009c0000019e03008041000000c002300210000000000121019f000001ad011001c70000800602000039067106670000040f00000001002001900000037a0000613d000000000101043b000000000001004b000003d20000c13d000000020100036700000000020000310000037f0000013d000a00000007001d000900000006001d0000019e0010009c0000019e01008041000000c001100210000001aa011001c7000800000002001d0671066c0000040f0000008009000039000000000301001900000060033002700000019e03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000002160000613d000000000701034f000000007807043c0000000009890436000000a00090008c000002120000c13d000000000005004b000002250000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000200000001035500000001002001900000000a070000290000033a0000613d000000080200002900000009060000290000001f01400039000000600110018f00000080081001bf000000400080043f000000200030008c000003290000413d000000800300043d000000000003004b0000000004000019000000010400c039000000000043004b000003290000c13d000a00000007001d000900000006001d000800000002001d000000a405100039000000000003004b00000084061001bf000000c40410003900000040038002100000038e0000c13d000001b8010000410000000000180435000000200100003900000000001604350000001d010000390000000000150435000001b9010000410000000000140435000001ba013001c70000067300010430000001ae020000410000000000200439000001a701100197000600000001001d000000040010044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b0000000a070000290000000903000029000003290000613d000000400800043d000001bd010000410000000001180436000300000001001d000000040180003900000080020000390000000000210435000000840180003900000000007104350000001f0970018f000000a4018000390000002002300039000200000002001d0000000102200367000000050a700272000002760000613d0000000503a002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000002720000c13d000000000009004b000002850000613d0000000503a00210000000000232034f00000000033100190000000304900210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500010000000a001d000500000009001d000000000171001900000000000104350000006401800039000000070200002900000000002104350000002401800039000000080200002900000000002104350000004401800039000000000200041100000000002104350000001f01700039000901e70010019b00000000010004140000000602000029000000040020008c000002b00000613d0000019e0080009c0000019e02000041000000000208401900000040022002100000000903000029000001be0030009c000001be030080410000006003300210000000000223019f0000019e0010009c0000019e01008041000000c001100210000000000112019f000001bf0110009a0000000602000029000400000008001d067106670000040f0000000408000029000000000301001900000060033002700000019e0030019d00020000000103550000000100200190000004c00000613d000001a80080009c000004ba0000213d000000400080043f00000080018000390000000a02000029000000000021043500000080010000390000000000180435000400000008001d000000a001800039000000020200002900000001022003670000000103000029000000000003004b0000000503300210000002c70000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b000002c30000c13d000000050000006b000002d60000613d000000000232034f000000000331001900000005040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000a011000290000000000010435000000080100002900000003020000290000000000120435000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000000101043b0000000404000029000000600240003900000007030000290000000000320435000000400240003900000000001204350000019e0040009c0000019e0400804100000040014002100000000902000029000001c00020009c000001c0020080410000006002200210000000000112019f00000000020004140000019e0020009c0000019e02008041000000c002200210000000000121019f000001c10110009a0000800d020000390000000303000039000001c20400004100000006050000290000000006000411000000b50000013d000000400200043d0000001f0430018f00000005053002720000030d0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003090000c13d000000000004004b000003540000613d0000000505500210000003480000013d0000003301000039000000000201041a000001c60220019700000007022001af000000000021041b0000000001000019000006720001042e000001ae010000410000000000100439000a00000002001d000000040020044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b0000000a02000029000003a70000c13d00000000010000190000067300010430000000400200043d0000001f0430018f00000005053002720000000505500210000003370000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003330000c13d000000000004004b000003540000613d000003480000013d000000400200043d0000001f0430018f00000005053002720000000505500210000003460000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003420000c13d000000000004004b000003540000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000019e0020009c0000019e020080410000004002200210000000000112019f0000067300010430000600000001001d000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000400400043d000000000101043b000000060010006c0000048f0000a13d0000004401400039000001cc03000041000000000031043500000024014000390000001a030000390000000000310435000001b80100004100000000001404350000000401400039000000200300003900000000003104350000019e0040009c0000019e040080410000004001400210000001ba011001c700000673000104300002000000010355000000000201001900000060022002700000019e0020019d0000019e02200197000000400300043d0000001f0420018f00000005052002720000038b0000613d00000005065002100000000006630019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b000003870000c13d000000000004004b000001560000c13d000001630000013d000001ab0700004100000000007504350000000005000414000001ac070000410000000000780435000000000006043500000060020000390000000000240435000000e40110003900000000000104350000019e0050009c0000019e05008041000000c001500210000000000113019f000001ad011001c70000800602000039067106670000040f0000000100200190000004920000613d000000000101043b000000000001004b000004d00000c13d00000002010003670000000002000031000004970000013d000000400400043d000001d5010000410000000001140436000700000001001d0000000401400039000000000300041100000000003104350000000001000414000000040020008c000004a60000c13d000001a80040009c000004ba0000213d000000400040043f000001d801000041000800000004001d00000000001404350000000003000031000000200030008c000000200400003900000000040340190000001f01400039000000600110018f00000008020000290000000001210019000001a80010009c000004ba0000213d000000400010043f000000200030008c000003290000413d0000000004020433000001da0040009c000003290000813d0000000002000414000000040040008c000006000000613d0000019e0020009c0000019e02008041000000c0012002100000000002000416000000000002004b000005f40000c13d0000000002040019000005f80000013d0000003302000039000000000202041a000500000002001d000001ae020000410000000000200439000001a701100197000600000001001d000000040010044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b000000080300002900000009040000290000000a05000029000003290000613d000000400600043d0000002401600039000000a0020000390000000000210435000001ce010000410000000001160436000200000001001d00000004016000390000000000310435000000a40160003900000000004104350003001f00400193000400000006001d000000c4016000390000002002500039000100000002001d0000000102200367000a00050040027a000004050000613d0000000a0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000004010000c13d0000000503000029000001a703300197000000030000006b000004180000613d0000000a040000290000000504400210000000000242034f000000000441001900000003050000290000000305500210000000000604043300000000065601cf000000000656022f000000000202043b0000010005500089000000000252022f00000000025201cf000000000262019f00000000002404350000000901100029000000000001043500000004040000290000008401400039000000000031043500000044014000390000000702000029000000000021043500000064014000390000000002000411000000000021043500000000010004140000000602000029000000040020008c0000043f0000613d00000009020000290000001f02200039000001e702200197000001cf0020009c000001cf02008041000000600220021000000004030000290000019e0030009c0000019e030080410000004003300210000000000232019f0000019e0010009c0000019e01008041000000c001100210000000000112019f000001d00110009a0000000602000029067106670000040f000000000301001900000060033002700000019e0030019d00020000000103550000000100200190000005d40000613d0000000401000029000001a80010009c000004ba0000213d0000000403000029000000400030043f000000600130003900000009020000290000000000210435000000600100003900000000001304350000008001300039000000010200002900000001022003670000000a03000029000000000003004b0000000503300210000004570000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b000004530000c13d000000030000006b000004660000613d000000000232034f000000000331001900000003040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000009011000290000000000010435000000070100002900000002020000290000000000120435000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000000101043b00000004030000290000004002300039000000000012043500000009010000290000001f01100039000001e701100197000001d10010009c000001d10100804100000060011002100000019e0030009c0000019e030080410000004002300210000000000121019f00000000020004140000019e0020009c0000019e02008041000000c002200210000000000121019f000001d20110009a0000800d020000390000000403000039000001d3040000410000000605000029000005810000013d000001cb0040009c000001e00000a13d000004ba0000013d0002000000010355000000000201001900000060022002700000019e0020019d0000019e02200197000000400300043d0000001f0420018f00000005052002720000000505500210000004a30000613d0000000006530019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b0000049f0000c13d000000000004004b000001630000613d000001570000013d0000019e0040009c000800000004001d0000019e03000041000000000304401900060040003002180000019e0010009c0000019e01008041000000c00110021000000006011001af000001d6011001c7067106670000040f000000000301001900000060033002700000019e0030019d00020000000103550000000100200190000005870000613d0000000802000029000001d70020009c000005970000413d000001df0100004100000000001004350000004101000039000000040010043f000001d60100004100000673000104300000019e03300197000000400200043d0000001f0430018f0000000505300272000004cd0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004c90000c13d000000000004004b000003540000613d0000030f0000013d000001ae020000410000000000200439000001a701100197000700000001001d000000040010044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b000000080200002900000009030000290000000a04000029000003290000613d000000400500043d000000240150003900000060060000390000000000610435000001b0010000410000000001150436000300000001001d00000004015000390000000000210435000000640150003900000000003104350005001f00300193000600000005001d00000084015000390000002002400039000400000002001d0000000102200367000a00050030027a000005000000613d0000000a0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000004fc0000c13d000000050000006b000005110000613d0000000a030000290000000503300210000000000232034f000000000331001900000005040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000009011000290000000000010435000000060100002900000044011000390000000002000411000000000021043500000000010004140000000702000029000000040020008c000005330000613d00000009020000290000001f02200039000001e702200197000001b10020009c000001b102008041000000600220021000000006030000290000019e0030009c0000019e030080410000004003300210000000000232019f0000019e0010009c0000019e01008041000000c001100210000000000112019f000001b20110009a0000000702000029067106670000040f000000000301001900000060033002700000019e0030019d00020000000103550000000100200190000005e40000613d0000000601000029000001a80010009c000004ba0000213d0000000603000029000000400030043f000000400130003900000009020000290000000000210435000000400100003900000000001304350000006001300039000000040200002900000001022003670000000a0000006b0000054b0000613d0000000a0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000005470000c13d000000050000006b0000055c0000613d0000000a030000290000000503300210000000000232034f000000000331001900000005040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000009011000290000000000010435000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000000101043b0000000302000029000000000012043500000009010000290000001f01100039000001e701100197000001b50010009c000001b501008041000000600110021000000006020000290000019e0020009c0000019e020080410000004002200210000000000121019f00000000020004140000019e0020009c0000019e02008041000000c002200210000000000121019f000001b60110009a0000800d020000390000000403000039000001b704000041000000070500002900000008060000290000000007000411067106670000040f0000000100200190000003290000613d000000b80000013d0000019e03300197000000400200043d0000001f0430018f0000000505300272000005940000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005900000c13d000000000004004b000003540000613d0000030f0000013d000000400020043f000001d801000041000000000012043500000000010004140000019e0010009c0000019e01008041000000c00110021000000006011001af000001d9011001c70000000a020000290671066c0000040f000000000301001900000060033002700000019e03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000005b20000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000005ae0000c13d000000000005004b000005c10000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000003bb0000c13d000000400200043d0000001f0430018f0000000505300272000005d10000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005cd0000c13d000000000004004b000003540000613d0000030f0000013d0000019e03300197000000400200043d0000001f0430018f00000005053002720000000505500210000005e10000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005dd0000c13d000000000004004b000003540000613d000003480000013d0000019e03300197000000400200043d0000001f0430018f00000005053002720000000505500210000005f10000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005ed0000c13d000000000004004b000003540000613d000003480000013d000001db011001c7000080090200003900000000030004160000000005000019067106670000040f000900000002001d000200000001035500000060011002700000019e0010019d0000019e03100198000006280000613d000000400100043d0000001f02300039000001e7022001970000003f02200039000001e7042001970000000002140019000000000042004b00000000040000190000000104004039000001a80020009c000004ba0000213d0000000100400190000004ba0000c13d000000400020043f0000001f0230018f00000000013104360000000204000367000000050330027200000005033002100000061a0000613d0000000005310019000000000604034f0000000007010019000000006806043c0000000007870436000000000057004b000006160000c13d000000000002004b000006280000613d000000000434034f00000000013100190000000302200210000000000301043300000000032301cf000000000323022f000000000404043b0000010002200089000000000424022f00000000022401cf000000000232019f000000000021043500000009010000290000000100100190000006550000613d000000400200043d0000000001000416000900000002001d0000000001120436000800000001001d000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000000101043b0000000802000029000000000012043500000009010000290000019e0010009c0000019e01008041000000400110021000000000020004140000019e0020009c0000019e02008041000000c002200210000000000112019f000001dd011001c70000800d020000390000000303000039000001de040000410000000a050000290000000006000411067106670000040f0000000100200190000003290000613d0000000101000039000000000011041b0000000001000019000006720001042e000000000001042f000000400100043d0000004402100039000001dc03000041000000000032043500000024021000390000000e030000390000000000320435000001b80200004100000000002104350000000402100039000000200300003900000000003204350000019e0010009c0000019e010080410000004001100210000001ba011001c70000067300010430000000000001042f0000066a002104210000000102000039000000000001042d0000000002000019000000000001042d0000066f002104230000000102000039000000000001042d0000000002000019000000000001042d0000067100000432000006720001042e0000067300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000c4d66de700000000000000000000000000000000000000000000000000000000c4d66de800000000000000000000000000000000000000000000000000000000da8bf5a600000000000000000000000000000000000000000000000000000000e86938e1000000000000000000000000000000000000000000000000000000002630c12f00000000000000000000000000000000000000000000000000000000398f9de50000000000000000000000000000000000000000000000000000000099ba99bd000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff6d3dbe7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000080000000000000000001000087bd2009cf1bb167c807096c445d8276cc341f403b41c9650f726e4a3f9c4d535bdea7cd8a978f128b93471df48c7dbab89d703809115bdc118c235bfd02000000000000000000000000000000000000840000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000007bb7c0d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7bffffffffffffffffffffffffffffffffffffff7c000000000000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff9ffdffffffffffffffffffffffffffffffffffffa000000000000000000000000077d6b9f0192e2433b5dd096ea593a82aa04204683757437da108e37959cff9c908c379a000000000000000000000000000000000000000000000000000000000506963747572655265717565737420646f6573206e6f7420657869737400000000000000000000000000000000000000000000640000000000000000000000000100008d7479837ee722f16eb77463225d6f81b9742abe6a61255863b0529850020000000000000000000000000000000000008400000080000000000000000076d8160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5bffffffffffffffffffffffffffffffffffffff5c00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5ffdffffffffffffffffffffffffffffffffffff60000000000000000000000000ca8986794c4f31f610829437f668ed7cc4f46bcf078e9feb87962398f84440ce647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c7265610000000000000000000000000000000000000084000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000002000000000000000000000000000000000000200000000000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024988622a68900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7b5069637475726552657175657374206861732065787069726564000000000000010000ef41c28e3d268fee2e7bc1984679d30053332a8bb2534460470afff8227a5f022a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff3bffffffffffffffffffffffffffffffffffffff3c00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7ffdffffffffffffffffffffffffffffffffffff800000000000000000000000008065dc333a13520f3cdcebe527dd2495f2ec79d510609a240744a58e0215775cfc504655000000000000000000000000000000000000000000000000000000002e84571400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000100000000000000008dc45d9a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000001000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000005061796d656e74206661696c65640000000000000000000000000000000000000200000000000000000000000000000000000040000000000000000000000000b6f341a65eb19a9f00c69fc73ab895c20d60a9c6718e33e85d576781626ebad04e487b7100000000000000000000000000000000000000000000000000000000b99e2ab7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000496e76616c6964207375626d697373696f6e206164647265737300000000000000000000000000000000000000000000000000640000008000000000000000005265656e7472616e637947756172643a207265656e7472616e742063616c6c000000000000000000000000000000000000000020000000800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0822594153a42c758679d4f51edb7f062053c78f994c94cdb1c84928a14650a8e", + "bytecode": "0x0003000000000002000d000000000002000000000301001900000060033002700000022d03300197000200000031035500010000000103550000008004000039000000400040043f00000001002001900000001e0000c13d000000040030008c000003db0000413d000000000201043b000000e0022002700000022f0020009c000000260000a13d000002300020009c000000470000213d000002340020009c0000009d0000613d000002350020009c000000a20000613d000002360020009c000003db0000c13d0000000001000416000000000001004b000003db0000c13d0000009801000039000001610000013d0000000001000416000000000001004b000003db0000c13d0000002001000039000001000010044300000120000004430000022e01000041000008b00001042e000002370020009c0000006a0000a13d000002380020009c000000c80000613d000002390020009c000000dc0000613d0000023a0020009c000003db0000c13d0000000001000416000000000001004b000003db0000c13d0000006501000039000000000201041a0000023d052001970000000003000411000000000035004b000001660000c13d0000026702200197000000000021041b00000000010004140000022d0010009c0000022d01008041000000c00110021000000268011001c70000800d0200003900000003030000390000026904000041000000000600001908af08a50000040f0000000100200190000003db0000613d0000000001000019000008b00001042e000002310020009c000001060000613d000002320020009c0000013a0000613d000002330020009c000003db0000c13d000000240030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000401100370000000000101043b0000023d0010009c000003db0000213d0000006502000039000000000202041a0000023d022001970000000003000411000000000032004b000001660000c13d000000000001004b000001d50000c13d0000023e01000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000023f01000041000000c40010043f0000024001000041000000e40010043f0000024101000041000008b1000104300000023b0020009c0000015d0000613d0000023c0020009c000003db0000c13d000000640030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000502043b0000023d0050009c000003db0000213d0000002402100370000000000602043b0000023d0060009c000003db0000213d0000004402100370000000000202043b000002420020009c000003db0000213d0000002304200039000000000034004b000003db0000813d0000000407200039000000000171034f000000000401043b000002420040009c000003db0000213d00000000014200190000002401100039000000000031004b000003db0000213d0000006501000039000000000101041a0000023d011001970000000002000411000000000021004b000001660000c13d000000000005004b0000042c0000c13d0000023e01000041000000800010043f0000002001000039000000840010043f0000001901000039000000a40010043f0000028c01000041000000c40010043f0000028001000041000008b1000104300000000001000416000000000001004b000003db0000c13d0000006501000039000001610000013d000000640030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000202043b0000023d0020009c000003db0000213d0000002404100370000000000504043b000002420050009c000003db0000213d0000002304500039000000000034004b000003db0000813d0000000407500039000000000471034f000000000604043b000002420060009c000003db0000213d00000000046500190000002404400039000000000034004b000003db0000213d0000004401100370000000000101043b000800000001001d0000025d01000041000000800010043f0000000001000414000000040020008c0000025e0000c13d0000000003000031000000200030008c000000200400003900000000040340190000028b0000013d000000240030008c000003db0000413d0000000401100370000000000201043b0000023d0020009c000003db0000213d0000000103000039000000000103041a000000020010008c0000016f0000c13d0000023e01000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f0000027f01000041000000c40010043f0000028001000041000008b100010430000000440030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000302043b0000023d0030009c000003db0000213d0000002401100370000000000401043b0000023d0040009c000003db0000213d00000000020004150000000d0220008a0000000502200210000000000500041a0000ff0001500190000b00000003001d000a00000004001d0000017d0000c13d00000000020004150000000c0220008a0000000502200210000000ff005001900000017d0000c13d0000026d0150019700000101011001bf0000000002000019000000000010041b0000ff0000100190000001a10000c13d000000400100043d00000064021000390000027003000041000000000032043500000044021000390000027103000041000000000032043500000024021000390000002b03000039000002530000013d000000640030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000202043b000002420020009c000003db0000213d0000002304200039000000000034004b000003db0000813d0000000405200039000000000451034f000000000404043b000002420040009c000003db0000213d00000000024200190000002402200039000000000032004b000003db0000213d000a00000005001d000b00000004001d0000004402100370000000000202043b000800000002001d0000002401100370000000000101043b000900000001001d0000025401000041000000a40010043f00000000010004140000024602000041000000800020043f000000840000043f0000006002000039000000c40020043f000000e40000043f0000022d0010009c0000022d01008041000000c00110021000000255011001c7000080060200003908af08a50000040f0000000100200190000001e30000613d000000000101043b000000000001004b000002b60000c13d00000002010003670000000002000031000001e80000013d000000440030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000202043b0000023d0020009c000003db0000213d0000002404100370000000000504043b000002420050009c000003db0000213d0000002304500039000000000034004b000003db0000813d0000000407500039000000000171034f000000000601043b000002420060009c000003db0000213d00000000016500190000002401100039000000000031004b000003db0000213d0000024301000041000000800010043f0000000001000414000000040020008c0000036e0000c13d0000000003000031000000200030008c000000200400003900000000040340190000039b0000013d0000000001000416000000000001004b000003db0000c13d0000009701000039000000000101041a0000023d01100197000000800010043f0000025c01000041000008b00001042e0000023e01000041000000800010043f0000002001000039000000840010043f000000a40010043f0000028101000041000000c40010043f0000028001000041000008b1000104300000000201000039000000000013041b000000000002004b000001d80000c13d0000023e01000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f0000028b01000041000000c40010043f0000028001000041000008b100010430000900000002001d000700000001001d000800000005001d000002480100004100000000001004390000000001000410000000040010044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b000002470000c13d0000000805000029000000ff0150018f000000010010008c0000000001000019000000010100603900000009020000290000000502200270000000000201001f0000024a0000c13d000000070000006b000000f60000613d0000028d01500197000000010200003900000001011001bf000000000010041b0000ff0000100190000000fc0000613d000900000002001d00000000010004110000023d061001970000006501000039000000000201041a0000026703200197000000000363019f000000000031041b00000000010004140000023d052001970000022d0010009c0000022d01008041000000c00110021000000268011001c70000800d020000390000000303000039000002690400004108af08a50000040f0000000a040000290000000b030000290000000100200190000003db0000613d0000009701000039000000000201041a0000026702200197000000000232019f000000000021041b0000009801000039000000000201041a0000026702200197000000000242019f000000000021041b000000090000006b000000450000c13d000000000200041a0000028e01200197000000000010041b0000000103000039000000400100043d00000000003104350000022d0010009c0000022d01008041000000400110021000000000020004140000022d0020009c0000022d02008041000000c002200210000000000112019f0000026e011001c70000800d020000390000026f04000041000000420000013d08af088f0000040f0000000001000019000008b00001042e000a00000003001d0000027201000041000000800010043f0000000001000414000000040020008c0000020b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000002340000013d0002000000010355000000000201001900000060022002700000022d0020019d0000022d02200197000000400300043d0000001f0420018f0000000505200272000001f40000613d00000005065002100000000006630019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b000001f00000c13d000000000004004b000002030000613d0000000505500210000000000151034f00000000055300190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000022d0020009c0000022d0200804100000060012002100000022d0030009c0000022d030080410000004002300210000000000112019f000008b1000104300000022d0010009c0000022d01008041000000c00110021000000244011001c7000b00000002001d08af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000002200000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c0000021c0000c13d000000000005004b0000022f0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000003ba0000613d0000000b020000290000001f01400039000000600510018f00000080015001bf000000400010043f000000200030008c000003db0000413d0000000006000416000000800300043d000000000036004b000003ca0000813d0000027d04000041000000000041043500000084045001bf0000000000340435000000a402500039000000000062043500000040011002100000027e011001c7000008b10001043000000009010000290000000501100270000000000100001f000000400100043d00000064021000390000026a03000041000000000032043500000044021000390000026b03000041000000000032043500000024021000390000002e0300003900000000003204350000023e0200004100000000002104350000000402100039000000200300003900000000003204350000022d0010009c0000022d0100804100000040011002100000026c011001c7000008b100010430000b00000007001d000a00000006001d0000022d0010009c0000022d01008041000000c00110021000000244011001c7000900000002001d08af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000002750000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c000002710000c13d000000000005004b000002840000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000200000001035500000001002001900000000b07000029000003dd0000613d00000009020000290000000a060000290000001f01400039000000600110018f00000080041001bf000000400040043f000000200030008c000003db0000413d000b00000007001d000a00000006001d000900000002001d000000800100043d000000000001004b0000040c0000c13d00000024014000390000026003000041000000000031043500000044014000390000000003000414000000600200003900000000002104350000024601000041000000000014043500000064014000390000000000010435000000040140003900000000000104350000022d0040009c0000022d0400804100000040014002100000022d0030009c0000022d03008041000000c002300210000000000121019f00000247011001c7000080060200003908af08a50000040f00000001002001900000043f0000613d000000000101043b000000000001004b000004990000c13d00000002010003670000000002000031000004440000013d000002480200004100000000002004390000023d01100197000700000001001d000000040010044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b0000000b030000290000000a05000029000003db0000613d000000400200043d00000256010000410000000001120436000400000001001d000000040120003900000080040000390000000000410435000000840120003900000000003104350000001f0730018f000600000002001d000000a4012000390000002002500039000300000002001d00000001022003670000000508300272000002e20000613d00000005038002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000002de0000c13d000000000007004b000002f10000613d0000000503800210000000000232034f00000000033100190000000304700210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f0000000000230435000200000008001d000500000007001d0000000b030000290000000001310019000000000001043500000006040000290000006401400039000000080200002900000000002104350000002401400039000000090200002900000000002104350000004401400039000000000200041100000000002104350000001f01300039000a028f0010019b00000000010004140000000702000029000000040020008c0000031d0000613d0000022d0040009c0000022d02000041000000000204401900000040022002100000000a03000029000002570030009c00000257030080410000006003300210000000000223019f0000022d0010009c0000022d01008041000000c001100210000000000112019f000002580110009a000000070200002908af08a50000040f0000000604000029000000000301001900000060033002700000022d0030019d00020000000103550000000100200190000005870000613d000002420040009c000005810000213d0000000603000029000000400030043f00000080013000390000000b02000029000000000021043500000080010000390000000000130435000000a001300039000000030200002900000001022003670000000203000029000000000003004b0000000503300210000003340000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b000003300000c13d000000050000006b000003430000613d000000000232034f000000000331001900000005040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000b0110002900000000000104350000000901000029000000040200002900000000001204350000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b0000000604000029000000600240003900000008030000290000000000320435000000400240003900000000001204350000022d0040009c0000022d0400804100000040014002100000000a02000029000002590020009c00000259020080410000006002200210000000000112019f00000000020004140000022d0020009c0000022d02008041000000c002200210000000000121019f0000025a0110009a0000800d0200003900000003030000390000025b0400004100000007050000290000000006000411000000420000013d000b00000007001d000a00000006001d0000022d0010009c0000022d01008041000000c00110021000000244011001c7000900000002001d08af08aa0000040f0000008009000039000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000003850000613d000000000701034f000000007807043c0000000009890436000000a00090008c000003810000c13d000000000005004b000003940000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000200000001035500000001002001900000000b07000029000003ec0000613d00000009020000290000000a060000290000001f01400039000000600110018f00000080081001bf000000400080043f000000200030008c000003db0000413d000000800300043d000000000003004b0000000004000019000000010400c039000000000043004b000003db0000c13d000b00000007001d000a00000006001d000900000002001d000000a405100039000000000003004b00000084061001bf000000c4041000390000004003800210000004530000c13d0000023e010000410000000000180435000000200100003900000000001604350000001d0100003900000000001504350000025201000041000000000014043500000253013001c7000008b100010430000000400200043d0000001f0430018f0000000505300272000003c60000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003c20000c13d000000000004004b000004060000613d0000000505500210000003fa0000013d00000248010000410000000000100439000b00000002001d000000040020044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b0000000b020000290000046c0000c13d0000000001000019000008b100010430000000400200043d0000001f0430018f00000005053002720000000505500210000003e90000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003e50000c13d000000000004004b000004060000613d000003fa0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000003f80000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003f40000c13d000000000004004b000004060000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000022d0020009c0000022d020080410000004002200210000000000112019f000008b100010430000700000001001d0000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000400400043d000000000101043b000000070010006c000005560000a13d00000044014000390000025f03000041000000000031043500000024014000390000001a0300003900000000003104350000023e0100004100000000001404350000000401400039000000200300003900000000003104350000022d0040009c0000022d04008041000000400140021000000253011001c7000008b100010430000800000007001d000900000004001d000a00000005001d000b00000006001d000000000006004b000001730000613d0000028201000041000000800010043f0000000a01000029000000840010043f00000000010004140000000b02000029000000040020008c000005970000c13d0000000003000031000000200030008c00000020040000390000000004034019000005bf0000013d0002000000010355000000000201001900000060022002700000022d0020019d0000022d02200197000000400300043d0000001f0420018f0000000505200272000004500000613d00000005065002100000000006630019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b0000044c0000c13d000000000004004b000001f60000c13d000002030000013d00000245070000410000000000750435000000000500041400000246070000410000000000780435000000000006043500000060020000390000000000240435000000e40110003900000000000104350000022d0050009c0000022d05008041000000c001500210000000000113019f00000247011001c7000080060200003908af08a50000040f0000000100200190000005590000613d000000000101043b000000000001004b000005e00000c13d000000020100036700000000020000310000055e0000013d000000400300043d00000273010000410000000001130436000800000001001d000900000003001d0000000401300039000000000300041100000000003104350000000001000414000000040020008c0000056d0000c13d0000000901000029000002420010009c000005810000213d0000000902000029000000400020043f000002760100004100000000001204350000000003000031000000200030008c000000200400003900000000040340190000001f01400039000000600110018f0000000901100029000002420010009c000005810000213d000000400010043f000000200030008c000003db0000413d00000009020000290000000004020433000002780040009c000003db0000813d0000000002000414000000040040008c0000081a0000613d0000022d0020009c0000022d02008041000000c0012002100000000002000416000000000002004b0000080e0000c13d0000000002040019000008120000013d0000009702000039000000000202041a000600000002001d000002480200004100000000002004390000023d01100197000700000001001d000000040010044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b00000009030000290000000a040000290000000b05000029000003db0000613d000000400600043d0000002401600039000000a002000039000000000021043500000261010000410000000001160436000300000001001d00000004016000390000000000310435000000a40160003900000000004104350004001f00400193000500000006001d000000c4016000390000002002500039000200000002001d0000000102200367000b00050040027a000004cc0000613d0000000b0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000004c80000c13d00000006030000290000023d03300197000000040000006b000004df0000613d0000000b040000290000000504400210000000000242034f000000000441001900000004050000290000000305500210000000000604043300000000065601cf000000000656022f000000000202043b0000010005500089000000000252022f00000000025201cf000000000262019f00000000002404350000000a01100029000000000001043500000005040000290000008401400039000000000031043500000044014000390000000802000029000000000021043500000064014000390000000002000411000000000021043500000000010004140000000702000029000000040020008c000005060000613d0000000a020000290000001f022000390000028f02200197000002620020009c0000026202008041000000600220021000000005030000290000022d0030009c0000022d030080410000004003300210000000000232019f0000022d0010009c0000022d01008041000000c001100210000000000112019f000002630110009a000000070200002908af08a50000040f000000000301001900000060033002700000022d0030019d00020000000103550000000100200190000007700000613d0000000501000029000002420010009c000005810000213d0000000503000029000000400030043f00000060013000390000000a020000290000000000210435000000600100003900000000001304350000008001300039000000020200002900000001022003670000000b03000029000000000003004b00000005033002100000051e0000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b0000051a0000c13d000000040000006b0000052d0000613d000000000232034f000000000331001900000004040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000a0110002900000000000104350000000801000029000000030200002900000000001204350000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b0000000503000029000000400230003900000000001204350000000a010000290000001f011000390000028f01100197000002640010009c000002640100804100000060011002100000022d0030009c0000022d030080410000004002300210000000000121019f00000000020004140000022d0020009c0000022d02008041000000c002200210000000000121019f000002650110009a0000800d02000039000000040300003900000266040000410000000705000029000006910000013d0000025e0040009c000002970000a13d000005810000013d0002000000010355000000000201001900000060022002700000022d0020019d0000022d02200197000000400300043d0000001f0420018f000000050520027200000005055002100000056a0000613d0000000006530019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b000005660000c13d000000000004004b000002030000613d000001f70000013d00000009020000290000022d0020009c0000022d0200804100070040002002180000022d0010009c0000022d01008041000000c00110021000000007011001af00000274011001c70000000b0200002908af08a50000040f000000000301001900000060033002700000022d0030019d00020000000103550000000100200190000006940000613d0000000901000029000002750010009c000006b30000413d0000027c0100004100000000001004350000004101000039000000040010043f0000027401000041000008b1000104300000022d03300197000000400200043d0000001f0430018f0000000505300272000005940000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005900000c13d000000000004004b000004060000613d000003c80000013d0000022d0010009c0000022d01008041000000c00110021000000283011001c70000000b0200002908af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000005ac0000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c000005a80000c13d000000000005004b000005bb0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000006a40000613d0000001f01400039000000600110018f00000080021001bf000700000002001d000000400020043f000000200030008c000003db0000413d000000800200043d000000000002004b0000000003000019000000010300c039000000000032004b000003db0000c13d000000000002004b000006f10000c13d0000023e020000410000000704000029000000000024043500000084021001bf00000020030000390000000000320435000000e40210003900000289030000410000000000320435000000c4021000390000028a030000410000000000320435000000a4011000390000002102000039000000000021043500000040014002100000026c011001c7000008b100010430000002480200004100000000002004390000023d01100197000800000001001d000000040010044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b00000009020000290000000a030000290000000b04000029000003db0000613d000000400500043d0000002401500039000000600600003900000000006104350000024a010000410000000001150436000400000001001d00000004015000390000000000210435000000640150003900000000003104350006001f00300193000700000005001d00000084015000390000002002400039000500000002001d0000000102200367000b00050030027a000006100000613d0000000b0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b0000060c0000c13d000000060000006b000006210000613d0000000b030000290000000503300210000000000232034f000000000331001900000006040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000a011000290000000000010435000000070100002900000044011000390000000002000411000000000021043500000000010004140000000802000029000000040020008c000006430000613d0000000a020000290000001f022000390000028f022001970000024b0020009c0000024b02008041000000600220021000000007030000290000022d0030009c0000022d030080410000004003300210000000000232019f0000022d0010009c0000022d01008041000000c001100210000000000112019f0000024c0110009a000000080200002908af08a50000040f000000000301001900000060033002700000022d0030019d00020000000103550000000100200190000007ef0000613d0000000701000029000002420010009c000005810000213d0000000703000029000000400030043f00000040013000390000000a020000290000000000210435000000400100003900000000001304350000006001300039000000050200002900000001022003670000000b0000006b0000065b0000613d0000000b0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000006570000c13d000000060000006b0000066c0000613d0000000b030000290000000503300210000000000232034f000000000331001900000006040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000a0110002900000000000104350000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000040200002900000000001204350000000a010000290000001f011000390000028f011001970000024f0010009c0000024f01008041000000600110021000000007020000290000022d0020009c0000022d020080410000004002200210000000000121019f00000000020004140000022d0020009c0000022d02008041000000c002200210000000000121019f000002500110009a0000800d0200003900000004030000390000025104000041000000080500002900000009060000290000000007000411000000420000013d0000022d03300197000000400200043d0000001f0430018f0000000505300272000006a10000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000069d0000c13d000000000004004b000004060000613d000003c80000013d000000400200043d0000001f0430018f00000005053002720000000505500210000006b00000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006ac0000c13d000000000004004b000003fa0000c13d000004060000013d0000000902000029000000400020043f0000027601000041000000000012043500000000010004140000022d0010009c0000022d01008041000000c00110021000000007011001af00000277011001c70000000b0200002908af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a000029000006cf0000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b000006cb0000c13d000000000005004b000006de0000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000004820000c13d000000400200043d0000001f0430018f0000000505300272000006ee0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006ea0000c13d000000000004004b000004060000613d000003c80000013d000002840200004100000007030000290000000002230436000600000002001d00000000020004140000000b03000029000000040030008c000007800000c13d0000000702100029000600000002001d000000400020043f0000000a040000290000000906000029000000080500002900000007020000290000000002020433000400000002001d0000009802000039000000000202041a000002850300004100000006070000290000000003370436000100000003001d00000004037001bf0000000000430435000000240370003900000040040000390000000000430435000000440370003900000000006304350008001f006001930000006404700039000300200050003d000000010300036700000003053003600000000506600272000200000006001d00070005006002180000071f0000613d0000000706400029000000000705034f0000000008040019000000007907043c0000000008980436000000000068004b0000071b0000c13d0000023d02200197000000080000006b0000072f0000613d0000000705500360000000070640002900000008070000290000000307700210000000000806043300000000087801cf000000000878022f000000000505043b0000010007700089000000000575022f00000000057501cf000000000585019f00000000005604350000000905000029000000000454001900000000000404350000001f045000390005028f0040019b0000000004000414000000040020008c000007b70000c13d0000000601100029000000400010043f000000060200002900000000050204330000004002100039000000090400002900000000004204350000004002000039000000000221043600000003043003600000006003100039000000020000006b0000074b0000613d0000000706300029000000000704034f0000000008030019000000007907043c0000000008980436000000000068004b000007470000c13d000000080000006b0000075a0000613d0000000704400360000000070630002900000008070000290000000307700210000000000806043300000000087801cf000000000878022f000000000404043b0000010007700089000000000474022f00000000047401cf000000000484019f00000000004604350000000903300029000000000003043500000004030000290000000000320435000000400110021000000005020000290000024f0020009c0000024f020080410000006002200210000000000112019f00000000020004140000022d0020009c0000022d02008041000000c002200210000000000121019f000002500110009a0000800d02000039000000040300003900000288040000410000000b060000290000000a07000029000000420000013d0000022d03300197000000400200043d0000001f0430018f000000050530027200000005055002100000077d0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007790000c13d000000000004004b000004060000613d000003fa0000013d000000070100002900000040011002100000022d0020009c0000022d02008041000000c002200210000000000112019f00000277011001c70000000b0200002908af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a000029000007990000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000007950000c13d000000000005004b000007a80000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000007ff0000613d0000001f01400039000000600110018f0000000702100029000600000002001d000000400020043f000000200030008c0000000a0400002900000009060000290000000805000029000003db0000413d000006ff0000013d000000060100002900000040011002100000000503000029000002860030009c00000286030080410000006003300210000000000113019f0000022d0040009c0000022d04008041000000c003400210000000000131019f000002870110009a08af08a50000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010a000029000007d40000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000007d00000c13d000000000005004b000007e30000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000008800000613d0000001f01400039000000600110018f0000000601100029000000400010043f000000200030008c000003db0000413d0000000103000367000007390000013d0000022d03300197000000400200043d0000001f0430018f00000005053002720000000505500210000007fc0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007f80000c13d000000000004004b000004060000613d000003fa0000013d000000400200043d0000001f0430018f000000050530027200000005055002100000080b0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008070000c13d000000000004004b000004060000613d000003fa0000013d00000268011001c700008009020000390000000003000416000000000500001908af08a50000040f000a00000002001d000200000001035500000060011002700000022d0010019d0000022d03100198000008420000613d000000400100043d0000001f023000390000028f022001970000003f022000390000028f042001970000000002140019000000000042004b00000000040000190000000104004039000002420020009c000005810000213d0000000100400190000005810000c13d000000400020043f0000001f0230018f0000000001310436000000020400036700000005033002720000000503300210000008340000613d0000000005310019000000000604034f0000000007010019000000006806043c0000000007870436000000000057004b000008300000c13d000000000002004b000008420000613d000000000434034f00000000013100190000000302200210000000000301043300000000032301cf000000000323022f000000000404043b0000010002200089000000000424022f00000000022401cf000000000232019f00000000002104350000000a0100002900000001001001900000086f0000613d000000400200043d0000000001000416000a00000002001d0000000001120436000900000001001d0000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000090200002900000000001204350000000a010000290000022d0010009c0000022d01008041000000400110021000000000020004140000022d0020009c0000022d02008041000000c002200210000000000112019f0000027a011001c70000800d0200003900000003030000390000027b040000410000000b05000029000000000600041108af08a50000040f0000000100200190000003db0000613d0000000101000039000000000011041b0000000001000019000008b00001042e000000000001042f000000400100043d00000044021000390000027903000041000000000032043500000024021000390000000e0300003900000000003204350000023e0200004100000000002104350000000402100039000000200300003900000000003204350000022d0010009c0000022d01008041000000400110021000000253011001c7000008b100010430000000400200043d0000001f0430018f00000005053002720000088c0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008880000c13d000000000004004b000003c80000c13d000004060000013d0000023d061001970000006501000039000000000201041a0000026703200197000000000363019f000000000031041b00000000010004140000023d052001970000022d0010009c0000022d01008041000000c00110021000000268011001c70000800d020000390000000303000039000002690400004108af08a50000040f0000000100200190000008a20000613d000000000001042d0000000001000019000008b100010430000000000001042f000008a8002104210000000102000039000000000001042d0000000002000019000000000001042d000008ad002104230000000102000039000000000001042d0000000002000019000000000001042d000008af00000432000008b00001042e000008b1000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000008da5cb5a00000000000000000000000000000000000000000000000000000000da8bf5a500000000000000000000000000000000000000000000000000000000da8bf5a600000000000000000000000000000000000000000000000000000000e86938e100000000000000000000000000000000000000000000000000000000f2fde38b000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000099ba99bd00000000000000000000000000000000000000000000000000000000d56d229d00000000000000000000000000000000000000000000000000000000398f9de400000000000000000000000000000000000000000000000000000000398f9de500000000000000000000000000000000000000000000000000000000485cc95500000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000002630c12f0000000000000000000000000000000000000000000000000000000035aef8fc000000000000000000000000ffffffffffffffffffffffffffffffffffffffff08c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff6d3dbe7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000080000000000000000001000087bd2009cf1bb167c807096c445d8276cc341f403b41c9650f726e4a3f9c4d535bdea7cd8a978f128b93471df48c7dbab89d703809115bdc118c235bfd02000000000000000000000000000000000000840000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000007bb7c0d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7bffffffffffffffffffffffffffffffffffffff7c000000000000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff9ffdffffffffffffffffffffffffffffffffffffa000000000000000000000000077d6b9f0192e2433b5dd096ea593a82aa04204683757437da108e37959cff9c9506963747572655265717565737420646f6573206e6f7420657869737400000000000000000000000000000000000000000000640000000000000000000000000100008d7479837ee722f16eb77463225d6f81b9742abe6a61255863b0529850020000000000000000000000000000000000008400000080000000000000000076d8160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5bffffffffffffffffffffffffffffffffffffff5c00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5ffdffffffffffffffffffffffffffffffffffff60000000000000000000000000ca8986794c4f31f610829437f668ed7cc4f46bcf078e9feb87962398f84440ce00000000000000000000000000000000000000200000008000000000000000008622a68900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7b5069637475726552657175657374206861732065787069726564000000000000010000ef41c28e3d268fee2e7bc1984679d30053332a8bb2534460470afff8227a5f022a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff3bffffffffffffffffffffffffffffffffffffff3c00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7ffdffffffffffffffffffffffffffffffffffff800000000000000000000000008065dc333a13520f3cdcebe527dd2495f2ec79d510609a240744a58e0215775cffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c7265610000000000000000000000000000000000000084000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000002000000000000000000000000000000000000200000000000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986e697469616c697a696e67000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069fc504655000000000000000000000000000000000000000000000000000000002e84571400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000100000000000000008dc45d9a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000100000000000000000000000000000000000000005061796d656e74206661696c65640000000000000000000000000000000000000200000000000000000000000000000000000040000000000000000000000000b6f341a65eb19a9f00c69fc73ab895c20d60a9c6718e33e85d576781626ebad04e487b7100000000000000000000000000000000000000000000000000000000b99e2ab70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000005265656e7472616e637947756172643a207265656e7472616e742063616c6c0000000000000000000000000000000000000000640000008000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657290118fb4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000800000000000000000a035b1fe00000000000000000000000000000000000000000000000000000000eacabe140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff9bffffffffffffffffffffffffffffffffffffff9c0000000000000000000000008933731037817126d1157966ae367e45654450b583b0884fddbc423d9a2b979864000000000000000000000000000000000000000000000000000000000000005375626d697373696f6e20686173206e6f74206265656e207075726368617365496e76616c6964207375626d697373696f6e2061646472657373000000000000496e76616c696420707572636861736572206164647265737300000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01d9d58335896f2a0bfee4fcb64d6eba066e40e7111c288c35d3e4e802cabdba4", + "deployedBytecode": "0x0003000000000002000d000000000002000000000301001900000060033002700000022d03300197000200000031035500010000000103550000008004000039000000400040043f00000001002001900000001e0000c13d000000040030008c000003db0000413d000000000201043b000000e0022002700000022f0020009c000000260000a13d000002300020009c000000470000213d000002340020009c0000009d0000613d000002350020009c000000a20000613d000002360020009c000003db0000c13d0000000001000416000000000001004b000003db0000c13d0000009801000039000001610000013d0000000001000416000000000001004b000003db0000c13d0000002001000039000001000010044300000120000004430000022e01000041000008b00001042e000002370020009c0000006a0000a13d000002380020009c000000c80000613d000002390020009c000000dc0000613d0000023a0020009c000003db0000c13d0000000001000416000000000001004b000003db0000c13d0000006501000039000000000201041a0000023d052001970000000003000411000000000035004b000001660000c13d0000026702200197000000000021041b00000000010004140000022d0010009c0000022d01008041000000c00110021000000268011001c70000800d0200003900000003030000390000026904000041000000000600001908af08a50000040f0000000100200190000003db0000613d0000000001000019000008b00001042e000002310020009c000001060000613d000002320020009c0000013a0000613d000002330020009c000003db0000c13d000000240030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000401100370000000000101043b0000023d0010009c000003db0000213d0000006502000039000000000202041a0000023d022001970000000003000411000000000032004b000001660000c13d000000000001004b000001d50000c13d0000023e01000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000023f01000041000000c40010043f0000024001000041000000e40010043f0000024101000041000008b1000104300000023b0020009c0000015d0000613d0000023c0020009c000003db0000c13d000000640030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000502043b0000023d0050009c000003db0000213d0000002402100370000000000602043b0000023d0060009c000003db0000213d0000004402100370000000000202043b000002420020009c000003db0000213d0000002304200039000000000034004b000003db0000813d0000000407200039000000000171034f000000000401043b000002420040009c000003db0000213d00000000014200190000002401100039000000000031004b000003db0000213d0000006501000039000000000101041a0000023d011001970000000002000411000000000021004b000001660000c13d000000000005004b0000042c0000c13d0000023e01000041000000800010043f0000002001000039000000840010043f0000001901000039000000a40010043f0000028c01000041000000c40010043f0000028001000041000008b1000104300000000001000416000000000001004b000003db0000c13d0000006501000039000001610000013d000000640030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000202043b0000023d0020009c000003db0000213d0000002404100370000000000504043b000002420050009c000003db0000213d0000002304500039000000000034004b000003db0000813d0000000407500039000000000471034f000000000604043b000002420060009c000003db0000213d00000000046500190000002404400039000000000034004b000003db0000213d0000004401100370000000000101043b000800000001001d0000025d01000041000000800010043f0000000001000414000000040020008c0000025e0000c13d0000000003000031000000200030008c000000200400003900000000040340190000028b0000013d000000240030008c000003db0000413d0000000401100370000000000201043b0000023d0020009c000003db0000213d0000000103000039000000000103041a000000020010008c0000016f0000c13d0000023e01000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f0000027f01000041000000c40010043f0000028001000041000008b100010430000000440030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000302043b0000023d0030009c000003db0000213d0000002401100370000000000401043b0000023d0040009c000003db0000213d00000000020004150000000d0220008a0000000502200210000000000500041a0000ff0001500190000b00000003001d000a00000004001d0000017d0000c13d00000000020004150000000c0220008a0000000502200210000000ff005001900000017d0000c13d0000026d0150019700000101011001bf0000000002000019000000000010041b0000ff0000100190000001a10000c13d000000400100043d00000064021000390000027003000041000000000032043500000044021000390000027103000041000000000032043500000024021000390000002b03000039000002530000013d000000640030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000202043b000002420020009c000003db0000213d0000002304200039000000000034004b000003db0000813d0000000405200039000000000451034f000000000404043b000002420040009c000003db0000213d00000000024200190000002402200039000000000032004b000003db0000213d000a00000005001d000b00000004001d0000004402100370000000000202043b000800000002001d0000002401100370000000000101043b000900000001001d0000025401000041000000a40010043f00000000010004140000024602000041000000800020043f000000840000043f0000006002000039000000c40020043f000000e40000043f0000022d0010009c0000022d01008041000000c00110021000000255011001c7000080060200003908af08a50000040f0000000100200190000001e30000613d000000000101043b000000000001004b000002b60000c13d00000002010003670000000002000031000001e80000013d000000440030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000202043b0000023d0020009c000003db0000213d0000002404100370000000000504043b000002420050009c000003db0000213d0000002304500039000000000034004b000003db0000813d0000000407500039000000000171034f000000000601043b000002420060009c000003db0000213d00000000016500190000002401100039000000000031004b000003db0000213d0000024301000041000000800010043f0000000001000414000000040020008c0000036e0000c13d0000000003000031000000200030008c000000200400003900000000040340190000039b0000013d0000000001000416000000000001004b000003db0000c13d0000009701000039000000000101041a0000023d01100197000000800010043f0000025c01000041000008b00001042e0000023e01000041000000800010043f0000002001000039000000840010043f000000a40010043f0000028101000041000000c40010043f0000028001000041000008b1000104300000000201000039000000000013041b000000000002004b000001d80000c13d0000023e01000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f0000028b01000041000000c40010043f0000028001000041000008b100010430000900000002001d000700000001001d000800000005001d000002480100004100000000001004390000000001000410000000040010044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b000002470000c13d0000000805000029000000ff0150018f000000010010008c0000000001000019000000010100603900000009020000290000000502200270000000000201001f0000024a0000c13d000000070000006b000000f60000613d0000028d01500197000000010200003900000001011001bf000000000010041b0000ff0000100190000000fc0000613d000900000002001d00000000010004110000023d061001970000006501000039000000000201041a0000026703200197000000000363019f000000000031041b00000000010004140000023d052001970000022d0010009c0000022d01008041000000c00110021000000268011001c70000800d020000390000000303000039000002690400004108af08a50000040f0000000a040000290000000b030000290000000100200190000003db0000613d0000009701000039000000000201041a0000026702200197000000000232019f000000000021041b0000009801000039000000000201041a0000026702200197000000000242019f000000000021041b000000090000006b000000450000c13d000000000200041a0000028e01200197000000000010041b0000000103000039000000400100043d00000000003104350000022d0010009c0000022d01008041000000400110021000000000020004140000022d0020009c0000022d02008041000000c002200210000000000112019f0000026e011001c70000800d020000390000026f04000041000000420000013d08af088f0000040f0000000001000019000008b00001042e000a00000003001d0000027201000041000000800010043f0000000001000414000000040020008c0000020b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000002340000013d0002000000010355000000000201001900000060022002700000022d0020019d0000022d02200197000000400300043d0000001f0420018f0000000505200272000001f40000613d00000005065002100000000006630019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b000001f00000c13d000000000004004b000002030000613d0000000505500210000000000151034f00000000055300190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000022d0020009c0000022d0200804100000060012002100000022d0030009c0000022d030080410000004002300210000000000112019f000008b1000104300000022d0010009c0000022d01008041000000c00110021000000244011001c7000b00000002001d08af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000002200000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c0000021c0000c13d000000000005004b0000022f0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000003ba0000613d0000000b020000290000001f01400039000000600510018f00000080015001bf000000400010043f000000200030008c000003db0000413d0000000006000416000000800300043d000000000036004b000003ca0000813d0000027d04000041000000000041043500000084045001bf0000000000340435000000a402500039000000000062043500000040011002100000027e011001c7000008b10001043000000009010000290000000501100270000000000100001f000000400100043d00000064021000390000026a03000041000000000032043500000044021000390000026b03000041000000000032043500000024021000390000002e0300003900000000003204350000023e0200004100000000002104350000000402100039000000200300003900000000003204350000022d0010009c0000022d0100804100000040011002100000026c011001c7000008b100010430000b00000007001d000a00000006001d0000022d0010009c0000022d01008041000000c00110021000000244011001c7000900000002001d08af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000002750000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c000002710000c13d000000000005004b000002840000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000200000001035500000001002001900000000b07000029000003dd0000613d00000009020000290000000a060000290000001f01400039000000600110018f00000080041001bf000000400040043f000000200030008c000003db0000413d000b00000007001d000a00000006001d000900000002001d000000800100043d000000000001004b0000040c0000c13d00000024014000390000026003000041000000000031043500000044014000390000000003000414000000600200003900000000002104350000024601000041000000000014043500000064014000390000000000010435000000040140003900000000000104350000022d0040009c0000022d0400804100000040014002100000022d0030009c0000022d03008041000000c002300210000000000121019f00000247011001c7000080060200003908af08a50000040f00000001002001900000043f0000613d000000000101043b000000000001004b000004990000c13d00000002010003670000000002000031000004440000013d000002480200004100000000002004390000023d01100197000700000001001d000000040010044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b0000000b030000290000000a05000029000003db0000613d000000400200043d00000256010000410000000001120436000400000001001d000000040120003900000080040000390000000000410435000000840120003900000000003104350000001f0730018f000600000002001d000000a4012000390000002002500039000300000002001d00000001022003670000000508300272000002e20000613d00000005038002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000002de0000c13d000000000007004b000002f10000613d0000000503800210000000000232034f00000000033100190000000304700210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f0000000000230435000200000008001d000500000007001d0000000b030000290000000001310019000000000001043500000006040000290000006401400039000000080200002900000000002104350000002401400039000000090200002900000000002104350000004401400039000000000200041100000000002104350000001f01300039000a028f0010019b00000000010004140000000702000029000000040020008c0000031d0000613d0000022d0040009c0000022d02000041000000000204401900000040022002100000000a03000029000002570030009c00000257030080410000006003300210000000000223019f0000022d0010009c0000022d01008041000000c001100210000000000112019f000002580110009a000000070200002908af08a50000040f0000000604000029000000000301001900000060033002700000022d0030019d00020000000103550000000100200190000005870000613d000002420040009c000005810000213d0000000603000029000000400030043f00000080013000390000000b02000029000000000021043500000080010000390000000000130435000000a001300039000000030200002900000001022003670000000203000029000000000003004b0000000503300210000003340000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b000003300000c13d000000050000006b000003430000613d000000000232034f000000000331001900000005040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000b0110002900000000000104350000000901000029000000040200002900000000001204350000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b0000000604000029000000600240003900000008030000290000000000320435000000400240003900000000001204350000022d0040009c0000022d0400804100000040014002100000000a02000029000002590020009c00000259020080410000006002200210000000000112019f00000000020004140000022d0020009c0000022d02008041000000c002200210000000000121019f0000025a0110009a0000800d0200003900000003030000390000025b0400004100000007050000290000000006000411000000420000013d000b00000007001d000a00000006001d0000022d0010009c0000022d01008041000000c00110021000000244011001c7000900000002001d08af08aa0000040f0000008009000039000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000003850000613d000000000701034f000000007807043c0000000009890436000000a00090008c000003810000c13d000000000005004b000003940000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000200000001035500000001002001900000000b07000029000003ec0000613d00000009020000290000000a060000290000001f01400039000000600110018f00000080081001bf000000400080043f000000200030008c000003db0000413d000000800300043d000000000003004b0000000004000019000000010400c039000000000043004b000003db0000c13d000b00000007001d000a00000006001d000900000002001d000000a405100039000000000003004b00000084061001bf000000c4041000390000004003800210000004530000c13d0000023e010000410000000000180435000000200100003900000000001604350000001d0100003900000000001504350000025201000041000000000014043500000253013001c7000008b100010430000000400200043d0000001f0430018f0000000505300272000003c60000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003c20000c13d000000000004004b000004060000613d0000000505500210000003fa0000013d00000248010000410000000000100439000b00000002001d000000040020044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b0000000b020000290000046c0000c13d0000000001000019000008b100010430000000400200043d0000001f0430018f00000005053002720000000505500210000003e90000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003e50000c13d000000000004004b000004060000613d000003fa0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000003f80000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003f40000c13d000000000004004b000004060000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000022d0020009c0000022d020080410000004002200210000000000112019f000008b100010430000700000001001d0000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000400400043d000000000101043b000000070010006c000005560000a13d00000044014000390000025f03000041000000000031043500000024014000390000001a0300003900000000003104350000023e0100004100000000001404350000000401400039000000200300003900000000003104350000022d0040009c0000022d04008041000000400140021000000253011001c7000008b100010430000800000007001d000900000004001d000a00000005001d000b00000006001d000000000006004b000001730000613d0000028201000041000000800010043f0000000a01000029000000840010043f00000000010004140000000b02000029000000040020008c000005970000c13d0000000003000031000000200030008c00000020040000390000000004034019000005bf0000013d0002000000010355000000000201001900000060022002700000022d0020019d0000022d02200197000000400300043d0000001f0420018f0000000505200272000004500000613d00000005065002100000000006630019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b0000044c0000c13d000000000004004b000001f60000c13d000002030000013d00000245070000410000000000750435000000000500041400000246070000410000000000780435000000000006043500000060020000390000000000240435000000e40110003900000000000104350000022d0050009c0000022d05008041000000c001500210000000000113019f00000247011001c7000080060200003908af08a50000040f0000000100200190000005590000613d000000000101043b000000000001004b000005e00000c13d000000020100036700000000020000310000055e0000013d000000400300043d00000273010000410000000001130436000800000001001d000900000003001d0000000401300039000000000300041100000000003104350000000001000414000000040020008c0000056d0000c13d0000000901000029000002420010009c000005810000213d0000000902000029000000400020043f000002760100004100000000001204350000000003000031000000200030008c000000200400003900000000040340190000001f01400039000000600110018f0000000901100029000002420010009c000005810000213d000000400010043f000000200030008c000003db0000413d00000009020000290000000004020433000002780040009c000003db0000813d0000000002000414000000040040008c0000081a0000613d0000022d0020009c0000022d02008041000000c0012002100000000002000416000000000002004b0000080e0000c13d0000000002040019000008120000013d0000009702000039000000000202041a000600000002001d000002480200004100000000002004390000023d01100197000700000001001d000000040010044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b00000009030000290000000a040000290000000b05000029000003db0000613d000000400600043d0000002401600039000000a002000039000000000021043500000261010000410000000001160436000300000001001d00000004016000390000000000310435000000a40160003900000000004104350004001f00400193000500000006001d000000c4016000390000002002500039000200000002001d0000000102200367000b00050040027a000004cc0000613d0000000b0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000004c80000c13d00000006030000290000023d03300197000000040000006b000004df0000613d0000000b040000290000000504400210000000000242034f000000000441001900000004050000290000000305500210000000000604043300000000065601cf000000000656022f000000000202043b0000010005500089000000000252022f00000000025201cf000000000262019f00000000002404350000000a01100029000000000001043500000005040000290000008401400039000000000031043500000044014000390000000802000029000000000021043500000064014000390000000002000411000000000021043500000000010004140000000702000029000000040020008c000005060000613d0000000a020000290000001f022000390000028f02200197000002620020009c0000026202008041000000600220021000000005030000290000022d0030009c0000022d030080410000004003300210000000000232019f0000022d0010009c0000022d01008041000000c001100210000000000112019f000002630110009a000000070200002908af08a50000040f000000000301001900000060033002700000022d0030019d00020000000103550000000100200190000007700000613d0000000501000029000002420010009c000005810000213d0000000503000029000000400030043f00000060013000390000000a020000290000000000210435000000600100003900000000001304350000008001300039000000020200002900000001022003670000000b03000029000000000003004b00000005033002100000051e0000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b0000051a0000c13d000000040000006b0000052d0000613d000000000232034f000000000331001900000004040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000a0110002900000000000104350000000801000029000000030200002900000000001204350000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b0000000503000029000000400230003900000000001204350000000a010000290000001f011000390000028f01100197000002640010009c000002640100804100000060011002100000022d0030009c0000022d030080410000004002300210000000000121019f00000000020004140000022d0020009c0000022d02008041000000c002200210000000000121019f000002650110009a0000800d02000039000000040300003900000266040000410000000705000029000006910000013d0000025e0040009c000002970000a13d000005810000013d0002000000010355000000000201001900000060022002700000022d0020019d0000022d02200197000000400300043d0000001f0420018f000000050520027200000005055002100000056a0000613d0000000006530019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b000005660000c13d000000000004004b000002030000613d000001f70000013d00000009020000290000022d0020009c0000022d0200804100070040002002180000022d0010009c0000022d01008041000000c00110021000000007011001af00000274011001c70000000b0200002908af08a50000040f000000000301001900000060033002700000022d0030019d00020000000103550000000100200190000006940000613d0000000901000029000002750010009c000006b30000413d0000027c0100004100000000001004350000004101000039000000040010043f0000027401000041000008b1000104300000022d03300197000000400200043d0000001f0430018f0000000505300272000005940000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005900000c13d000000000004004b000004060000613d000003c80000013d0000022d0010009c0000022d01008041000000c00110021000000283011001c70000000b0200002908af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000005ac0000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c000005a80000c13d000000000005004b000005bb0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000006a40000613d0000001f01400039000000600110018f00000080021001bf000700000002001d000000400020043f000000200030008c000003db0000413d000000800200043d000000000002004b0000000003000019000000010300c039000000000032004b000003db0000c13d000000000002004b000006f10000c13d0000023e020000410000000704000029000000000024043500000084021001bf00000020030000390000000000320435000000e40210003900000289030000410000000000320435000000c4021000390000028a030000410000000000320435000000a4011000390000002102000039000000000021043500000040014002100000026c011001c7000008b100010430000002480200004100000000002004390000023d01100197000800000001001d000000040010044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b00000009020000290000000a030000290000000b04000029000003db0000613d000000400500043d0000002401500039000000600600003900000000006104350000024a010000410000000001150436000400000001001d00000004015000390000000000210435000000640150003900000000003104350006001f00300193000700000005001d00000084015000390000002002400039000500000002001d0000000102200367000b00050030027a000006100000613d0000000b0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b0000060c0000c13d000000060000006b000006210000613d0000000b030000290000000503300210000000000232034f000000000331001900000006040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000a011000290000000000010435000000070100002900000044011000390000000002000411000000000021043500000000010004140000000802000029000000040020008c000006430000613d0000000a020000290000001f022000390000028f022001970000024b0020009c0000024b02008041000000600220021000000007030000290000022d0030009c0000022d030080410000004003300210000000000232019f0000022d0010009c0000022d01008041000000c001100210000000000112019f0000024c0110009a000000080200002908af08a50000040f000000000301001900000060033002700000022d0030019d00020000000103550000000100200190000007ef0000613d0000000701000029000002420010009c000005810000213d0000000703000029000000400030043f00000040013000390000000a020000290000000000210435000000400100003900000000001304350000006001300039000000050200002900000001022003670000000b0000006b0000065b0000613d0000000b0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000006570000c13d000000060000006b0000066c0000613d0000000b030000290000000503300210000000000232034f000000000331001900000006040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000a0110002900000000000104350000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000040200002900000000001204350000000a010000290000001f011000390000028f011001970000024f0010009c0000024f01008041000000600110021000000007020000290000022d0020009c0000022d020080410000004002200210000000000121019f00000000020004140000022d0020009c0000022d02008041000000c002200210000000000121019f000002500110009a0000800d0200003900000004030000390000025104000041000000080500002900000009060000290000000007000411000000420000013d0000022d03300197000000400200043d0000001f0430018f0000000505300272000006a10000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000069d0000c13d000000000004004b000004060000613d000003c80000013d000000400200043d0000001f0430018f00000005053002720000000505500210000006b00000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006ac0000c13d000000000004004b000003fa0000c13d000004060000013d0000000902000029000000400020043f0000027601000041000000000012043500000000010004140000022d0010009c0000022d01008041000000c00110021000000007011001af00000277011001c70000000b0200002908af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a000029000006cf0000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b000006cb0000c13d000000000005004b000006de0000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000004820000c13d000000400200043d0000001f0430018f0000000505300272000006ee0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006ea0000c13d000000000004004b000004060000613d000003c80000013d000002840200004100000007030000290000000002230436000600000002001d00000000020004140000000b03000029000000040030008c000007800000c13d0000000702100029000600000002001d000000400020043f0000000a040000290000000906000029000000080500002900000007020000290000000002020433000400000002001d0000009802000039000000000202041a000002850300004100000006070000290000000003370436000100000003001d00000004037001bf0000000000430435000000240370003900000040040000390000000000430435000000440370003900000000006304350008001f006001930000006404700039000300200050003d000000010300036700000003053003600000000506600272000200000006001d00070005006002180000071f0000613d0000000706400029000000000705034f0000000008040019000000007907043c0000000008980436000000000068004b0000071b0000c13d0000023d02200197000000080000006b0000072f0000613d0000000705500360000000070640002900000008070000290000000307700210000000000806043300000000087801cf000000000878022f000000000505043b0000010007700089000000000575022f00000000057501cf000000000585019f00000000005604350000000905000029000000000454001900000000000404350000001f045000390005028f0040019b0000000004000414000000040020008c000007b70000c13d0000000601100029000000400010043f000000060200002900000000050204330000004002100039000000090400002900000000004204350000004002000039000000000221043600000003043003600000006003100039000000020000006b0000074b0000613d0000000706300029000000000704034f0000000008030019000000007907043c0000000008980436000000000068004b000007470000c13d000000080000006b0000075a0000613d0000000704400360000000070630002900000008070000290000000307700210000000000806043300000000087801cf000000000878022f000000000404043b0000010007700089000000000474022f00000000047401cf000000000484019f00000000004604350000000903300029000000000003043500000004030000290000000000320435000000400110021000000005020000290000024f0020009c0000024f020080410000006002200210000000000112019f00000000020004140000022d0020009c0000022d02008041000000c002200210000000000121019f000002500110009a0000800d02000039000000040300003900000288040000410000000b060000290000000a07000029000000420000013d0000022d03300197000000400200043d0000001f0430018f000000050530027200000005055002100000077d0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007790000c13d000000000004004b000004060000613d000003fa0000013d000000070100002900000040011002100000022d0020009c0000022d02008041000000c002200210000000000112019f00000277011001c70000000b0200002908af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a000029000007990000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000007950000c13d000000000005004b000007a80000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000007ff0000613d0000001f01400039000000600110018f0000000702100029000600000002001d000000400020043f000000200030008c0000000a0400002900000009060000290000000805000029000003db0000413d000006ff0000013d000000060100002900000040011002100000000503000029000002860030009c00000286030080410000006003300210000000000113019f0000022d0040009c0000022d04008041000000c003400210000000000131019f000002870110009a08af08a50000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010a000029000007d40000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000007d00000c13d000000000005004b000007e30000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000008800000613d0000001f01400039000000600110018f0000000601100029000000400010043f000000200030008c000003db0000413d0000000103000367000007390000013d0000022d03300197000000400200043d0000001f0430018f00000005053002720000000505500210000007fc0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007f80000c13d000000000004004b000004060000613d000003fa0000013d000000400200043d0000001f0430018f000000050530027200000005055002100000080b0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008070000c13d000000000004004b000004060000613d000003fa0000013d00000268011001c700008009020000390000000003000416000000000500001908af08a50000040f000a00000002001d000200000001035500000060011002700000022d0010019d0000022d03100198000008420000613d000000400100043d0000001f023000390000028f022001970000003f022000390000028f042001970000000002140019000000000042004b00000000040000190000000104004039000002420020009c000005810000213d0000000100400190000005810000c13d000000400020043f0000001f0230018f0000000001310436000000020400036700000005033002720000000503300210000008340000613d0000000005310019000000000604034f0000000007010019000000006806043c0000000007870436000000000057004b000008300000c13d000000000002004b000008420000613d000000000434034f00000000013100190000000302200210000000000301043300000000032301cf000000000323022f000000000404043b0000010002200089000000000424022f00000000022401cf000000000232019f00000000002104350000000a0100002900000001001001900000086f0000613d000000400200043d0000000001000416000a00000002001d0000000001120436000900000001001d0000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000090200002900000000001204350000000a010000290000022d0010009c0000022d01008041000000400110021000000000020004140000022d0020009c0000022d02008041000000c002200210000000000112019f0000027a011001c70000800d0200003900000003030000390000027b040000410000000b05000029000000000600041108af08a50000040f0000000100200190000003db0000613d0000000101000039000000000011041b0000000001000019000008b00001042e000000000001042f000000400100043d00000044021000390000027903000041000000000032043500000024021000390000000e0300003900000000003204350000023e0200004100000000002104350000000402100039000000200300003900000000003204350000022d0010009c0000022d01008041000000400110021000000253011001c7000008b100010430000000400200043d0000001f0430018f00000005053002720000088c0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008880000c13d000000000004004b000003c80000c13d000004060000013d0000023d061001970000006501000039000000000201041a0000026703200197000000000363019f000000000031041b00000000010004140000023d052001970000022d0010009c0000022d01008041000000c00110021000000268011001c70000800d020000390000000303000039000002690400004108af08a50000040f0000000100200190000008a20000613d000000000001042d0000000001000019000008b100010430000000000001042f000008a8002104210000000102000039000000000001042d0000000002000019000000000001042d000008ad002104230000000102000039000000000001042d0000000002000019000000000001042d000008af00000432000008b00001042e000008b1000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000008da5cb5a00000000000000000000000000000000000000000000000000000000da8bf5a500000000000000000000000000000000000000000000000000000000da8bf5a600000000000000000000000000000000000000000000000000000000e86938e100000000000000000000000000000000000000000000000000000000f2fde38b000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000099ba99bd00000000000000000000000000000000000000000000000000000000d56d229d00000000000000000000000000000000000000000000000000000000398f9de400000000000000000000000000000000000000000000000000000000398f9de500000000000000000000000000000000000000000000000000000000485cc95500000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000002630c12f0000000000000000000000000000000000000000000000000000000035aef8fc000000000000000000000000ffffffffffffffffffffffffffffffffffffffff08c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff6d3dbe7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000080000000000000000001000087bd2009cf1bb167c807096c445d8276cc341f403b41c9650f726e4a3f9c4d535bdea7cd8a978f128b93471df48c7dbab89d703809115bdc118c235bfd02000000000000000000000000000000000000840000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000007bb7c0d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7bffffffffffffffffffffffffffffffffffffff7c000000000000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff9ffdffffffffffffffffffffffffffffffffffffa000000000000000000000000077d6b9f0192e2433b5dd096ea593a82aa04204683757437da108e37959cff9c9506963747572655265717565737420646f6573206e6f7420657869737400000000000000000000000000000000000000000000640000000000000000000000000100008d7479837ee722f16eb77463225d6f81b9742abe6a61255863b0529850020000000000000000000000000000000000008400000080000000000000000076d8160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5bffffffffffffffffffffffffffffffffffffff5c00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5ffdffffffffffffffffffffffffffffffffffff60000000000000000000000000ca8986794c4f31f610829437f668ed7cc4f46bcf078e9feb87962398f84440ce00000000000000000000000000000000000000200000008000000000000000008622a68900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7b5069637475726552657175657374206861732065787069726564000000000000010000ef41c28e3d268fee2e7bc1984679d30053332a8bb2534460470afff8227a5f022a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff3bffffffffffffffffffffffffffffffffffffff3c00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7ffdffffffffffffffffffffffffffffffffffff800000000000000000000000008065dc333a13520f3cdcebe527dd2495f2ec79d510609a240744a58e0215775cffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c7265610000000000000000000000000000000000000084000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000002000000000000000000000000000000000000200000000000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986e697469616c697a696e67000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069fc504655000000000000000000000000000000000000000000000000000000002e84571400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000100000000000000008dc45d9a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000100000000000000000000000000000000000000005061796d656e74206661696c65640000000000000000000000000000000000000200000000000000000000000000000000000040000000000000000000000000b6f341a65eb19a9f00c69fc73ab895c20d60a9c6718e33e85d576781626ebad04e487b7100000000000000000000000000000000000000000000000000000000b99e2ab70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000005265656e7472616e637947756172643a207265656e7472616e742063616c6c0000000000000000000000000000000000000000640000008000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657290118fb4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000800000000000000000a035b1fe00000000000000000000000000000000000000000000000000000000eacabe140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff9bffffffffffffffffffffffffffffffffffffff9c0000000000000000000000008933731037817126d1157966ae367e45654450b583b0884fddbc423d9a2b979864000000000000000000000000000000000000000000000000000000000000005375626d697373696f6e20686173206e6f74206265656e207075726368617365496e76616c6964207375626d697373696f6e2061646472657373000000000000496e76616c696420707572636861736572206164647265737300000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01d9d58335896f2a0bfee4fcb64d6eba066e40e7111c288c35d3e4e802cabdba4", "linkReferences": {}, "deployedLinkReferences": {}, "factoryDeps": { diff --git a/public/artifacts/BaseFixMyPicNFT.json b/public/artifacts/BaseFixMyPicNFT.json new file mode 100644 index 0000000..39fbf5f --- /dev/null +++ b/public/artifacts/BaseFixMyPicNFT.json @@ -0,0 +1,470 @@ +{ + "_format": "hh-zksolc-artifact-1", + "contractName": "BaseFixMyPicNFT", + "sourceName": "contracts/FixMyPicNFT/BaseFixMyPicNFT.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_fromTokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_toTokenId", + "type": "uint256" + } + ], + "name": "BatchMetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "MetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_recipient", + "type": "address" + }, + { + "internalType": "string", + "name": "_tokenURI", + "type": "string" + } + ], + "name": "mintNFT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x0002000000000002000e00000000000200010000000103550000008009000039000000400090043f0000000100200190000000330000c13d000000000201001900000060022002700000027b03200197000000040030008c0000069a0000413d000000000201043b000000e0022002700000027d0020009c0000003b0000213d0000028a0020009c000000620000a13d0000028b0020009c000000e50000a13d0000028c0020009c000001950000613d0000028d0020009c000001a40000613d0000028e0020009c0000069a0000c13d0000000001000416000000000001004b0000069a0000c13d000000c901000039000000000201041a00000296052001970000000003000411000000000035004b0000026b0000c13d000002a202200197000000000021041b00000000010004140000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000303000039000002c504000041000000000600001909e809de0000040f00000001002001900000069a0000613d0000000001000019000009e90001042e0000000001000416000000000001004b0000069a0000c13d0000002001000039000001000010044300000120000004430000027c01000041000009e90001042e0000027e0020009c000000860000a13d0000027f0020009c000001060000a13d000002800020009c000001bb0000613d000002810020009c000001dc0000613d000002820020009c0000069a0000c13d000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b000002960010009c0000069a0000213d000000c902000039000000000202041a00000296022001970000000003000411000000000032004b0000026b0000c13d000000000001004b0000035a0000c13d0000029701000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000029801000041000000c40010043f0000029901000041000000e40010043f0000029a01000041000009ea00010430000002910020009c000000950000213d000002940020009c000001330000613d000002950020009c0000069a0000c13d0000000001000416000000000001004b0000069a0000c13d0000006503000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000190000000105002039000000000054004b0000018f0000c13d000000800010043f000000000004004b000002ac0000613d0000000000300435000000000001004b000002a20000613d000002c20200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b0000007d0000413d000003460000013d000002850020009c000000c20000213d000002880020009c000001440000613d000002890020009c0000069a0000c13d0000000001000416000000000001004b0000069a0000c13d000000c901000039000000000101041a0000029601100197000000800010043f000002b501000041000009e90001042e000002920020009c000001780000613d000002930020009c0000069a0000c13d000000440030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000800000002001d000002960020009c0000069a0000213d0000002401100370000000000101043b000700000001001d00000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029601100198000001220000613d000000080010006b0000035d0000c13d000000400100043d0000006402100039000002ce0300004100000000003204350000004402100039000002cf03000041000000000032043500000024021000390000002103000039000003010000013d000002860020009c000001810000613d000002870020009c0000069a0000c13d000000440030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000800000002001d000002960020009c0000069a0000213d0000002401100370000000000201043b000000000002004b0000000001000019000000010100c039000700000002001d000000000012004b0000069a0000c13d0000000002000411000000080020006c0000030c0000c13d0000029701000041000000800010043f0000002001000039000000840010043f0000001901000039000000a40010043f000002b701000041000000c40010043f000002b801000041000009ea000104300000028f0020009c0000022e0000613d000002900020009c0000069a0000c13d0000000001000416000000000001004b0000069a0000c13d000000000103001909e806ae0000040f000700000001001d000600000002001d000800000003001d000000400100043d000500000001001d09e806c00000040f000000050100002900000000000104350000000001000411000000080200002909e807880000040f09e8074d0000040f00000007010000290000000602000029000000080300002909e807f80000040f000000070100002900000006020000290000000803000029000000050400002909e808e10000040f09e808cd0000040f0000000001000019000009e90001042e000002830020009c000002400000613d000002840020009c0000069a0000c13d000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b000800000001001d00000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029600100198000002b20000c13d000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea00010430000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000201043b000002aa002001980000069a0000c13d0000000101000039000002d10020009c000002a40000213d000002d40020009c000000920000613d000002d50020009c000000920000613d000002a80000013d0000000001000416000000000001004b0000069a0000c13d000000000300041a0007ff0000300194000002740000c13d000000ff0130019000000000020000190000000102006039000d00000002001d00000000020004150000000d0220008a0000000502200210000000000001004b000002780000c13d000000000a0004150000000c0aa0008a000000050aa00210000c00010000003d000002bc0130019700000101041001bf000000000040041b000000400300043d000002bd0030009c000004380000813d0000004001300039000000400010043f0000000b010000390000000006130436000002be010000410000000000160435000000400100043d000002bf0010009c000004380000213d0000004002100039000000400020043f00000006020000390000000002210436000002c00500004100000000005204350000ff0000400190000003910000c13d000000400100043d0000006402100039000002c70300004100000000003204350000004402100039000002c803000041000000000032043500000024021000390000002b03000039000003010000013d000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b09e807170000040f0000019d0000013d0000000001000416000000000001004b0000069a0000c13d0000006603000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000190000000105002039000000000552013f00000001005001900000029c0000613d000002b30100004100000000001004350000002201000039000000040010043f000002b401000041000009ea00010430000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b09e807640000040f000000400200043d00000000001204350000027b0020009c0000027b020080410000004001200210000002ae011001c7000009e90001042e000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b000002960010009c0000069a0000213d000000000001004b000002eb0000c13d0000029701000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f000002c901000041000000c40010043f000002ca01000041000000e40010043f0000029a01000041000009ea00010430000000440030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000002960020009c0000069a0000213d0000002401100370000000000101043b000800000001001d000002960010009c0000069a0000213d00000000002004350000006a01000039000000200010043f0000004002000039000000000100001909e809c90000040f00000008020000290000000000200435000000200010043f0000000001000019000000400200003909e809c90000040f000000000101041a000000ff001001900000000001000019000000010100c039000000800010043f000002b501000041000009e90001042e000000440030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000800000002001d000002960020009c0000069a0000213d0000002402100370000000000402043b0000029b0040009c0000069a0000213d0000002302400039000000000032004b0000069a0000813d0000000405400039000000000251034f000000000202043b0000029b0020009c000004380000213d0000001f06200039000002d6066001970000003f06600039000002d6066001970000029c0060009c000004380000213d00000024044000390000008006600039000000400060043f000000800020043f0000000004420019000000000034004b0000069a0000213d0000002003500039000000000131034f0000001f0320018f000000050420027200000005044002100000020c0000613d000000a005000039000000a006400039000000000701034f000000007807043c0000000005850436000000000065004b000002080000c13d000000000003004b0000021a0000613d000000000141034f0000000303300210000000a004400039000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000000a0012000390000000000010435000000c901000039000000000101041a00000296021001970000000001000411000000000012004b000003f50000c13d000600000002001d000000fb01000039000000000201041a000700000002001d000000010220003a000004000000c13d000002b30100004100000000001004350000001101000039000000040010043f000002b401000041000009ea000104300000000001000416000000000001004b0000069a0000c13d000000000103001909e806ae0000040f000800000001001d000700000002001d0000000002030019000600000002001d000000000100041109e807880000040f09e8074d0000040f00000008010000290000000702000029000000060300002909e807f80000040f0000000001000019000009e90001042e000000840030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000800000002001d000002960020009c0000069a0000213d0000002402100370000000000202043b000700000002001d000002960020009c0000069a0000213d0000006402100370000000000402043b0000029b0040009c0000069a0000213d0000002302400039000000000032004b0000069a0000813d0000000402400039000000000221034f000000000202043b0000004401100370000000000101043b000600000001001d000000240140003909e806dd0000040f000500000001001d0000000001000411000000060200002909e807880000040f09e8074d0000040f00000008010000290000000702000029000000060300002909e807f80000040f000000080100002900000007020000290000000603000029000001010000013d0000029701000041000000800010043f0000002001000039000000840010043f000000a40010043f0000029d01000041000000c40010043f000002b801000041000009ea0001043000000000020004150000000e0220008a0000000502200210000e00000000001d000800000002001d000600000003001d000002a50100004100000000001004390000000001000410000000040010044300000000010004140000027b0010009c0000027b01008041000000c001100210000002a6011001c7000080020200003909e809e30000040f0000000100200190000004e20000613d000000000101043b000000000001004b000002f50000c13d0000000603000029000000ff0130018f000000010010008c0000000001000019000000010100603900000008020000290000000502200270000000000201001f000002f80000c13d000000000a0004150000000b0aa0008a000000050aa00210000b00010000003d000000070000006b000001570000613d000002d70130019700000001041001bf000001590000013d000000800010043f000000000004004b000002ac0000613d0000000000300435000000000001004b0000033c0000c13d000000a001000039000003470000013d000002d20020009c000000920000613d000002d30020009c000000920000613d0000000001000019000000800010043f000002b501000041000009e90001042e000002d702200197000000a00020043f000000000001004b000000c001000039000000a001006039000003470000013d000000080100002900000000001004350000009701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a000000010320019000000001062002700000007f0660618f0000001f0060008c00000000040000190000000104002039000000000442013f00000001004001900000018f0000c13d000000400500043d0000000004650436000000000003004b000800000005001d000003b90000613d000600000004001d000700000006001d000000000010043500000000010004140000027b0010009c0000027b01008041000000c001100210000002ac011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d0000000706000029000000000006004b000000000200001900000008050000290000000607000029000003be0000613d000000000101043b00000000020000190000000003270019000000000401041a000000000043043500000001011000390000002002200039000000000062004b000002e30000413d000003be0000013d00000000001004350000006801000039000000200010043f0000004002000039000000000100001909e809c90000040f000000000101041a000000800010043f000002b501000041000009e90001042e00000008010000290000000501100270000000000100001f000000400100043d0000006402100039000002ba0300004100000000003204350000004402100039000002bb03000041000000000032043500000024021000390000002e030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b010080410000004001100210000002b1011001c7000009ea0001043000000000002004350000006a01000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b00000008020000290000000000200435000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a000002d7022001970000000703000029000000000232019f000000000021041b000000400100043d00000000003104350000027b0010009c0000027b01008041000000400110021000000000020004140000027b0020009c0000027b02008041000000c002200210000000000112019f000002ac011001c70000800d020000390000000303000039000002b604000041000000000500041100000008060000290000002e0000013d000002b90200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b0000033e0000413d000000c001300039000000800210008a000000800100003909e806cb0000040f0000002001000039000000400200043d000800000002001d0000000002120436000000800100003909e8069c0000040f000000080200002900000000012100490000027b0010009c0000027b0100804100000060011002100000027b0020009c0000027b020080410000004002200210000000000121019f000009e90001042e09e808ab0000040f0000000001000019000009e90001042e0000000002000411000000000012004b000003ce0000c13d000000070100002900000000001004350000006901000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a000002a20220019700000008022001af000000000021041b000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029605100198000001220000613d00000000010004140000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000403000039000002cd040000410000000806000029000000070700002909e809de0000040f00000001002001900000069a0000613d000000310000013d00000000050304330000029b0050009c000004380000213d0000006504000039000000000804041a000000010080019000000001078002700000007f0770618f0000001f0070008c00000000090000190000000109002039000000000898013f00000001008001900000018f0000c13d00080000000a001d000000200070008c000003b10000413d00000000004004350000001f085000390000000508800270000002c10880009a000000200050008c000002c2080040410000001f077000390000000507700270000002c10770009a000000000078004b000003b10000813d000000000008041b0000000108800039000000000078004b000003ad0000413d0000001f0050008c000004110000a13d0000000000400435000002d6085001980000041c0000c13d0000002007000039000002c206000041000004280000013d000002d7012001970000000000140435000000000006004b000000200200003900000000020060190000002002200039000000000105001909e806cb0000040f000000400100043d000700000001001d09e806c00000040f000000070100002900000000000104350000002001000039000000400200043d000700000002001d0000000002120436000000080100002909e8069c0000040f0000000702000029000003510000013d00000000001004350000006a01000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b00000000020004110000000000200435000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a000000ff00100190000003600000c13d000000400100043d0000006402100039000002cb0300004100000000003204350000004402100039000002cc03000041000000000032043500000024021000390000003d03000039000003010000013d000000400100043d00000044021000390000029d0300004100000000003204350000029702000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000012d0000013d000000000021041b000000400100043d000500000001001d0000029f0010009c000004380000213d000300000009001d00000005020000290000002001200039000400000001001d000000400010043f0000000000020435000000080000006b000004620000c13d000000400100043d0000004402100039000002b203000041000003f80000013d000000000005004b0000000003000019000004150000613d00000000030604330000000306500210000002d80660027f000002d806600167000000000363016f0000000105500210000000000353019f000004340000013d000002c2060000410000002007000039000000010980008a0000000509900270000002c30990009a000000000a370019000000000a0a04330000000000a6041b00000020077000390000000106600039000000000096004b000004210000c13d000000000058004b000004320000813d0000000308500210000000f80880018f000002d80880027f000002d80880016700000000033700190000000003030433000000000383016f000000000036041b000000010350021000000001033001bf000000000034041b00000000040104330000029b0040009c0000043e0000a13d000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea000104300000006603000039000000000603041a000000010060019000000001056002700000007f0550618f0000001f0050008c00000000070000190000000107002039000000000676013f00000001006001900000018f0000c13d000000200050008c0000045a0000413d00000000003004350000001f064000390000000506600270000002c40660009a000000200040008c000002b9060040410000001f055000390000000505500270000002c40550009a000000000056004b0000045a0000813d000000000006041b0000000106600039000000000056004b000004560000413d0000001f0040008c000004e30000a13d0000000000300435000002d606400198000004ee0000c13d0000002005000039000002b902000041000004fa0000013d000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029600100198000005360000c13d000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029600100198000005360000c13d000000080100002900000000001004350000006801000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a0000000102200039000000000021041b000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a000002a2022001970000000806000029000000000262019f000000000021041b00000000010004140000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000403000039000002a4040000410000000005000019000000070700002909e809de0000040f00000001002001900000069a0000613d0000000001000415000200000001001d000002a50100004100000000001004390000000801000029000000040010044300000000010004140000027b0010009c0000027b01008041000000c001100210000002a6011001c7000080020200003909e809e30000040f0000000100200190000004e20000613d000000000101043b000000000001004b0000053d0000c13d000000000100041500000002011000690000000001000002000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029600100198000005bb0000c13d000000400100043d0000006402100039000002af0300004100000000003204350000004402100039000002b003000041000002fe0000013d000000000001042f000000000004004b0000000001000019000004e70000613d00000000010204330000000302400210000002d80220027f000002d802200167000000000121016f0000000102400210000000000121019f000005060000013d000000010560008a000002d6075001970000002005000039000002b902000041000000400770003900000000081500190000000008080433000000000082041b00000001022000390000002005500039000000000075004b000004f30000c13d000000000046004b000005040000813d0000000306400210000000f80660018f000002d80660027f000002d80660016700000000011500190000000001010433000000000161016f000000000012041b000000010140021000000001011001bf000000000013041b000000000100041a0000ff00001001900000016e0000613d00000000010004110000029606100197000000c901000039000000000201041a000002a203200197000000000363019f000000000031041b000000000100041400000296052001970000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000303000039000002c50400004109e809de0000040f00000001002001900000069a0000613d000000080100002900000005011002700000000001010031000000fb02000039000000000012041b000000070000006b000000310000c13d000000000300041a000002d902300197000000000020041b000000400200043d00000000001204350000027b0020009c0000027b02008041000000400120021000000000020004140000027b0020009c0000027b02008041000000c002200210000000000112019f000002ac011001c70000800d020000390000000103000039000002c6040000410000002e0000013d000000400100043d0000004402100039000002a103000041000000000032043500000024021000390000001c03000039000001280000013d000000400300043d000000640130003900000080020000390000000000210435000000440130003900000007020000290000000000210435000002a7010000410000000001130436000100000001001d000000040130003900000006020000290000000000210435000000240130003900000000000104350000000501000029000000000101043300000084023000390000000000120435000600000003001d000000a402300039000000000001004b00000004060000290000055d0000613d000000000300001900000000042300190000000005630019000000000505043300000000005404350000002003300039000000000013004b000005560000413d0000000002210019000000000002043500000000020004140000000803000029000000040030008c0000056b0000c13d00000000050004150000000a0550008a00000005055002100000000003000031000000200030008c00000020040000390000000004034019000005a10000013d0000001f01100039000002d601100197000000a4011000390000027b0010009c0000027b01008041000000600110021000000006030000290000027b0030009c0000027b030080410000004003300210000000000131019f0000027b0020009c0000027b02008041000000c002200210000000000112019f000000080200002909e809de0000040f000000000301001900000060033002700000027b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010a0000290000058c0000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000005880000c13d000000000005004b0000059b0000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000005000415000000090550008a000000050550021000000001002001900000060d0000613d0000001f01400039000000600210018f0000000601200029000000000021004b000000000200001900000001020040390000029b0010009c000004380000213d0000000100200190000004380000c13d000000400010043f000000200030008c0000069a0000413d00000006010000290000000001010433000002aa001001980000069a0000c13d0000000502500270000000000201001f000000000200041500000002022000690000000002000002000002ab01100197000002a70010009c000004ca0000613d000006130000013d000000070100002900000000001004350000009701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000800000001001d000000800100043d000600000001001d0000029b0010009c000004380000213d0000000801000029000000000101041a000000010010019000000001021002700000007f0220618f000500000002001d0000001f0020008c00000000020000190000000102002039000000000121013f00000001001001900000018f0000c13d0000000501000029000000200010008c000005f90000413d0000000801000029000000000010043500000000010004140000027b0010009c0000027b01008041000000c001100210000002ac011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d00000006030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000005010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000005f90000813d000000000002041b0000000102200039000000000012004b000005f50000413d00000006010000290000001f0010008c000006570000a13d0000000801000029000000000010043500000000010004140000027b0010009c0000027b01008041000000c001100210000002ac011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000200200008a0000000602200180000000000101043b000006630000c13d000000a003000039000006710000013d000000000003004b000006230000c13d00000060020000390000000001020433000000000001004b0000064e0000c13d000000400200043d000800000002001d00000297010000410000000000120435000000040120003909e808c00000040f000000080200002900000000012100490000027b0010009c0000027b0100804100000060011002100000027b0020009c0000027b020080410000004002200210000000000121019f000009ea000104300000001f02300039000002a8022001970000003f02200039000002a904200197000000400200043d0000000004420019000000000024004b000000000500001900000001050040390000029b0040009c000004380000213d0000000100500190000004380000c13d000000400040043f0000001f0430018f0000000005320436000300000005001d00000005033002720000063e0000613d000000050530021000000003070000290000000005570019000000000601034f000000006806043c0000000007870436000000000057004b0000063a0000c13d000000000004004b000006100000613d0000000503300210000000000131034f00000003033000290000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000006100000013d00000003020000290000027b0020009c0000027b0200804100000040022002100000027b0010009c0000027b010080410000006001100210000000000121019f000009ea00010430000000060000006b00000000010000190000065b0000613d000000a00100043d00000006040000290000000302400210000002d80220027f000002d802200167000000000121016f0000000102400210000000000121019f0000067e0000013d000000010320008a0000000503300270000000000331001900000020040000390000000103300039000000000504001900000080045000390000000004040433000000000041041b00000020045000390000000101100039000000000031004b000006680000c13d000000a003500039000000060020006c0000067b0000813d00000006020000290000000302200210000000f80220018f000002d80220027f000002d8022001670000000003030433000000000223016f000000000021041b0000000601000029000000010110021000000001011001bf0000000802000029000000000012041b000000400100043d000000070200002900000000002104350000027b0010009c0000027b01008041000000400110021000000000020004140000027b0020009c0000027b02008041000000c002200210000000000112019f000002ac011001c70000800d020000390000000103000039000002ad0400004109e809de0000040f00000001002001900000069a0000613d000000400100043d000000070200002900000000002104350000027b0010009c0000027b010080410000004001100210000002ae011001c7000009e90001042e0000000001000019000009ea0001043000000000430104340000000001320436000000000003004b000006a80000613d000000000200001900000000052100190000000006240019000000000606043300000000006504350000002002200039000000000032004b000006a10000413d000000000231001900000000000204350000001f02300039000002d6022001970000000001210019000000000001042d000002da0010009c000006be0000213d000000630010008c000006be0000a13d00000001030003670000000401300370000000000101043b000002960010009c000006be0000213d0000002402300370000000000202043b000002960020009c000006be0000213d0000004403300370000000000303043b000000000001042d0000000001000019000009ea00010430000002db0010009c000006c50000813d0000002001100039000000400010043f000000000001042d000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea000104300000001f02200039000002d6022001970000000001120019000000000021004b000000000200001900000001020040390000029b0010009c000006d70000213d0000000100200190000006d70000c13d000000400010043f000000000001042d000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea000104300000000004010019000002dc0020009c0000070f0000813d0000001f01200039000002d6011001970000003f01100039000002d605100197000000400100043d0000000005510019000000000015004b000000000600001900000001060040390000029b0050009c0000070f0000213d00000001006001900000070f0000c13d000000400050043f00000000052104360000000006420019000000000036004b000007150000213d0000001f0320018f000000010440036700000005062002720000000506600210000006fe0000613d0000000007650019000000000804034f0000000009050019000000008a08043c0000000009a90436000000000079004b000006fa0000c13d000000000003004b0000070c0000613d000000000464034f00000000066500190000000303300210000000000706043300000000073701cf000000000737022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000373019f000000000036043500000000022500190000000000020435000000000001042d000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea000104300000000001000019000009ea000104300001000000000002000100000001001d00000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000073a0000613d000000000101043b000000000101041a00000296001001980000073c0000613d000000010100002900000000001004350000006901000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000073a0000613d000000000101043b000000000101041a0000029601100197000000000001042d0000000001000019000009ea00010430000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea00010430000000000001004b000007500000613d000000000001042d000000400100043d0000006402100039000002dd0300004100000000003204350000004402100039000002de03000041000000000032043500000024021000390000002d030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b010080410000004001100210000002b1011001c7000009ea0001043000000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007750000613d000000000101043b000000000101041a0000029601100198000007770000613d000000000001042d0000000001000019000009ea00010430000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea000104300002000000000002000200000001001d000100000002001d00000000002004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b000000000101041a0000029601100198000007e70000613d00000002020000290000029602200197000000000012004b000007a10000c13d0000000101000039000000000001042d000200000002001d00000000001004350000006a01000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b00000002020000290000000000200435000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b000000000101041a000000ff01100190000007c00000613d000000000001042d000000010100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b000000000101041a0000029600100198000007e70000613d000000010100002900000000001004350000006901000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b000000000101041a0000029601100197000000020010006c00000000010000190000000101006039000000000001042d0000000001000019000009ea00010430000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea000104300003000000000002000100000002001d000200000001001d000300000003001d00000000003004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000101041a00000296021001980000087c0000613d00000002010000290000029601100197000000000012004b0000088d0000c13d000200000002001d0000000101000029000102960010019c000008970000613d000000030100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000101041a000002960110019800000002020000290000087c0000613d000000000021004b0000088d0000c13d000000030100002900000000001004350000006901000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000201041a000002a202200197000000000021041b000000020100002900000000001004350000006801000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000201041a000000010220008a000000000021041b0000000101000029000000000010043500000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000201041a0000000102200039000000000021041b000000030100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000201041a000002a2022001970000000106000029000000000262019f000000000021041b00000000010004140000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000403000039000002a4040000410000000205000029000000030700002909e809de0000040f00000001002001900000087a0000613d000000000001042d0000000001000019000009ea00010430000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea00010430000000400100043d0000006402100039000002df0300004100000000003204350000004402100039000002e003000041000000000032043500000024021000390000002503000039000008a00000013d000000400100043d0000006402100039000002e10300004100000000003204350000004402100039000002e2030000410000000000320435000000240210003900000024030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b010080410000004001100210000002b1011001c7000009ea000104300000029606100197000000c901000039000000000201041a000002a203200197000000000363019f000000000031041b000000000100041400000296052001970000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000303000039000002c50400004109e809de0000040f0000000100200190000008be0000613d000000000001042d0000000001000019000009ea000104300000006002100039000002e30300004100000000003204350000004002100039000002e4030000410000000000320435000000200210003900000032030000390000000000320435000000200200003900000000002104350000008001100039000000000001042d0001000000000002000000000001004b000008d10000613d000000000001042d000000400200043d000100000002001d00000297010000410000000000120435000000040120003909e808c00000040f000000010200002900000000012100490000027b0010009c0000027b0100804100000060011002100000027b0020009c0000027b020080410000004002200210000000000121019f000009ea000104300006000000000002000300000004001d000200000003001d000100000001001d000002a5010000410000000000100439000400000002001d000000040020044300000000010004140000027b0010009c0000027b01008041000000c001100210000002a6011001c7000080020200003909e809e30000040f0000000100200190000009780000613d000000000101043b000000000001004b000009230000613d000000400a00043d0000006401a00039000000800700003900000000007104350000004401a0003900000002020000290000000000210435000000010100002900000296011001970000002402a000390000000000120435000002a70100004100000000081a04360000000401a0003900000000020004110000000000210435000000030100002900000000230104340000008401a000390000000000310435000000a401a00039000000000003004b000009140000613d000000000400001900000000051400190000000006420019000000000606043300000000006504350000002004400039000000000034004b0000090d0000413d00000000023100190000000000020435000000000400041400000004020000290000029602200197000000040020008c000009250000c13d0000000005000415000000060550008a00000005055002100000000003000031000000200030008c000000200400003900000000040340190000095f0000013d0000000101000039000000000001042d000200000007001d0000001f03300039000002d6033001970000000003a3004900000000011300190000027b0010009c0000027b0100804100000060011002100000027b00a0009c0000027b0300004100000000030a40190000004003300210000000000131019f0000027b0040009c0000027b04008041000000c003400210000000000131019f00040000000a001d000300000008001d09e809de0000040f000000030b000029000000040a000029000000000301001900000060033002700000027b03300197000000200030008c000000200400003900000000040340190000001f0540018f00000005064002720000094a0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000009460000c13d000000000005004b000009590000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000005000415000000050550008a00000005055002100000000100200190000009790000613d0000001f01400039000000600210018f0000000001a20019000000000021004b000000000200001900000001020040390000029b0010009c000009b90000213d0000000100200190000009b90000c13d000000400010043f0000001f0030008c000009760000a13d00000000010a0433000002aa00100198000009760000c13d0000000502500270000000000201001f000002ab01100197000002a70010009c00000000010000190000000101006039000000000001042d0000000001000019000009ea00010430000000000001042f000000000003004b0000097d0000c13d0000006002000039000009a60000013d0000001f02300039000002a8022001970000003f02200039000002a904200197000000400200043d0000000004420019000000000024004b000000000500001900000001050040390000029b0040009c000009b90000213d0000000100500190000009b90000c13d000000400040043f0000001f0430018f0000000005320436000200000005001d00000005033002720000000503300210000009980000613d00000002070000290000000005370019000000000601034f000000006806043c0000000007870436000000000057004b000009940000c13d000000000004004b000009a60000613d000000000131034f00000002033000290000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000000001020433000000000001004b000009bf0000c13d000000400200043d000400000002001d00000297010000410000000000120435000000040120003909e808c00000040f000000040200002900000000012100490000027b0010009c0000027b0100804100000060011002100000027b0020009c0000027b020080410000004002200210000000000121019f000009ea00010430000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea0001043000000002020000290000027b0020009c0000027b0200804100000040022002100000027b0010009c0000027b010080410000006001100210000000000121019f000009ea00010430000000000001042f0000027b0010009c0000027b0100804100000040011002100000027b0020009c0000027b020080410000006002200210000000000112019f00000000020004140000027b0020009c0000027b02008041000000c002200210000000000112019f000002a3011001c7000080100200003909e809e30000040f0000000100200190000009dc0000613d000000000101043b000000000001042d0000000001000019000009ea00010430000009e1002104210000000102000039000000000001042d0000000002000019000000000001042d000009e6002104230000000102000039000000000001042d0000000002000019000000000001042d000009e800000432000009e90001042e000009ea00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000008129fc1b00000000000000000000000000000000000000000000000000000000b88d4fdd00000000000000000000000000000000000000000000000000000000e985e9c400000000000000000000000000000000000000000000000000000000e985e9c500000000000000000000000000000000000000000000000000000000eacabe1400000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000b88d4fde00000000000000000000000000000000000000000000000000000000c87b56dd0000000000000000000000000000000000000000000000000000000095d89b400000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000a22cb465000000000000000000000000000000000000000000000000000000008129fc1c000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000023b872dc000000000000000000000000000000000000000000000000000000006352211d000000000000000000000000000000000000000000000000000000006352211e0000000000000000000000000000000000000000000000000000000070a0823100000000000000000000000000000000000000000000000000000000715018a60000000000000000000000000000000000000000000000000000000023b872dd0000000000000000000000000000000000000000000000000000000042842e0e00000000000000000000000000000000000000000000000000000000081812fb00000000000000000000000000000000000000000000000000000000081812fc00000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000006fdde03000000000000000000000000ffffffffffffffffffffffffffffffffffffffff08c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffff7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffdf02000000000000000000000000000000000000400000000000000000000000004552433732313a20746f6b656e20616c7265616479206d696e74656400000000ffffffffffffffffffffffff00000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000150b7a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000003ffffffe000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000f8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce700000000000000000000000000000000000000200000000000000000000000006578697374656e7420746f6b656e00000000000000000000000000000000000045524337323155524953746f726167653a2055524920736574206f66206e6f6e00000000000000000000000000000000000000840000000000000000000000004552433732313a206d696e7420746f20746865207a65726f20616464726573734e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002000000080000000000000000017307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c314552433732313a20617070726f766520746f2063616c6c657200000000000000000000000000000000000000000000000000006400000080000000000000000046501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c726561ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffffffc04669784d795069634e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf464d504e4654000000000000000000000000000000000000000000000000000070068be6c9c0028fffe980ecf108e970415fa0506dae7db35afbc0eec33958398ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c770068be6c9c0028fffe980ecf108e970415fa0506dae7db35afbc0eec3395838b9afe78647357ada173d02ae61d040305d1415d9afed6b55fd340304ed16bcac8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e07f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986e697469616c697a696e67000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420694552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e657200000000000000000000000000000000000000000000006b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000004552433732313a20617070726f76652063616c6c6572206973206e6f7420746f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92572000000000000000000000000000000000000000000000000000000000000004552433732313a20617070726f76616c20746f2063757272656e74206f776e654552433732313a20696e76616c696420746f6b656e20494400000000000000005b5e139effffffffffffffffffffffffffffffffffffffffffffffffffffffff80ac58cd000000000000000000000000000000000000000000000000000000005b5e139f0000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000004906490600000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffe0000000000000000000000000000000000000000000000001000000000000000072206f7220617070726f766564000000000000000000000000000000000000004552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e656f776e65720000000000000000000000000000000000000000000000000000004552433732313a207472616e736665722066726f6d20696e636f72726563742072657373000000000000000000000000000000000000000000000000000000004552433732313a207472616e7366657220746f20746865207a65726f2061646463656976657220696d706c656d656e74657200000000000000000000000000004552433732313a207472616e7366657220746f206e6f6e2045524337323152650000000000000000000000000000000000000000000000000000000000000000de21e5e8655b79702151d5592ea46351fec671c8904c34ef18d0f03eb0e7486a", + "deployedBytecode": "0x0002000000000002000e00000000000200010000000103550000008009000039000000400090043f0000000100200190000000330000c13d000000000201001900000060022002700000027b03200197000000040030008c0000069a0000413d000000000201043b000000e0022002700000027d0020009c0000003b0000213d0000028a0020009c000000620000a13d0000028b0020009c000000e50000a13d0000028c0020009c000001950000613d0000028d0020009c000001a40000613d0000028e0020009c0000069a0000c13d0000000001000416000000000001004b0000069a0000c13d000000c901000039000000000201041a00000296052001970000000003000411000000000035004b0000026b0000c13d000002a202200197000000000021041b00000000010004140000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000303000039000002c504000041000000000600001909e809de0000040f00000001002001900000069a0000613d0000000001000019000009e90001042e0000000001000416000000000001004b0000069a0000c13d0000002001000039000001000010044300000120000004430000027c01000041000009e90001042e0000027e0020009c000000860000a13d0000027f0020009c000001060000a13d000002800020009c000001bb0000613d000002810020009c000001dc0000613d000002820020009c0000069a0000c13d000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b000002960010009c0000069a0000213d000000c902000039000000000202041a00000296022001970000000003000411000000000032004b0000026b0000c13d000000000001004b0000035a0000c13d0000029701000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000029801000041000000c40010043f0000029901000041000000e40010043f0000029a01000041000009ea00010430000002910020009c000000950000213d000002940020009c000001330000613d000002950020009c0000069a0000c13d0000000001000416000000000001004b0000069a0000c13d0000006503000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000190000000105002039000000000054004b0000018f0000c13d000000800010043f000000000004004b000002ac0000613d0000000000300435000000000001004b000002a20000613d000002c20200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b0000007d0000413d000003460000013d000002850020009c000000c20000213d000002880020009c000001440000613d000002890020009c0000069a0000c13d0000000001000416000000000001004b0000069a0000c13d000000c901000039000000000101041a0000029601100197000000800010043f000002b501000041000009e90001042e000002920020009c000001780000613d000002930020009c0000069a0000c13d000000440030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000800000002001d000002960020009c0000069a0000213d0000002401100370000000000101043b000700000001001d00000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029601100198000001220000613d000000080010006b0000035d0000c13d000000400100043d0000006402100039000002ce0300004100000000003204350000004402100039000002cf03000041000000000032043500000024021000390000002103000039000003010000013d000002860020009c000001810000613d000002870020009c0000069a0000c13d000000440030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000800000002001d000002960020009c0000069a0000213d0000002401100370000000000201043b000000000002004b0000000001000019000000010100c039000700000002001d000000000012004b0000069a0000c13d0000000002000411000000080020006c0000030c0000c13d0000029701000041000000800010043f0000002001000039000000840010043f0000001901000039000000a40010043f000002b701000041000000c40010043f000002b801000041000009ea000104300000028f0020009c0000022e0000613d000002900020009c0000069a0000c13d0000000001000416000000000001004b0000069a0000c13d000000000103001909e806ae0000040f000700000001001d000600000002001d000800000003001d000000400100043d000500000001001d09e806c00000040f000000050100002900000000000104350000000001000411000000080200002909e807880000040f09e8074d0000040f00000007010000290000000602000029000000080300002909e807f80000040f000000070100002900000006020000290000000803000029000000050400002909e808e10000040f09e808cd0000040f0000000001000019000009e90001042e000002830020009c000002400000613d000002840020009c0000069a0000c13d000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b000800000001001d00000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029600100198000002b20000c13d000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea00010430000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000201043b000002aa002001980000069a0000c13d0000000101000039000002d10020009c000002a40000213d000002d40020009c000000920000613d000002d50020009c000000920000613d000002a80000013d0000000001000416000000000001004b0000069a0000c13d000000000300041a0007ff0000300194000002740000c13d000000ff0130019000000000020000190000000102006039000d00000002001d00000000020004150000000d0220008a0000000502200210000000000001004b000002780000c13d000000000a0004150000000c0aa0008a000000050aa00210000c00010000003d000002bc0130019700000101041001bf000000000040041b000000400300043d000002bd0030009c000004380000813d0000004001300039000000400010043f0000000b010000390000000006130436000002be010000410000000000160435000000400100043d000002bf0010009c000004380000213d0000004002100039000000400020043f00000006020000390000000002210436000002c00500004100000000005204350000ff0000400190000003910000c13d000000400100043d0000006402100039000002c70300004100000000003204350000004402100039000002c803000041000000000032043500000024021000390000002b03000039000003010000013d000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b09e807170000040f0000019d0000013d0000000001000416000000000001004b0000069a0000c13d0000006603000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000190000000105002039000000000552013f00000001005001900000029c0000613d000002b30100004100000000001004350000002201000039000000040010043f000002b401000041000009ea00010430000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b09e807640000040f000000400200043d00000000001204350000027b0020009c0000027b020080410000004001200210000002ae011001c7000009e90001042e000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b000002960010009c0000069a0000213d000000000001004b000002eb0000c13d0000029701000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f000002c901000041000000c40010043f000002ca01000041000000e40010043f0000029a01000041000009ea00010430000000440030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000002960020009c0000069a0000213d0000002401100370000000000101043b000800000001001d000002960010009c0000069a0000213d00000000002004350000006a01000039000000200010043f0000004002000039000000000100001909e809c90000040f00000008020000290000000000200435000000200010043f0000000001000019000000400200003909e809c90000040f000000000101041a000000ff001001900000000001000019000000010100c039000000800010043f000002b501000041000009e90001042e000000440030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000800000002001d000002960020009c0000069a0000213d0000002402100370000000000402043b0000029b0040009c0000069a0000213d0000002302400039000000000032004b0000069a0000813d0000000405400039000000000251034f000000000202043b0000029b0020009c000004380000213d0000001f06200039000002d6066001970000003f06600039000002d6066001970000029c0060009c000004380000213d00000024044000390000008006600039000000400060043f000000800020043f0000000004420019000000000034004b0000069a0000213d0000002003500039000000000131034f0000001f0320018f000000050420027200000005044002100000020c0000613d000000a005000039000000a006400039000000000701034f000000007807043c0000000005850436000000000065004b000002080000c13d000000000003004b0000021a0000613d000000000141034f0000000303300210000000a004400039000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000000a0012000390000000000010435000000c901000039000000000101041a00000296021001970000000001000411000000000012004b000003f50000c13d000600000002001d000000fb01000039000000000201041a000700000002001d000000010220003a000004000000c13d000002b30100004100000000001004350000001101000039000000040010043f000002b401000041000009ea000104300000000001000416000000000001004b0000069a0000c13d000000000103001909e806ae0000040f000800000001001d000700000002001d0000000002030019000600000002001d000000000100041109e807880000040f09e8074d0000040f00000008010000290000000702000029000000060300002909e807f80000040f0000000001000019000009e90001042e000000840030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000800000002001d000002960020009c0000069a0000213d0000002402100370000000000202043b000700000002001d000002960020009c0000069a0000213d0000006402100370000000000402043b0000029b0040009c0000069a0000213d0000002302400039000000000032004b0000069a0000813d0000000402400039000000000221034f000000000202043b0000004401100370000000000101043b000600000001001d000000240140003909e806dd0000040f000500000001001d0000000001000411000000060200002909e807880000040f09e8074d0000040f00000008010000290000000702000029000000060300002909e807f80000040f000000080100002900000007020000290000000603000029000001010000013d0000029701000041000000800010043f0000002001000039000000840010043f000000a40010043f0000029d01000041000000c40010043f000002b801000041000009ea0001043000000000020004150000000e0220008a0000000502200210000e00000000001d000800000002001d000600000003001d000002a50100004100000000001004390000000001000410000000040010044300000000010004140000027b0010009c0000027b01008041000000c001100210000002a6011001c7000080020200003909e809e30000040f0000000100200190000004e20000613d000000000101043b000000000001004b000002f50000c13d0000000603000029000000ff0130018f000000010010008c0000000001000019000000010100603900000008020000290000000502200270000000000201001f000002f80000c13d000000000a0004150000000b0aa0008a000000050aa00210000b00010000003d000000070000006b000001570000613d000002d70130019700000001041001bf000001590000013d000000800010043f000000000004004b000002ac0000613d0000000000300435000000000001004b0000033c0000c13d000000a001000039000003470000013d000002d20020009c000000920000613d000002d30020009c000000920000613d0000000001000019000000800010043f000002b501000041000009e90001042e000002d702200197000000a00020043f000000000001004b000000c001000039000000a001006039000003470000013d000000080100002900000000001004350000009701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a000000010320019000000001062002700000007f0660618f0000001f0060008c00000000040000190000000104002039000000000442013f00000001004001900000018f0000c13d000000400500043d0000000004650436000000000003004b000800000005001d000003b90000613d000600000004001d000700000006001d000000000010043500000000010004140000027b0010009c0000027b01008041000000c001100210000002ac011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d0000000706000029000000000006004b000000000200001900000008050000290000000607000029000003be0000613d000000000101043b00000000020000190000000003270019000000000401041a000000000043043500000001011000390000002002200039000000000062004b000002e30000413d000003be0000013d00000000001004350000006801000039000000200010043f0000004002000039000000000100001909e809c90000040f000000000101041a000000800010043f000002b501000041000009e90001042e00000008010000290000000501100270000000000100001f000000400100043d0000006402100039000002ba0300004100000000003204350000004402100039000002bb03000041000000000032043500000024021000390000002e030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b010080410000004001100210000002b1011001c7000009ea0001043000000000002004350000006a01000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b00000008020000290000000000200435000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a000002d7022001970000000703000029000000000232019f000000000021041b000000400100043d00000000003104350000027b0010009c0000027b01008041000000400110021000000000020004140000027b0020009c0000027b02008041000000c002200210000000000112019f000002ac011001c70000800d020000390000000303000039000002b604000041000000000500041100000008060000290000002e0000013d000002b90200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b0000033e0000413d000000c001300039000000800210008a000000800100003909e806cb0000040f0000002001000039000000400200043d000800000002001d0000000002120436000000800100003909e8069c0000040f000000080200002900000000012100490000027b0010009c0000027b0100804100000060011002100000027b0020009c0000027b020080410000004002200210000000000121019f000009e90001042e09e808ab0000040f0000000001000019000009e90001042e0000000002000411000000000012004b000003ce0000c13d000000070100002900000000001004350000006901000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a000002a20220019700000008022001af000000000021041b000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029605100198000001220000613d00000000010004140000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000403000039000002cd040000410000000806000029000000070700002909e809de0000040f00000001002001900000069a0000613d000000310000013d00000000050304330000029b0050009c000004380000213d0000006504000039000000000804041a000000010080019000000001078002700000007f0770618f0000001f0070008c00000000090000190000000109002039000000000898013f00000001008001900000018f0000c13d00080000000a001d000000200070008c000003b10000413d00000000004004350000001f085000390000000508800270000002c10880009a000000200050008c000002c2080040410000001f077000390000000507700270000002c10770009a000000000078004b000003b10000813d000000000008041b0000000108800039000000000078004b000003ad0000413d0000001f0050008c000004110000a13d0000000000400435000002d6085001980000041c0000c13d0000002007000039000002c206000041000004280000013d000002d7012001970000000000140435000000000006004b000000200200003900000000020060190000002002200039000000000105001909e806cb0000040f000000400100043d000700000001001d09e806c00000040f000000070100002900000000000104350000002001000039000000400200043d000700000002001d0000000002120436000000080100002909e8069c0000040f0000000702000029000003510000013d00000000001004350000006a01000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b00000000020004110000000000200435000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a000000ff00100190000003600000c13d000000400100043d0000006402100039000002cb0300004100000000003204350000004402100039000002cc03000041000000000032043500000024021000390000003d03000039000003010000013d000000400100043d00000044021000390000029d0300004100000000003204350000029702000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000012d0000013d000000000021041b000000400100043d000500000001001d0000029f0010009c000004380000213d000300000009001d00000005020000290000002001200039000400000001001d000000400010043f0000000000020435000000080000006b000004620000c13d000000400100043d0000004402100039000002b203000041000003f80000013d000000000005004b0000000003000019000004150000613d00000000030604330000000306500210000002d80660027f000002d806600167000000000363016f0000000105500210000000000353019f000004340000013d000002c2060000410000002007000039000000010980008a0000000509900270000002c30990009a000000000a370019000000000a0a04330000000000a6041b00000020077000390000000106600039000000000096004b000004210000c13d000000000058004b000004320000813d0000000308500210000000f80880018f000002d80880027f000002d80880016700000000033700190000000003030433000000000383016f000000000036041b000000010350021000000001033001bf000000000034041b00000000040104330000029b0040009c0000043e0000a13d000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea000104300000006603000039000000000603041a000000010060019000000001056002700000007f0550618f0000001f0050008c00000000070000190000000107002039000000000676013f00000001006001900000018f0000c13d000000200050008c0000045a0000413d00000000003004350000001f064000390000000506600270000002c40660009a000000200040008c000002b9060040410000001f055000390000000505500270000002c40550009a000000000056004b0000045a0000813d000000000006041b0000000106600039000000000056004b000004560000413d0000001f0040008c000004e30000a13d0000000000300435000002d606400198000004ee0000c13d0000002005000039000002b902000041000004fa0000013d000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029600100198000005360000c13d000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029600100198000005360000c13d000000080100002900000000001004350000006801000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a0000000102200039000000000021041b000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a000002a2022001970000000806000029000000000262019f000000000021041b00000000010004140000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000403000039000002a4040000410000000005000019000000070700002909e809de0000040f00000001002001900000069a0000613d0000000001000415000200000001001d000002a50100004100000000001004390000000801000029000000040010044300000000010004140000027b0010009c0000027b01008041000000c001100210000002a6011001c7000080020200003909e809e30000040f0000000100200190000004e20000613d000000000101043b000000000001004b0000053d0000c13d000000000100041500000002011000690000000001000002000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029600100198000005bb0000c13d000000400100043d0000006402100039000002af0300004100000000003204350000004402100039000002b003000041000002fe0000013d000000000001042f000000000004004b0000000001000019000004e70000613d00000000010204330000000302400210000002d80220027f000002d802200167000000000121016f0000000102400210000000000121019f000005060000013d000000010560008a000002d6075001970000002005000039000002b902000041000000400770003900000000081500190000000008080433000000000082041b00000001022000390000002005500039000000000075004b000004f30000c13d000000000046004b000005040000813d0000000306400210000000f80660018f000002d80660027f000002d80660016700000000011500190000000001010433000000000161016f000000000012041b000000010140021000000001011001bf000000000013041b000000000100041a0000ff00001001900000016e0000613d00000000010004110000029606100197000000c901000039000000000201041a000002a203200197000000000363019f000000000031041b000000000100041400000296052001970000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000303000039000002c50400004109e809de0000040f00000001002001900000069a0000613d000000080100002900000005011002700000000001010031000000fb02000039000000000012041b000000070000006b000000310000c13d000000000300041a000002d902300197000000000020041b000000400200043d00000000001204350000027b0020009c0000027b02008041000000400120021000000000020004140000027b0020009c0000027b02008041000000c002200210000000000112019f000002ac011001c70000800d020000390000000103000039000002c6040000410000002e0000013d000000400100043d0000004402100039000002a103000041000000000032043500000024021000390000001c03000039000001280000013d000000400300043d000000640130003900000080020000390000000000210435000000440130003900000007020000290000000000210435000002a7010000410000000001130436000100000001001d000000040130003900000006020000290000000000210435000000240130003900000000000104350000000501000029000000000101043300000084023000390000000000120435000600000003001d000000a402300039000000000001004b00000004060000290000055d0000613d000000000300001900000000042300190000000005630019000000000505043300000000005404350000002003300039000000000013004b000005560000413d0000000002210019000000000002043500000000020004140000000803000029000000040030008c0000056b0000c13d00000000050004150000000a0550008a00000005055002100000000003000031000000200030008c00000020040000390000000004034019000005a10000013d0000001f01100039000002d601100197000000a4011000390000027b0010009c0000027b01008041000000600110021000000006030000290000027b0030009c0000027b030080410000004003300210000000000131019f0000027b0020009c0000027b02008041000000c002200210000000000112019f000000080200002909e809de0000040f000000000301001900000060033002700000027b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010a0000290000058c0000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000005880000c13d000000000005004b0000059b0000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000005000415000000090550008a000000050550021000000001002001900000060d0000613d0000001f01400039000000600210018f0000000601200029000000000021004b000000000200001900000001020040390000029b0010009c000004380000213d0000000100200190000004380000c13d000000400010043f000000200030008c0000069a0000413d00000006010000290000000001010433000002aa001001980000069a0000c13d0000000502500270000000000201001f000000000200041500000002022000690000000002000002000002ab01100197000002a70010009c000004ca0000613d000006130000013d000000070100002900000000001004350000009701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000800000001001d000000800100043d000600000001001d0000029b0010009c000004380000213d0000000801000029000000000101041a000000010010019000000001021002700000007f0220618f000500000002001d0000001f0020008c00000000020000190000000102002039000000000121013f00000001001001900000018f0000c13d0000000501000029000000200010008c000005f90000413d0000000801000029000000000010043500000000010004140000027b0010009c0000027b01008041000000c001100210000002ac011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d00000006030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000005010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000005f90000813d000000000002041b0000000102200039000000000012004b000005f50000413d00000006010000290000001f0010008c000006570000a13d0000000801000029000000000010043500000000010004140000027b0010009c0000027b01008041000000c001100210000002ac011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000200200008a0000000602200180000000000101043b000006630000c13d000000a003000039000006710000013d000000000003004b000006230000c13d00000060020000390000000001020433000000000001004b0000064e0000c13d000000400200043d000800000002001d00000297010000410000000000120435000000040120003909e808c00000040f000000080200002900000000012100490000027b0010009c0000027b0100804100000060011002100000027b0020009c0000027b020080410000004002200210000000000121019f000009ea000104300000001f02300039000002a8022001970000003f02200039000002a904200197000000400200043d0000000004420019000000000024004b000000000500001900000001050040390000029b0040009c000004380000213d0000000100500190000004380000c13d000000400040043f0000001f0430018f0000000005320436000300000005001d00000005033002720000063e0000613d000000050530021000000003070000290000000005570019000000000601034f000000006806043c0000000007870436000000000057004b0000063a0000c13d000000000004004b000006100000613d0000000503300210000000000131034f00000003033000290000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000006100000013d00000003020000290000027b0020009c0000027b0200804100000040022002100000027b0010009c0000027b010080410000006001100210000000000121019f000009ea00010430000000060000006b00000000010000190000065b0000613d000000a00100043d00000006040000290000000302400210000002d80220027f000002d802200167000000000121016f0000000102400210000000000121019f0000067e0000013d000000010320008a0000000503300270000000000331001900000020040000390000000103300039000000000504001900000080045000390000000004040433000000000041041b00000020045000390000000101100039000000000031004b000006680000c13d000000a003500039000000060020006c0000067b0000813d00000006020000290000000302200210000000f80220018f000002d80220027f000002d8022001670000000003030433000000000223016f000000000021041b0000000601000029000000010110021000000001011001bf0000000802000029000000000012041b000000400100043d000000070200002900000000002104350000027b0010009c0000027b01008041000000400110021000000000020004140000027b0020009c0000027b02008041000000c002200210000000000112019f000002ac011001c70000800d020000390000000103000039000002ad0400004109e809de0000040f00000001002001900000069a0000613d000000400100043d000000070200002900000000002104350000027b0010009c0000027b010080410000004001100210000002ae011001c7000009e90001042e0000000001000019000009ea0001043000000000430104340000000001320436000000000003004b000006a80000613d000000000200001900000000052100190000000006240019000000000606043300000000006504350000002002200039000000000032004b000006a10000413d000000000231001900000000000204350000001f02300039000002d6022001970000000001210019000000000001042d000002da0010009c000006be0000213d000000630010008c000006be0000a13d00000001030003670000000401300370000000000101043b000002960010009c000006be0000213d0000002402300370000000000202043b000002960020009c000006be0000213d0000004403300370000000000303043b000000000001042d0000000001000019000009ea00010430000002db0010009c000006c50000813d0000002001100039000000400010043f000000000001042d000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea000104300000001f02200039000002d6022001970000000001120019000000000021004b000000000200001900000001020040390000029b0010009c000006d70000213d0000000100200190000006d70000c13d000000400010043f000000000001042d000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea000104300000000004010019000002dc0020009c0000070f0000813d0000001f01200039000002d6011001970000003f01100039000002d605100197000000400100043d0000000005510019000000000015004b000000000600001900000001060040390000029b0050009c0000070f0000213d00000001006001900000070f0000c13d000000400050043f00000000052104360000000006420019000000000036004b000007150000213d0000001f0320018f000000010440036700000005062002720000000506600210000006fe0000613d0000000007650019000000000804034f0000000009050019000000008a08043c0000000009a90436000000000079004b000006fa0000c13d000000000003004b0000070c0000613d000000000464034f00000000066500190000000303300210000000000706043300000000073701cf000000000737022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000373019f000000000036043500000000022500190000000000020435000000000001042d000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea000104300000000001000019000009ea000104300001000000000002000100000001001d00000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000073a0000613d000000000101043b000000000101041a00000296001001980000073c0000613d000000010100002900000000001004350000006901000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000073a0000613d000000000101043b000000000101041a0000029601100197000000000001042d0000000001000019000009ea00010430000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea00010430000000000001004b000007500000613d000000000001042d000000400100043d0000006402100039000002dd0300004100000000003204350000004402100039000002de03000041000000000032043500000024021000390000002d030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b010080410000004001100210000002b1011001c7000009ea0001043000000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007750000613d000000000101043b000000000101041a0000029601100198000007770000613d000000000001042d0000000001000019000009ea00010430000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea000104300002000000000002000200000001001d000100000002001d00000000002004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b000000000101041a0000029601100198000007e70000613d00000002020000290000029602200197000000000012004b000007a10000c13d0000000101000039000000000001042d000200000002001d00000000001004350000006a01000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b00000002020000290000000000200435000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b000000000101041a000000ff01100190000007c00000613d000000000001042d000000010100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b000000000101041a0000029600100198000007e70000613d000000010100002900000000001004350000006901000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b000000000101041a0000029601100197000000020010006c00000000010000190000000101006039000000000001042d0000000001000019000009ea00010430000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea000104300003000000000002000100000002001d000200000001001d000300000003001d00000000003004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000101041a00000296021001980000087c0000613d00000002010000290000029601100197000000000012004b0000088d0000c13d000200000002001d0000000101000029000102960010019c000008970000613d000000030100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000101041a000002960110019800000002020000290000087c0000613d000000000021004b0000088d0000c13d000000030100002900000000001004350000006901000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000201041a000002a202200197000000000021041b000000020100002900000000001004350000006801000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000201041a000000010220008a000000000021041b0000000101000029000000000010043500000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000201041a0000000102200039000000000021041b000000030100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000201041a000002a2022001970000000106000029000000000262019f000000000021041b00000000010004140000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000403000039000002a4040000410000000205000029000000030700002909e809de0000040f00000001002001900000087a0000613d000000000001042d0000000001000019000009ea00010430000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea00010430000000400100043d0000006402100039000002df0300004100000000003204350000004402100039000002e003000041000000000032043500000024021000390000002503000039000008a00000013d000000400100043d0000006402100039000002e10300004100000000003204350000004402100039000002e2030000410000000000320435000000240210003900000024030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b010080410000004001100210000002b1011001c7000009ea000104300000029606100197000000c901000039000000000201041a000002a203200197000000000363019f000000000031041b000000000100041400000296052001970000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000303000039000002c50400004109e809de0000040f0000000100200190000008be0000613d000000000001042d0000000001000019000009ea000104300000006002100039000002e30300004100000000003204350000004002100039000002e4030000410000000000320435000000200210003900000032030000390000000000320435000000200200003900000000002104350000008001100039000000000001042d0001000000000002000000000001004b000008d10000613d000000000001042d000000400200043d000100000002001d00000297010000410000000000120435000000040120003909e808c00000040f000000010200002900000000012100490000027b0010009c0000027b0100804100000060011002100000027b0020009c0000027b020080410000004002200210000000000121019f000009ea000104300006000000000002000300000004001d000200000003001d000100000001001d000002a5010000410000000000100439000400000002001d000000040020044300000000010004140000027b0010009c0000027b01008041000000c001100210000002a6011001c7000080020200003909e809e30000040f0000000100200190000009780000613d000000000101043b000000000001004b000009230000613d000000400a00043d0000006401a00039000000800700003900000000007104350000004401a0003900000002020000290000000000210435000000010100002900000296011001970000002402a000390000000000120435000002a70100004100000000081a04360000000401a0003900000000020004110000000000210435000000030100002900000000230104340000008401a000390000000000310435000000a401a00039000000000003004b000009140000613d000000000400001900000000051400190000000006420019000000000606043300000000006504350000002004400039000000000034004b0000090d0000413d00000000023100190000000000020435000000000400041400000004020000290000029602200197000000040020008c000009250000c13d0000000005000415000000060550008a00000005055002100000000003000031000000200030008c000000200400003900000000040340190000095f0000013d0000000101000039000000000001042d000200000007001d0000001f03300039000002d6033001970000000003a3004900000000011300190000027b0010009c0000027b0100804100000060011002100000027b00a0009c0000027b0300004100000000030a40190000004003300210000000000131019f0000027b0040009c0000027b04008041000000c003400210000000000131019f00040000000a001d000300000008001d09e809de0000040f000000030b000029000000040a000029000000000301001900000060033002700000027b03300197000000200030008c000000200400003900000000040340190000001f0540018f00000005064002720000094a0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000009460000c13d000000000005004b000009590000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000005000415000000050550008a00000005055002100000000100200190000009790000613d0000001f01400039000000600210018f0000000001a20019000000000021004b000000000200001900000001020040390000029b0010009c000009b90000213d0000000100200190000009b90000c13d000000400010043f0000001f0030008c000009760000a13d00000000010a0433000002aa00100198000009760000c13d0000000502500270000000000201001f000002ab01100197000002a70010009c00000000010000190000000101006039000000000001042d0000000001000019000009ea00010430000000000001042f000000000003004b0000097d0000c13d0000006002000039000009a60000013d0000001f02300039000002a8022001970000003f02200039000002a904200197000000400200043d0000000004420019000000000024004b000000000500001900000001050040390000029b0040009c000009b90000213d0000000100500190000009b90000c13d000000400040043f0000001f0430018f0000000005320436000200000005001d00000005033002720000000503300210000009980000613d00000002070000290000000005370019000000000601034f000000006806043c0000000007870436000000000057004b000009940000c13d000000000004004b000009a60000613d000000000131034f00000002033000290000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000000001020433000000000001004b000009bf0000c13d000000400200043d000400000002001d00000297010000410000000000120435000000040120003909e808c00000040f000000040200002900000000012100490000027b0010009c0000027b0100804100000060011002100000027b0020009c0000027b020080410000004002200210000000000121019f000009ea00010430000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea0001043000000002020000290000027b0020009c0000027b0200804100000040022002100000027b0010009c0000027b010080410000006001100210000000000121019f000009ea00010430000000000001042f0000027b0010009c0000027b0100804100000040011002100000027b0020009c0000027b020080410000006002200210000000000112019f00000000020004140000027b0020009c0000027b02008041000000c002200210000000000112019f000002a3011001c7000080100200003909e809e30000040f0000000100200190000009dc0000613d000000000101043b000000000001042d0000000001000019000009ea00010430000009e1002104210000000102000039000000000001042d0000000002000019000000000001042d000009e6002104230000000102000039000000000001042d0000000002000019000000000001042d000009e800000432000009e90001042e000009ea00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000008129fc1b00000000000000000000000000000000000000000000000000000000b88d4fdd00000000000000000000000000000000000000000000000000000000e985e9c400000000000000000000000000000000000000000000000000000000e985e9c500000000000000000000000000000000000000000000000000000000eacabe1400000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000b88d4fde00000000000000000000000000000000000000000000000000000000c87b56dd0000000000000000000000000000000000000000000000000000000095d89b400000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000a22cb465000000000000000000000000000000000000000000000000000000008129fc1c000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000023b872dc000000000000000000000000000000000000000000000000000000006352211d000000000000000000000000000000000000000000000000000000006352211e0000000000000000000000000000000000000000000000000000000070a0823100000000000000000000000000000000000000000000000000000000715018a60000000000000000000000000000000000000000000000000000000023b872dd0000000000000000000000000000000000000000000000000000000042842e0e00000000000000000000000000000000000000000000000000000000081812fb00000000000000000000000000000000000000000000000000000000081812fc00000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000006fdde03000000000000000000000000ffffffffffffffffffffffffffffffffffffffff08c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffff7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffdf02000000000000000000000000000000000000400000000000000000000000004552433732313a20746f6b656e20616c7265616479206d696e74656400000000ffffffffffffffffffffffff00000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000150b7a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000003ffffffe000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000f8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce700000000000000000000000000000000000000200000000000000000000000006578697374656e7420746f6b656e00000000000000000000000000000000000045524337323155524953746f726167653a2055524920736574206f66206e6f6e00000000000000000000000000000000000000840000000000000000000000004552433732313a206d696e7420746f20746865207a65726f20616464726573734e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002000000080000000000000000017307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c314552433732313a20617070726f766520746f2063616c6c657200000000000000000000000000000000000000000000000000006400000080000000000000000046501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c726561ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffffffc04669784d795069634e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf464d504e4654000000000000000000000000000000000000000000000000000070068be6c9c0028fffe980ecf108e970415fa0506dae7db35afbc0eec33958398ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c770068be6c9c0028fffe980ecf108e970415fa0506dae7db35afbc0eec3395838b9afe78647357ada173d02ae61d040305d1415d9afed6b55fd340304ed16bcac8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e07f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986e697469616c697a696e67000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420694552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e657200000000000000000000000000000000000000000000006b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000004552433732313a20617070726f76652063616c6c6572206973206e6f7420746f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92572000000000000000000000000000000000000000000000000000000000000004552433732313a20617070726f76616c20746f2063757272656e74206f776e654552433732313a20696e76616c696420746f6b656e20494400000000000000005b5e139effffffffffffffffffffffffffffffffffffffffffffffffffffffff80ac58cd000000000000000000000000000000000000000000000000000000005b5e139f0000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000004906490600000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffe0000000000000000000000000000000000000000000000001000000000000000072206f7220617070726f766564000000000000000000000000000000000000004552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e656f776e65720000000000000000000000000000000000000000000000000000004552433732313a207472616e736665722066726f6d20696e636f72726563742072657373000000000000000000000000000000000000000000000000000000004552433732313a207472616e7366657220746f20746865207a65726f2061646463656976657220696d706c656d656e74657200000000000000000000000000004552433732313a207472616e7366657220746f206e6f6e2045524337323152650000000000000000000000000000000000000000000000000000000000000000de21e5e8655b79702151d5592ea46351fec671c8904c34ef18d0f03eb0e7486a", + "linkReferences": {}, + "deployedLinkReferences": {}, + "factoryDeps": {} +} diff --git a/public/artifacts/FixMyPicFactory.json b/public/artifacts/FixMyPicFactory.json index 675fd65..064e641 100644 --- a/public/artifacts/FixMyPicFactory.json +++ b/public/artifacts/FixMyPicFactory.json @@ -19,6 +19,43 @@ "name": "InsufficientPayment", "type": "error" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "submission", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "tokenURI", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "purchasePrice", + "type": "uint256" + } + ], + "name": "FixMyPicNFTMinted", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -32,6 +69,25 @@ "name": "Initialized", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -256,6 +312,11 @@ "internalType": "address", "name": "_priceOracle", "type": "address" + }, + { + "internalType": "address", + "name": "_nftContract", + "type": "address" } ], "name": "initialize", @@ -263,6 +324,55 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "_purchaser", + "type": "address" + }, + { + "internalType": "address", + "name": "_submission", + "type": "address" + }, + { + "internalType": "string", + "name": "_tokenURI", + "type": "string" + } + ], + "name": "mintNFTForSubmission", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "nftContract", + "outputs": [ + { + "internalType": "contract FixMyPicNFT", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "priceOracle", @@ -288,10 +398,30 @@ "outputs": [], "stateMutability": "payable", "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ], - "bytecode": "0x0003000000000002000c000000000002000000000301001900000060033002700000019e03300197000200000031035500010000000103550000008004000039000000400040043f00000001002001900000003d0000c13d000000040030008c000003290000413d000000000201043b000000e002200270000001a00020009c000000450000213d000001a40020009c0000006e0000613d000001a50020009c000000770000613d000001a60020009c000003290000c13d000000640030008c000003290000413d0000000002000416000000000002004b000003290000c13d0000000402100370000000000202043b000001a70020009c000003290000213d0000002404100370000000000504043b000001a80050009c000003290000213d0000002304500039000000000034004b000003290000813d0000000407500039000000000471034f000000000604043b000001a80060009c000003290000213d00000000046500190000002404400039000000000034004b000003290000213d0000004401100370000000000101043b000700000001001d000001ca01000041000000800010043f0000000001000414000000040020008c000001a70000c13d0000000003000031000000200030008c00000020040000390000000004034019000001d40000013d0000000001000416000000000001004b000003290000c13d0000002001000039000001000010044300000120000004430000019f01000041000006720001042e000001a10020009c0000008b0000613d000001a20020009c000000ba0000613d000001a30020009c000003290000c13d000000440030008c000003290000413d0000000002000416000000000002004b000003290000c13d0000000402100370000000000202043b000001a70020009c000003290000213d0000002404100370000000000504043b000001a80050009c000003290000213d0000002304500039000000000034004b000003290000813d0000000407500039000000000171034f000000000601043b000001a80060009c000003290000213d00000000016500190000002401100039000000000031004b000003290000213d000001a901000041000000800010043f0000000001000414000000040020008c000001ff0000c13d0000000003000031000000200030008c000000200400003900000000040340190000022c0000013d0000000001000416000000000001004b000003290000c13d0000003301000039000000000101041a000001a701100197000000800010043f000001e501000041000006720001042e000000240030008c000003290000413d0000000401100370000000000201043b000001a70020009c000003290000213d0000000103000039000000000103041a000000020010008c000001130000c13d000001b801000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f000001e401000041000000c40010043f000001e3010000410000067300010430000000240030008c000003290000413d0000000002000416000000000002004b000003290000c13d0000000401100370000000000401043b000001a70040009c000003290000213d00000000020004150000000c0220008a0000000502200210000000000500041a0000ff0001500190000000ee0000c13d00000000020004150000000b0220008a0000000502200210000000ff00500190000000ee0000c13d00000080010000390000003302000039000000000302041a000001c603300197000000000343019f000000000032041b000001c70250019700000001022001bf000000000020041b000000010300003900000000003104350000019e0010009c0000019e01008041000000400110021000000000020004140000019e0020009c0000019e02008041000000c002200210000000000112019f000001c8011001c70000800d02000039000001c904000041067106670000040f0000000100200190000003290000613d0000000001000019000006720001042e000000640030008c000003290000413d0000000002000416000000000002004b000003290000c13d0000000402100370000000000202043b000001a80020009c000003290000213d0000002304200039000000000034004b000003290000813d0000000405200039000000000451034f000000000404043b000001a80040009c000003290000213d00000000024200190000002402200039000000000032004b000003290000213d000900000005001d000a00000004001d0000004402100370000000000202043b000700000002001d0000002401100370000000000101043b000800000001001d000001bb01000041000000a40010043f0000000001000414000001ac02000041000000800020043f000000840000043f0000006002000039000000c40020043f000000e40000043f0000019e0010009c0000019e01008041000000c001100210000001bc011001c70000800602000039067106670000040f0000000100200190000001430000613d000000000101043b000000000001004b0000024b0000c13d00000002010003670000000002000031000001480000013d000a00000002001d000800000001001d000900000005001d000700000004001d000001ae0100004100000000001004390000000001000410000000040010044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b0000012c0000c13d0000000905000029000000ff0150018f000000010010008c000000000100001900000001010060390000000a020000290000000502200270000000000201001f0000012f0000c13d000001e60150019700000001011001bf000000000010041b000000080000006b000003110000c13d000000400100043d0000000704000029000000a00000013d0000000201000039000000000013041b000000000002004b000001210000c13d000001b801000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f000001e201000041000000c40010043f000001e3010000410000067300010430000900000003001d000001d401000041000000800010043f0000000001000414000000040020008c0000016b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000001940000013d0000000a010000290000000501100270000000000100001f000000400100043d0000006402100039000001c30300004100000000003204350000004402100039000001c403000041000000000032043500000024021000390000002e030000390000000000320435000001b80200004100000000002104350000000402100039000000200300003900000000003204350000019e0010009c0000019e010080410000004001100210000001c5011001c700000673000104300002000000010355000000000201001900000060022002700000019e0020019d0000019e02200197000000400300043d0000001f0420018f0000000505200272000001540000613d00000005065002100000000006630019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b000001500000c13d000000000004004b000001630000613d0000000505500210000000000151034f00000000055300190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000019e0020009c0000019e0200804100000060012002100000019e0030009c0000019e030080410000004002300210000000000112019f00000673000104300000019e0010009c0000019e01008041000000c001100210000001aa011001c7000a00000002001d0671066c0000040f000000000301001900000060033002700000019e03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000001800000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c0000017c0000c13d000000000005004b0000018f0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000003010000613d0000000a020000290000001f01400039000000600510018f00000080015001bf000000400010043f000000200030008c000003290000413d0000000006000416000000800300043d000000000036004b000003180000813d000001e004000041000000000041043500000084045001bf0000000000340435000000a40250003900000000006204350000004001100210000001e1011001c70000067300010430000a00000007001d000900000006001d0000019e0010009c0000019e01008041000000c001100210000001aa011001c7000800000002001d0671066c0000040f000000000301001900000060033002700000019e03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000001be0000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c000001ba0000c13d000000000005004b000001cd0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000200000001035500000001002001900000000a070000290000032b0000613d000000080200002900000009060000290000001f01400039000000600110018f00000080041001bf000000400040043f000000200030008c000003290000413d000a00000007001d000900000006001d000800000002001d000000800100043d000000000001004b0000035a0000c13d0000002401400039000001cd0300004100000000003104350000004401400039000000000300041400000060020000390000000000210435000001ac01000041000000000014043500000064014000390000000000010435000000040140003900000000000104350000019e0040009c0000019e0400804100000040014002100000019e0030009c0000019e03008041000000c002300210000000000121019f000001ad011001c70000800602000039067106670000040f00000001002001900000037a0000613d000000000101043b000000000001004b000003d20000c13d000000020100036700000000020000310000037f0000013d000a00000007001d000900000006001d0000019e0010009c0000019e01008041000000c001100210000001aa011001c7000800000002001d0671066c0000040f0000008009000039000000000301001900000060033002700000019e03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000002160000613d000000000701034f000000007807043c0000000009890436000000a00090008c000002120000c13d000000000005004b000002250000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000200000001035500000001002001900000000a070000290000033a0000613d000000080200002900000009060000290000001f01400039000000600110018f00000080081001bf000000400080043f000000200030008c000003290000413d000000800300043d000000000003004b0000000004000019000000010400c039000000000043004b000003290000c13d000a00000007001d000900000006001d000800000002001d000000a405100039000000000003004b00000084061001bf000000c40410003900000040038002100000038e0000c13d000001b8010000410000000000180435000000200100003900000000001604350000001d010000390000000000150435000001b9010000410000000000140435000001ba013001c70000067300010430000001ae020000410000000000200439000001a701100197000600000001001d000000040010044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b0000000a070000290000000903000029000003290000613d000000400800043d000001bd010000410000000001180436000300000001001d000000040180003900000080020000390000000000210435000000840180003900000000007104350000001f0970018f000000a4018000390000002002300039000200000002001d0000000102200367000000050a700272000002760000613d0000000503a002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000002720000c13d000000000009004b000002850000613d0000000503a00210000000000232034f00000000033100190000000304900210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500010000000a001d000500000009001d000000000171001900000000000104350000006401800039000000070200002900000000002104350000002401800039000000080200002900000000002104350000004401800039000000000200041100000000002104350000001f01700039000901e70010019b00000000010004140000000602000029000000040020008c000002b00000613d0000019e0080009c0000019e02000041000000000208401900000040022002100000000903000029000001be0030009c000001be030080410000006003300210000000000223019f0000019e0010009c0000019e01008041000000c001100210000000000112019f000001bf0110009a0000000602000029000400000008001d067106670000040f0000000408000029000000000301001900000060033002700000019e0030019d00020000000103550000000100200190000004c00000613d000001a80080009c000004ba0000213d000000400080043f00000080018000390000000a02000029000000000021043500000080010000390000000000180435000400000008001d000000a001800039000000020200002900000001022003670000000103000029000000000003004b0000000503300210000002c70000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b000002c30000c13d000000050000006b000002d60000613d000000000232034f000000000331001900000005040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000a011000290000000000010435000000080100002900000003020000290000000000120435000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000000101043b0000000404000029000000600240003900000007030000290000000000320435000000400240003900000000001204350000019e0040009c0000019e0400804100000040014002100000000902000029000001c00020009c000001c0020080410000006002200210000000000112019f00000000020004140000019e0020009c0000019e02008041000000c002200210000000000121019f000001c10110009a0000800d020000390000000303000039000001c20400004100000006050000290000000006000411000000b50000013d000000400200043d0000001f0430018f00000005053002720000030d0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003090000c13d000000000004004b000003540000613d0000000505500210000003480000013d0000003301000039000000000201041a000001c60220019700000007022001af000000000021041b0000000001000019000006720001042e000001ae010000410000000000100439000a00000002001d000000040020044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b0000000a02000029000003a70000c13d00000000010000190000067300010430000000400200043d0000001f0430018f00000005053002720000000505500210000003370000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003330000c13d000000000004004b000003540000613d000003480000013d000000400200043d0000001f0430018f00000005053002720000000505500210000003460000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003420000c13d000000000004004b000003540000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000019e0020009c0000019e020080410000004002200210000000000112019f0000067300010430000600000001001d000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000400400043d000000000101043b000000060010006c0000048f0000a13d0000004401400039000001cc03000041000000000031043500000024014000390000001a030000390000000000310435000001b80100004100000000001404350000000401400039000000200300003900000000003104350000019e0040009c0000019e040080410000004001400210000001ba011001c700000673000104300002000000010355000000000201001900000060022002700000019e0020019d0000019e02200197000000400300043d0000001f0420018f00000005052002720000038b0000613d00000005065002100000000006630019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b000003870000c13d000000000004004b000001560000c13d000001630000013d000001ab0700004100000000007504350000000005000414000001ac070000410000000000780435000000000006043500000060020000390000000000240435000000e40110003900000000000104350000019e0050009c0000019e05008041000000c001500210000000000113019f000001ad011001c70000800602000039067106670000040f0000000100200190000004920000613d000000000101043b000000000001004b000004d00000c13d00000002010003670000000002000031000004970000013d000000400400043d000001d5010000410000000001140436000700000001001d0000000401400039000000000300041100000000003104350000000001000414000000040020008c000004a60000c13d000001a80040009c000004ba0000213d000000400040043f000001d801000041000800000004001d00000000001404350000000003000031000000200030008c000000200400003900000000040340190000001f01400039000000600110018f00000008020000290000000001210019000001a80010009c000004ba0000213d000000400010043f000000200030008c000003290000413d0000000004020433000001da0040009c000003290000813d0000000002000414000000040040008c000006000000613d0000019e0020009c0000019e02008041000000c0012002100000000002000416000000000002004b000005f40000c13d0000000002040019000005f80000013d0000003302000039000000000202041a000500000002001d000001ae020000410000000000200439000001a701100197000600000001001d000000040010044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b000000080300002900000009040000290000000a05000029000003290000613d000000400600043d0000002401600039000000a0020000390000000000210435000001ce010000410000000001160436000200000001001d00000004016000390000000000310435000000a40160003900000000004104350003001f00400193000400000006001d000000c4016000390000002002500039000100000002001d0000000102200367000a00050040027a000004050000613d0000000a0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000004010000c13d0000000503000029000001a703300197000000030000006b000004180000613d0000000a040000290000000504400210000000000242034f000000000441001900000003050000290000000305500210000000000604043300000000065601cf000000000656022f000000000202043b0000010005500089000000000252022f00000000025201cf000000000262019f00000000002404350000000901100029000000000001043500000004040000290000008401400039000000000031043500000044014000390000000702000029000000000021043500000064014000390000000002000411000000000021043500000000010004140000000602000029000000040020008c0000043f0000613d00000009020000290000001f02200039000001e702200197000001cf0020009c000001cf02008041000000600220021000000004030000290000019e0030009c0000019e030080410000004003300210000000000232019f0000019e0010009c0000019e01008041000000c001100210000000000112019f000001d00110009a0000000602000029067106670000040f000000000301001900000060033002700000019e0030019d00020000000103550000000100200190000005d40000613d0000000401000029000001a80010009c000004ba0000213d0000000403000029000000400030043f000000600130003900000009020000290000000000210435000000600100003900000000001304350000008001300039000000010200002900000001022003670000000a03000029000000000003004b0000000503300210000004570000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b000004530000c13d000000030000006b000004660000613d000000000232034f000000000331001900000003040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000009011000290000000000010435000000070100002900000002020000290000000000120435000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000000101043b00000004030000290000004002300039000000000012043500000009010000290000001f01100039000001e701100197000001d10010009c000001d10100804100000060011002100000019e0030009c0000019e030080410000004002300210000000000121019f00000000020004140000019e0020009c0000019e02008041000000c002200210000000000121019f000001d20110009a0000800d020000390000000403000039000001d3040000410000000605000029000005810000013d000001cb0040009c000001e00000a13d000004ba0000013d0002000000010355000000000201001900000060022002700000019e0020019d0000019e02200197000000400300043d0000001f0420018f00000005052002720000000505500210000004a30000613d0000000006530019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b0000049f0000c13d000000000004004b000001630000613d000001570000013d0000019e0040009c000800000004001d0000019e03000041000000000304401900060040003002180000019e0010009c0000019e01008041000000c00110021000000006011001af000001d6011001c7067106670000040f000000000301001900000060033002700000019e0030019d00020000000103550000000100200190000005870000613d0000000802000029000001d70020009c000005970000413d000001df0100004100000000001004350000004101000039000000040010043f000001d60100004100000673000104300000019e03300197000000400200043d0000001f0430018f0000000505300272000004cd0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004c90000c13d000000000004004b000003540000613d0000030f0000013d000001ae020000410000000000200439000001a701100197000700000001001d000000040010044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b000000080200002900000009030000290000000a04000029000003290000613d000000400500043d000000240150003900000060060000390000000000610435000001b0010000410000000001150436000300000001001d00000004015000390000000000210435000000640150003900000000003104350005001f00300193000600000005001d00000084015000390000002002400039000400000002001d0000000102200367000a00050030027a000005000000613d0000000a0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000004fc0000c13d000000050000006b000005110000613d0000000a030000290000000503300210000000000232034f000000000331001900000005040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000009011000290000000000010435000000060100002900000044011000390000000002000411000000000021043500000000010004140000000702000029000000040020008c000005330000613d00000009020000290000001f02200039000001e702200197000001b10020009c000001b102008041000000600220021000000006030000290000019e0030009c0000019e030080410000004003300210000000000232019f0000019e0010009c0000019e01008041000000c001100210000000000112019f000001b20110009a0000000702000029067106670000040f000000000301001900000060033002700000019e0030019d00020000000103550000000100200190000005e40000613d0000000601000029000001a80010009c000004ba0000213d0000000603000029000000400030043f000000400130003900000009020000290000000000210435000000400100003900000000001304350000006001300039000000040200002900000001022003670000000a0000006b0000054b0000613d0000000a0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000005470000c13d000000050000006b0000055c0000613d0000000a030000290000000503300210000000000232034f000000000331001900000005040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000009011000290000000000010435000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000000101043b0000000302000029000000000012043500000009010000290000001f01100039000001e701100197000001b50010009c000001b501008041000000600110021000000006020000290000019e0020009c0000019e020080410000004002200210000000000121019f00000000020004140000019e0020009c0000019e02008041000000c002200210000000000121019f000001b60110009a0000800d020000390000000403000039000001b704000041000000070500002900000008060000290000000007000411067106670000040f0000000100200190000003290000613d000000b80000013d0000019e03300197000000400200043d0000001f0430018f0000000505300272000005940000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005900000c13d000000000004004b000003540000613d0000030f0000013d000000400020043f000001d801000041000000000012043500000000010004140000019e0010009c0000019e01008041000000c00110021000000006011001af000001d9011001c70000000a020000290671066c0000040f000000000301001900000060033002700000019e03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000005b20000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000005ae0000c13d000000000005004b000005c10000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000003bb0000c13d000000400200043d0000001f0430018f0000000505300272000005d10000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005cd0000c13d000000000004004b000003540000613d0000030f0000013d0000019e03300197000000400200043d0000001f0430018f00000005053002720000000505500210000005e10000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005dd0000c13d000000000004004b000003540000613d000003480000013d0000019e03300197000000400200043d0000001f0430018f00000005053002720000000505500210000005f10000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005ed0000c13d000000000004004b000003540000613d000003480000013d000001db011001c7000080090200003900000000030004160000000005000019067106670000040f000900000002001d000200000001035500000060011002700000019e0010019d0000019e03100198000006280000613d000000400100043d0000001f02300039000001e7022001970000003f02200039000001e7042001970000000002140019000000000042004b00000000040000190000000104004039000001a80020009c000004ba0000213d0000000100400190000004ba0000c13d000000400020043f0000001f0230018f00000000013104360000000204000367000000050330027200000005033002100000061a0000613d0000000005310019000000000604034f0000000007010019000000006806043c0000000007870436000000000057004b000006160000c13d000000000002004b000006280000613d000000000434034f00000000013100190000000302200210000000000301043300000000032301cf000000000323022f000000000404043b0000010002200089000000000424022f00000000022401cf000000000232019f000000000021043500000009010000290000000100100190000006550000613d000000400200043d0000000001000416000900000002001d0000000001120436000800000001001d000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000000101043b0000000802000029000000000012043500000009010000290000019e0010009c0000019e01008041000000400110021000000000020004140000019e0020009c0000019e02008041000000c002200210000000000112019f000001dd011001c70000800d020000390000000303000039000001de040000410000000a050000290000000006000411067106670000040f0000000100200190000003290000613d0000000101000039000000000011041b0000000001000019000006720001042e000000000001042f000000400100043d0000004402100039000001dc03000041000000000032043500000024021000390000000e030000390000000000320435000001b80200004100000000002104350000000402100039000000200300003900000000003204350000019e0010009c0000019e010080410000004001100210000001ba011001c70000067300010430000000000001042f0000066a002104210000000102000039000000000001042d0000000002000019000000000001042d0000066f002104230000000102000039000000000001042d0000000002000019000000000001042d0000067100000432000006720001042e0000067300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000c4d66de700000000000000000000000000000000000000000000000000000000c4d66de800000000000000000000000000000000000000000000000000000000da8bf5a600000000000000000000000000000000000000000000000000000000e86938e1000000000000000000000000000000000000000000000000000000002630c12f00000000000000000000000000000000000000000000000000000000398f9de50000000000000000000000000000000000000000000000000000000099ba99bd000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff6d3dbe7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000080000000000000000001000087bd2009cf1bb167c807096c445d8276cc341f403b41c9650f726e4a3f9c4d535bdea7cd8a978f128b93471df48c7dbab89d703809115bdc118c235bfd02000000000000000000000000000000000000840000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000007bb7c0d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7bffffffffffffffffffffffffffffffffffffff7c000000000000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff9ffdffffffffffffffffffffffffffffffffffffa000000000000000000000000077d6b9f0192e2433b5dd096ea593a82aa04204683757437da108e37959cff9c908c379a000000000000000000000000000000000000000000000000000000000506963747572655265717565737420646f6573206e6f7420657869737400000000000000000000000000000000000000000000640000000000000000000000000100008d7479837ee722f16eb77463225d6f81b9742abe6a61255863b0529850020000000000000000000000000000000000008400000080000000000000000076d8160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5bffffffffffffffffffffffffffffffffffffff5c00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5ffdffffffffffffffffffffffffffffffffffff60000000000000000000000000ca8986794c4f31f610829437f668ed7cc4f46bcf078e9feb87962398f84440ce647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c7265610000000000000000000000000000000000000084000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000002000000000000000000000000000000000000200000000000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024988622a68900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7b5069637475726552657175657374206861732065787069726564000000000000010000ef41c28e3d268fee2e7bc1984679d30053332a8bb2534460470afff8227a5f022a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff3bffffffffffffffffffffffffffffffffffffff3c00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7ffdffffffffffffffffffffffffffffffffffff800000000000000000000000008065dc333a13520f3cdcebe527dd2495f2ec79d510609a240744a58e0215775cfc504655000000000000000000000000000000000000000000000000000000002e84571400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000100000000000000008dc45d9a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000001000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000005061796d656e74206661696c65640000000000000000000000000000000000000200000000000000000000000000000000000040000000000000000000000000b6f341a65eb19a9f00c69fc73ab895c20d60a9c6718e33e85d576781626ebad04e487b7100000000000000000000000000000000000000000000000000000000b99e2ab7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000496e76616c6964207375626d697373696f6e206164647265737300000000000000000000000000000000000000000000000000640000008000000000000000005265656e7472616e637947756172643a207265656e7472616e742063616c6c000000000000000000000000000000000000000020000000800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0cdedafcebb9b3c5abba2042f1c59d612af0083f476f7d7603d37d67974f48715", - "deployedBytecode": "0x0003000000000002000c000000000002000000000301001900000060033002700000019e03300197000200000031035500010000000103550000008004000039000000400040043f00000001002001900000003d0000c13d000000040030008c000003290000413d000000000201043b000000e002200270000001a00020009c000000450000213d000001a40020009c0000006e0000613d000001a50020009c000000770000613d000001a60020009c000003290000c13d000000640030008c000003290000413d0000000002000416000000000002004b000003290000c13d0000000402100370000000000202043b000001a70020009c000003290000213d0000002404100370000000000504043b000001a80050009c000003290000213d0000002304500039000000000034004b000003290000813d0000000407500039000000000471034f000000000604043b000001a80060009c000003290000213d00000000046500190000002404400039000000000034004b000003290000213d0000004401100370000000000101043b000700000001001d000001ca01000041000000800010043f0000000001000414000000040020008c000001a70000c13d0000000003000031000000200030008c00000020040000390000000004034019000001d40000013d0000000001000416000000000001004b000003290000c13d0000002001000039000001000010044300000120000004430000019f01000041000006720001042e000001a10020009c0000008b0000613d000001a20020009c000000ba0000613d000001a30020009c000003290000c13d000000440030008c000003290000413d0000000002000416000000000002004b000003290000c13d0000000402100370000000000202043b000001a70020009c000003290000213d0000002404100370000000000504043b000001a80050009c000003290000213d0000002304500039000000000034004b000003290000813d0000000407500039000000000171034f000000000601043b000001a80060009c000003290000213d00000000016500190000002401100039000000000031004b000003290000213d000001a901000041000000800010043f0000000001000414000000040020008c000001ff0000c13d0000000003000031000000200030008c000000200400003900000000040340190000022c0000013d0000000001000416000000000001004b000003290000c13d0000003301000039000000000101041a000001a701100197000000800010043f000001e501000041000006720001042e000000240030008c000003290000413d0000000401100370000000000201043b000001a70020009c000003290000213d0000000103000039000000000103041a000000020010008c000001130000c13d000001b801000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f000001e401000041000000c40010043f000001e3010000410000067300010430000000240030008c000003290000413d0000000002000416000000000002004b000003290000c13d0000000401100370000000000401043b000001a70040009c000003290000213d00000000020004150000000c0220008a0000000502200210000000000500041a0000ff0001500190000000ee0000c13d00000000020004150000000b0220008a0000000502200210000000ff00500190000000ee0000c13d00000080010000390000003302000039000000000302041a000001c603300197000000000343019f000000000032041b000001c70250019700000001022001bf000000000020041b000000010300003900000000003104350000019e0010009c0000019e01008041000000400110021000000000020004140000019e0020009c0000019e02008041000000c002200210000000000112019f000001c8011001c70000800d02000039000001c904000041067106670000040f0000000100200190000003290000613d0000000001000019000006720001042e000000640030008c000003290000413d0000000002000416000000000002004b000003290000c13d0000000402100370000000000202043b000001a80020009c000003290000213d0000002304200039000000000034004b000003290000813d0000000405200039000000000451034f000000000404043b000001a80040009c000003290000213d00000000024200190000002402200039000000000032004b000003290000213d000900000005001d000a00000004001d0000004402100370000000000202043b000700000002001d0000002401100370000000000101043b000800000001001d000001bb01000041000000a40010043f0000000001000414000001ac02000041000000800020043f000000840000043f0000006002000039000000c40020043f000000e40000043f0000019e0010009c0000019e01008041000000c001100210000001bc011001c70000800602000039067106670000040f0000000100200190000001430000613d000000000101043b000000000001004b0000024b0000c13d00000002010003670000000002000031000001480000013d000a00000002001d000800000001001d000900000005001d000700000004001d000001ae0100004100000000001004390000000001000410000000040010044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b0000012c0000c13d0000000905000029000000ff0150018f000000010010008c000000000100001900000001010060390000000a020000290000000502200270000000000201001f0000012f0000c13d000001e60150019700000001011001bf000000000010041b000000080000006b000003110000c13d000000400100043d0000000704000029000000a00000013d0000000201000039000000000013041b000000000002004b000001210000c13d000001b801000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f000001e201000041000000c40010043f000001e3010000410000067300010430000900000003001d000001d401000041000000800010043f0000000001000414000000040020008c0000016b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000001940000013d0000000a010000290000000501100270000000000100001f000000400100043d0000006402100039000001c30300004100000000003204350000004402100039000001c403000041000000000032043500000024021000390000002e030000390000000000320435000001b80200004100000000002104350000000402100039000000200300003900000000003204350000019e0010009c0000019e010080410000004001100210000001c5011001c700000673000104300002000000010355000000000201001900000060022002700000019e0020019d0000019e02200197000000400300043d0000001f0420018f0000000505200272000001540000613d00000005065002100000000006630019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b000001500000c13d000000000004004b000001630000613d0000000505500210000000000151034f00000000055300190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000019e0020009c0000019e0200804100000060012002100000019e0030009c0000019e030080410000004002300210000000000112019f00000673000104300000019e0010009c0000019e01008041000000c001100210000001aa011001c7000a00000002001d0671066c0000040f000000000301001900000060033002700000019e03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000001800000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c0000017c0000c13d000000000005004b0000018f0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000003010000613d0000000a020000290000001f01400039000000600510018f00000080015001bf000000400010043f000000200030008c000003290000413d0000000006000416000000800300043d000000000036004b000003180000813d000001e004000041000000000041043500000084045001bf0000000000340435000000a40250003900000000006204350000004001100210000001e1011001c70000067300010430000a00000007001d000900000006001d0000019e0010009c0000019e01008041000000c001100210000001aa011001c7000800000002001d0671066c0000040f000000000301001900000060033002700000019e03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000001be0000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c000001ba0000c13d000000000005004b000001cd0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000200000001035500000001002001900000000a070000290000032b0000613d000000080200002900000009060000290000001f01400039000000600110018f00000080041001bf000000400040043f000000200030008c000003290000413d000a00000007001d000900000006001d000800000002001d000000800100043d000000000001004b0000035a0000c13d0000002401400039000001cd0300004100000000003104350000004401400039000000000300041400000060020000390000000000210435000001ac01000041000000000014043500000064014000390000000000010435000000040140003900000000000104350000019e0040009c0000019e0400804100000040014002100000019e0030009c0000019e03008041000000c002300210000000000121019f000001ad011001c70000800602000039067106670000040f00000001002001900000037a0000613d000000000101043b000000000001004b000003d20000c13d000000020100036700000000020000310000037f0000013d000a00000007001d000900000006001d0000019e0010009c0000019e01008041000000c001100210000001aa011001c7000800000002001d0671066c0000040f0000008009000039000000000301001900000060033002700000019e03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000002160000613d000000000701034f000000007807043c0000000009890436000000a00090008c000002120000c13d000000000005004b000002250000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000200000001035500000001002001900000000a070000290000033a0000613d000000080200002900000009060000290000001f01400039000000600110018f00000080081001bf000000400080043f000000200030008c000003290000413d000000800300043d000000000003004b0000000004000019000000010400c039000000000043004b000003290000c13d000a00000007001d000900000006001d000800000002001d000000a405100039000000000003004b00000084061001bf000000c40410003900000040038002100000038e0000c13d000001b8010000410000000000180435000000200100003900000000001604350000001d010000390000000000150435000001b9010000410000000000140435000001ba013001c70000067300010430000001ae020000410000000000200439000001a701100197000600000001001d000000040010044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b0000000a070000290000000903000029000003290000613d000000400800043d000001bd010000410000000001180436000300000001001d000000040180003900000080020000390000000000210435000000840180003900000000007104350000001f0970018f000000a4018000390000002002300039000200000002001d0000000102200367000000050a700272000002760000613d0000000503a002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000002720000c13d000000000009004b000002850000613d0000000503a00210000000000232034f00000000033100190000000304900210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500010000000a001d000500000009001d000000000171001900000000000104350000006401800039000000070200002900000000002104350000002401800039000000080200002900000000002104350000004401800039000000000200041100000000002104350000001f01700039000901e70010019b00000000010004140000000602000029000000040020008c000002b00000613d0000019e0080009c0000019e02000041000000000208401900000040022002100000000903000029000001be0030009c000001be030080410000006003300210000000000223019f0000019e0010009c0000019e01008041000000c001100210000000000112019f000001bf0110009a0000000602000029000400000008001d067106670000040f0000000408000029000000000301001900000060033002700000019e0030019d00020000000103550000000100200190000004c00000613d000001a80080009c000004ba0000213d000000400080043f00000080018000390000000a02000029000000000021043500000080010000390000000000180435000400000008001d000000a001800039000000020200002900000001022003670000000103000029000000000003004b0000000503300210000002c70000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b000002c30000c13d000000050000006b000002d60000613d000000000232034f000000000331001900000005040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000a011000290000000000010435000000080100002900000003020000290000000000120435000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000000101043b0000000404000029000000600240003900000007030000290000000000320435000000400240003900000000001204350000019e0040009c0000019e0400804100000040014002100000000902000029000001c00020009c000001c0020080410000006002200210000000000112019f00000000020004140000019e0020009c0000019e02008041000000c002200210000000000121019f000001c10110009a0000800d020000390000000303000039000001c20400004100000006050000290000000006000411000000b50000013d000000400200043d0000001f0430018f00000005053002720000030d0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003090000c13d000000000004004b000003540000613d0000000505500210000003480000013d0000003301000039000000000201041a000001c60220019700000007022001af000000000021041b0000000001000019000006720001042e000001ae010000410000000000100439000a00000002001d000000040020044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b0000000a02000029000003a70000c13d00000000010000190000067300010430000000400200043d0000001f0430018f00000005053002720000000505500210000003370000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003330000c13d000000000004004b000003540000613d000003480000013d000000400200043d0000001f0430018f00000005053002720000000505500210000003460000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003420000c13d000000000004004b000003540000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000019e0020009c0000019e020080410000004002200210000000000112019f0000067300010430000600000001001d000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000400400043d000000000101043b000000060010006c0000048f0000a13d0000004401400039000001cc03000041000000000031043500000024014000390000001a030000390000000000310435000001b80100004100000000001404350000000401400039000000200300003900000000003104350000019e0040009c0000019e040080410000004001400210000001ba011001c700000673000104300002000000010355000000000201001900000060022002700000019e0020019d0000019e02200197000000400300043d0000001f0420018f00000005052002720000038b0000613d00000005065002100000000006630019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b000003870000c13d000000000004004b000001560000c13d000001630000013d000001ab0700004100000000007504350000000005000414000001ac070000410000000000780435000000000006043500000060020000390000000000240435000000e40110003900000000000104350000019e0050009c0000019e05008041000000c001500210000000000113019f000001ad011001c70000800602000039067106670000040f0000000100200190000004920000613d000000000101043b000000000001004b000004d00000c13d00000002010003670000000002000031000004970000013d000000400400043d000001d5010000410000000001140436000700000001001d0000000401400039000000000300041100000000003104350000000001000414000000040020008c000004a60000c13d000001a80040009c000004ba0000213d000000400040043f000001d801000041000800000004001d00000000001404350000000003000031000000200030008c000000200400003900000000040340190000001f01400039000000600110018f00000008020000290000000001210019000001a80010009c000004ba0000213d000000400010043f000000200030008c000003290000413d0000000004020433000001da0040009c000003290000813d0000000002000414000000040040008c000006000000613d0000019e0020009c0000019e02008041000000c0012002100000000002000416000000000002004b000005f40000c13d0000000002040019000005f80000013d0000003302000039000000000202041a000500000002001d000001ae020000410000000000200439000001a701100197000600000001001d000000040010044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b000000080300002900000009040000290000000a05000029000003290000613d000000400600043d0000002401600039000000a0020000390000000000210435000001ce010000410000000001160436000200000001001d00000004016000390000000000310435000000a40160003900000000004104350003001f00400193000400000006001d000000c4016000390000002002500039000100000002001d0000000102200367000a00050040027a000004050000613d0000000a0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000004010000c13d0000000503000029000001a703300197000000030000006b000004180000613d0000000a040000290000000504400210000000000242034f000000000441001900000003050000290000000305500210000000000604043300000000065601cf000000000656022f000000000202043b0000010005500089000000000252022f00000000025201cf000000000262019f00000000002404350000000901100029000000000001043500000004040000290000008401400039000000000031043500000044014000390000000702000029000000000021043500000064014000390000000002000411000000000021043500000000010004140000000602000029000000040020008c0000043f0000613d00000009020000290000001f02200039000001e702200197000001cf0020009c000001cf02008041000000600220021000000004030000290000019e0030009c0000019e030080410000004003300210000000000232019f0000019e0010009c0000019e01008041000000c001100210000000000112019f000001d00110009a0000000602000029067106670000040f000000000301001900000060033002700000019e0030019d00020000000103550000000100200190000005d40000613d0000000401000029000001a80010009c000004ba0000213d0000000403000029000000400030043f000000600130003900000009020000290000000000210435000000600100003900000000001304350000008001300039000000010200002900000001022003670000000a03000029000000000003004b0000000503300210000004570000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b000004530000c13d000000030000006b000004660000613d000000000232034f000000000331001900000003040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000009011000290000000000010435000000070100002900000002020000290000000000120435000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000000101043b00000004030000290000004002300039000000000012043500000009010000290000001f01100039000001e701100197000001d10010009c000001d10100804100000060011002100000019e0030009c0000019e030080410000004002300210000000000121019f00000000020004140000019e0020009c0000019e02008041000000c002200210000000000121019f000001d20110009a0000800d020000390000000403000039000001d3040000410000000605000029000005810000013d000001cb0040009c000001e00000a13d000004ba0000013d0002000000010355000000000201001900000060022002700000019e0020019d0000019e02200197000000400300043d0000001f0420018f00000005052002720000000505500210000004a30000613d0000000006530019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b0000049f0000c13d000000000004004b000001630000613d000001570000013d0000019e0040009c000800000004001d0000019e03000041000000000304401900060040003002180000019e0010009c0000019e01008041000000c00110021000000006011001af000001d6011001c7067106670000040f000000000301001900000060033002700000019e0030019d00020000000103550000000100200190000005870000613d0000000802000029000001d70020009c000005970000413d000001df0100004100000000001004350000004101000039000000040010043f000001d60100004100000673000104300000019e03300197000000400200043d0000001f0430018f0000000505300272000004cd0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000004c90000c13d000000000004004b000003540000613d0000030f0000013d000001ae020000410000000000200439000001a701100197000700000001001d000000040010044300000000010004140000019e0010009c0000019e01008041000000c001100210000001af011001c700008002020000390671066c0000040f0000000100200190000006540000613d000000000101043b000000000001004b000000080200002900000009030000290000000a04000029000003290000613d000000400500043d000000240150003900000060060000390000000000610435000001b0010000410000000001150436000300000001001d00000004015000390000000000210435000000640150003900000000003104350005001f00300193000600000005001d00000084015000390000002002400039000400000002001d0000000102200367000a00050030027a000005000000613d0000000a0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000004fc0000c13d000000050000006b000005110000613d0000000a030000290000000503300210000000000232034f000000000331001900000005040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000009011000290000000000010435000000060100002900000044011000390000000002000411000000000021043500000000010004140000000702000029000000040020008c000005330000613d00000009020000290000001f02200039000001e702200197000001b10020009c000001b102008041000000600220021000000006030000290000019e0030009c0000019e030080410000004003300210000000000232019f0000019e0010009c0000019e01008041000000c001100210000000000112019f000001b20110009a0000000702000029067106670000040f000000000301001900000060033002700000019e0030019d00020000000103550000000100200190000005e40000613d0000000601000029000001a80010009c000004ba0000213d0000000603000029000000400030043f000000400130003900000009020000290000000000210435000000400100003900000000001304350000006001300039000000040200002900000001022003670000000a0000006b0000054b0000613d0000000a0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000005470000c13d000000050000006b0000055c0000613d0000000a030000290000000503300210000000000232034f000000000331001900000005040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000009011000290000000000010435000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000000101043b0000000302000029000000000012043500000009010000290000001f01100039000001e701100197000001b50010009c000001b501008041000000600110021000000006020000290000019e0020009c0000019e020080410000004002200210000000000121019f00000000020004140000019e0020009c0000019e02008041000000c002200210000000000121019f000001b60110009a0000800d020000390000000403000039000001b704000041000000070500002900000008060000290000000007000411067106670000040f0000000100200190000003290000613d000000b80000013d0000019e03300197000000400200043d0000001f0430018f0000000505300272000005940000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005900000c13d000000000004004b000003540000613d0000030f0000013d000000400020043f000001d801000041000000000012043500000000010004140000019e0010009c0000019e01008041000000c00110021000000006011001af000001d9011001c70000000a020000290671066c0000040f000000000301001900000060033002700000019e03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000070a000029000005b20000613d000000000701034f0000000808000029000000007907043c00000000089804360000000000a8004b000005ae0000c13d000000000005004b000005c10000613d0000000506600210000000000761034f00000008066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000003bb0000c13d000000400200043d0000001f0430018f0000000505300272000005d10000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005cd0000c13d000000000004004b000003540000613d0000030f0000013d0000019e03300197000000400200043d0000001f0430018f00000005053002720000000505500210000005e10000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005dd0000c13d000000000004004b000003540000613d000003480000013d0000019e03300197000000400200043d0000001f0430018f00000005053002720000000505500210000005f10000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005ed0000c13d000000000004004b000003540000613d000003480000013d000001db011001c7000080090200003900000000030004160000000005000019067106670000040f000900000002001d000200000001035500000060011002700000019e0010019d0000019e03100198000006280000613d000000400100043d0000001f02300039000001e7022001970000003f02200039000001e7042001970000000002140019000000000042004b00000000040000190000000104004039000001a80020009c000004ba0000213d0000000100400190000004ba0000c13d000000400020043f0000001f0230018f00000000013104360000000204000367000000050330027200000005033002100000061a0000613d0000000005310019000000000604034f0000000007010019000000006806043c0000000007870436000000000057004b000006160000c13d000000000002004b000006280000613d000000000434034f00000000013100190000000302200210000000000301043300000000032301cf000000000323022f000000000404043b0000010002200089000000000424022f00000000022401cf000000000232019f000000000021043500000009010000290000000100100190000006550000613d000000400200043d0000000001000416000900000002001d0000000001120436000800000001001d000001b301000041000000000010043900000000010004140000019e0010009c0000019e01008041000000c001100210000001b4011001c70000800b020000390671066c0000040f0000000100200190000006540000613d000000000101043b0000000802000029000000000012043500000009010000290000019e0010009c0000019e01008041000000400110021000000000020004140000019e0020009c0000019e02008041000000c002200210000000000112019f000001dd011001c70000800d020000390000000303000039000001de040000410000000a050000290000000006000411067106670000040f0000000100200190000003290000613d0000000101000039000000000011041b0000000001000019000006720001042e000000000001042f000000400100043d0000004402100039000001dc03000041000000000032043500000024021000390000000e030000390000000000320435000001b80200004100000000002104350000000402100039000000200300003900000000003204350000019e0010009c0000019e010080410000004001100210000001ba011001c70000067300010430000000000001042f0000066a002104210000000102000039000000000001042d0000000002000019000000000001042d0000066f002104230000000102000039000000000001042d0000000002000019000000000001042d0000067100000432000006720001042e0000067300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000c4d66de700000000000000000000000000000000000000000000000000000000c4d66de800000000000000000000000000000000000000000000000000000000da8bf5a600000000000000000000000000000000000000000000000000000000e86938e1000000000000000000000000000000000000000000000000000000002630c12f00000000000000000000000000000000000000000000000000000000398f9de50000000000000000000000000000000000000000000000000000000099ba99bd000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff6d3dbe7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000080000000000000000001000087bd2009cf1bb167c807096c445d8276cc341f403b41c9650f726e4a3f9c4d535bdea7cd8a978f128b93471df48c7dbab89d703809115bdc118c235bfd02000000000000000000000000000000000000840000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000007bb7c0d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7bffffffffffffffffffffffffffffffffffffff7c000000000000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff9ffdffffffffffffffffffffffffffffffffffffa000000000000000000000000077d6b9f0192e2433b5dd096ea593a82aa04204683757437da108e37959cff9c908c379a000000000000000000000000000000000000000000000000000000000506963747572655265717565737420646f6573206e6f7420657869737400000000000000000000000000000000000000000000640000000000000000000000000100008d7479837ee722f16eb77463225d6f81b9742abe6a61255863b0529850020000000000000000000000000000000000008400000080000000000000000076d8160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5bffffffffffffffffffffffffffffffffffffff5c00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5ffdffffffffffffffffffffffffffffffffffff60000000000000000000000000ca8986794c4f31f610829437f668ed7cc4f46bcf078e9feb87962398f84440ce647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c7265610000000000000000000000000000000000000084000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000002000000000000000000000000000000000000200000000000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024988622a68900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7b5069637475726552657175657374206861732065787069726564000000000000010000ef41c28e3d268fee2e7bc1984679d30053332a8bb2534460470afff8227a5f022a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff3bffffffffffffffffffffffffffffffffffffff3c00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7ffdffffffffffffffffffffffffffffffffffff800000000000000000000000008065dc333a13520f3cdcebe527dd2495f2ec79d510609a240744a58e0215775cfc504655000000000000000000000000000000000000000000000000000000002e84571400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000100000000000000008dc45d9a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000001000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000005061796d656e74206661696c65640000000000000000000000000000000000000200000000000000000000000000000000000040000000000000000000000000b6f341a65eb19a9f00c69fc73ab895c20d60a9c6718e33e85d576781626ebad04e487b7100000000000000000000000000000000000000000000000000000000b99e2ab7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000496e76616c6964207375626d697373696f6e206164647265737300000000000000000000000000000000000000000000000000640000008000000000000000005265656e7472616e637947756172643a207265656e7472616e742063616c6c000000000000000000000000000000000000000020000000800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0cdedafcebb9b3c5abba2042f1c59d612af0083f476f7d7603d37d67974f48715", + "bytecode": "0x0003000000000002000d000000000002000000000301001900000060033002700000022d03300197000200000031035500010000000103550000008004000039000000400040043f00000001002001900000001e0000c13d000000040030008c000003db0000413d000000000201043b000000e0022002700000022f0020009c000000260000a13d000002300020009c000000470000213d000002340020009c0000009d0000613d000002350020009c000000a20000613d000002360020009c000003db0000c13d0000000001000416000000000001004b000003db0000c13d0000009801000039000001610000013d0000000001000416000000000001004b000003db0000c13d0000002001000039000001000010044300000120000004430000022e01000041000008b00001042e000002370020009c0000006a0000a13d000002380020009c000000c80000613d000002390020009c000000dc0000613d0000023a0020009c000003db0000c13d0000000001000416000000000001004b000003db0000c13d0000006501000039000000000201041a0000023d052001970000000003000411000000000035004b000001660000c13d0000026702200197000000000021041b00000000010004140000022d0010009c0000022d01008041000000c00110021000000268011001c70000800d0200003900000003030000390000026904000041000000000600001908af08a50000040f0000000100200190000003db0000613d0000000001000019000008b00001042e000002310020009c000001060000613d000002320020009c0000013a0000613d000002330020009c000003db0000c13d000000240030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000401100370000000000101043b0000023d0010009c000003db0000213d0000006502000039000000000202041a0000023d022001970000000003000411000000000032004b000001660000c13d000000000001004b000001d50000c13d0000023e01000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000023f01000041000000c40010043f0000024001000041000000e40010043f0000024101000041000008b1000104300000023b0020009c0000015d0000613d0000023c0020009c000003db0000c13d000000640030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000502043b0000023d0050009c000003db0000213d0000002402100370000000000602043b0000023d0060009c000003db0000213d0000004402100370000000000202043b000002420020009c000003db0000213d0000002304200039000000000034004b000003db0000813d0000000407200039000000000171034f000000000401043b000002420040009c000003db0000213d00000000014200190000002401100039000000000031004b000003db0000213d0000006501000039000000000101041a0000023d011001970000000002000411000000000021004b000001660000c13d000000000005004b0000042c0000c13d0000023e01000041000000800010043f0000002001000039000000840010043f0000001901000039000000a40010043f0000028c01000041000000c40010043f0000028001000041000008b1000104300000000001000416000000000001004b000003db0000c13d0000006501000039000001610000013d000000640030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000202043b0000023d0020009c000003db0000213d0000002404100370000000000504043b000002420050009c000003db0000213d0000002304500039000000000034004b000003db0000813d0000000407500039000000000471034f000000000604043b000002420060009c000003db0000213d00000000046500190000002404400039000000000034004b000003db0000213d0000004401100370000000000101043b000800000001001d0000025d01000041000000800010043f0000000001000414000000040020008c0000025e0000c13d0000000003000031000000200030008c000000200400003900000000040340190000028b0000013d000000240030008c000003db0000413d0000000401100370000000000201043b0000023d0020009c000003db0000213d0000000103000039000000000103041a000000020010008c0000016f0000c13d0000023e01000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f0000027f01000041000000c40010043f0000028001000041000008b100010430000000440030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000302043b0000023d0030009c000003db0000213d0000002401100370000000000401043b0000023d0040009c000003db0000213d00000000020004150000000d0220008a0000000502200210000000000500041a0000ff0001500190000b00000003001d000a00000004001d0000017d0000c13d00000000020004150000000c0220008a0000000502200210000000ff005001900000017d0000c13d0000026d0150019700000101011001bf0000000002000019000000000010041b0000ff0000100190000001a10000c13d000000400100043d00000064021000390000027003000041000000000032043500000044021000390000027103000041000000000032043500000024021000390000002b03000039000002530000013d000000640030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000202043b000002420020009c000003db0000213d0000002304200039000000000034004b000003db0000813d0000000405200039000000000451034f000000000404043b000002420040009c000003db0000213d00000000024200190000002402200039000000000032004b000003db0000213d000a00000005001d000b00000004001d0000004402100370000000000202043b000800000002001d0000002401100370000000000101043b000900000001001d0000025401000041000000a40010043f00000000010004140000024602000041000000800020043f000000840000043f0000006002000039000000c40020043f000000e40000043f0000022d0010009c0000022d01008041000000c00110021000000255011001c7000080060200003908af08a50000040f0000000100200190000001e30000613d000000000101043b000000000001004b000002b60000c13d00000002010003670000000002000031000001e80000013d000000440030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000202043b0000023d0020009c000003db0000213d0000002404100370000000000504043b000002420050009c000003db0000213d0000002304500039000000000034004b000003db0000813d0000000407500039000000000171034f000000000601043b000002420060009c000003db0000213d00000000016500190000002401100039000000000031004b000003db0000213d0000024301000041000000800010043f0000000001000414000000040020008c0000036e0000c13d0000000003000031000000200030008c000000200400003900000000040340190000039b0000013d0000000001000416000000000001004b000003db0000c13d0000009701000039000000000101041a0000023d01100197000000800010043f0000025c01000041000008b00001042e0000023e01000041000000800010043f0000002001000039000000840010043f000000a40010043f0000028101000041000000c40010043f0000028001000041000008b1000104300000000201000039000000000013041b000000000002004b000001d80000c13d0000023e01000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f0000028b01000041000000c40010043f0000028001000041000008b100010430000900000002001d000700000001001d000800000005001d000002480100004100000000001004390000000001000410000000040010044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b000002470000c13d0000000805000029000000ff0150018f000000010010008c0000000001000019000000010100603900000009020000290000000502200270000000000201001f0000024a0000c13d000000070000006b000000f60000613d0000028d01500197000000010200003900000001011001bf000000000010041b0000ff0000100190000000fc0000613d000900000002001d00000000010004110000023d061001970000006501000039000000000201041a0000026703200197000000000363019f000000000031041b00000000010004140000023d052001970000022d0010009c0000022d01008041000000c00110021000000268011001c70000800d020000390000000303000039000002690400004108af08a50000040f0000000a040000290000000b030000290000000100200190000003db0000613d0000009701000039000000000201041a0000026702200197000000000232019f000000000021041b0000009801000039000000000201041a0000026702200197000000000242019f000000000021041b000000090000006b000000450000c13d000000000200041a0000028e01200197000000000010041b0000000103000039000000400100043d00000000003104350000022d0010009c0000022d01008041000000400110021000000000020004140000022d0020009c0000022d02008041000000c002200210000000000112019f0000026e011001c70000800d020000390000026f04000041000000420000013d08af088f0000040f0000000001000019000008b00001042e000a00000003001d0000027201000041000000800010043f0000000001000414000000040020008c0000020b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000002340000013d0002000000010355000000000201001900000060022002700000022d0020019d0000022d02200197000000400300043d0000001f0420018f0000000505200272000001f40000613d00000005065002100000000006630019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b000001f00000c13d000000000004004b000002030000613d0000000505500210000000000151034f00000000055300190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000022d0020009c0000022d0200804100000060012002100000022d0030009c0000022d030080410000004002300210000000000112019f000008b1000104300000022d0010009c0000022d01008041000000c00110021000000244011001c7000b00000002001d08af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000002200000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c0000021c0000c13d000000000005004b0000022f0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000003ba0000613d0000000b020000290000001f01400039000000600510018f00000080015001bf000000400010043f000000200030008c000003db0000413d0000000006000416000000800300043d000000000036004b000003ca0000813d0000027d04000041000000000041043500000084045001bf0000000000340435000000a402500039000000000062043500000040011002100000027e011001c7000008b10001043000000009010000290000000501100270000000000100001f000000400100043d00000064021000390000026a03000041000000000032043500000044021000390000026b03000041000000000032043500000024021000390000002e0300003900000000003204350000023e0200004100000000002104350000000402100039000000200300003900000000003204350000022d0010009c0000022d0100804100000040011002100000026c011001c7000008b100010430000b00000007001d000a00000006001d0000022d0010009c0000022d01008041000000c00110021000000244011001c7000900000002001d08af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000002750000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c000002710000c13d000000000005004b000002840000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000200000001035500000001002001900000000b07000029000003dd0000613d00000009020000290000000a060000290000001f01400039000000600110018f00000080041001bf000000400040043f000000200030008c000003db0000413d000b00000007001d000a00000006001d000900000002001d000000800100043d000000000001004b0000040c0000c13d00000024014000390000026003000041000000000031043500000044014000390000000003000414000000600200003900000000002104350000024601000041000000000014043500000064014000390000000000010435000000040140003900000000000104350000022d0040009c0000022d0400804100000040014002100000022d0030009c0000022d03008041000000c002300210000000000121019f00000247011001c7000080060200003908af08a50000040f00000001002001900000043f0000613d000000000101043b000000000001004b000004990000c13d00000002010003670000000002000031000004440000013d000002480200004100000000002004390000023d01100197000700000001001d000000040010044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b0000000b030000290000000a05000029000003db0000613d000000400200043d00000256010000410000000001120436000400000001001d000000040120003900000080040000390000000000410435000000840120003900000000003104350000001f0730018f000600000002001d000000a4012000390000002002500039000300000002001d00000001022003670000000508300272000002e20000613d00000005038002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000002de0000c13d000000000007004b000002f10000613d0000000503800210000000000232034f00000000033100190000000304700210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f0000000000230435000200000008001d000500000007001d0000000b030000290000000001310019000000000001043500000006040000290000006401400039000000080200002900000000002104350000002401400039000000090200002900000000002104350000004401400039000000000200041100000000002104350000001f01300039000a028f0010019b00000000010004140000000702000029000000040020008c0000031d0000613d0000022d0040009c0000022d02000041000000000204401900000040022002100000000a03000029000002570030009c00000257030080410000006003300210000000000223019f0000022d0010009c0000022d01008041000000c001100210000000000112019f000002580110009a000000070200002908af08a50000040f0000000604000029000000000301001900000060033002700000022d0030019d00020000000103550000000100200190000005870000613d000002420040009c000005810000213d0000000603000029000000400030043f00000080013000390000000b02000029000000000021043500000080010000390000000000130435000000a001300039000000030200002900000001022003670000000203000029000000000003004b0000000503300210000003340000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b000003300000c13d000000050000006b000003430000613d000000000232034f000000000331001900000005040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000b0110002900000000000104350000000901000029000000040200002900000000001204350000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b0000000604000029000000600240003900000008030000290000000000320435000000400240003900000000001204350000022d0040009c0000022d0400804100000040014002100000000a02000029000002590020009c00000259020080410000006002200210000000000112019f00000000020004140000022d0020009c0000022d02008041000000c002200210000000000121019f0000025a0110009a0000800d0200003900000003030000390000025b0400004100000007050000290000000006000411000000420000013d000b00000007001d000a00000006001d0000022d0010009c0000022d01008041000000c00110021000000244011001c7000900000002001d08af08aa0000040f0000008009000039000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000003850000613d000000000701034f000000007807043c0000000009890436000000a00090008c000003810000c13d000000000005004b000003940000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000200000001035500000001002001900000000b07000029000003ec0000613d00000009020000290000000a060000290000001f01400039000000600110018f00000080081001bf000000400080043f000000200030008c000003db0000413d000000800300043d000000000003004b0000000004000019000000010400c039000000000043004b000003db0000c13d000b00000007001d000a00000006001d000900000002001d000000a405100039000000000003004b00000084061001bf000000c4041000390000004003800210000004530000c13d0000023e010000410000000000180435000000200100003900000000001604350000001d0100003900000000001504350000025201000041000000000014043500000253013001c7000008b100010430000000400200043d0000001f0430018f0000000505300272000003c60000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003c20000c13d000000000004004b000004060000613d0000000505500210000003fa0000013d00000248010000410000000000100439000b00000002001d000000040020044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b0000000b020000290000046c0000c13d0000000001000019000008b100010430000000400200043d0000001f0430018f00000005053002720000000505500210000003e90000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003e50000c13d000000000004004b000004060000613d000003fa0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000003f80000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003f40000c13d000000000004004b000004060000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000022d0020009c0000022d020080410000004002200210000000000112019f000008b100010430000700000001001d0000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000400400043d000000000101043b000000070010006c000005560000a13d00000044014000390000025f03000041000000000031043500000024014000390000001a0300003900000000003104350000023e0100004100000000001404350000000401400039000000200300003900000000003104350000022d0040009c0000022d04008041000000400140021000000253011001c7000008b100010430000800000007001d000900000004001d000a00000005001d000b00000006001d000000000006004b000001730000613d0000028201000041000000800010043f0000000a01000029000000840010043f00000000010004140000000b02000029000000040020008c000005970000c13d0000000003000031000000200030008c00000020040000390000000004034019000005bf0000013d0002000000010355000000000201001900000060022002700000022d0020019d0000022d02200197000000400300043d0000001f0420018f0000000505200272000004500000613d00000005065002100000000006630019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b0000044c0000c13d000000000004004b000001f60000c13d000002030000013d00000245070000410000000000750435000000000500041400000246070000410000000000780435000000000006043500000060020000390000000000240435000000e40110003900000000000104350000022d0050009c0000022d05008041000000c001500210000000000113019f00000247011001c7000080060200003908af08a50000040f0000000100200190000005590000613d000000000101043b000000000001004b000005e00000c13d000000020100036700000000020000310000055e0000013d000000400300043d00000273010000410000000001130436000800000001001d000900000003001d0000000401300039000000000300041100000000003104350000000001000414000000040020008c0000056d0000c13d0000000901000029000002420010009c000005810000213d0000000902000029000000400020043f000002760100004100000000001204350000000003000031000000200030008c000000200400003900000000040340190000001f01400039000000600110018f0000000901100029000002420010009c000005810000213d000000400010043f000000200030008c000003db0000413d00000009020000290000000004020433000002780040009c000003db0000813d0000000002000414000000040040008c0000081a0000613d0000022d0020009c0000022d02008041000000c0012002100000000002000416000000000002004b0000080e0000c13d0000000002040019000008120000013d0000009702000039000000000202041a000600000002001d000002480200004100000000002004390000023d01100197000700000001001d000000040010044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b00000009030000290000000a040000290000000b05000029000003db0000613d000000400600043d0000002401600039000000a002000039000000000021043500000261010000410000000001160436000300000001001d00000004016000390000000000310435000000a40160003900000000004104350004001f00400193000500000006001d000000c4016000390000002002500039000200000002001d0000000102200367000b00050040027a000004cc0000613d0000000b0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000004c80000c13d00000006030000290000023d03300197000000040000006b000004df0000613d0000000b040000290000000504400210000000000242034f000000000441001900000004050000290000000305500210000000000604043300000000065601cf000000000656022f000000000202043b0000010005500089000000000252022f00000000025201cf000000000262019f00000000002404350000000a01100029000000000001043500000005040000290000008401400039000000000031043500000044014000390000000802000029000000000021043500000064014000390000000002000411000000000021043500000000010004140000000702000029000000040020008c000005060000613d0000000a020000290000001f022000390000028f02200197000002620020009c0000026202008041000000600220021000000005030000290000022d0030009c0000022d030080410000004003300210000000000232019f0000022d0010009c0000022d01008041000000c001100210000000000112019f000002630110009a000000070200002908af08a50000040f000000000301001900000060033002700000022d0030019d00020000000103550000000100200190000007700000613d0000000501000029000002420010009c000005810000213d0000000503000029000000400030043f00000060013000390000000a020000290000000000210435000000600100003900000000001304350000008001300039000000020200002900000001022003670000000b03000029000000000003004b00000005033002100000051e0000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b0000051a0000c13d000000040000006b0000052d0000613d000000000232034f000000000331001900000004040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000a0110002900000000000104350000000801000029000000030200002900000000001204350000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b0000000503000029000000400230003900000000001204350000000a010000290000001f011000390000028f01100197000002640010009c000002640100804100000060011002100000022d0030009c0000022d030080410000004002300210000000000121019f00000000020004140000022d0020009c0000022d02008041000000c002200210000000000121019f000002650110009a0000800d02000039000000040300003900000266040000410000000705000029000006910000013d0000025e0040009c000002970000a13d000005810000013d0002000000010355000000000201001900000060022002700000022d0020019d0000022d02200197000000400300043d0000001f0420018f000000050520027200000005055002100000056a0000613d0000000006530019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b000005660000c13d000000000004004b000002030000613d000001f70000013d00000009020000290000022d0020009c0000022d0200804100070040002002180000022d0010009c0000022d01008041000000c00110021000000007011001af00000274011001c70000000b0200002908af08a50000040f000000000301001900000060033002700000022d0030019d00020000000103550000000100200190000006940000613d0000000901000029000002750010009c000006b30000413d0000027c0100004100000000001004350000004101000039000000040010043f0000027401000041000008b1000104300000022d03300197000000400200043d0000001f0430018f0000000505300272000005940000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005900000c13d000000000004004b000004060000613d000003c80000013d0000022d0010009c0000022d01008041000000c00110021000000283011001c70000000b0200002908af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000005ac0000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c000005a80000c13d000000000005004b000005bb0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000006a40000613d0000001f01400039000000600110018f00000080021001bf000700000002001d000000400020043f000000200030008c000003db0000413d000000800200043d000000000002004b0000000003000019000000010300c039000000000032004b000003db0000c13d000000000002004b000006f10000c13d0000023e020000410000000704000029000000000024043500000084021001bf00000020030000390000000000320435000000e40210003900000289030000410000000000320435000000c4021000390000028a030000410000000000320435000000a4011000390000002102000039000000000021043500000040014002100000026c011001c7000008b100010430000002480200004100000000002004390000023d01100197000800000001001d000000040010044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b00000009020000290000000a030000290000000b04000029000003db0000613d000000400500043d0000002401500039000000600600003900000000006104350000024a010000410000000001150436000400000001001d00000004015000390000000000210435000000640150003900000000003104350006001f00300193000700000005001d00000084015000390000002002400039000500000002001d0000000102200367000b00050030027a000006100000613d0000000b0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b0000060c0000c13d000000060000006b000006210000613d0000000b030000290000000503300210000000000232034f000000000331001900000006040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000a011000290000000000010435000000070100002900000044011000390000000002000411000000000021043500000000010004140000000802000029000000040020008c000006430000613d0000000a020000290000001f022000390000028f022001970000024b0020009c0000024b02008041000000600220021000000007030000290000022d0030009c0000022d030080410000004003300210000000000232019f0000022d0010009c0000022d01008041000000c001100210000000000112019f0000024c0110009a000000080200002908af08a50000040f000000000301001900000060033002700000022d0030019d00020000000103550000000100200190000007ef0000613d0000000701000029000002420010009c000005810000213d0000000703000029000000400030043f00000040013000390000000a020000290000000000210435000000400100003900000000001304350000006001300039000000050200002900000001022003670000000b0000006b0000065b0000613d0000000b0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000006570000c13d000000060000006b0000066c0000613d0000000b030000290000000503300210000000000232034f000000000331001900000006040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000a0110002900000000000104350000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000040200002900000000001204350000000a010000290000001f011000390000028f011001970000024f0010009c0000024f01008041000000600110021000000007020000290000022d0020009c0000022d020080410000004002200210000000000121019f00000000020004140000022d0020009c0000022d02008041000000c002200210000000000121019f000002500110009a0000800d0200003900000004030000390000025104000041000000080500002900000009060000290000000007000411000000420000013d0000022d03300197000000400200043d0000001f0430018f0000000505300272000006a10000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000069d0000c13d000000000004004b000004060000613d000003c80000013d000000400200043d0000001f0430018f00000005053002720000000505500210000006b00000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006ac0000c13d000000000004004b000003fa0000c13d000004060000013d0000000902000029000000400020043f0000027601000041000000000012043500000000010004140000022d0010009c0000022d01008041000000c00110021000000007011001af00000277011001c70000000b0200002908af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a000029000006cf0000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b000006cb0000c13d000000000005004b000006de0000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000004820000c13d000000400200043d0000001f0430018f0000000505300272000006ee0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006ea0000c13d000000000004004b000004060000613d000003c80000013d000002840200004100000007030000290000000002230436000600000002001d00000000020004140000000b03000029000000040030008c000007800000c13d0000000702100029000600000002001d000000400020043f0000000a040000290000000906000029000000080500002900000007020000290000000002020433000400000002001d0000009802000039000000000202041a000002850300004100000006070000290000000003370436000100000003001d00000004037001bf0000000000430435000000240370003900000040040000390000000000430435000000440370003900000000006304350008001f006001930000006404700039000300200050003d000000010300036700000003053003600000000506600272000200000006001d00070005006002180000071f0000613d0000000706400029000000000705034f0000000008040019000000007907043c0000000008980436000000000068004b0000071b0000c13d0000023d02200197000000080000006b0000072f0000613d0000000705500360000000070640002900000008070000290000000307700210000000000806043300000000087801cf000000000878022f000000000505043b0000010007700089000000000575022f00000000057501cf000000000585019f00000000005604350000000905000029000000000454001900000000000404350000001f045000390005028f0040019b0000000004000414000000040020008c000007b70000c13d0000000601100029000000400010043f000000060200002900000000050204330000004002100039000000090400002900000000004204350000004002000039000000000221043600000003043003600000006003100039000000020000006b0000074b0000613d0000000706300029000000000704034f0000000008030019000000007907043c0000000008980436000000000068004b000007470000c13d000000080000006b0000075a0000613d0000000704400360000000070630002900000008070000290000000307700210000000000806043300000000087801cf000000000878022f000000000404043b0000010007700089000000000474022f00000000047401cf000000000484019f00000000004604350000000903300029000000000003043500000004030000290000000000320435000000400110021000000005020000290000024f0020009c0000024f020080410000006002200210000000000112019f00000000020004140000022d0020009c0000022d02008041000000c002200210000000000121019f000002500110009a0000800d02000039000000040300003900000288040000410000000b060000290000000a07000029000000420000013d0000022d03300197000000400200043d0000001f0430018f000000050530027200000005055002100000077d0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007790000c13d000000000004004b000004060000613d000003fa0000013d000000070100002900000040011002100000022d0020009c0000022d02008041000000c002200210000000000112019f00000277011001c70000000b0200002908af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a000029000007990000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000007950000c13d000000000005004b000007a80000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000007ff0000613d0000001f01400039000000600110018f0000000702100029000600000002001d000000400020043f000000200030008c0000000a0400002900000009060000290000000805000029000003db0000413d000006ff0000013d000000060100002900000040011002100000000503000029000002860030009c00000286030080410000006003300210000000000113019f0000022d0040009c0000022d04008041000000c003400210000000000131019f000002870110009a08af08a50000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010a000029000007d40000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000007d00000c13d000000000005004b000007e30000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000008800000613d0000001f01400039000000600110018f0000000601100029000000400010043f000000200030008c000003db0000413d0000000103000367000007390000013d0000022d03300197000000400200043d0000001f0430018f00000005053002720000000505500210000007fc0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007f80000c13d000000000004004b000004060000613d000003fa0000013d000000400200043d0000001f0430018f000000050530027200000005055002100000080b0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008070000c13d000000000004004b000004060000613d000003fa0000013d00000268011001c700008009020000390000000003000416000000000500001908af08a50000040f000a00000002001d000200000001035500000060011002700000022d0010019d0000022d03100198000008420000613d000000400100043d0000001f023000390000028f022001970000003f022000390000028f042001970000000002140019000000000042004b00000000040000190000000104004039000002420020009c000005810000213d0000000100400190000005810000c13d000000400020043f0000001f0230018f0000000001310436000000020400036700000005033002720000000503300210000008340000613d0000000005310019000000000604034f0000000007010019000000006806043c0000000007870436000000000057004b000008300000c13d000000000002004b000008420000613d000000000434034f00000000013100190000000302200210000000000301043300000000032301cf000000000323022f000000000404043b0000010002200089000000000424022f00000000022401cf000000000232019f00000000002104350000000a0100002900000001001001900000086f0000613d000000400200043d0000000001000416000a00000002001d0000000001120436000900000001001d0000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000090200002900000000001204350000000a010000290000022d0010009c0000022d01008041000000400110021000000000020004140000022d0020009c0000022d02008041000000c002200210000000000112019f0000027a011001c70000800d0200003900000003030000390000027b040000410000000b05000029000000000600041108af08a50000040f0000000100200190000003db0000613d0000000101000039000000000011041b0000000001000019000008b00001042e000000000001042f000000400100043d00000044021000390000027903000041000000000032043500000024021000390000000e0300003900000000003204350000023e0200004100000000002104350000000402100039000000200300003900000000003204350000022d0010009c0000022d01008041000000400110021000000253011001c7000008b100010430000000400200043d0000001f0430018f00000005053002720000088c0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008880000c13d000000000004004b000003c80000c13d000004060000013d0000023d061001970000006501000039000000000201041a0000026703200197000000000363019f000000000031041b00000000010004140000023d052001970000022d0010009c0000022d01008041000000c00110021000000268011001c70000800d020000390000000303000039000002690400004108af08a50000040f0000000100200190000008a20000613d000000000001042d0000000001000019000008b100010430000000000001042f000008a8002104210000000102000039000000000001042d0000000002000019000000000001042d000008ad002104230000000102000039000000000001042d0000000002000019000000000001042d000008af00000432000008b00001042e000008b1000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000008da5cb5a00000000000000000000000000000000000000000000000000000000da8bf5a500000000000000000000000000000000000000000000000000000000da8bf5a600000000000000000000000000000000000000000000000000000000e86938e100000000000000000000000000000000000000000000000000000000f2fde38b000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000099ba99bd00000000000000000000000000000000000000000000000000000000d56d229d00000000000000000000000000000000000000000000000000000000398f9de400000000000000000000000000000000000000000000000000000000398f9de500000000000000000000000000000000000000000000000000000000485cc95500000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000002630c12f0000000000000000000000000000000000000000000000000000000035aef8fc000000000000000000000000ffffffffffffffffffffffffffffffffffffffff08c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff6d3dbe7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000080000000000000000001000087bd2009cf1bb167c807096c445d8276cc341f403b41c9650f726e4a3f9c4d535bdea7cd8a978f128b93471df48c7dbab89d703809115bdc118c235bfd02000000000000000000000000000000000000840000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000007bb7c0d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7bffffffffffffffffffffffffffffffffffffff7c000000000000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff9ffdffffffffffffffffffffffffffffffffffffa000000000000000000000000077d6b9f0192e2433b5dd096ea593a82aa04204683757437da108e37959cff9c9506963747572655265717565737420646f6573206e6f7420657869737400000000000000000000000000000000000000000000640000000000000000000000000100008d7479837ee722f16eb77463225d6f81b9742abe6a61255863b0529850020000000000000000000000000000000000008400000080000000000000000076d8160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5bffffffffffffffffffffffffffffffffffffff5c00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5ffdffffffffffffffffffffffffffffffffffff60000000000000000000000000ca8986794c4f31f610829437f668ed7cc4f46bcf078e9feb87962398f84440ce00000000000000000000000000000000000000200000008000000000000000008622a68900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7b5069637475726552657175657374206861732065787069726564000000000000010000ef41c28e3d268fee2e7bc1984679d30053332a8bb2534460470afff8227a5f022a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff3bffffffffffffffffffffffffffffffffffffff3c00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7ffdffffffffffffffffffffffffffffffffffff800000000000000000000000008065dc333a13520f3cdcebe527dd2495f2ec79d510609a240744a58e0215775cffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c7265610000000000000000000000000000000000000084000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000002000000000000000000000000000000000000200000000000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986e697469616c697a696e67000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069fc504655000000000000000000000000000000000000000000000000000000002e84571400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000100000000000000008dc45d9a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000100000000000000000000000000000000000000005061796d656e74206661696c65640000000000000000000000000000000000000200000000000000000000000000000000000040000000000000000000000000b6f341a65eb19a9f00c69fc73ab895c20d60a9c6718e33e85d576781626ebad04e487b7100000000000000000000000000000000000000000000000000000000b99e2ab70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000005265656e7472616e637947756172643a207265656e7472616e742063616c6c0000000000000000000000000000000000000000640000008000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657290118fb4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000800000000000000000a035b1fe00000000000000000000000000000000000000000000000000000000eacabe140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff9bffffffffffffffffffffffffffffffffffffff9c0000000000000000000000008933731037817126d1157966ae367e45654450b583b0884fddbc423d9a2b979864000000000000000000000000000000000000000000000000000000000000005375626d697373696f6e20686173206e6f74206265656e207075726368617365496e76616c6964207375626d697373696f6e2061646472657373000000000000496e76616c696420707572636861736572206164647265737300000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06459fd6b4ca91da6ddb11a0ed46f1cb8fc27859e8996e14eedad8a73ce0b08bc", + "deployedBytecode": "0x0003000000000002000d000000000002000000000301001900000060033002700000022d03300197000200000031035500010000000103550000008004000039000000400040043f00000001002001900000001e0000c13d000000040030008c000003db0000413d000000000201043b000000e0022002700000022f0020009c000000260000a13d000002300020009c000000470000213d000002340020009c0000009d0000613d000002350020009c000000a20000613d000002360020009c000003db0000c13d0000000001000416000000000001004b000003db0000c13d0000009801000039000001610000013d0000000001000416000000000001004b000003db0000c13d0000002001000039000001000010044300000120000004430000022e01000041000008b00001042e000002370020009c0000006a0000a13d000002380020009c000000c80000613d000002390020009c000000dc0000613d0000023a0020009c000003db0000c13d0000000001000416000000000001004b000003db0000c13d0000006501000039000000000201041a0000023d052001970000000003000411000000000035004b000001660000c13d0000026702200197000000000021041b00000000010004140000022d0010009c0000022d01008041000000c00110021000000268011001c70000800d0200003900000003030000390000026904000041000000000600001908af08a50000040f0000000100200190000003db0000613d0000000001000019000008b00001042e000002310020009c000001060000613d000002320020009c0000013a0000613d000002330020009c000003db0000c13d000000240030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000401100370000000000101043b0000023d0010009c000003db0000213d0000006502000039000000000202041a0000023d022001970000000003000411000000000032004b000001660000c13d000000000001004b000001d50000c13d0000023e01000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000023f01000041000000c40010043f0000024001000041000000e40010043f0000024101000041000008b1000104300000023b0020009c0000015d0000613d0000023c0020009c000003db0000c13d000000640030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000502043b0000023d0050009c000003db0000213d0000002402100370000000000602043b0000023d0060009c000003db0000213d0000004402100370000000000202043b000002420020009c000003db0000213d0000002304200039000000000034004b000003db0000813d0000000407200039000000000171034f000000000401043b000002420040009c000003db0000213d00000000014200190000002401100039000000000031004b000003db0000213d0000006501000039000000000101041a0000023d011001970000000002000411000000000021004b000001660000c13d000000000005004b0000042c0000c13d0000023e01000041000000800010043f0000002001000039000000840010043f0000001901000039000000a40010043f0000028c01000041000000c40010043f0000028001000041000008b1000104300000000001000416000000000001004b000003db0000c13d0000006501000039000001610000013d000000640030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000202043b0000023d0020009c000003db0000213d0000002404100370000000000504043b000002420050009c000003db0000213d0000002304500039000000000034004b000003db0000813d0000000407500039000000000471034f000000000604043b000002420060009c000003db0000213d00000000046500190000002404400039000000000034004b000003db0000213d0000004401100370000000000101043b000800000001001d0000025d01000041000000800010043f0000000001000414000000040020008c0000025e0000c13d0000000003000031000000200030008c000000200400003900000000040340190000028b0000013d000000240030008c000003db0000413d0000000401100370000000000201043b0000023d0020009c000003db0000213d0000000103000039000000000103041a000000020010008c0000016f0000c13d0000023e01000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f0000027f01000041000000c40010043f0000028001000041000008b100010430000000440030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000302043b0000023d0030009c000003db0000213d0000002401100370000000000401043b0000023d0040009c000003db0000213d00000000020004150000000d0220008a0000000502200210000000000500041a0000ff0001500190000b00000003001d000a00000004001d0000017d0000c13d00000000020004150000000c0220008a0000000502200210000000ff005001900000017d0000c13d0000026d0150019700000101011001bf0000000002000019000000000010041b0000ff0000100190000001a10000c13d000000400100043d00000064021000390000027003000041000000000032043500000044021000390000027103000041000000000032043500000024021000390000002b03000039000002530000013d000000640030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000202043b000002420020009c000003db0000213d0000002304200039000000000034004b000003db0000813d0000000405200039000000000451034f000000000404043b000002420040009c000003db0000213d00000000024200190000002402200039000000000032004b000003db0000213d000a00000005001d000b00000004001d0000004402100370000000000202043b000800000002001d0000002401100370000000000101043b000900000001001d0000025401000041000000a40010043f00000000010004140000024602000041000000800020043f000000840000043f0000006002000039000000c40020043f000000e40000043f0000022d0010009c0000022d01008041000000c00110021000000255011001c7000080060200003908af08a50000040f0000000100200190000001e30000613d000000000101043b000000000001004b000002b60000c13d00000002010003670000000002000031000001e80000013d000000440030008c000003db0000413d0000000002000416000000000002004b000003db0000c13d0000000402100370000000000202043b0000023d0020009c000003db0000213d0000002404100370000000000504043b000002420050009c000003db0000213d0000002304500039000000000034004b000003db0000813d0000000407500039000000000171034f000000000601043b000002420060009c000003db0000213d00000000016500190000002401100039000000000031004b000003db0000213d0000024301000041000000800010043f0000000001000414000000040020008c0000036e0000c13d0000000003000031000000200030008c000000200400003900000000040340190000039b0000013d0000000001000416000000000001004b000003db0000c13d0000009701000039000000000101041a0000023d01100197000000800010043f0000025c01000041000008b00001042e0000023e01000041000000800010043f0000002001000039000000840010043f000000a40010043f0000028101000041000000c40010043f0000028001000041000008b1000104300000000201000039000000000013041b000000000002004b000001d80000c13d0000023e01000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f0000028b01000041000000c40010043f0000028001000041000008b100010430000900000002001d000700000001001d000800000005001d000002480100004100000000001004390000000001000410000000040010044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b000002470000c13d0000000805000029000000ff0150018f000000010010008c0000000001000019000000010100603900000009020000290000000502200270000000000201001f0000024a0000c13d000000070000006b000000f60000613d0000028d01500197000000010200003900000001011001bf000000000010041b0000ff0000100190000000fc0000613d000900000002001d00000000010004110000023d061001970000006501000039000000000201041a0000026703200197000000000363019f000000000031041b00000000010004140000023d052001970000022d0010009c0000022d01008041000000c00110021000000268011001c70000800d020000390000000303000039000002690400004108af08a50000040f0000000a040000290000000b030000290000000100200190000003db0000613d0000009701000039000000000201041a0000026702200197000000000232019f000000000021041b0000009801000039000000000201041a0000026702200197000000000242019f000000000021041b000000090000006b000000450000c13d000000000200041a0000028e01200197000000000010041b0000000103000039000000400100043d00000000003104350000022d0010009c0000022d01008041000000400110021000000000020004140000022d0020009c0000022d02008041000000c002200210000000000112019f0000026e011001c70000800d020000390000026f04000041000000420000013d08af088f0000040f0000000001000019000008b00001042e000a00000003001d0000027201000041000000800010043f0000000001000414000000040020008c0000020b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000002340000013d0002000000010355000000000201001900000060022002700000022d0020019d0000022d02200197000000400300043d0000001f0420018f0000000505200272000001f40000613d00000005065002100000000006630019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b000001f00000c13d000000000004004b000002030000613d0000000505500210000000000151034f00000000055300190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000022d0020009c0000022d0200804100000060012002100000022d0030009c0000022d030080410000004002300210000000000112019f000008b1000104300000022d0010009c0000022d01008041000000c00110021000000244011001c7000b00000002001d08af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000002200000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c0000021c0000c13d000000000005004b0000022f0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000003ba0000613d0000000b020000290000001f01400039000000600510018f00000080015001bf000000400010043f000000200030008c000003db0000413d0000000006000416000000800300043d000000000036004b000003ca0000813d0000027d04000041000000000041043500000084045001bf0000000000340435000000a402500039000000000062043500000040011002100000027e011001c7000008b10001043000000009010000290000000501100270000000000100001f000000400100043d00000064021000390000026a03000041000000000032043500000044021000390000026b03000041000000000032043500000024021000390000002e0300003900000000003204350000023e0200004100000000002104350000000402100039000000200300003900000000003204350000022d0010009c0000022d0100804100000040011002100000026c011001c7000008b100010430000b00000007001d000a00000006001d0000022d0010009c0000022d01008041000000c00110021000000244011001c7000900000002001d08af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000002750000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c000002710000c13d000000000005004b000002840000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000200000001035500000001002001900000000b07000029000003dd0000613d00000009020000290000000a060000290000001f01400039000000600110018f00000080041001bf000000400040043f000000200030008c000003db0000413d000b00000007001d000a00000006001d000900000002001d000000800100043d000000000001004b0000040c0000c13d00000024014000390000026003000041000000000031043500000044014000390000000003000414000000600200003900000000002104350000024601000041000000000014043500000064014000390000000000010435000000040140003900000000000104350000022d0040009c0000022d0400804100000040014002100000022d0030009c0000022d03008041000000c002300210000000000121019f00000247011001c7000080060200003908af08a50000040f00000001002001900000043f0000613d000000000101043b000000000001004b000004990000c13d00000002010003670000000002000031000004440000013d000002480200004100000000002004390000023d01100197000700000001001d000000040010044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b0000000b030000290000000a05000029000003db0000613d000000400200043d00000256010000410000000001120436000400000001001d000000040120003900000080040000390000000000410435000000840120003900000000003104350000001f0730018f000600000002001d000000a4012000390000002002500039000300000002001d00000001022003670000000508300272000002e20000613d00000005038002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000002de0000c13d000000000007004b000002f10000613d0000000503800210000000000232034f00000000033100190000000304700210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f0000000000230435000200000008001d000500000007001d0000000b030000290000000001310019000000000001043500000006040000290000006401400039000000080200002900000000002104350000002401400039000000090200002900000000002104350000004401400039000000000200041100000000002104350000001f01300039000a028f0010019b00000000010004140000000702000029000000040020008c0000031d0000613d0000022d0040009c0000022d02000041000000000204401900000040022002100000000a03000029000002570030009c00000257030080410000006003300210000000000223019f0000022d0010009c0000022d01008041000000c001100210000000000112019f000002580110009a000000070200002908af08a50000040f0000000604000029000000000301001900000060033002700000022d0030019d00020000000103550000000100200190000005870000613d000002420040009c000005810000213d0000000603000029000000400030043f00000080013000390000000b02000029000000000021043500000080010000390000000000130435000000a001300039000000030200002900000001022003670000000203000029000000000003004b0000000503300210000003340000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b000003300000c13d000000050000006b000003430000613d000000000232034f000000000331001900000005040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000b0110002900000000000104350000000901000029000000040200002900000000001204350000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b0000000604000029000000600240003900000008030000290000000000320435000000400240003900000000001204350000022d0040009c0000022d0400804100000040014002100000000a02000029000002590020009c00000259020080410000006002200210000000000112019f00000000020004140000022d0020009c0000022d02008041000000c002200210000000000121019f0000025a0110009a0000800d0200003900000003030000390000025b0400004100000007050000290000000006000411000000420000013d000b00000007001d000a00000006001d0000022d0010009c0000022d01008041000000c00110021000000244011001c7000900000002001d08af08aa0000040f0000008009000039000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000003850000613d000000000701034f000000007807043c0000000009890436000000a00090008c000003810000c13d000000000005004b000003940000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f000200000001035500000001002001900000000b07000029000003ec0000613d00000009020000290000000a060000290000001f01400039000000600110018f00000080081001bf000000400080043f000000200030008c000003db0000413d000000800300043d000000000003004b0000000004000019000000010400c039000000000043004b000003db0000c13d000b00000007001d000a00000006001d000900000002001d000000a405100039000000000003004b00000084061001bf000000c4041000390000004003800210000004530000c13d0000023e010000410000000000180435000000200100003900000000001604350000001d0100003900000000001504350000025201000041000000000014043500000253013001c7000008b100010430000000400200043d0000001f0430018f0000000505300272000003c60000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003c20000c13d000000000004004b000004060000613d0000000505500210000003fa0000013d00000248010000410000000000100439000b00000002001d000000040020044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b0000000b020000290000046c0000c13d0000000001000019000008b100010430000000400200043d0000001f0430018f00000005053002720000000505500210000003e90000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003e50000c13d000000000004004b000004060000613d000003fa0000013d000000400200043d0000001f0430018f00000005053002720000000505500210000003f80000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000003f40000c13d000000000004004b000004060000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000022d0020009c0000022d020080410000004002200210000000000112019f000008b100010430000700000001001d0000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000400400043d000000000101043b000000070010006c000005560000a13d00000044014000390000025f03000041000000000031043500000024014000390000001a0300003900000000003104350000023e0100004100000000001404350000000401400039000000200300003900000000003104350000022d0040009c0000022d04008041000000400140021000000253011001c7000008b100010430000800000007001d000900000004001d000a00000005001d000b00000006001d000000000006004b000001730000613d0000028201000041000000800010043f0000000a01000029000000840010043f00000000010004140000000b02000029000000040020008c000005970000c13d0000000003000031000000200030008c00000020040000390000000004034019000005bf0000013d0002000000010355000000000201001900000060022002700000022d0020019d0000022d02200197000000400300043d0000001f0420018f0000000505200272000004500000613d00000005065002100000000006630019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b0000044c0000c13d000000000004004b000001f60000c13d000002030000013d00000245070000410000000000750435000000000500041400000246070000410000000000780435000000000006043500000060020000390000000000240435000000e40110003900000000000104350000022d0050009c0000022d05008041000000c001500210000000000113019f00000247011001c7000080060200003908af08a50000040f0000000100200190000005590000613d000000000101043b000000000001004b000005e00000c13d000000020100036700000000020000310000055e0000013d000000400300043d00000273010000410000000001130436000800000001001d000900000003001d0000000401300039000000000300041100000000003104350000000001000414000000040020008c0000056d0000c13d0000000901000029000002420010009c000005810000213d0000000902000029000000400020043f000002760100004100000000001204350000000003000031000000200030008c000000200400003900000000040340190000001f01400039000000600110018f0000000901100029000002420010009c000005810000213d000000400010043f000000200030008c000003db0000413d00000009020000290000000004020433000002780040009c000003db0000813d0000000002000414000000040040008c0000081a0000613d0000022d0020009c0000022d02008041000000c0012002100000000002000416000000000002004b0000080e0000c13d0000000002040019000008120000013d0000009702000039000000000202041a000600000002001d000002480200004100000000002004390000023d01100197000700000001001d000000040010044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b00000009030000290000000a040000290000000b05000029000003db0000613d000000400600043d0000002401600039000000a002000039000000000021043500000261010000410000000001160436000300000001001d00000004016000390000000000310435000000a40160003900000000004104350004001f00400193000500000006001d000000c4016000390000002002500039000200000002001d0000000102200367000b00050040027a000004cc0000613d0000000b0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000004c80000c13d00000006030000290000023d03300197000000040000006b000004df0000613d0000000b040000290000000504400210000000000242034f000000000441001900000004050000290000000305500210000000000604043300000000065601cf000000000656022f000000000202043b0000010005500089000000000252022f00000000025201cf000000000262019f00000000002404350000000a01100029000000000001043500000005040000290000008401400039000000000031043500000044014000390000000802000029000000000021043500000064014000390000000002000411000000000021043500000000010004140000000702000029000000040020008c000005060000613d0000000a020000290000001f022000390000028f02200197000002620020009c0000026202008041000000600220021000000005030000290000022d0030009c0000022d030080410000004003300210000000000232019f0000022d0010009c0000022d01008041000000c001100210000000000112019f000002630110009a000000070200002908af08a50000040f000000000301001900000060033002700000022d0030019d00020000000103550000000100200190000007700000613d0000000501000029000002420010009c000005810000213d0000000503000029000000400030043f00000060013000390000000a020000290000000000210435000000600100003900000000001304350000008001300039000000020200002900000001022003670000000b03000029000000000003004b00000005033002100000051e0000613d0000000004310019000000000502034f0000000006010019000000005705043c0000000006760436000000000046004b0000051a0000c13d000000040000006b0000052d0000613d000000000232034f000000000331001900000004040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000a0110002900000000000104350000000801000029000000030200002900000000001204350000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b0000000503000029000000400230003900000000001204350000000a010000290000001f011000390000028f01100197000002640010009c000002640100804100000060011002100000022d0030009c0000022d030080410000004002300210000000000121019f00000000020004140000022d0020009c0000022d02008041000000c002200210000000000121019f000002650110009a0000800d02000039000000040300003900000266040000410000000705000029000006910000013d0000025e0040009c000002970000a13d000005810000013d0002000000010355000000000201001900000060022002700000022d0020019d0000022d02200197000000400300043d0000001f0420018f000000050520027200000005055002100000056a0000613d0000000006530019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b000005660000c13d000000000004004b000002030000613d000001f70000013d00000009020000290000022d0020009c0000022d0200804100070040002002180000022d0010009c0000022d01008041000000c00110021000000007011001af00000274011001c70000000b0200002908af08a50000040f000000000301001900000060033002700000022d0030019d00020000000103550000000100200190000006940000613d0000000901000029000002750010009c000006b30000413d0000027c0100004100000000001004350000004101000039000000040010043f0000027401000041000008b1000104300000022d03300197000000400200043d0000001f0430018f0000000505300272000005940000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000005900000c13d000000000004004b000004060000613d000003c80000013d0000022d0010009c0000022d01008041000000c00110021000000283011001c70000000b0200002908af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000005ac0000613d0000008007000039000000000801034f000000008908043c0000000007970436000000a00070008c000005a80000c13d000000000005004b000005bb0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000006a40000613d0000001f01400039000000600110018f00000080021001bf000700000002001d000000400020043f000000200030008c000003db0000413d000000800200043d000000000002004b0000000003000019000000010300c039000000000032004b000003db0000c13d000000000002004b000006f10000c13d0000023e020000410000000704000029000000000024043500000084021001bf00000020030000390000000000320435000000e40210003900000289030000410000000000320435000000c4021000390000028a030000410000000000320435000000a4011000390000002102000039000000000021043500000040014002100000026c011001c7000008b100010430000002480200004100000000002004390000023d01100197000800000001001d000000040010044300000000010004140000022d0010009c0000022d01008041000000c00110021000000249011001c7000080020200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000000001004b00000009020000290000000a030000290000000b04000029000003db0000613d000000400500043d0000002401500039000000600600003900000000006104350000024a010000410000000001150436000400000001001d00000004015000390000000000210435000000640150003900000000003104350006001f00300193000700000005001d00000084015000390000002002400039000500000002001d0000000102200367000b00050030027a000006100000613d0000000b0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b0000060c0000c13d000000060000006b000006210000613d0000000b030000290000000503300210000000000232034f000000000331001900000006040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000a011000290000000000010435000000070100002900000044011000390000000002000411000000000021043500000000010004140000000802000029000000040020008c000006430000613d0000000a020000290000001f022000390000028f022001970000024b0020009c0000024b02008041000000600220021000000007030000290000022d0030009c0000022d030080410000004003300210000000000232019f0000022d0010009c0000022d01008041000000c001100210000000000112019f0000024c0110009a000000080200002908af08a50000040f000000000301001900000060033002700000022d0030019d00020000000103550000000100200190000007ef0000613d0000000701000029000002420010009c000005810000213d0000000703000029000000400030043f00000040013000390000000a020000290000000000210435000000400100003900000000001304350000006001300039000000050200002900000001022003670000000b0000006b0000065b0000613d0000000b0300002900000005033002100000000003310019000000000402034f0000000005010019000000004604043c0000000005650436000000000035004b000006570000c13d000000060000006b0000066c0000613d0000000b030000290000000503300210000000000232034f000000000331001900000006040000290000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f00000000002304350000000a0110002900000000000104350000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000040200002900000000001204350000000a010000290000001f011000390000028f011001970000024f0010009c0000024f01008041000000600110021000000007020000290000022d0020009c0000022d020080410000004002200210000000000121019f00000000020004140000022d0020009c0000022d02008041000000c002200210000000000121019f000002500110009a0000800d0200003900000004030000390000025104000041000000080500002900000009060000290000000007000411000000420000013d0000022d03300197000000400200043d0000001f0430018f0000000505300272000006a10000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000069d0000c13d000000000004004b000004060000613d000003c80000013d000000400200043d0000001f0430018f00000005053002720000000505500210000006b00000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006ac0000c13d000000000004004b000003fa0000c13d000004060000013d0000000902000029000000400020043f0000027601000041000000000012043500000000010004140000022d0010009c0000022d01008041000000c00110021000000007011001af00000277011001c70000000b0200002908af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000080a000029000006cf0000613d000000000701034f0000000908000029000000007907043c00000000089804360000000000a8004b000006cb0000c13d000000000005004b000006de0000613d0000000506600210000000000761034f00000009066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000004820000c13d000000400200043d0000001f0430018f0000000505300272000006ee0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006ea0000c13d000000000004004b000004060000613d000003c80000013d000002840200004100000007030000290000000002230436000600000002001d00000000020004140000000b03000029000000040030008c000007800000c13d0000000702100029000600000002001d000000400020043f0000000a040000290000000906000029000000080500002900000007020000290000000002020433000400000002001d0000009802000039000000000202041a000002850300004100000006070000290000000003370436000100000003001d00000004037001bf0000000000430435000000240370003900000040040000390000000000430435000000440370003900000000006304350008001f006001930000006404700039000300200050003d000000010300036700000003053003600000000506600272000200000006001d00070005006002180000071f0000613d0000000706400029000000000705034f0000000008040019000000007907043c0000000008980436000000000068004b0000071b0000c13d0000023d02200197000000080000006b0000072f0000613d0000000705500360000000070640002900000008070000290000000307700210000000000806043300000000087801cf000000000878022f000000000505043b0000010007700089000000000575022f00000000057501cf000000000585019f00000000005604350000000905000029000000000454001900000000000404350000001f045000390005028f0040019b0000000004000414000000040020008c000007b70000c13d0000000601100029000000400010043f000000060200002900000000050204330000004002100039000000090400002900000000004204350000004002000039000000000221043600000003043003600000006003100039000000020000006b0000074b0000613d0000000706300029000000000704034f0000000008030019000000007907043c0000000008980436000000000068004b000007470000c13d000000080000006b0000075a0000613d0000000704400360000000070630002900000008070000290000000307700210000000000806043300000000087801cf000000000878022f000000000404043b0000010007700089000000000474022f00000000047401cf000000000484019f00000000004604350000000903300029000000000003043500000004030000290000000000320435000000400110021000000005020000290000024f0020009c0000024f020080410000006002200210000000000112019f00000000020004140000022d0020009c0000022d02008041000000c002200210000000000121019f000002500110009a0000800d02000039000000040300003900000288040000410000000b060000290000000a07000029000000420000013d0000022d03300197000000400200043d0000001f0430018f000000050530027200000005055002100000077d0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007790000c13d000000000004004b000004060000613d000003fa0000013d000000070100002900000040011002100000022d0020009c0000022d02008041000000c002200210000000000112019f00000277011001c70000000b0200002908af08aa0000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000060a000029000007990000613d000000000701034f0000000708000029000000007907043c00000000089804360000000000a8004b000007950000c13d000000000005004b000007a80000613d0000000506600210000000000761034f00000007066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000007ff0000613d0000001f01400039000000600110018f0000000702100029000600000002001d000000400020043f000000200030008c0000000a0400002900000009060000290000000805000029000003db0000413d000006ff0000013d000000060100002900000040011002100000000503000029000002860030009c00000286030080410000006003300210000000000113019f0000022d0040009c0000022d04008041000000c003400210000000000131019f000002870110009a08af08a50000040f000000000301001900000060033002700000022d03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010a000029000007d40000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000007d00000c13d000000000005004b000007e30000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f00020000000103550000000100200190000008800000613d0000001f01400039000000600110018f0000000601100029000000400010043f000000200030008c000003db0000413d0000000103000367000007390000013d0000022d03300197000000400200043d0000001f0430018f00000005053002720000000505500210000007fc0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000007f80000c13d000000000004004b000004060000613d000003fa0000013d000000400200043d0000001f0430018f000000050530027200000005055002100000080b0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008070000c13d000000000004004b000004060000613d000003fa0000013d00000268011001c700008009020000390000000003000416000000000500001908af08a50000040f000a00000002001d000200000001035500000060011002700000022d0010019d0000022d03100198000008420000613d000000400100043d0000001f023000390000028f022001970000003f022000390000028f042001970000000002140019000000000042004b00000000040000190000000104004039000002420020009c000005810000213d0000000100400190000005810000c13d000000400020043f0000001f0230018f0000000001310436000000020400036700000005033002720000000503300210000008340000613d0000000005310019000000000604034f0000000007010019000000006806043c0000000007870436000000000057004b000008300000c13d000000000002004b000008420000613d000000000434034f00000000013100190000000302200210000000000301043300000000032301cf000000000323022f000000000404043b0000010002200089000000000424022f00000000022401cf000000000232019f00000000002104350000000a0100002900000001001001900000086f0000613d000000400200043d0000000001000416000a00000002001d0000000001120436000900000001001d0000024d01000041000000000010043900000000010004140000022d0010009c0000022d01008041000000c0011002100000024e011001c70000800b0200003908af08aa0000040f00000001002001900000086e0000613d000000000101043b000000090200002900000000001204350000000a010000290000022d0010009c0000022d01008041000000400110021000000000020004140000022d0020009c0000022d02008041000000c002200210000000000112019f0000027a011001c70000800d0200003900000003030000390000027b040000410000000b05000029000000000600041108af08a50000040f0000000100200190000003db0000613d0000000101000039000000000011041b0000000001000019000008b00001042e000000000001042f000000400100043d00000044021000390000027903000041000000000032043500000024021000390000000e0300003900000000003204350000023e0200004100000000002104350000000402100039000000200300003900000000003204350000022d0010009c0000022d01008041000000400110021000000253011001c7000008b100010430000000400200043d0000001f0430018f00000005053002720000088c0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000008880000c13d000000000004004b000003c80000c13d000004060000013d0000023d061001970000006501000039000000000201041a0000026703200197000000000363019f000000000031041b00000000010004140000023d052001970000022d0010009c0000022d01008041000000c00110021000000268011001c70000800d020000390000000303000039000002690400004108af08a50000040f0000000100200190000008a20000613d000000000001042d0000000001000019000008b100010430000000000001042f000008a8002104210000000102000039000000000001042d0000000002000019000000000001042d000008ad002104230000000102000039000000000001042d0000000002000019000000000001042d000008af00000432000008b00001042e000008b1000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000008da5cb5a00000000000000000000000000000000000000000000000000000000da8bf5a500000000000000000000000000000000000000000000000000000000da8bf5a600000000000000000000000000000000000000000000000000000000e86938e100000000000000000000000000000000000000000000000000000000f2fde38b000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000099ba99bd00000000000000000000000000000000000000000000000000000000d56d229d00000000000000000000000000000000000000000000000000000000398f9de400000000000000000000000000000000000000000000000000000000398f9de500000000000000000000000000000000000000000000000000000000485cc95500000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000002630c12f0000000000000000000000000000000000000000000000000000000035aef8fc000000000000000000000000ffffffffffffffffffffffffffffffffffffffff08c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff6d3dbe7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000080000000000000000001000087bd2009cf1bb167c807096c445d8276cc341f403b41c9650f726e4a3f9c4d535bdea7cd8a978f128b93471df48c7dbab89d703809115bdc118c235bfd02000000000000000000000000000000000000840000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000007bb7c0d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7bffffffffffffffffffffffffffffffffffffff7c000000000000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff9ffdffffffffffffffffffffffffffffffffffffa000000000000000000000000077d6b9f0192e2433b5dd096ea593a82aa04204683757437da108e37959cff9c9506963747572655265717565737420646f6573206e6f7420657869737400000000000000000000000000000000000000000000640000000000000000000000000100008d7479837ee722f16eb77463225d6f81b9742abe6a61255863b0529850020000000000000000000000000000000000008400000080000000000000000076d8160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5bffffffffffffffffffffffffffffffffffffff5c00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5ffdffffffffffffffffffffffffffffffffffff60000000000000000000000000ca8986794c4f31f610829437f668ed7cc4f46bcf078e9feb87962398f84440ce00000000000000000000000000000000000000200000008000000000000000008622a68900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7b5069637475726552657175657374206861732065787069726564000000000000010000ef41c28e3d268fee2e7bc1984679d30053332a8bb2534460470afff8227a5f022a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff3bffffffffffffffffffffffffffffffffffffff3c00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7ffdffffffffffffffffffffffffffffffffffff800000000000000000000000008065dc333a13520f3cdcebe527dd2495f2ec79d510609a240744a58e0215775cffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c7265610000000000000000000000000000000000000084000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000002000000000000000000000000000000000000200000000000000000000000007f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986e697469616c697a696e67000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069fc504655000000000000000000000000000000000000000000000000000000002e84571400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000100000000000000008dc45d9a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000100000000000000000000000000000000000000005061796d656e74206661696c65640000000000000000000000000000000000000200000000000000000000000000000000000040000000000000000000000000b6f341a65eb19a9f00c69fc73ab895c20d60a9c6718e33e85d576781626ebad04e487b7100000000000000000000000000000000000000000000000000000000b99e2ab70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000005265656e7472616e637947756172643a207265656e7472616e742063616c6c0000000000000000000000000000000000000000640000008000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657290118fb4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000800000000000000000a035b1fe00000000000000000000000000000000000000000000000000000000eacabe140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff9bffffffffffffffffffffffffffffffffffffff9c0000000000000000000000008933731037817126d1157966ae367e45654450b583b0884fddbc423d9a2b979864000000000000000000000000000000000000000000000000000000000000005375626d697373696f6e20686173206e6f74206265656e207075726368617365496e76616c6964207375626d697373696f6e2061646472657373000000000000496e76616c696420707572636861736572206164647265737300000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06459fd6b4ca91da6ddb11a0ed46f1cb8fc27859e8996e14eedad8a73ce0b08bc", "linkReferences": {}, "deployedLinkReferences": {}, "factoryDeps": { diff --git a/public/artifacts/FixMyPicNFT.json b/public/artifacts/FixMyPicNFT.json new file mode 100644 index 0000000..4cfc710 --- /dev/null +++ b/public/artifacts/FixMyPicNFT.json @@ -0,0 +1,470 @@ +{ + "_format": "hh-zksolc-artifact-1", + "contractName": "FixMyPicNFT", + "sourceName": "contracts/FixMyPicNFT.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_fromTokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_toTokenId", + "type": "uint256" + } + ], + "name": "BatchMetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "MetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_recipient", + "type": "address" + }, + { + "internalType": "string", + "name": "_tokenURI", + "type": "string" + } + ], + "name": "mintNFT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x0002000000000002000e00000000000200010000000103550000008009000039000000400090043f0000000100200190000000330000c13d000000000201001900000060022002700000027b03200197000000040030008c0000069a0000413d000000000201043b000000e0022002700000027d0020009c0000003b0000213d0000028a0020009c000000620000a13d0000028b0020009c000000e50000a13d0000028c0020009c000001950000613d0000028d0020009c000001a40000613d0000028e0020009c0000069a0000c13d0000000001000416000000000001004b0000069a0000c13d000000c901000039000000000201041a00000296052001970000000003000411000000000035004b0000026b0000c13d000002a202200197000000000021041b00000000010004140000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000303000039000002c504000041000000000600001909e809de0000040f00000001002001900000069a0000613d0000000001000019000009e90001042e0000000001000416000000000001004b0000069a0000c13d0000002001000039000001000010044300000120000004430000027c01000041000009e90001042e0000027e0020009c000000860000a13d0000027f0020009c000001060000a13d000002800020009c000001bb0000613d000002810020009c000001dc0000613d000002820020009c0000069a0000c13d000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b000002960010009c0000069a0000213d000000c902000039000000000202041a00000296022001970000000003000411000000000032004b0000026b0000c13d000000000001004b0000035a0000c13d0000029701000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000029801000041000000c40010043f0000029901000041000000e40010043f0000029a01000041000009ea00010430000002910020009c000000950000213d000002940020009c000001330000613d000002950020009c0000069a0000c13d0000000001000416000000000001004b0000069a0000c13d0000006503000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000190000000105002039000000000054004b0000018f0000c13d000000800010043f000000000004004b000002ac0000613d0000000000300435000000000001004b000002a20000613d000002c20200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b0000007d0000413d000003460000013d000002850020009c000000c20000213d000002880020009c000001440000613d000002890020009c0000069a0000c13d0000000001000416000000000001004b0000069a0000c13d000000c901000039000000000101041a0000029601100197000000800010043f000002b501000041000009e90001042e000002920020009c000001780000613d000002930020009c0000069a0000c13d000000440030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000800000002001d000002960020009c0000069a0000213d0000002401100370000000000101043b000700000001001d00000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029601100198000001220000613d000000080010006b0000035d0000c13d000000400100043d0000006402100039000002ce0300004100000000003204350000004402100039000002cf03000041000000000032043500000024021000390000002103000039000003010000013d000002860020009c000001810000613d000002870020009c0000069a0000c13d000000440030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000800000002001d000002960020009c0000069a0000213d0000002401100370000000000201043b000000000002004b0000000001000019000000010100c039000700000002001d000000000012004b0000069a0000c13d0000000002000411000000080020006c0000030c0000c13d0000029701000041000000800010043f0000002001000039000000840010043f0000001901000039000000a40010043f000002b701000041000000c40010043f000002b801000041000009ea000104300000028f0020009c0000022e0000613d000002900020009c0000069a0000c13d0000000001000416000000000001004b0000069a0000c13d000000000103001909e806ae0000040f000700000001001d000600000002001d000800000003001d000000400100043d000500000001001d09e806c00000040f000000050100002900000000000104350000000001000411000000080200002909e807880000040f09e8074d0000040f00000007010000290000000602000029000000080300002909e807f80000040f000000070100002900000006020000290000000803000029000000050400002909e808e10000040f09e808cd0000040f0000000001000019000009e90001042e000002830020009c000002400000613d000002840020009c0000069a0000c13d000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b000800000001001d00000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029600100198000002b20000c13d000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea00010430000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000201043b000002aa002001980000069a0000c13d0000000101000039000002d10020009c000002a40000213d000002d40020009c000000920000613d000002d50020009c000000920000613d000002a80000013d0000000001000416000000000001004b0000069a0000c13d000000000300041a0007ff0000300194000002740000c13d000000ff0130019000000000020000190000000102006039000d00000002001d00000000020004150000000d0220008a0000000502200210000000000001004b000002780000c13d000000000a0004150000000c0aa0008a000000050aa00210000c00010000003d000002bc0130019700000101041001bf000000000040041b000000400300043d000002bd0030009c000004380000813d0000004001300039000000400010043f0000000b010000390000000006130436000002be010000410000000000160435000000400100043d000002bf0010009c000004380000213d0000004002100039000000400020043f00000006020000390000000002210436000002c00500004100000000005204350000ff0000400190000003910000c13d000000400100043d0000006402100039000002c70300004100000000003204350000004402100039000002c803000041000000000032043500000024021000390000002b03000039000003010000013d000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b09e807170000040f0000019d0000013d0000000001000416000000000001004b0000069a0000c13d0000006603000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000190000000105002039000000000552013f00000001005001900000029c0000613d000002b30100004100000000001004350000002201000039000000040010043f000002b401000041000009ea00010430000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b09e807640000040f000000400200043d00000000001204350000027b0020009c0000027b020080410000004001200210000002ae011001c7000009e90001042e000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b000002960010009c0000069a0000213d000000000001004b000002eb0000c13d0000029701000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f000002c901000041000000c40010043f000002ca01000041000000e40010043f0000029a01000041000009ea00010430000000440030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000002960020009c0000069a0000213d0000002401100370000000000101043b000800000001001d000002960010009c0000069a0000213d00000000002004350000006a01000039000000200010043f0000004002000039000000000100001909e809c90000040f00000008020000290000000000200435000000200010043f0000000001000019000000400200003909e809c90000040f000000000101041a000000ff001001900000000001000019000000010100c039000000800010043f000002b501000041000009e90001042e000000440030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000800000002001d000002960020009c0000069a0000213d0000002402100370000000000402043b0000029b0040009c0000069a0000213d0000002302400039000000000032004b0000069a0000813d0000000405400039000000000251034f000000000202043b0000029b0020009c000004380000213d0000001f06200039000002d6066001970000003f06600039000002d6066001970000029c0060009c000004380000213d00000024044000390000008006600039000000400060043f000000800020043f0000000004420019000000000034004b0000069a0000213d0000002003500039000000000131034f0000001f0320018f000000050420027200000005044002100000020c0000613d000000a005000039000000a006400039000000000701034f000000007807043c0000000005850436000000000065004b000002080000c13d000000000003004b0000021a0000613d000000000141034f0000000303300210000000a004400039000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000000a0012000390000000000010435000000c901000039000000000101041a00000296021001970000000001000411000000000012004b000003f50000c13d000600000002001d000000fb01000039000000000201041a000700000002001d000000010220003a000004000000c13d000002b30100004100000000001004350000001101000039000000040010043f000002b401000041000009ea000104300000000001000416000000000001004b0000069a0000c13d000000000103001909e806ae0000040f000800000001001d000700000002001d0000000002030019000600000002001d000000000100041109e807880000040f09e8074d0000040f00000008010000290000000702000029000000060300002909e807f80000040f0000000001000019000009e90001042e000000840030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000800000002001d000002960020009c0000069a0000213d0000002402100370000000000202043b000700000002001d000002960020009c0000069a0000213d0000006402100370000000000402043b0000029b0040009c0000069a0000213d0000002302400039000000000032004b0000069a0000813d0000000402400039000000000221034f000000000202043b0000004401100370000000000101043b000600000001001d000000240140003909e806dd0000040f000500000001001d0000000001000411000000060200002909e807880000040f09e8074d0000040f00000008010000290000000702000029000000060300002909e807f80000040f000000080100002900000007020000290000000603000029000001010000013d0000029701000041000000800010043f0000002001000039000000840010043f000000a40010043f0000029d01000041000000c40010043f000002b801000041000009ea0001043000000000020004150000000e0220008a0000000502200210000e00000000001d000800000002001d000600000003001d000002a50100004100000000001004390000000001000410000000040010044300000000010004140000027b0010009c0000027b01008041000000c001100210000002a6011001c7000080020200003909e809e30000040f0000000100200190000004e20000613d000000000101043b000000000001004b000002f50000c13d0000000603000029000000ff0130018f000000010010008c0000000001000019000000010100603900000008020000290000000502200270000000000201001f000002f80000c13d000000000a0004150000000b0aa0008a000000050aa00210000b00010000003d000000070000006b000001570000613d000002d70130019700000001041001bf000001590000013d000000800010043f000000000004004b000002ac0000613d0000000000300435000000000001004b0000033c0000c13d000000a001000039000003470000013d000002d20020009c000000920000613d000002d30020009c000000920000613d0000000001000019000000800010043f000002b501000041000009e90001042e000002d702200197000000a00020043f000000000001004b000000c001000039000000a001006039000003470000013d000000080100002900000000001004350000009701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a000000010320019000000001062002700000007f0660618f0000001f0060008c00000000040000190000000104002039000000000442013f00000001004001900000018f0000c13d000000400500043d0000000004650436000000000003004b000800000005001d000003b90000613d000600000004001d000700000006001d000000000010043500000000010004140000027b0010009c0000027b01008041000000c001100210000002ac011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d0000000706000029000000000006004b000000000200001900000008050000290000000607000029000003be0000613d000000000101043b00000000020000190000000003270019000000000401041a000000000043043500000001011000390000002002200039000000000062004b000002e30000413d000003be0000013d00000000001004350000006801000039000000200010043f0000004002000039000000000100001909e809c90000040f000000000101041a000000800010043f000002b501000041000009e90001042e00000008010000290000000501100270000000000100001f000000400100043d0000006402100039000002ba0300004100000000003204350000004402100039000002bb03000041000000000032043500000024021000390000002e030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b010080410000004001100210000002b1011001c7000009ea0001043000000000002004350000006a01000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b00000008020000290000000000200435000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a000002d7022001970000000703000029000000000232019f000000000021041b000000400100043d00000000003104350000027b0010009c0000027b01008041000000400110021000000000020004140000027b0020009c0000027b02008041000000c002200210000000000112019f000002ac011001c70000800d020000390000000303000039000002b604000041000000000500041100000008060000290000002e0000013d000002b90200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b0000033e0000413d000000c001300039000000800210008a000000800100003909e806cb0000040f0000002001000039000000400200043d000800000002001d0000000002120436000000800100003909e8069c0000040f000000080200002900000000012100490000027b0010009c0000027b0100804100000060011002100000027b0020009c0000027b020080410000004002200210000000000121019f000009e90001042e09e808ab0000040f0000000001000019000009e90001042e0000000002000411000000000012004b000003ce0000c13d000000070100002900000000001004350000006901000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a000002a20220019700000008022001af000000000021041b000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029605100198000001220000613d00000000010004140000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000403000039000002cd040000410000000806000029000000070700002909e809de0000040f00000001002001900000069a0000613d000000310000013d00000000050304330000029b0050009c000004380000213d0000006504000039000000000804041a000000010080019000000001078002700000007f0770618f0000001f0070008c00000000090000190000000109002039000000000898013f00000001008001900000018f0000c13d00080000000a001d000000200070008c000003b10000413d00000000004004350000001f085000390000000508800270000002c10880009a000000200050008c000002c2080040410000001f077000390000000507700270000002c10770009a000000000078004b000003b10000813d000000000008041b0000000108800039000000000078004b000003ad0000413d0000001f0050008c000004110000a13d0000000000400435000002d6085001980000041c0000c13d0000002007000039000002c206000041000004280000013d000002d7012001970000000000140435000000000006004b000000200200003900000000020060190000002002200039000000000105001909e806cb0000040f000000400100043d000700000001001d09e806c00000040f000000070100002900000000000104350000002001000039000000400200043d000700000002001d0000000002120436000000080100002909e8069c0000040f0000000702000029000003510000013d00000000001004350000006a01000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b00000000020004110000000000200435000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a000000ff00100190000003600000c13d000000400100043d0000006402100039000002cb0300004100000000003204350000004402100039000002cc03000041000000000032043500000024021000390000003d03000039000003010000013d000000400100043d00000044021000390000029d0300004100000000003204350000029702000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000012d0000013d000000000021041b000000400100043d000500000001001d0000029f0010009c000004380000213d000300000009001d00000005020000290000002001200039000400000001001d000000400010043f0000000000020435000000080000006b000004620000c13d000000400100043d0000004402100039000002b203000041000003f80000013d000000000005004b0000000003000019000004150000613d00000000030604330000000306500210000002d80660027f000002d806600167000000000363016f0000000105500210000000000353019f000004340000013d000002c2060000410000002007000039000000010980008a0000000509900270000002c30990009a000000000a370019000000000a0a04330000000000a6041b00000020077000390000000106600039000000000096004b000004210000c13d000000000058004b000004320000813d0000000308500210000000f80880018f000002d80880027f000002d80880016700000000033700190000000003030433000000000383016f000000000036041b000000010350021000000001033001bf000000000034041b00000000040104330000029b0040009c0000043e0000a13d000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea000104300000006603000039000000000603041a000000010060019000000001056002700000007f0550618f0000001f0050008c00000000070000190000000107002039000000000676013f00000001006001900000018f0000c13d000000200050008c0000045a0000413d00000000003004350000001f064000390000000506600270000002c40660009a000000200040008c000002b9060040410000001f055000390000000505500270000002c40550009a000000000056004b0000045a0000813d000000000006041b0000000106600039000000000056004b000004560000413d0000001f0040008c000004e30000a13d0000000000300435000002d606400198000004ee0000c13d0000002005000039000002b902000041000004fa0000013d000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029600100198000005360000c13d000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029600100198000005360000c13d000000080100002900000000001004350000006801000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a0000000102200039000000000021041b000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a000002a2022001970000000806000029000000000262019f000000000021041b00000000010004140000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000403000039000002a4040000410000000005000019000000070700002909e809de0000040f00000001002001900000069a0000613d0000000001000415000200000001001d000002a50100004100000000001004390000000801000029000000040010044300000000010004140000027b0010009c0000027b01008041000000c001100210000002a6011001c7000080020200003909e809e30000040f0000000100200190000004e20000613d000000000101043b000000000001004b0000053d0000c13d000000000100041500000002011000690000000001000002000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029600100198000005bb0000c13d000000400100043d0000006402100039000002af0300004100000000003204350000004402100039000002b003000041000002fe0000013d000000000001042f000000000004004b0000000001000019000004e70000613d00000000010204330000000302400210000002d80220027f000002d802200167000000000121016f0000000102400210000000000121019f000005060000013d000000010560008a000002d6075001970000002005000039000002b902000041000000400770003900000000081500190000000008080433000000000082041b00000001022000390000002005500039000000000075004b000004f30000c13d000000000046004b000005040000813d0000000306400210000000f80660018f000002d80660027f000002d80660016700000000011500190000000001010433000000000161016f000000000012041b000000010140021000000001011001bf000000000013041b000000000100041a0000ff00001001900000016e0000613d00000000010004110000029606100197000000c901000039000000000201041a000002a203200197000000000363019f000000000031041b000000000100041400000296052001970000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000303000039000002c50400004109e809de0000040f00000001002001900000069a0000613d000000080100002900000005011002700000000001010031000000fb02000039000000000012041b000000070000006b000000310000c13d000000000300041a000002d902300197000000000020041b000000400200043d00000000001204350000027b0020009c0000027b02008041000000400120021000000000020004140000027b0020009c0000027b02008041000000c002200210000000000112019f000002ac011001c70000800d020000390000000103000039000002c6040000410000002e0000013d000000400100043d0000004402100039000002a103000041000000000032043500000024021000390000001c03000039000001280000013d000000400300043d000000640130003900000080020000390000000000210435000000440130003900000007020000290000000000210435000002a7010000410000000001130436000100000001001d000000040130003900000006020000290000000000210435000000240130003900000000000104350000000501000029000000000101043300000084023000390000000000120435000600000003001d000000a402300039000000000001004b00000004060000290000055d0000613d000000000300001900000000042300190000000005630019000000000505043300000000005404350000002003300039000000000013004b000005560000413d0000000002210019000000000002043500000000020004140000000803000029000000040030008c0000056b0000c13d00000000050004150000000a0550008a00000005055002100000000003000031000000200030008c00000020040000390000000004034019000005a10000013d0000001f01100039000002d601100197000000a4011000390000027b0010009c0000027b01008041000000600110021000000006030000290000027b0030009c0000027b030080410000004003300210000000000131019f0000027b0020009c0000027b02008041000000c002200210000000000112019f000000080200002909e809de0000040f000000000301001900000060033002700000027b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010a0000290000058c0000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000005880000c13d000000000005004b0000059b0000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000005000415000000090550008a000000050550021000000001002001900000060d0000613d0000001f01400039000000600210018f0000000601200029000000000021004b000000000200001900000001020040390000029b0010009c000004380000213d0000000100200190000004380000c13d000000400010043f000000200030008c0000069a0000413d00000006010000290000000001010433000002aa001001980000069a0000c13d0000000502500270000000000201001f000000000200041500000002022000690000000002000002000002ab01100197000002a70010009c000004ca0000613d000006130000013d000000070100002900000000001004350000009701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000800000001001d000000800100043d000600000001001d0000029b0010009c000004380000213d0000000801000029000000000101041a000000010010019000000001021002700000007f0220618f000500000002001d0000001f0020008c00000000020000190000000102002039000000000121013f00000001001001900000018f0000c13d0000000501000029000000200010008c000005f90000413d0000000801000029000000000010043500000000010004140000027b0010009c0000027b01008041000000c001100210000002ac011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d00000006030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000005010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000005f90000813d000000000002041b0000000102200039000000000012004b000005f50000413d00000006010000290000001f0010008c000006570000a13d0000000801000029000000000010043500000000010004140000027b0010009c0000027b01008041000000c001100210000002ac011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000200200008a0000000602200180000000000101043b000006630000c13d000000a003000039000006710000013d000000000003004b000006230000c13d00000060020000390000000001020433000000000001004b0000064e0000c13d000000400200043d000800000002001d00000297010000410000000000120435000000040120003909e808c00000040f000000080200002900000000012100490000027b0010009c0000027b0100804100000060011002100000027b0020009c0000027b020080410000004002200210000000000121019f000009ea000104300000001f02300039000002a8022001970000003f02200039000002a904200197000000400200043d0000000004420019000000000024004b000000000500001900000001050040390000029b0040009c000004380000213d0000000100500190000004380000c13d000000400040043f0000001f0430018f0000000005320436000300000005001d00000005033002720000063e0000613d000000050530021000000003070000290000000005570019000000000601034f000000006806043c0000000007870436000000000057004b0000063a0000c13d000000000004004b000006100000613d0000000503300210000000000131034f00000003033000290000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000006100000013d00000003020000290000027b0020009c0000027b0200804100000040022002100000027b0010009c0000027b010080410000006001100210000000000121019f000009ea00010430000000060000006b00000000010000190000065b0000613d000000a00100043d00000006040000290000000302400210000002d80220027f000002d802200167000000000121016f0000000102400210000000000121019f0000067e0000013d000000010320008a0000000503300270000000000331001900000020040000390000000103300039000000000504001900000080045000390000000004040433000000000041041b00000020045000390000000101100039000000000031004b000006680000c13d000000a003500039000000060020006c0000067b0000813d00000006020000290000000302200210000000f80220018f000002d80220027f000002d8022001670000000003030433000000000223016f000000000021041b0000000601000029000000010110021000000001011001bf0000000802000029000000000012041b000000400100043d000000070200002900000000002104350000027b0010009c0000027b01008041000000400110021000000000020004140000027b0020009c0000027b02008041000000c002200210000000000112019f000002ac011001c70000800d020000390000000103000039000002ad0400004109e809de0000040f00000001002001900000069a0000613d000000400100043d000000070200002900000000002104350000027b0010009c0000027b010080410000004001100210000002ae011001c7000009e90001042e0000000001000019000009ea0001043000000000430104340000000001320436000000000003004b000006a80000613d000000000200001900000000052100190000000006240019000000000606043300000000006504350000002002200039000000000032004b000006a10000413d000000000231001900000000000204350000001f02300039000002d6022001970000000001210019000000000001042d000002da0010009c000006be0000213d000000630010008c000006be0000a13d00000001030003670000000401300370000000000101043b000002960010009c000006be0000213d0000002402300370000000000202043b000002960020009c000006be0000213d0000004403300370000000000303043b000000000001042d0000000001000019000009ea00010430000002db0010009c000006c50000813d0000002001100039000000400010043f000000000001042d000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea000104300000001f02200039000002d6022001970000000001120019000000000021004b000000000200001900000001020040390000029b0010009c000006d70000213d0000000100200190000006d70000c13d000000400010043f000000000001042d000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea000104300000000004010019000002dc0020009c0000070f0000813d0000001f01200039000002d6011001970000003f01100039000002d605100197000000400100043d0000000005510019000000000015004b000000000600001900000001060040390000029b0050009c0000070f0000213d00000001006001900000070f0000c13d000000400050043f00000000052104360000000006420019000000000036004b000007150000213d0000001f0320018f000000010440036700000005062002720000000506600210000006fe0000613d0000000007650019000000000804034f0000000009050019000000008a08043c0000000009a90436000000000079004b000006fa0000c13d000000000003004b0000070c0000613d000000000464034f00000000066500190000000303300210000000000706043300000000073701cf000000000737022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000373019f000000000036043500000000022500190000000000020435000000000001042d000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea000104300000000001000019000009ea000104300001000000000002000100000001001d00000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000073a0000613d000000000101043b000000000101041a00000296001001980000073c0000613d000000010100002900000000001004350000006901000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000073a0000613d000000000101043b000000000101041a0000029601100197000000000001042d0000000001000019000009ea00010430000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea00010430000000000001004b000007500000613d000000000001042d000000400100043d0000006402100039000002dd0300004100000000003204350000004402100039000002de03000041000000000032043500000024021000390000002d030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b010080410000004001100210000002b1011001c7000009ea0001043000000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007750000613d000000000101043b000000000101041a0000029601100198000007770000613d000000000001042d0000000001000019000009ea00010430000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea000104300002000000000002000200000001001d000100000002001d00000000002004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b000000000101041a0000029601100198000007e70000613d00000002020000290000029602200197000000000012004b000007a10000c13d0000000101000039000000000001042d000200000002001d00000000001004350000006a01000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b00000002020000290000000000200435000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b000000000101041a000000ff01100190000007c00000613d000000000001042d000000010100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b000000000101041a0000029600100198000007e70000613d000000010100002900000000001004350000006901000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b000000000101041a0000029601100197000000020010006c00000000010000190000000101006039000000000001042d0000000001000019000009ea00010430000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea000104300003000000000002000100000002001d000200000001001d000300000003001d00000000003004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000101041a00000296021001980000087c0000613d00000002010000290000029601100197000000000012004b0000088d0000c13d000200000002001d0000000101000029000102960010019c000008970000613d000000030100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000101041a000002960110019800000002020000290000087c0000613d000000000021004b0000088d0000c13d000000030100002900000000001004350000006901000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000201041a000002a202200197000000000021041b000000020100002900000000001004350000006801000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000201041a000000010220008a000000000021041b0000000101000029000000000010043500000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000201041a0000000102200039000000000021041b000000030100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000201041a000002a2022001970000000106000029000000000262019f000000000021041b00000000010004140000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000403000039000002a4040000410000000205000029000000030700002909e809de0000040f00000001002001900000087a0000613d000000000001042d0000000001000019000009ea00010430000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea00010430000000400100043d0000006402100039000002df0300004100000000003204350000004402100039000002e003000041000000000032043500000024021000390000002503000039000008a00000013d000000400100043d0000006402100039000002e10300004100000000003204350000004402100039000002e2030000410000000000320435000000240210003900000024030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b010080410000004001100210000002b1011001c7000009ea000104300000029606100197000000c901000039000000000201041a000002a203200197000000000363019f000000000031041b000000000100041400000296052001970000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000303000039000002c50400004109e809de0000040f0000000100200190000008be0000613d000000000001042d0000000001000019000009ea000104300000006002100039000002e30300004100000000003204350000004002100039000002e4030000410000000000320435000000200210003900000032030000390000000000320435000000200200003900000000002104350000008001100039000000000001042d0001000000000002000000000001004b000008d10000613d000000000001042d000000400200043d000100000002001d00000297010000410000000000120435000000040120003909e808c00000040f000000010200002900000000012100490000027b0010009c0000027b0100804100000060011002100000027b0020009c0000027b020080410000004002200210000000000121019f000009ea000104300006000000000002000300000004001d000200000003001d000100000001001d000002a5010000410000000000100439000400000002001d000000040020044300000000010004140000027b0010009c0000027b01008041000000c001100210000002a6011001c7000080020200003909e809e30000040f0000000100200190000009780000613d000000000101043b000000000001004b000009230000613d000000400a00043d0000006401a00039000000800700003900000000007104350000004401a0003900000002020000290000000000210435000000010100002900000296011001970000002402a000390000000000120435000002a70100004100000000081a04360000000401a0003900000000020004110000000000210435000000030100002900000000230104340000008401a000390000000000310435000000a401a00039000000000003004b000009140000613d000000000400001900000000051400190000000006420019000000000606043300000000006504350000002004400039000000000034004b0000090d0000413d00000000023100190000000000020435000000000400041400000004020000290000029602200197000000040020008c000009250000c13d0000000005000415000000060550008a00000005055002100000000003000031000000200030008c000000200400003900000000040340190000095f0000013d0000000101000039000000000001042d000200000007001d0000001f03300039000002d6033001970000000003a3004900000000011300190000027b0010009c0000027b0100804100000060011002100000027b00a0009c0000027b0300004100000000030a40190000004003300210000000000131019f0000027b0040009c0000027b04008041000000c003400210000000000131019f00040000000a001d000300000008001d09e809de0000040f000000030b000029000000040a000029000000000301001900000060033002700000027b03300197000000200030008c000000200400003900000000040340190000001f0540018f00000005064002720000094a0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000009460000c13d000000000005004b000009590000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000005000415000000050550008a00000005055002100000000100200190000009790000613d0000001f01400039000000600210018f0000000001a20019000000000021004b000000000200001900000001020040390000029b0010009c000009b90000213d0000000100200190000009b90000c13d000000400010043f0000001f0030008c000009760000a13d00000000010a0433000002aa00100198000009760000c13d0000000502500270000000000201001f000002ab01100197000002a70010009c00000000010000190000000101006039000000000001042d0000000001000019000009ea00010430000000000001042f000000000003004b0000097d0000c13d0000006002000039000009a60000013d0000001f02300039000002a8022001970000003f02200039000002a904200197000000400200043d0000000004420019000000000024004b000000000500001900000001050040390000029b0040009c000009b90000213d0000000100500190000009b90000c13d000000400040043f0000001f0430018f0000000005320436000200000005001d00000005033002720000000503300210000009980000613d00000002070000290000000005370019000000000601034f000000006806043c0000000007870436000000000057004b000009940000c13d000000000004004b000009a60000613d000000000131034f00000002033000290000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000000001020433000000000001004b000009bf0000c13d000000400200043d000400000002001d00000297010000410000000000120435000000040120003909e808c00000040f000000040200002900000000012100490000027b0010009c0000027b0100804100000060011002100000027b0020009c0000027b020080410000004002200210000000000121019f000009ea00010430000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea0001043000000002020000290000027b0020009c0000027b0200804100000040022002100000027b0010009c0000027b010080410000006001100210000000000121019f000009ea00010430000000000001042f0000027b0010009c0000027b0100804100000040011002100000027b0020009c0000027b020080410000006002200210000000000112019f00000000020004140000027b0020009c0000027b02008041000000c002200210000000000112019f000002a3011001c7000080100200003909e809e30000040f0000000100200190000009dc0000613d000000000101043b000000000001042d0000000001000019000009ea00010430000009e1002104210000000102000039000000000001042d0000000002000019000000000001042d000009e6002104230000000102000039000000000001042d0000000002000019000000000001042d000009e800000432000009e90001042e000009ea00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000008129fc1b00000000000000000000000000000000000000000000000000000000b88d4fdd00000000000000000000000000000000000000000000000000000000e985e9c400000000000000000000000000000000000000000000000000000000e985e9c500000000000000000000000000000000000000000000000000000000eacabe1400000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000b88d4fde00000000000000000000000000000000000000000000000000000000c87b56dd0000000000000000000000000000000000000000000000000000000095d89b400000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000a22cb465000000000000000000000000000000000000000000000000000000008129fc1c000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000023b872dc000000000000000000000000000000000000000000000000000000006352211d000000000000000000000000000000000000000000000000000000006352211e0000000000000000000000000000000000000000000000000000000070a0823100000000000000000000000000000000000000000000000000000000715018a60000000000000000000000000000000000000000000000000000000023b872dd0000000000000000000000000000000000000000000000000000000042842e0e00000000000000000000000000000000000000000000000000000000081812fb00000000000000000000000000000000000000000000000000000000081812fc00000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000006fdde03000000000000000000000000ffffffffffffffffffffffffffffffffffffffff08c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffff7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffdf02000000000000000000000000000000000000400000000000000000000000004552433732313a20746f6b656e20616c7265616479206d696e74656400000000ffffffffffffffffffffffff00000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000150b7a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000003ffffffe000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000f8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce700000000000000000000000000000000000000200000000000000000000000006578697374656e7420746f6b656e00000000000000000000000000000000000045524337323155524953746f726167653a2055524920736574206f66206e6f6e00000000000000000000000000000000000000840000000000000000000000004552433732313a206d696e7420746f20746865207a65726f20616464726573734e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002000000080000000000000000017307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c314552433732313a20617070726f766520746f2063616c6c657200000000000000000000000000000000000000000000000000006400000080000000000000000046501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c726561ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffffffc04669784d795069634e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf464d504e4654000000000000000000000000000000000000000000000000000070068be6c9c0028fffe980ecf108e970415fa0506dae7db35afbc0eec33958398ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c770068be6c9c0028fffe980ecf108e970415fa0506dae7db35afbc0eec3395838b9afe78647357ada173d02ae61d040305d1415d9afed6b55fd340304ed16bcac8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e07f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986e697469616c697a696e67000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420694552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e657200000000000000000000000000000000000000000000006b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000004552433732313a20617070726f76652063616c6c6572206973206e6f7420746f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92572000000000000000000000000000000000000000000000000000000000000004552433732313a20617070726f76616c20746f2063757272656e74206f776e654552433732313a20696e76616c696420746f6b656e20494400000000000000005b5e139effffffffffffffffffffffffffffffffffffffffffffffffffffffff80ac58cd000000000000000000000000000000000000000000000000000000005b5e139f0000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000004906490600000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffe0000000000000000000000000000000000000000000000001000000000000000072206f7220617070726f766564000000000000000000000000000000000000004552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e656f776e65720000000000000000000000000000000000000000000000000000004552433732313a207472616e736665722066726f6d20696e636f72726563742072657373000000000000000000000000000000000000000000000000000000004552433732313a207472616e7366657220746f20746865207a65726f2061646463656976657220696d706c656d656e74657200000000000000000000000000004552433732313a207472616e7366657220746f206e6f6e2045524337323152650000000000000000000000000000000000000000000000000000000000000000239db66da64eae2ed19adb3064b74f61d55054e9093a8a482baf76e2e308e2f6", + "deployedBytecode": "0x0002000000000002000e00000000000200010000000103550000008009000039000000400090043f0000000100200190000000330000c13d000000000201001900000060022002700000027b03200197000000040030008c0000069a0000413d000000000201043b000000e0022002700000027d0020009c0000003b0000213d0000028a0020009c000000620000a13d0000028b0020009c000000e50000a13d0000028c0020009c000001950000613d0000028d0020009c000001a40000613d0000028e0020009c0000069a0000c13d0000000001000416000000000001004b0000069a0000c13d000000c901000039000000000201041a00000296052001970000000003000411000000000035004b0000026b0000c13d000002a202200197000000000021041b00000000010004140000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000303000039000002c504000041000000000600001909e809de0000040f00000001002001900000069a0000613d0000000001000019000009e90001042e0000000001000416000000000001004b0000069a0000c13d0000002001000039000001000010044300000120000004430000027c01000041000009e90001042e0000027e0020009c000000860000a13d0000027f0020009c000001060000a13d000002800020009c000001bb0000613d000002810020009c000001dc0000613d000002820020009c0000069a0000c13d000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b000002960010009c0000069a0000213d000000c902000039000000000202041a00000296022001970000000003000411000000000032004b0000026b0000c13d000000000001004b0000035a0000c13d0000029701000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000029801000041000000c40010043f0000029901000041000000e40010043f0000029a01000041000009ea00010430000002910020009c000000950000213d000002940020009c000001330000613d000002950020009c0000069a0000c13d0000000001000416000000000001004b0000069a0000c13d0000006503000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000190000000105002039000000000054004b0000018f0000c13d000000800010043f000000000004004b000002ac0000613d0000000000300435000000000001004b000002a20000613d000002c20200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b0000007d0000413d000003460000013d000002850020009c000000c20000213d000002880020009c000001440000613d000002890020009c0000069a0000c13d0000000001000416000000000001004b0000069a0000c13d000000c901000039000000000101041a0000029601100197000000800010043f000002b501000041000009e90001042e000002920020009c000001780000613d000002930020009c0000069a0000c13d000000440030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000800000002001d000002960020009c0000069a0000213d0000002401100370000000000101043b000700000001001d00000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029601100198000001220000613d000000080010006b0000035d0000c13d000000400100043d0000006402100039000002ce0300004100000000003204350000004402100039000002cf03000041000000000032043500000024021000390000002103000039000003010000013d000002860020009c000001810000613d000002870020009c0000069a0000c13d000000440030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000800000002001d000002960020009c0000069a0000213d0000002401100370000000000201043b000000000002004b0000000001000019000000010100c039000700000002001d000000000012004b0000069a0000c13d0000000002000411000000080020006c0000030c0000c13d0000029701000041000000800010043f0000002001000039000000840010043f0000001901000039000000a40010043f000002b701000041000000c40010043f000002b801000041000009ea000104300000028f0020009c0000022e0000613d000002900020009c0000069a0000c13d0000000001000416000000000001004b0000069a0000c13d000000000103001909e806ae0000040f000700000001001d000600000002001d000800000003001d000000400100043d000500000001001d09e806c00000040f000000050100002900000000000104350000000001000411000000080200002909e807880000040f09e8074d0000040f00000007010000290000000602000029000000080300002909e807f80000040f000000070100002900000006020000290000000803000029000000050400002909e808e10000040f09e808cd0000040f0000000001000019000009e90001042e000002830020009c000002400000613d000002840020009c0000069a0000c13d000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b000800000001001d00000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029600100198000002b20000c13d000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea00010430000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000201043b000002aa002001980000069a0000c13d0000000101000039000002d10020009c000002a40000213d000002d40020009c000000920000613d000002d50020009c000000920000613d000002a80000013d0000000001000416000000000001004b0000069a0000c13d000000000300041a0007ff0000300194000002740000c13d000000ff0130019000000000020000190000000102006039000d00000002001d00000000020004150000000d0220008a0000000502200210000000000001004b000002780000c13d000000000a0004150000000c0aa0008a000000050aa00210000c00010000003d000002bc0130019700000101041001bf000000000040041b000000400300043d000002bd0030009c000004380000813d0000004001300039000000400010043f0000000b010000390000000006130436000002be010000410000000000160435000000400100043d000002bf0010009c000004380000213d0000004002100039000000400020043f00000006020000390000000002210436000002c00500004100000000005204350000ff0000400190000003910000c13d000000400100043d0000006402100039000002c70300004100000000003204350000004402100039000002c803000041000000000032043500000024021000390000002b03000039000003010000013d000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b09e807170000040f0000019d0000013d0000000001000416000000000001004b0000069a0000c13d0000006603000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000190000000105002039000000000552013f00000001005001900000029c0000613d000002b30100004100000000001004350000002201000039000000040010043f000002b401000041000009ea00010430000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b09e807640000040f000000400200043d00000000001204350000027b0020009c0000027b020080410000004001200210000002ae011001c7000009e90001042e000000240030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000401100370000000000101043b000002960010009c0000069a0000213d000000000001004b000002eb0000c13d0000029701000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f000002c901000041000000c40010043f000002ca01000041000000e40010043f0000029a01000041000009ea00010430000000440030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000002960020009c0000069a0000213d0000002401100370000000000101043b000800000001001d000002960010009c0000069a0000213d00000000002004350000006a01000039000000200010043f0000004002000039000000000100001909e809c90000040f00000008020000290000000000200435000000200010043f0000000001000019000000400200003909e809c90000040f000000000101041a000000ff001001900000000001000019000000010100c039000000800010043f000002b501000041000009e90001042e000000440030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000800000002001d000002960020009c0000069a0000213d0000002402100370000000000402043b0000029b0040009c0000069a0000213d0000002302400039000000000032004b0000069a0000813d0000000405400039000000000251034f000000000202043b0000029b0020009c000004380000213d0000001f06200039000002d6066001970000003f06600039000002d6066001970000029c0060009c000004380000213d00000024044000390000008006600039000000400060043f000000800020043f0000000004420019000000000034004b0000069a0000213d0000002003500039000000000131034f0000001f0320018f000000050420027200000005044002100000020c0000613d000000a005000039000000a006400039000000000701034f000000007807043c0000000005850436000000000065004b000002080000c13d000000000003004b0000021a0000613d000000000141034f0000000303300210000000a004400039000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000000a0012000390000000000010435000000c901000039000000000101041a00000296021001970000000001000411000000000012004b000003f50000c13d000600000002001d000000fb01000039000000000201041a000700000002001d000000010220003a000004000000c13d000002b30100004100000000001004350000001101000039000000040010043f000002b401000041000009ea000104300000000001000416000000000001004b0000069a0000c13d000000000103001909e806ae0000040f000800000001001d000700000002001d0000000002030019000600000002001d000000000100041109e807880000040f09e8074d0000040f00000008010000290000000702000029000000060300002909e807f80000040f0000000001000019000009e90001042e000000840030008c0000069a0000413d0000000002000416000000000002004b0000069a0000c13d0000000402100370000000000202043b000800000002001d000002960020009c0000069a0000213d0000002402100370000000000202043b000700000002001d000002960020009c0000069a0000213d0000006402100370000000000402043b0000029b0040009c0000069a0000213d0000002302400039000000000032004b0000069a0000813d0000000402400039000000000221034f000000000202043b0000004401100370000000000101043b000600000001001d000000240140003909e806dd0000040f000500000001001d0000000001000411000000060200002909e807880000040f09e8074d0000040f00000008010000290000000702000029000000060300002909e807f80000040f000000080100002900000007020000290000000603000029000001010000013d0000029701000041000000800010043f0000002001000039000000840010043f000000a40010043f0000029d01000041000000c40010043f000002b801000041000009ea0001043000000000020004150000000e0220008a0000000502200210000e00000000001d000800000002001d000600000003001d000002a50100004100000000001004390000000001000410000000040010044300000000010004140000027b0010009c0000027b01008041000000c001100210000002a6011001c7000080020200003909e809e30000040f0000000100200190000004e20000613d000000000101043b000000000001004b000002f50000c13d0000000603000029000000ff0130018f000000010010008c0000000001000019000000010100603900000008020000290000000502200270000000000201001f000002f80000c13d000000000a0004150000000b0aa0008a000000050aa00210000b00010000003d000000070000006b000001570000613d000002d70130019700000001041001bf000001590000013d000000800010043f000000000004004b000002ac0000613d0000000000300435000000000001004b0000033c0000c13d000000a001000039000003470000013d000002d20020009c000000920000613d000002d30020009c000000920000613d0000000001000019000000800010043f000002b501000041000009e90001042e000002d702200197000000a00020043f000000000001004b000000c001000039000000a001006039000003470000013d000000080100002900000000001004350000009701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a000000010320019000000001062002700000007f0660618f0000001f0060008c00000000040000190000000104002039000000000442013f00000001004001900000018f0000c13d000000400500043d0000000004650436000000000003004b000800000005001d000003b90000613d000600000004001d000700000006001d000000000010043500000000010004140000027b0010009c0000027b01008041000000c001100210000002ac011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d0000000706000029000000000006004b000000000200001900000008050000290000000607000029000003be0000613d000000000101043b00000000020000190000000003270019000000000401041a000000000043043500000001011000390000002002200039000000000062004b000002e30000413d000003be0000013d00000000001004350000006801000039000000200010043f0000004002000039000000000100001909e809c90000040f000000000101041a000000800010043f000002b501000041000009e90001042e00000008010000290000000501100270000000000100001f000000400100043d0000006402100039000002ba0300004100000000003204350000004402100039000002bb03000041000000000032043500000024021000390000002e030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b010080410000004001100210000002b1011001c7000009ea0001043000000000002004350000006a01000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b00000008020000290000000000200435000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a000002d7022001970000000703000029000000000232019f000000000021041b000000400100043d00000000003104350000027b0010009c0000027b01008041000000400110021000000000020004140000027b0020009c0000027b02008041000000c002200210000000000112019f000002ac011001c70000800d020000390000000303000039000002b604000041000000000500041100000008060000290000002e0000013d000002b90200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b0000033e0000413d000000c001300039000000800210008a000000800100003909e806cb0000040f0000002001000039000000400200043d000800000002001d0000000002120436000000800100003909e8069c0000040f000000080200002900000000012100490000027b0010009c0000027b0100804100000060011002100000027b0020009c0000027b020080410000004002200210000000000121019f000009e90001042e09e808ab0000040f0000000001000019000009e90001042e0000000002000411000000000012004b000003ce0000c13d000000070100002900000000001004350000006901000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a000002a20220019700000008022001af000000000021041b000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029605100198000001220000613d00000000010004140000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000403000039000002cd040000410000000806000029000000070700002909e809de0000040f00000001002001900000069a0000613d000000310000013d00000000050304330000029b0050009c000004380000213d0000006504000039000000000804041a000000010080019000000001078002700000007f0770618f0000001f0070008c00000000090000190000000109002039000000000898013f00000001008001900000018f0000c13d00080000000a001d000000200070008c000003b10000413d00000000004004350000001f085000390000000508800270000002c10880009a000000200050008c000002c2080040410000001f077000390000000507700270000002c10770009a000000000078004b000003b10000813d000000000008041b0000000108800039000000000078004b000003ad0000413d0000001f0050008c000004110000a13d0000000000400435000002d6085001980000041c0000c13d0000002007000039000002c206000041000004280000013d000002d7012001970000000000140435000000000006004b000000200200003900000000020060190000002002200039000000000105001909e806cb0000040f000000400100043d000700000001001d09e806c00000040f000000070100002900000000000104350000002001000039000000400200043d000700000002001d0000000002120436000000080100002909e8069c0000040f0000000702000029000003510000013d00000000001004350000006a01000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b00000000020004110000000000200435000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a000000ff00100190000003600000c13d000000400100043d0000006402100039000002cb0300004100000000003204350000004402100039000002cc03000041000000000032043500000024021000390000003d03000039000003010000013d000000400100043d00000044021000390000029d0300004100000000003204350000029702000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000012d0000013d000000000021041b000000400100043d000500000001001d0000029f0010009c000004380000213d000300000009001d00000005020000290000002001200039000400000001001d000000400010043f0000000000020435000000080000006b000004620000c13d000000400100043d0000004402100039000002b203000041000003f80000013d000000000005004b0000000003000019000004150000613d00000000030604330000000306500210000002d80660027f000002d806600167000000000363016f0000000105500210000000000353019f000004340000013d000002c2060000410000002007000039000000010980008a0000000509900270000002c30990009a000000000a370019000000000a0a04330000000000a6041b00000020077000390000000106600039000000000096004b000004210000c13d000000000058004b000004320000813d0000000308500210000000f80880018f000002d80880027f000002d80880016700000000033700190000000003030433000000000383016f000000000036041b000000010350021000000001033001bf000000000034041b00000000040104330000029b0040009c0000043e0000a13d000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea000104300000006603000039000000000603041a000000010060019000000001056002700000007f0550618f0000001f0050008c00000000070000190000000107002039000000000676013f00000001006001900000018f0000c13d000000200050008c0000045a0000413d00000000003004350000001f064000390000000506600270000002c40660009a000000200040008c000002b9060040410000001f055000390000000505500270000002c40550009a000000000056004b0000045a0000813d000000000006041b0000000106600039000000000056004b000004560000413d0000001f0040008c000004e30000a13d0000000000300435000002d606400198000004ee0000c13d0000002005000039000002b902000041000004fa0000013d000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029600100198000005360000c13d000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029600100198000005360000c13d000000080100002900000000001004350000006801000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a0000000102200039000000000021041b000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000201041a000002a2022001970000000806000029000000000262019f000000000021041b00000000010004140000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000403000039000002a4040000410000000005000019000000070700002909e809de0000040f00000001002001900000069a0000613d0000000001000415000200000001001d000002a50100004100000000001004390000000801000029000000040010044300000000010004140000027b0010009c0000027b01008041000000c001100210000002a6011001c7000080020200003909e809e30000040f0000000100200190000004e20000613d000000000101043b000000000001004b0000053d0000c13d000000000100041500000002011000690000000001000002000000070100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000000000101041a0000029600100198000005bb0000c13d000000400100043d0000006402100039000002af0300004100000000003204350000004402100039000002b003000041000002fe0000013d000000000001042f000000000004004b0000000001000019000004e70000613d00000000010204330000000302400210000002d80220027f000002d802200167000000000121016f0000000102400210000000000121019f000005060000013d000000010560008a000002d6075001970000002005000039000002b902000041000000400770003900000000081500190000000008080433000000000082041b00000001022000390000002005500039000000000075004b000004f30000c13d000000000046004b000005040000813d0000000306400210000000f80660018f000002d80660027f000002d80660016700000000011500190000000001010433000000000161016f000000000012041b000000010140021000000001011001bf000000000013041b000000000100041a0000ff00001001900000016e0000613d00000000010004110000029606100197000000c901000039000000000201041a000002a203200197000000000363019f000000000031041b000000000100041400000296052001970000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000303000039000002c50400004109e809de0000040f00000001002001900000069a0000613d000000080100002900000005011002700000000001010031000000fb02000039000000000012041b000000070000006b000000310000c13d000000000300041a000002d902300197000000000020041b000000400200043d00000000001204350000027b0020009c0000027b02008041000000400120021000000000020004140000027b0020009c0000027b02008041000000c002200210000000000112019f000002ac011001c70000800d020000390000000103000039000002c6040000410000002e0000013d000000400100043d0000004402100039000002a103000041000000000032043500000024021000390000001c03000039000001280000013d000000400300043d000000640130003900000080020000390000000000210435000000440130003900000007020000290000000000210435000002a7010000410000000001130436000100000001001d000000040130003900000006020000290000000000210435000000240130003900000000000104350000000501000029000000000101043300000084023000390000000000120435000600000003001d000000a402300039000000000001004b00000004060000290000055d0000613d000000000300001900000000042300190000000005630019000000000505043300000000005404350000002003300039000000000013004b000005560000413d0000000002210019000000000002043500000000020004140000000803000029000000040030008c0000056b0000c13d00000000050004150000000a0550008a00000005055002100000000003000031000000200030008c00000020040000390000000004034019000005a10000013d0000001f01100039000002d601100197000000a4011000390000027b0010009c0000027b01008041000000600110021000000006030000290000027b0030009c0000027b030080410000004003300210000000000131019f0000027b0020009c0000027b02008041000000c002200210000000000112019f000000080200002909e809de0000040f000000000301001900000060033002700000027b03300197000000200030008c000000200400003900000000040340190000001f0540018f0000000506400272000000010a0000290000058c0000613d000000000701034f0000000608000029000000007907043c00000000089804360000000000a8004b000005880000c13d000000000005004b0000059b0000613d0000000506600210000000000761034f00000006066000290000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000005000415000000090550008a000000050550021000000001002001900000060d0000613d0000001f01400039000000600210018f0000000601200029000000000021004b000000000200001900000001020040390000029b0010009c000004380000213d0000000100200190000004380000c13d000000400010043f000000200030008c0000069a0000413d00000006010000290000000001010433000002aa001001980000069a0000c13d0000000502500270000000000201001f000000000200041500000002022000690000000002000002000002ab01100197000002a70010009c000004ca0000613d000006130000013d000000070100002900000000001004350000009701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000000101043b000800000001001d000000800100043d000600000001001d0000029b0010009c000004380000213d0000000801000029000000000101041a000000010010019000000001021002700000007f0220618f000500000002001d0000001f0020008c00000000020000190000000102002039000000000121013f00000001001001900000018f0000c13d0000000501000029000000200010008c000005f90000413d0000000801000029000000000010043500000000010004140000027b0010009c0000027b01008041000000c001100210000002ac011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d00000006030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000005010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000005f90000813d000000000002041b0000000102200039000000000012004b000005f50000413d00000006010000290000001f0010008c000006570000a13d0000000801000029000000000010043500000000010004140000027b0010009c0000027b01008041000000c001100210000002ac011001c7000080100200003909e809e30000040f00000001002001900000069a0000613d000000200200008a0000000602200180000000000101043b000006630000c13d000000a003000039000006710000013d000000000003004b000006230000c13d00000060020000390000000001020433000000000001004b0000064e0000c13d000000400200043d000800000002001d00000297010000410000000000120435000000040120003909e808c00000040f000000080200002900000000012100490000027b0010009c0000027b0100804100000060011002100000027b0020009c0000027b020080410000004002200210000000000121019f000009ea000104300000001f02300039000002a8022001970000003f02200039000002a904200197000000400200043d0000000004420019000000000024004b000000000500001900000001050040390000029b0040009c000004380000213d0000000100500190000004380000c13d000000400040043f0000001f0430018f0000000005320436000300000005001d00000005033002720000063e0000613d000000050530021000000003070000290000000005570019000000000601034f000000006806043c0000000007870436000000000057004b0000063a0000c13d000000000004004b000006100000613d0000000503300210000000000131034f00000003033000290000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000006100000013d00000003020000290000027b0020009c0000027b0200804100000040022002100000027b0010009c0000027b010080410000006001100210000000000121019f000009ea00010430000000060000006b00000000010000190000065b0000613d000000a00100043d00000006040000290000000302400210000002d80220027f000002d802200167000000000121016f0000000102400210000000000121019f0000067e0000013d000000010320008a0000000503300270000000000331001900000020040000390000000103300039000000000504001900000080045000390000000004040433000000000041041b00000020045000390000000101100039000000000031004b000006680000c13d000000a003500039000000060020006c0000067b0000813d00000006020000290000000302200210000000f80220018f000002d80220027f000002d8022001670000000003030433000000000223016f000000000021041b0000000601000029000000010110021000000001011001bf0000000802000029000000000012041b000000400100043d000000070200002900000000002104350000027b0010009c0000027b01008041000000400110021000000000020004140000027b0020009c0000027b02008041000000c002200210000000000112019f000002ac011001c70000800d020000390000000103000039000002ad0400004109e809de0000040f00000001002001900000069a0000613d000000400100043d000000070200002900000000002104350000027b0010009c0000027b010080410000004001100210000002ae011001c7000009e90001042e0000000001000019000009ea0001043000000000430104340000000001320436000000000003004b000006a80000613d000000000200001900000000052100190000000006240019000000000606043300000000006504350000002002200039000000000032004b000006a10000413d000000000231001900000000000204350000001f02300039000002d6022001970000000001210019000000000001042d000002da0010009c000006be0000213d000000630010008c000006be0000a13d00000001030003670000000401300370000000000101043b000002960010009c000006be0000213d0000002402300370000000000202043b000002960020009c000006be0000213d0000004403300370000000000303043b000000000001042d0000000001000019000009ea00010430000002db0010009c000006c50000813d0000002001100039000000400010043f000000000001042d000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea000104300000001f02200039000002d6022001970000000001120019000000000021004b000000000200001900000001020040390000029b0010009c000006d70000213d0000000100200190000006d70000c13d000000400010043f000000000001042d000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea000104300000000004010019000002dc0020009c0000070f0000813d0000001f01200039000002d6011001970000003f01100039000002d605100197000000400100043d0000000005510019000000000015004b000000000600001900000001060040390000029b0050009c0000070f0000213d00000001006001900000070f0000c13d000000400050043f00000000052104360000000006420019000000000036004b000007150000213d0000001f0320018f000000010440036700000005062002720000000506600210000006fe0000613d0000000007650019000000000804034f0000000009050019000000008a08043c0000000009a90436000000000079004b000006fa0000c13d000000000003004b0000070c0000613d000000000464034f00000000066500190000000303300210000000000706043300000000073701cf000000000737022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000373019f000000000036043500000000022500190000000000020435000000000001042d000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea000104300000000001000019000009ea000104300001000000000002000100000001001d00000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000073a0000613d000000000101043b000000000101041a00000296001001980000073c0000613d000000010100002900000000001004350000006901000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000073a0000613d000000000101043b000000000101041a0000029601100197000000000001042d0000000001000019000009ea00010430000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea00010430000000000001004b000007500000613d000000000001042d000000400100043d0000006402100039000002dd0300004100000000003204350000004402100039000002de03000041000000000032043500000024021000390000002d030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b010080410000004001100210000002b1011001c7000009ea0001043000000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007750000613d000000000101043b000000000101041a0000029601100198000007770000613d000000000001042d0000000001000019000009ea00010430000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea000104300002000000000002000200000001001d000100000002001d00000000002004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b000000000101041a0000029601100198000007e70000613d00000002020000290000029602200197000000000012004b000007a10000c13d0000000101000039000000000001042d000200000002001d00000000001004350000006a01000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b00000002020000290000000000200435000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b000000000101041a000000ff01100190000007c00000613d000000000001042d000000010100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b000000000101041a0000029600100198000007e70000613d000000010100002900000000001004350000006901000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f0000000100200190000007e50000613d000000000101043b000000000101041a0000029601100197000000020010006c00000000010000190000000101006039000000000001042d0000000001000019000009ea00010430000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea000104300003000000000002000100000002001d000200000001001d000300000003001d00000000003004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000101041a00000296021001980000087c0000613d00000002010000290000029601100197000000000012004b0000088d0000c13d000200000002001d0000000101000029000102960010019c000008970000613d000000030100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000101041a000002960110019800000002020000290000087c0000613d000000000021004b0000088d0000c13d000000030100002900000000001004350000006901000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000201041a000002a202200197000000000021041b000000020100002900000000001004350000006801000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000201041a000000010220008a000000000021041b0000000101000029000000000010043500000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000201041a0000000102200039000000000021041b000000030100002900000000001004350000006701000039000000200010043f00000000010004140000027b0010009c0000027b01008041000000c001100210000002a0011001c7000080100200003909e809e30000040f00000001002001900000087a0000613d000000000101043b000000000201041a000002a2022001970000000106000029000000000262019f000000000021041b00000000010004140000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000403000039000002a4040000410000000205000029000000030700002909e809de0000040f00000001002001900000087a0000613d000000000001042d0000000001000019000009ea00010430000000400100043d0000004402100039000002d0030000410000000000320435000000240210003900000018030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b0100804100000040011002100000029e011001c7000009ea00010430000000400100043d0000006402100039000002df0300004100000000003204350000004402100039000002e003000041000000000032043500000024021000390000002503000039000008a00000013d000000400100043d0000006402100039000002e10300004100000000003204350000004402100039000002e2030000410000000000320435000000240210003900000024030000390000000000320435000002970200004100000000002104350000000402100039000000200300003900000000003204350000027b0010009c0000027b010080410000004001100210000002b1011001c7000009ea000104300000029606100197000000c901000039000000000201041a000002a203200197000000000363019f000000000031041b000000000100041400000296052001970000027b0010009c0000027b01008041000000c001100210000002a3011001c70000800d020000390000000303000039000002c50400004109e809de0000040f0000000100200190000008be0000613d000000000001042d0000000001000019000009ea000104300000006002100039000002e30300004100000000003204350000004002100039000002e4030000410000000000320435000000200210003900000032030000390000000000320435000000200200003900000000002104350000008001100039000000000001042d0001000000000002000000000001004b000008d10000613d000000000001042d000000400200043d000100000002001d00000297010000410000000000120435000000040120003909e808c00000040f000000010200002900000000012100490000027b0010009c0000027b0100804100000060011002100000027b0020009c0000027b020080410000004002200210000000000121019f000009ea000104300006000000000002000300000004001d000200000003001d000100000001001d000002a5010000410000000000100439000400000002001d000000040020044300000000010004140000027b0010009c0000027b01008041000000c001100210000002a6011001c7000080020200003909e809e30000040f0000000100200190000009780000613d000000000101043b000000000001004b000009230000613d000000400a00043d0000006401a00039000000800700003900000000007104350000004401a0003900000002020000290000000000210435000000010100002900000296011001970000002402a000390000000000120435000002a70100004100000000081a04360000000401a0003900000000020004110000000000210435000000030100002900000000230104340000008401a000390000000000310435000000a401a00039000000000003004b000009140000613d000000000400001900000000051400190000000006420019000000000606043300000000006504350000002004400039000000000034004b0000090d0000413d00000000023100190000000000020435000000000400041400000004020000290000029602200197000000040020008c000009250000c13d0000000005000415000000060550008a00000005055002100000000003000031000000200030008c000000200400003900000000040340190000095f0000013d0000000101000039000000000001042d000200000007001d0000001f03300039000002d6033001970000000003a3004900000000011300190000027b0010009c0000027b0100804100000060011002100000027b00a0009c0000027b0300004100000000030a40190000004003300210000000000131019f0000027b0040009c0000027b04008041000000c003400210000000000131019f00040000000a001d000300000008001d09e809de0000040f000000030b000029000000040a000029000000000301001900000060033002700000027b03300197000000200030008c000000200400003900000000040340190000001f0540018f00000005064002720000094a0000613d000000000701034f00000000080a0019000000007907043c00000000089804360000000000b8004b000009460000c13d000000000005004b000009590000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000000000003001f0000000005000415000000050550008a00000005055002100000000100200190000009790000613d0000001f01400039000000600210018f0000000001a20019000000000021004b000000000200001900000001020040390000029b0010009c000009b90000213d0000000100200190000009b90000c13d000000400010043f0000001f0030008c000009760000a13d00000000010a0433000002aa00100198000009760000c13d0000000502500270000000000201001f000002ab01100197000002a70010009c00000000010000190000000101006039000000000001042d0000000001000019000009ea00010430000000000001042f000000000003004b0000097d0000c13d0000006002000039000009a60000013d0000001f02300039000002a8022001970000003f02200039000002a904200197000000400200043d0000000004420019000000000024004b000000000500001900000001050040390000029b0040009c000009b90000213d0000000100500190000009b90000c13d000000400040043f0000001f0430018f0000000005320436000200000005001d00000005033002720000000503300210000009980000613d00000002070000290000000005370019000000000601034f000000006806043c0000000007870436000000000057004b000009940000c13d000000000004004b000009a60000613d000000000131034f00000002033000290000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000000001020433000000000001004b000009bf0000c13d000000400200043d000400000002001d00000297010000410000000000120435000000040120003909e808c00000040f000000040200002900000000012100490000027b0010009c0000027b0100804100000060011002100000027b0020009c0000027b020080410000004002200210000000000121019f000009ea00010430000002b30100004100000000001004350000004101000039000000040010043f000002b401000041000009ea0001043000000002020000290000027b0020009c0000027b0200804100000040022002100000027b0010009c0000027b010080410000006001100210000000000121019f000009ea00010430000000000001042f0000027b0010009c0000027b0100804100000040011002100000027b0020009c0000027b020080410000006002200210000000000112019f00000000020004140000027b0020009c0000027b02008041000000c002200210000000000112019f000002a3011001c7000080100200003909e809e30000040f0000000100200190000009dc0000613d000000000101043b000000000001042d0000000001000019000009ea00010430000009e1002104210000000102000039000000000001042d0000000002000019000000000001042d000009e6002104230000000102000039000000000001042d0000000002000019000000000001042d000009e800000432000009e90001042e000009ea00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000008129fc1b00000000000000000000000000000000000000000000000000000000b88d4fdd00000000000000000000000000000000000000000000000000000000e985e9c400000000000000000000000000000000000000000000000000000000e985e9c500000000000000000000000000000000000000000000000000000000eacabe1400000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000b88d4fde00000000000000000000000000000000000000000000000000000000c87b56dd0000000000000000000000000000000000000000000000000000000095d89b400000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000a22cb465000000000000000000000000000000000000000000000000000000008129fc1c000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000023b872dc000000000000000000000000000000000000000000000000000000006352211d000000000000000000000000000000000000000000000000000000006352211e0000000000000000000000000000000000000000000000000000000070a0823100000000000000000000000000000000000000000000000000000000715018a60000000000000000000000000000000000000000000000000000000023b872dd0000000000000000000000000000000000000000000000000000000042842e0e00000000000000000000000000000000000000000000000000000000081812fb00000000000000000000000000000000000000000000000000000000081812fc00000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000006fdde03000000000000000000000000ffffffffffffffffffffffffffffffffffffffff08c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffff7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffdf02000000000000000000000000000000000000400000000000000000000000004552433732313a20746f6b656e20616c7265616479206d696e74656400000000ffffffffffffffffffffffff00000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000150b7a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000003ffffffe000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000f8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce700000000000000000000000000000000000000200000000000000000000000006578697374656e7420746f6b656e00000000000000000000000000000000000045524337323155524953746f726167653a2055524920736574206f66206e6f6e00000000000000000000000000000000000000840000000000000000000000004552433732313a206d696e7420746f20746865207a65726f20616464726573734e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002000000080000000000000000017307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c314552433732313a20617070726f766520746f2063616c6c657200000000000000000000000000000000000000000000000000006400000080000000000000000046501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354647920696e697469616c697a6564000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e747261637420697320616c726561ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffffffc04669784d795069634e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf464d504e4654000000000000000000000000000000000000000000000000000070068be6c9c0028fffe980ecf108e970415fa0506dae7db35afbc0eec33958398ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c770068be6c9c0028fffe980ecf108e970415fa0506dae7db35afbc0eec3395838b9afe78647357ada173d02ae61d040305d1415d9afed6b55fd340304ed16bcac8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e07f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986e697469616c697a696e67000000000000000000000000000000000000000000496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420694552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e657200000000000000000000000000000000000000000000006b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000004552433732313a20617070726f76652063616c6c6572206973206e6f7420746f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92572000000000000000000000000000000000000000000000000000000000000004552433732313a20617070726f76616c20746f2063757272656e74206f776e654552433732313a20696e76616c696420746f6b656e20494400000000000000005b5e139effffffffffffffffffffffffffffffffffffffffffffffffffffffff80ac58cd000000000000000000000000000000000000000000000000000000005b5e139f0000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000004906490600000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffe0000000000000000000000000000000000000000000000001000000000000000072206f7220617070726f766564000000000000000000000000000000000000004552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e656f776e65720000000000000000000000000000000000000000000000000000004552433732313a207472616e736665722066726f6d20696e636f72726563742072657373000000000000000000000000000000000000000000000000000000004552433732313a207472616e7366657220746f20746865207a65726f2061646463656976657220696d706c656d656e74657200000000000000000000000000004552433732313a207472616e7366657220746f206e6f6e2045524337323152650000000000000000000000000000000000000000000000000000000000000000239db66da64eae2ed19adb3064b74f61d55054e9093a8a482baf76e2e308e2f6", + "linkReferences": {}, + "deployedLinkReferences": {}, + "factoryDeps": {} +} diff --git a/public/watermark.png b/public/watermark.png index 03ecb0d..d7ecdf2 100644 Binary files a/public/watermark.png and b/public/watermark.png differ diff --git a/scripts/deployFixMyPic.ts b/scripts/deployFixMyPic.ts new file mode 100644 index 0000000..93974fe --- /dev/null +++ b/scripts/deployFixMyPic.ts @@ -0,0 +1,83 @@ +import dotenv from 'dotenv'; +import { Contract } from 'zksync-ethers'; + +import { deployContract, getWallet } from '../contracts/utils'; + +dotenv.config(); + +const deployPriceOracle = async (): Promise => { + const priceFeedAddress = process.env.FEED_ADDRESS as string; + + const wallet = getWallet(); + const contractName = 'PriceOracle'; + + console.log(`Deploying ${contractName}`); + + const priceOracle = await deployContract(contractName, [], { + wallet, + asProxy: true, + proxyConstructorArgs: [priceFeedAddress], + }); + + return priceOracle; +}; + +const deployFixMyPicNFT = async (): Promise => { + const wallet = getWallet(); + const contractName = 'FixMyPicNFT'; + + console.log(`Deploying ${contractName}`); + + const nftContract = await deployContract(contractName, [], { + wallet, + asProxy: true, + }); + + return nftContract; +}; + +const deployFixMyPicFactory = async (priceOracle: Contract, nftContract: Contract): Promise => { + const wallet = getWallet(); + const contractName = 'FixMyPicFactory'; + + const priceOracleAddress = await priceOracle.getAddress(); + const nftContractAddress = await nftContract.getAddress(); + + console.log( + `Deploying ${contractName} with priceOracle: ${priceOracleAddress} and fixMyPicNFT: ${nftContractAddress}` + ); + + const factoryContract = await deployContract(contractName, [], { + wallet, + asProxy: true, + proxyConstructorArgs: [priceOracleAddress, nftContractAddress], + }); + + // @ts-ignore + await nftContract.connect(getWallet()).transferOwnership(await factoryContract.getAddress()); + + return factoryContract; +}; + +const main = async () => { + try { + const priceOracle = await deployPriceOracle(); + const nftContract = await deployFixMyPicNFT(); + + const factoryContract = await deployFixMyPicFactory(priceOracle, nftContract); + + console.log('\n\nDEPLOYMENT SUCCESSFUL\n===================='); + console.log('Price Oracle:', await priceOracle.getAddress()); + console.log('FixMyPicNFT:', await nftContract.getAddress()); + console.log('FixMyPicFactory:', await factoryContract.getAddress()); + console.log('====================\n\n'); + } catch (error) { + console.error('Error deploying contract:', error); + process.exit(1); + } +}; + +main().catch((error) => { + console.error(error); + process.exitCode = 1; +}); diff --git a/scripts/deployFixMyPicFactory.ts b/scripts/deployFixMyPicFactory.ts index 495fb20..f8a9286 100644 --- a/scripts/deployFixMyPicFactory.ts +++ b/scripts/deployFixMyPicFactory.ts @@ -6,21 +6,25 @@ dotenv.config(); const main = async () => { const priceOracle = process.env.PRICE_ORACLE; + const fixMyPicNFT = process.env.FIXMYPIC_NFT; if (!priceOracle) { throw new Error('PRICE_ORACLE environment variable is not set'); } + if (!fixMyPicNFT) { + throw new Error('FIXMYPIC_NFT environment variable is not set'); + } try { const wallet = getWallet(); const contractName = 'FixMyPicFactory'; - console.log(`Deploying ${contractName} with priceOracle: ${priceOracle}`); + console.log(`Deploying ${contractName} with priceOracle: ${priceOracle} and fixMyPicNFT: ${fixMyPicNFT}`); await deployContract(contractName, [], { wallet, asProxy: true, - proxyConstructorArgs: [priceOracle], + proxyConstructorArgs: [priceOracle, fixMyPicNFT], }); console.log(`Successfully deployed ${contractName}`); diff --git a/scripts/deployFixMyPicNFT.ts b/scripts/deployFixMyPicNFT.ts new file mode 100644 index 0000000..ca66a98 --- /dev/null +++ b/scripts/deployFixMyPicNFT.ts @@ -0,0 +1,29 @@ +import dotenv from 'dotenv'; + +import { deployContract, getWallet } from '../contracts/utils'; + +dotenv.config(); + +const main = async () => { + try { + const wallet = getWallet(); + const contractName = 'FixMyPicNFT'; + + console.log(`Deploying ${contractName}`); + + await deployContract(contractName, [], { + wallet, + asProxy: true, + }); + + console.log(`Successfully deployed ${contractName}`); + } catch (error) { + console.error('Error deploying contract:', error); + process.exit(1); + } +}; + +main().catch((error) => { + console.error(error); + process.exitCode = 1; +}); diff --git a/scripts/upgradeFixMyPicFactory.ts b/scripts/upgradeFixMyPicFactory.ts index c84ca2b..00847f6 100644 --- a/scripts/upgradeFixMyPicFactory.ts +++ b/scripts/upgradeFixMyPicFactory.ts @@ -15,6 +15,7 @@ const main = async () => { const contractName = process.env.CONTRACT as string; const contractInitializer = process.env.INITIALIZER as string; const priceOracle = process.env.PRICE_ORACLE as string; + const fixMyPicNFT = process.env.FIXMYPIC_NFT as string; if (!factoryProxyAddress) { throw new Error('Missing proxy address for the FixMyPicFactory contract'); @@ -28,8 +29,11 @@ const main = async () => { if (!priceOracle) { throw new Error(`Missing address for the PriceOracle contract!`); } + if (!fixMyPicNFT) { + throw new Error(`Missing address for the FixMyPicNFT contract!`); + } - const upgradedContract = await deployContract(contractName, [priceOracle], { + const upgradedContract = await deployContract(contractName, [priceOracle, fixMyPicNFT], { wallet, proxyAddress: factoryProxyAddress, }); diff --git a/scripts/upgradeFixMyPicNFT.ts b/scripts/upgradeFixMyPicNFT.ts new file mode 100644 index 0000000..1321678 --- /dev/null +++ b/scripts/upgradeFixMyPicNFT.ts @@ -0,0 +1,50 @@ +import { Deployer } from '@matterlabs/hardhat-zksync-deploy'; +import dotenv from 'dotenv'; +import * as hre from 'hardhat'; + +import { deployContract, getWallet } from '../contracts/utils'; + +dotenv.config(); + +const main = async () => { + try { + const wallet = getWallet(); + const deployer = new Deployer(hre, wallet); + + const factoryProxyAddress = process.env.PROXY as string; + const contractName = process.env.CONTRACT as string; + const contractInitializer = process.env.INITIALIZER as string; + + if (!factoryProxyAddress) { + throw new Error('Missing proxy address for the FixMyPicNFT contract'); + } + if (!contractName) { + throw new Error('Missing factory contract name for upgrade!'); + } + if (!contractInitializer) { + throw new Error(`Missing initializer function name to upgrade ${contractName}!`); + } + + const upgradedContract = await deployContract(contractName, [], { + wallet, + proxyAddress: factoryProxyAddress, + }); + upgradedContract.connect(deployer.zkWallet); + + // wait some time before the next call + await new Promise((resolve) => setTimeout(resolve, 2000)); + + const initTx = await upgradedContract[contractInitializer](); + const receipt = await initTx.wait(); + + console.log(`${contractName} initialized!`, receipt.hash); + } catch (error) { + console.error('Error deploying contract:', error); + process.exit(1); + } +}; + +main().catch((error) => { + console.error(error); + process.exitCode = 1; +}); diff --git a/src/components/common/Header.tsx b/src/components/common/Header.tsx index 4a9ee1d..84233cb 100644 --- a/src/components/common/Header.tsx +++ b/src/components/common/Header.tsx @@ -1,17 +1,16 @@ -import { AppBar, Avatar, Box, Toolbar, useMediaQuery } from '@mui/material'; +import { AppBar, Box, Toolbar, useMediaQuery } from '@mui/material'; import { useTheme } from '@mui/material/styles'; import Image from 'next/image'; import Link from 'next/link'; import React from 'react'; -import { ConnectWalletButton } from '@/components'; +import { AccountMenu, ConnectWalletButton } from '@/components'; import { useWallet } from '@/hooks/useWallet'; -import FMPButton from './FMPButton'; const Header: React.FC = () => { const theme = useTheme(); const isMdUp = useMediaQuery(theme.breakpoints.up('md')); - const { selectedWallet, selectedAccount, disconnectWallet } = useWallet(); + const { selectedWallet, selectedAccount } = useWallet(); return ( <> @@ -29,22 +28,7 @@ const Header: React.FC = () => { - {selectedWallet && selectedAccount ? ( - - } - > - Disconnect {selectedWallet.info?.name} - - ) : ( - - )} + {selectedWallet && selectedAccount ? : } diff --git a/src/components/common/ImageOverlay.tsx b/src/components/common/ImageOverlay.tsx index e3be20f..ae7c265 100644 --- a/src/components/common/ImageOverlay.tsx +++ b/src/components/common/ImageOverlay.tsx @@ -60,7 +60,7 @@ const ImageOverlay: React.FC = ({ imageUrl, onClose, onDownlo zIndex: 20, }} > - Overlay Image + Overlay Image {description && ( diff --git a/src/components/index.ts b/src/components/index.ts index c5befa8..f59623a 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -8,8 +8,10 @@ export { default as FMPTypography } from './common/FMPTypography'; export { default as LoadingOverlay } from './common/LoadingOverlay'; export { default as FullScreenLoader } from './common/FullScreenLoader'; -export { default as RequireWallet } from './wallet/RequireWallet'; -export { default as ConnectWalletButton } from './wallet/ConnectWalletButton'; +export { default as AccountMenu } from './menu/AccountMenu'; + +export { default as PurchaseListItem } from './purchase/PurchaseListItem'; +export { default as PurchaseList } from './purchase/PurchasesList'; export { default as RequestList } from './request/RequestList'; export { default as NewRequestForm } from './request/NewRequestForm'; @@ -21,3 +23,6 @@ export { default as RequestDetailSubmissionTab } from './request/RequestDetailSu export { default as NewSubmissionForm } from './submission/NewSubmissionForm'; export { default as SubmissionListItem } from './submission/SubmissionListItem'; + +export { default as RequireWallet } from './wallet/RequireWallet'; +export { default as ConnectWalletButton } from './wallet/ConnectWalletButton'; diff --git a/src/components/menu/AccountMenu.tsx b/src/components/menu/AccountMenu.tsx new file mode 100644 index 0000000..b060c08 --- /dev/null +++ b/src/components/menu/AccountMenu.tsx @@ -0,0 +1,116 @@ +import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; +import Logout from '@mui/icons-material/Logout'; +import ShoppingCart from '@mui/icons-material/ShoppingCart'; +import { Avatar, Box, Divider, ListItemIcon, Menu, MenuItem } from '@mui/material'; +import { useRouter } from 'next/router'; +import React, { useState } from 'react'; + +import { FMPButton, FMPTypography } from '@/components'; +import { useWallet } from '@/hooks/useWallet'; + +const AccountMenu: React.FC = () => { + const router = useRouter(); + const [anchorEl, setAnchorEl] = useState(null); + const { selectedWallet, selectedAccount, disconnectWallet } = useWallet(); + + const open = Boolean(anchorEl); + + const handleClick = (event: React.MouseEvent) => { + setAnchorEl(event.currentTarget); + }; + + const handleClose = () => { + setAnchorEl(null); + }; + + const onPurchasesPressed = () => { + router.push('/purchases'); + handleClose(); + }; + + const onDisconnectPressed = () => { + disconnectWallet(); + handleClose(); + }; + + return ( + + + } + endIcon={} + sx={{ textTransform: 'none' }} + > + {selectedAccount?.slice(0, 16)}… + + + + + + + + Purchases + + + + + + + + + Disconnect + + + + + ); +}; + +export default AccountMenu; diff --git a/src/components/purchase/PurchaseListItem.tsx b/src/components/purchase/PurchaseListItem.tsx new file mode 100644 index 0000000..499e4d0 --- /dev/null +++ b/src/components/purchase/PurchaseListItem.tsx @@ -0,0 +1,88 @@ +import CheckCircleIcon from '@mui/icons-material/CheckCircle'; +import { Box, Chip } from '@mui/material'; +import Image from 'next/image'; +import React, { useState } from 'react'; + +import { ImageOverlay } from '@/components'; +import { SubmissionPurchase } from '@/types/purchase'; + +interface PurchaseListItemProps { + purchase: SubmissionPurchase; + imageUrlToShow: string; +} + +const PurchaseListItem: React.FC = ({ purchase, imageUrlToShow }) => { + const [isOverlayOpen, setIsOverlayOpen] = useState(false); + + const generateChip = () => { + return ( + } + label="Purchased" + color="success" + size="medium" + sx={{ + fontWeight: 600, + position: 'absolute', + top: 8, + left: 8, + zIndex: 10, + color: 'white', + backgroundColor: 'success', + }} + /> + ); + }; + + const handleImageClick = () => { + setIsOverlayOpen(true); + }; + + const handleOverlayClose = () => { + setIsOverlayOpen(false); + }; + + return ( + <> + + Purchase + {generateChip()} + + {isOverlayOpen && ( + { + window.open(imageUrlToShow, '_blank'); + }} + /> + )} + + ); +}; + +export default PurchaseListItem; diff --git a/src/components/purchase/PurchasesList.tsx b/src/components/purchase/PurchasesList.tsx new file mode 100644 index 0000000..6cc72f3 --- /dev/null +++ b/src/components/purchase/PurchasesList.tsx @@ -0,0 +1,126 @@ +import { Box, Divider, ImageList, ImageListItem, useMediaQuery, useTheme } from '@mui/material'; +import { useEffect, useState } from 'react'; + +import { FMPTypography, PurchaseListItem } from '@/components'; +import { useImageStore } from '@/hooks/useImageStore'; +import { SubmissionPurchase } from '@/types/purchase'; + +interface PurchasesListProps { + purchases: SubmissionPurchase[]; +} + +const EmptyState: React.FC = () => { + return ( + + + No Purchases Yet + + + Explore the submissions and make your first purchase! + + + ); +}; + +const PurchasesList: React.FC = ({ purchases }) => { + const theme = useTheme(); + const { getDecryptedImageUrl } = useImageStore(); + + const isSmallScreen = useMediaQuery(theme.breakpoints.down('sm')); + const isMediumScreen = useMediaQuery(theme.breakpoints.between('sm', 'md')); + const isLargeScreen = useMediaQuery(theme.breakpoints.up('md')); + + const [loadedImages, setLoadedImages] = useState(false); + const [imageUrlsToShow, setImageUrlsToShow] = useState>({}); + + const getCols = () => { + if (isSmallScreen) return 1; + if (isMediumScreen) return 2; + if (isLargeScreen) return 3; + return 1; + }; + + useEffect(() => { + if (loadedImages) { + return; + } + + const fetchImageUrls = async () => { + const urls = await Promise.all( + purchases.map(async (purchase) => { + const imageUrl = await getDecryptedImageUrl( + purchase.submissionAddress, + purchase.encryptedPictureId as string + ); + return { id: purchase.id, imageUrl }; + }) + ); + + const newImageUrlsToShow: Record = {}; + urls.forEach(({ id, imageUrl }) => { + newImageUrlsToShow[id] = imageUrl; + }); + + setImageUrlsToShow(newImageUrlsToShow); + setLoadedImages(true); + }; + + if (purchases.length > 0) { + fetchImageUrls(); + } + }, [purchases, loadedImages, getDecryptedImageUrl]); + + return ( + + + Your Purchases + + + {purchases.length === 0 ? ( + + ) : ( + + {purchases.map((purchase) => ( + + {imageUrlsToShow[purchase.id] && ( + + )} + + ))} + + )} + + ); +}; + +export default PurchasesList; diff --git a/src/components/request/NewRequestForm.tsx b/src/components/request/NewRequestForm.tsx index 66a4320..866b99b 100644 --- a/src/components/request/NewRequestForm.tsx +++ b/src/components/request/NewRequestForm.tsx @@ -197,7 +197,7 @@ const NewRequestForm: React.FC = () => { position: 'relative', }} > - Image preview + Image preview ) : ( = ({ req minHeight: 300, }} > - {request.title} + {request.title} { const RequestDetailSubmissionTab: React.FC = ({ submissions }) => { const theme = useTheme(); - const { selectedAccount } = useWallet(); + const { selectedAccount, isConnected, connectWallet } = useWallet(); const { getImageUrlToShow } = useImageStore(); const { setIsCreatingNewSubmission } = useRequestDetail(); @@ -88,7 +88,18 @@ const RequestDetailSubmissionTab: React.FC = ({ return ( - setIsCreatingNewSubmission(true)}> + { + if (!isConnected) { + connectWallet(); + return; + } + setIsCreatingNewSubmission(true); + }} + > New Submission diff --git a/src/components/request/RequestListItem.tsx b/src/components/request/RequestListItem.tsx index 3997968..716cb88 100644 --- a/src/components/request/RequestListItem.tsx +++ b/src/components/request/RequestListItem.tsx @@ -70,11 +70,9 @@ const RequestListItem: React.FC = ({ pictureRequest }) => {pictureRequest.title} {generateChip()} diff --git a/src/components/submission/NewSubmissionForm.tsx b/src/components/submission/NewSubmissionForm.tsx index 42d023f..5113f28 100644 --- a/src/components/submission/NewSubmissionForm.tsx +++ b/src/components/submission/NewSubmissionForm.tsx @@ -259,7 +259,7 @@ const NewSubmissionForm: React.FC = ({ requestId }) => { position: 'relative', }} > - Image preview + Image preview ) : ( = ({ requestId }) => { position: 'relative', }} > - Watermarked image preview + Watermarked image preview ) : ( = ({ submission, imageUrlToShow }) => { const router = useRouter(); - const { contractService } = useContractService(); + const { purchaseSubmission } = usePurchases(); const { selectedWallet, selectedAccount, connectWallet } = useWallet(); const [loading, setLoading] = useState(false); @@ -82,22 +82,21 @@ const SubmissionListItem: React.FC = ({ submission, ima transition: 'transform 0.3s ease', borderRadius: 4, '&:hover': { - transform: 'scale(1.05)', // Slightly grow the component on hover - transformOrigin: 'center', // Transform from the center to keep it within bounds - zIndex: 1, // Ensure the element is above others when scaled + transform: 'scale(1.05)', + transformOrigin: 'center', + zIndex: 1, }, '&:hover .overlay': { - opacity: 1, // Show the overlay when hovering over the entire item + opacity: 1, }, }} > Submission {generateChip()} @@ -122,15 +121,14 @@ const SubmissionListItem: React.FC = ({ submission, ima setLoading(true); setIsOverlayOpen(false); - setLoadingLabel('Purchasing image...'); try { - await contractService.purchaseSubmission({ - account: selectedAccount, + await purchaseSubmission({ wallet: selectedWallet, - address: submission.id, + account: selectedAccount, + submission, + setStatus: setLoadingLabel, }); - router.reload(); } catch (error) { console.error('Error purchasing image:', error); diff --git a/src/contexts/RequestDetailContext.tsx b/src/contexts/RequestDetailContext.tsx index 43cd21b..96e8525 100644 --- a/src/contexts/RequestDetailContext.tsx +++ b/src/contexts/RequestDetailContext.tsx @@ -41,7 +41,7 @@ export const RequestDetailProvider = ({ children, requestId }: RequestDetailProv const fetchRequest = async (id: string) => { try { - const result = await execute(GetPictureRequestDocument, { id }); + const result = await execute(GetPictureRequestDocument, { id: id.toLowerCase() }); const request = result?.data?.pictureRequest; if (request) { const ipfsData = await fetchIPFSData(request.ipfsHash); diff --git a/src/contexts/WalletContext.tsx b/src/contexts/WalletContext.tsx index cf357c2..1f3c8ac 100644 --- a/src/contexts/WalletContext.tsx +++ b/src/contexts/WalletContext.tsx @@ -14,11 +14,11 @@ export interface WalletDetail { } export interface WalletProviderContextType { - selectedWallet: WalletDetail; // The selected wallet detail. - selectedAccount: string | null; // The selected account address. - isConnected: boolean; // Whether the wallet is connected. - connectWallet: () => Promise; // Function to connect wallets. - disconnectWallet: () => void; // Function to disconnect wallets. + selectedWallet: WalletDetail; + selectedAccount: string | null; + isConnected: boolean; + connectWallet: () => Promise; + disconnectWallet: () => void; } interface WalletProviderProps { diff --git a/src/graphql/queries/GetSubmissionPurchasesForPurchaser.graphql b/src/graphql/queries/GetSubmissionPurchasesForPurchaser.graphql new file mode 100644 index 0000000..e2b52e1 --- /dev/null +++ b/src/graphql/queries/GetSubmissionPurchasesForPurchaser.graphql @@ -0,0 +1,12 @@ +query GetSubmissionPurchasesForPurchaser($purchaser: Bytes!) { + submissionPurchases(where: {purchaser: $purchaser}) { + id + price + purchaser + purchaseDate + submission { + id + ipfsHash + } + } +} \ No newline at end of file diff --git a/src/hooks/useComments.tsx b/src/hooks/useComments.tsx index 52ccb49..7181d49 100644 --- a/src/hooks/useComments.tsx +++ b/src/hooks/useComments.tsx @@ -36,7 +36,7 @@ export const useComments = () => { const pollForNewComment = async (id: string, onCommentFound: (comment: RequestComment) => void): Promise => { const fetchedComment = await pollWithRetry({ callback: async () => { - const result = await execute(GetRequestCommentDocument, { id }); + const result = await execute(GetRequestCommentDocument, { id: id.toLowerCase() }); return result?.data?.requestComment || null; }, }); @@ -75,7 +75,7 @@ export const useComments = () => { } const optimisticComment: RequestComment = { - id: requestCommentAddress, + id: requestCommentAddress.toLowerCase(), text, commenter: account, createdAt: Math.floor(Date.now() / 1000), diff --git a/src/hooks/useImageStore.tsx b/src/hooks/useImageStore.tsx index bce0582..c0545f9 100644 --- a/src/hooks/useImageStore.tsx +++ b/src/hooks/useImageStore.tsx @@ -44,9 +44,7 @@ export const useImageStore = () => { } }; - const getDecryptedImageUrl = async (submission: RequestSubmission): Promise => { - const { id: submissionAddress, encryptedPictureId } = submission; - + const getDecryptedImageUrl = async (submissionAddress: string, encryptedPictureId: string): Promise => { if (!account || !encryptedPictureId) { return ''; } @@ -71,7 +69,7 @@ export const useImageStore = () => { return Promise.resolve(`${IMAGE_URL_ROOT}/${pictureId}`); } - return getDecryptedImageUrl(submission); + return getDecryptedImageUrl(submission.id, submission.encryptedPictureId as string); }; return { createWatermarkedImage, getImageUrlToShow, getDecryptedImageUrl, encryptPictureId }; diff --git a/src/hooks/usePurchases.tsx b/src/hooks/usePurchases.tsx new file mode 100644 index 0000000..42bb4ff --- /dev/null +++ b/src/hooks/usePurchases.tsx @@ -0,0 +1,114 @@ +import axios from 'axios'; +import { useCallback, useEffect, useState } from 'react'; + +import { WalletDetail } from '@/contexts/WalletContext'; +import { + execute, + GetSubmissionPurchasesForPurchaserDocument, + SubmissionPurchase as GqlSubmissionPurchase, +} from '@/graphql/client'; +import { SubmissionPurchase } from '@/types/purchase'; +import { RequestSubmission } from '@/types/submission'; +import { mapSubmissionPurchase } from '@/utils/mappers'; +import { useContractService } from './useContractService'; +import { useIpfs } from './useIpfs'; +import { useWallet } from './useWallet'; + +export interface PurchaseSubmissionParams { + account: string; + wallet: WalletDetail; + submission: RequestSubmission; + setStatus?: (status: string) => void; +} + +export const usePurchases = () => { + const [loading, setLoading] = useState(true); + const [loadedPurchases, setLoadedPurchases] = useState(false); + const [purchases, setPurchases] = useState([]); + + const { fetchIPFSData } = useIpfs(); + const { selectedAccount } = useWallet(); + const { contractService } = useContractService(); + + const loadIPFSData = useCallback( + async (purchase: SubmissionPurchase, ipfsHash: string): Promise => { + const ipfsData = await fetchIPFSData(ipfsHash); + return { + ...purchase, + encryptedPictureId: ipfsData.encryptedImageId, + submissionDescription: ipfsData.description, + }; + }, + [fetchIPFSData] + ); + + const fetchPurchases = useCallback(async () => { + if (!selectedAccount) return; + + try { + const result = await execute(GetSubmissionPurchasesForPurchaserDocument, { + purchaser: selectedAccount, + }); + + const purchases: GqlSubmissionPurchase[] = result?.data?.submissionPurchases || []; + const submissionIpfsHashes: Record = {}; + + purchases.forEach((purchase) => { + submissionIpfsHashes[purchase.submission.id] = purchase.submission.ipfsHash; + }); + + const formattedPurchases = purchases.map((purchase) => + mapSubmissionPurchase(purchase, purchase.submission.id, purchase.price) + ); + + const purchasesWithIpfsData = await Promise.all( + formattedPurchases.map((purchase) => loadIPFSData(purchase, submissionIpfsHashes[purchase.submissionAddress])) + ); + + setPurchases(purchasesWithIpfsData); + } catch (error) { + console.error('Error fetching purchases:', error); + } finally { + setLoading(false); + } + }, [selectedAccount, loadIPFSData]); + + useEffect(() => { + if (selectedAccount && !loadedPurchases) { + setLoadedPurchases(true); + fetchPurchases(); + } + }, [selectedAccount, loadedPurchases, fetchPurchases]); + + const purchaseSubmission = useCallback( + async ({ wallet, account, submission, setStatus }: PurchaseSubmissionParams) => { + setStatus?.('Purchasing image...'); + + try { + await contractService.purchaseSubmission({ + wallet, + account, + address: submission.id, + }); + } catch (error) { + console.error('Error purchasing submission:', error); + return; + } + + setStatus?.('Minting FixMyPic NFT...'); + + try { + await axios.post('/api/nft/mint', { + submissionAddress: submission.id, + tokenURI: submission.ipfsHash, + }); + } catch (error) { + console.error('Error minting NFT:', error); + return; + } + }, + [contractService] + ); + + return { loading, purchases, purchaseSubmission }; +}; diff --git a/src/hooks/useRequests.tsx b/src/hooks/useRequests.tsx index 30753d6..218a900 100644 --- a/src/hooks/useRequests.tsx +++ b/src/hooks/useRequests.tsx @@ -34,7 +34,7 @@ export const useRequests = () => { const fetchRequest = async (id: string): Promise => { setLoading(true); try { - const result = await execute(GetPictureRequestDocument, { id }); + const result = await execute(GetPictureRequestDocument, { id: id.toLowerCase() }); const request = result?.data?.pictureRequest; if (request) { return loadIPFSAndTransform(request); @@ -62,17 +62,18 @@ export const useRequests = () => { } }; - const pollForNewRequest = async (id: string): Promise => { + const pollForNewRequest = async (id: string, onRequestFound: (request: Request) => void): Promise => { const request = await pollWithRetry({ callback: async () => { return fetchRequest(id); }, }); - if (request) { - const transformedRequest = await loadIPFSAndTransform(request); - setRequests((prevRequests) => [...prevRequests, transformedRequest]); + if (!request) { + return; } + + onRequestFound(request); }; const createPictureRequest = async ({ @@ -95,29 +96,25 @@ export const useRequests = () => { setStatus?.('Creating smart contract...'); const pictureRequestAddress = await contractService.createPictureRequest({ ipfsHash, budget, ...otherParams }); - let created = false; - if (pictureRequestAddress) { - // Optimistically update the state - const newRequest: Request = { - id: pictureRequestAddress, - title, - budget, - imageId, - description, - }; - - // Add a placeholder entry in `requests` to show it immediately - setRequests((prevRequests) => [...prevRequests, newRequest as Request]); - - // Try to fetch data from the subgraph until the new request appears - setStatus?.('Waiting for confirmation...'); - await pollForNewRequest(pictureRequestAddress); - created = true; - } - - if (!created) { + if (!pictureRequestAddress) { throw new Error('Failed to create picture request'); } + + const optimisticRequest: Request = { + id: pictureRequestAddress.toLowerCase(), + title, + budget, + imageId, + description, + }; + + setRequests((prevRequests) => [...prevRequests, optimisticRequest as Request]); + + pollForNewRequest(pictureRequestAddress, (polledRequest) => { + setRequests((prevRequests) => + prevRequests.map((prevRequest) => (prevRequest.id === polledRequest.id ? polledRequest : prevRequest)) + ); + }); } finally { setStatus?.(''); setLoading(false); @@ -129,5 +126,5 @@ export const useRequests = () => { // eslint-disable-next-line react-hooks/exhaustive-deps }, []); - return { requests, createPictureRequest, loading, fetchRequest }; + return { requests, createPictureRequest, loading, fetchRequest, pollForNewRequest }; }; diff --git a/src/hooks/useSubmissions.tsx b/src/hooks/useSubmissions.tsx index 77b8c4c..798d267 100644 --- a/src/hooks/useSubmissions.tsx +++ b/src/hooks/useSubmissions.tsx @@ -43,7 +43,7 @@ export const useSubmissions = () => { ): Promise => { const fetchedSubmission = await pollWithRetry({ callback: async () => { - const result = await execute(GetRequestSubmissionDocument, { id }); + const result = await execute(GetRequestSubmissionDocument, { id: id.toLowerCase() }); return result?.data?.requestSubmission; }, }); @@ -92,9 +92,10 @@ export const useSubmissions = () => { } const optimisticSubmission: RequestSubmission = { - id: requestSubmissionAddress, - description, + id: requestSubmissionAddress.toLowerCase(), price, + ipfsHash, + description, purchases: [], submitter: account, freePictureId: freeImageId, diff --git a/src/layouts/MainLayout.tsx b/src/layouts/MainLayout.tsx index 66500ce..d3b7e31 100644 --- a/src/layouts/MainLayout.tsx +++ b/src/layouts/MainLayout.tsx @@ -11,8 +11,8 @@ const MainLayout: React.FC = ({ children }) => { return (
- - {children} + + {children} {/* Optionally include a footer here */} diff --git a/src/pages/api/decrypt/index.ts b/src/pages/api/decrypt/index.ts index 1e5529d..0da6515 100644 --- a/src/pages/api/decrypt/index.ts +++ b/src/pages/api/decrypt/index.ts @@ -42,7 +42,6 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) return; } - // Retrieve the authenticated session const session = await getServerSession(req, res, authOptions); if (!session || !session.address) { @@ -58,7 +57,6 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) } try { - // Use the authenticated user's address from the session const userAddress = session.address; const purchased = await verifyPurchase(userAddress, submissionAddress); diff --git a/src/pages/api/nft/mint.ts b/src/pages/api/nft/mint.ts new file mode 100644 index 0000000..d5dc349 --- /dev/null +++ b/src/pages/api/nft/mint.ts @@ -0,0 +1,71 @@ +import { ethers } from 'ethers'; +import { getServerSession } from 'next-auth'; + +import { getFixMyPicContractService } from '@/services/contractService'; +import { getLogger } from '@/utils/logging'; +import { authOptions } from '../auth/[...nextauth]'; + +import type { NextApiRequest, NextApiResponse } from 'next'; + +const logger = getLogger('nft/mint'); + +const RPC_URL = process.env.NEXT_PUBLIC_RPC_URL || ''; +if (!RPC_URL) { + throw new Error('RPC_URL is not set'); +} + +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + if (req.method !== 'POST') { + res.status(405).json({ message: 'Method Not Allowed' }); + return; + } + + const session = await getServerSession(req, res, authOptions); + + if (!session || !session.address) { + res.status(401).json({ message: 'Not authenticated' }); + return; + } + + const { submissionAddress, tokenURI } = req.body; + + if (!tokenURI || !submissionAddress) { + res.status(400).json({ message: 'Submission Address and Token URI are required' }); + return; + } + + try { + const userAddress = session.address; + logger.debug('User Address:', userAddress); + const provider = new ethers.JsonRpcProvider(RPC_URL); + logger.debug('Provider:', provider); + const wallet = new ethers.Wallet(process.env.WALLET_PRIVATE_KEY!, provider); + logger.debug('Wallet:', wallet); + + const contractService = await getFixMyPicContractService(); + const tokenId = await contractService.mintNFTForSubmission({ + wallet, + userAddress, + tokenURI, + submissionAddress, + }); + logger.debug('Minted NFT:', tokenId); + + if (!tokenId) { + logger.error( + 'NFT could not be minted for user, submission, tokenURI, by wallet', + userAddress, + submissionAddress, + tokenURI, + wallet.address + ); + res.status(403).json({ message: 'NFT could not be minted!' }); + return; + } + + res.status(200).json({ tokenId: Number(tokenId) }); + } catch (error) { + logger.error('Error minting NFT:', error); + res.status(500).json({ message: 'Internal Server Error' }); + } +} diff --git a/src/pages/purchases/index.tsx b/src/pages/purchases/index.tsx new file mode 100644 index 0000000..5511492 --- /dev/null +++ b/src/pages/purchases/index.tsx @@ -0,0 +1,14 @@ +import React from 'react'; + +import { RequireWallet } from '@/components'; +import PurchasesView from '@/views/purchases/PurchasesView'; + +const PurchasesPage = () => { + return ( + + + + ); +}; + +export default PurchasesPage; diff --git a/src/services/contractService.ts b/src/services/contractService.ts index 0f60a78..b33d6c5 100644 --- a/src/services/contractService.ts +++ b/src/services/contractService.ts @@ -35,12 +35,20 @@ export interface CreateRequestCommentParams extends WalletParams { ipfsHash: string; } +export interface MintNFTForSubmissionProps { + submissionAddress: string; + tokenURI: string; + userAddress: string; + wallet: ethers.Wallet; +} + export interface FixMyPicContractService { createPictureRequest(params: CreatePictureRequestParams): Promise; createRequestComment(params: CreateRequestCommentParams): Promise; createRequestSubmission(params: CreateRequestSubmissionParams): Promise; purchaseSubmission(params: PurchaseSubmissionParams): Promise; + mintNFTForSubmission(params: MintNFTForSubmissionProps): Promise; } const logger = getLogger('services/contractService'); @@ -213,7 +221,49 @@ async function createFixMyPicContractService(factoryAddress: string): Promise => { + const fixMyPicFactory = new ethers.Contract(factoryAddress, FixMyPicFactorySchema.abi, wallet); + + const tx = await fixMyPicFactory.mintNFTForSubmission(userAddress, submissionAddress, tokenURI); + const receipt: ContractTransactionReceipt = await tx.wait(); + + if (receipt.status !== 1) { + logger.error('Failed to mint NFT', receipt, submissionAddress, userAddress, tokenURI); + throw new Error(`Failed to mint NFT: ${submissionAddress} for ${userAddress}`); + } + + const event = receipt.logs.find( + (log) => + log.address === factoryAddress && + log.topics[0] === ethers.id('FixMyPicNFTMinted(uint256,address,address,string,uint256)') + ); + + if (!event) { + logger.error('FixMyPicNFTMinted event not found', receipt); + return null; + } + + const decodedEvent = fixMyPicFactory.interface.parseLog(event); + if (!decodedEvent) { + logger.error('Failed to decode FixMyPicNFTMinted event', receipt); + return null; + } + + return decodedEvent.args.tokenId; + }; + + return { + createPictureRequest, + createRequestSubmission, + purchaseSubmission, + createRequestComment, + mintNFTForSubmission, + }; } let contractServicePromise: Promise | null = null; diff --git a/src/theme/index.ts b/src/theme/index.ts index 548eb25..1b5b98f 100644 --- a/src/theme/index.ts +++ b/src/theme/index.ts @@ -3,16 +3,16 @@ import { createTheme } from '@mui/material/styles'; const theme = createTheme({ palette: { background: { - default: '#f0f4f8', // grayish blue color + default: '#f0f4f8', }, primary: { - main: '#000000', // Set primary color to black + main: '#000000', }, secondary: { - main: '#ffffff', // Optional: Set secondary color to white or any other color + main: '#ffffff', }, info: { - main: '#e7e7e7', // Optional: Set info color to black or any other color + main: '#e7e7e7', }, }, }); diff --git a/src/types/purchase.ts b/src/types/purchase.ts index 1e66915..2a94d75 100644 --- a/src/types/purchase.ts +++ b/src/types/purchase.ts @@ -4,6 +4,8 @@ export interface SubmissionPurchase { price: number; purchaseDate: number; submissionAddress: string; + encryptedPictureId?: string; + submissionDescription?: string; } export type PartialSubmissionPurchase = Partial; diff --git a/src/types/submission.ts b/src/types/submission.ts index ecd3f48..ebb5b31 100644 --- a/src/types/submission.ts +++ b/src/types/submission.ts @@ -3,6 +3,7 @@ import { SubmissionPurchase } from './purchase'; export interface RequestSubmission { id: string; price: number; + ipfsHash: string; createdAt: number; submitter: string; description: string; diff --git a/src/utils/datetime.ts b/src/utils/datetime.ts index 75b9c5e..07756de 100644 --- a/src/utils/datetime.ts +++ b/src/utils/datetime.ts @@ -16,11 +16,6 @@ export function getDateTimeFromUnixTimestamp(timestamp: number): string { } export function getTimeSince(timestamp: number): string { - // get the seconds, minutes, hours, or days ago. - // return 'just now' if the timestamp is less than 1 minute ago - // return 'x minutes ago' if the timestamp is less than 1 hour ago - // return 'x hours ago' if the timestamp is less than 1 day ago - // return 'x days ago' if the timestamp is more than 1 day ago const seconds = Math.floor(Date.now() / 1000 - timestamp); const minutes = Math.floor(seconds / 60); const hours = Math.floor(minutes / 60); diff --git a/src/utils/mappers.ts b/src/utils/mappers.ts index 172dee2..d0a6a82 100644 --- a/src/utils/mappers.ts +++ b/src/utils/mappers.ts @@ -5,7 +5,7 @@ import { RequestSubmission } from '@/types/submission'; import type { SubmissionPurchase as GqlSubmissionPurchase } from '@/graphql/client'; -const mapSubmissionPurchase = ( +export const mapSubmissionPurchase = ( purchase: GqlSubmissionPurchase, submissionAddress: string, price: string @@ -31,9 +31,10 @@ export const mapRequestComment = (comment: any): RequestComment => { export const mapRequestSubmission = (submission: any): RequestSubmission => { return { id: submission.id, - price: Number(submission.price) / 100, + ipfsHash: submission.ipfsHash, submitter: submission.submitter, description: submission.description, + price: Number(submission.price) / 100, freePictureId: submission.freeImageId, encryptedPictureId: submission.encryptedImageId, watermarkedPictureId: submission.watermarkedImageId, diff --git a/src/views/purchases/PurchasesView.tsx b/src/views/purchases/PurchasesView.tsx new file mode 100644 index 0000000..bcebccc --- /dev/null +++ b/src/views/purchases/PurchasesView.tsx @@ -0,0 +1,21 @@ +import { Box } from '@mui/material'; +import { useRouter } from 'next/router'; +import React from 'react'; + +import { BackButton } from '@/components'; +import PurchasesList from '@/components/purchase/PurchasesList'; +import { usePurchases } from '@/hooks/usePurchases'; + +const PurchasesView: React.FC = () => { + const router = useRouter(); + const { purchases } = usePurchases(); + + return ( + + router.back()} sx={{ mb: 4 }} /> + + + ); +}; + +export default PurchasesView;