diff --git a/.gitignore b/.gitignore index 042ad8d4..05b5e70d 100644 --- a/.gitignore +++ b/.gitignore @@ -62,4 +62,6 @@ contracts/foundry/out/ .env -secrets.json \ No newline at end of file +secrets.json + +yarn.lock \ No newline at end of file diff --git a/contracts/dependencies.json b/contracts/dependencies.json index 7bfc89c0..987de640 100644 --- a/contracts/dependencies.json +++ b/contracts/dependencies.json @@ -5,6 +5,6 @@ "59140": "0xf56dc6695cF1f5c364eDEbC7Dc7077ac9B586068", "42161": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", "421613": "0xfd064A18f3BF249cf1f87FC203E90D8f650f2d63", - "65":"0xf8616348fB444479BC84F65F61c410843407860D" + "195":"0x7C3bE0fa5a20ad361685932a50be9dEC6F302db6" } } diff --git a/contracts/deployments.json b/contracts/deployments.json index d9022263..ba10e3ab 100644 --- a/contracts/deployments.json +++ b/contracts/deployments.json @@ -1,11 +1,11 @@ { - "65": [ + "195": [ { - "name": "OKTC", - "chainId": "65", + "name": "OKX_X1_testnet", + "chainId": "195", "contracts": { "APRHistory": { - "address": "0xd99343a49C1b5b9d6690AEa5dB3Ae0da3A9cC4c4", + "address": "0x633Fff91613e32a91bDBd0Ef30067aA3B86CBcd7", "abi": [ { "inputs": [ @@ -101,7 +101,7 @@ ] }, "GlobalBlacklist": { - "address": "0x8a0D0714c45B9ba78AEad7601390748F6f8f5452", + "address": "0xc44395eC149C6743A268A901a38e5b02dc87D10C", "abi": [ { "anonymous": false, @@ -355,7 +355,7 @@ ] }, "GlobalBlacklist_Implementation": { - "address": "0x9E3E4FF5738712cFF86b18182F90edf1c668156b", + "address": "0xfD2a2358d1AceFABA5581771F50312244910f3bd", "abi": [ { "inputs": [], @@ -590,7 +590,7 @@ ] }, "GlobalBlacklist_Proxy": { - "address": "0x8a0D0714c45B9ba78AEad7601390748F6f8f5452", + "address": "0xc44395eC149C6743A268A901a38e5b02dc87D10C", "abi": [ { "inputs": [ @@ -664,7 +664,7 @@ ] }, "GlobalOwner": { - "address": "0x2646E026CCF356850eC54E9a522B30b3db679D71", + "address": "0x2547A36186eCC16C25649B9234D4937216e45978", "abi": [ { "anonymous": false, @@ -893,7 +893,7 @@ ] }, "GlobalOwner_Implementation": { - "address": "0x1B8DB32e8ed2A2a25d4462F446eCCe5405bd1C93", + "address": "0x1cfEFbaA55Ad0F9078159cc0F8e6e118D4bc9B97", "abi": [ { "inputs": [], @@ -1103,7 +1103,7 @@ ] }, "GlobalOwner_Proxy": { - "address": "0x2646E026CCF356850eC54E9a522B30b3db679D71", + "address": "0x2547A36186eCC16C25649B9234D4937216e45978", "abi": [ { "inputs": [ @@ -1177,7 +1177,7 @@ ] }, "GlobalPause": { - "address": "0x74774f077c9f60c0cb7e68534C4749f94ef06a3c", + "address": "0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6", "abi": [ { "anonymous": false, @@ -1439,7 +1439,7 @@ ] }, "GlobalPause_Implementation": { - "address": "0xef76f5d0315f5F952cfFFa5376962aDb35c6eEba", + "address": "0x38A43930fe7258C161806e2064d2eF7562C562b8", "abi": [ { "inputs": [], @@ -1682,7 +1682,7 @@ ] }, "GlobalPause_Proxy": { - "address": "0x74774f077c9f60c0cb7e68534C4749f94ef06a3c", + "address": "0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6", "abi": [ { "inputs": [ @@ -1756,7 +1756,7 @@ ] }, "LDYStaking": { - "address": "0xdc2051273BdEb81739E3dfa67B7df7D7A8e98901", + "address": "0x045f9E9d2225319dF5E0909007FE7979E2674a32", "abi": [ { "anonymous": false, @@ -1908,7 +1908,7 @@ ] }, "LTokenSignaler": { - "address": "0x257E5913605a21561e552171AED2D8C3fa7335aB", + "address": "0x6A88b87aA4865e8d67D7CD32178bA03F885a088a", "abi": [ { "anonymous": false, @@ -2143,7 +2143,7 @@ ] }, "LTokenSignaler_Implementation": { - "address": "0x62825D3DC53AC21c68f8Da4E98d229FdADaFc9e4", + "address": "0xECBAb0dEaf59Bd9e2725678df0b3cbC82bc8d364", "abi": [ { "inputs": [], @@ -2359,7 +2359,7 @@ ] }, "LTokenSignaler_Proxy": { - "address": "0x257E5913605a21561e552171AED2D8C3fa7335aB", + "address": "0x6A88b87aA4865e8d67D7CD32178bA03F885a088a", "abi": [ { "inputs": [ @@ -2433,7 +2433,7 @@ ] }, "LUSDC": { - "address": "0xecbC53e4379ABC34Da28E33Da8aEeC54570d2cD1", + "address": "0x1e1B0bB6C182eFD7d64cdAbbF3A3E315dE26E259", "abi": [ { "anonymous": false, @@ -3761,7 +3761,7 @@ ] }, "LUSDC_Implementation": { - "address": "0x2D5B0d8FCFf3634791E235054a93078D15F4FC52", + "address": "0x9466891d9E77eAD21D8445350c51ecD35fd170bF", "abi": [ { "anonymous": false, @@ -5065,7 +5065,7 @@ ] }, "LUSDC_Proxy": { - "address": "0xecbC53e4379ABC34Da28E33Da8aEeC54570d2cD1", + "address": "0x1e1B0bB6C182eFD7d64cdAbbF3A3E315dE26E259", "abi": [ { "inputs": [ @@ -5139,7 +5139,7 @@ ] }, "PreMining": { - "address": "0xbB7acA39EDFCdeBcecb738b77251C17e78318AbE", + "address": "0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9", "abi": [ { "inputs": [ diff --git a/contracts/hardhat/deployments/OKTC/.chainId b/contracts/hardhat/deployments/OKTC/.chainId deleted file mode 100644 index b44fe09a..00000000 --- a/contracts/hardhat/deployments/OKTC/.chainId +++ /dev/null @@ -1 +0,0 @@ -65 \ No newline at end of file diff --git a/contracts/hardhat/deployments/OKX_X1_testnet/.chainId b/contracts/hardhat/deployments/OKX_X1_testnet/.chainId new file mode 100644 index 00000000..a0b994e3 --- /dev/null +++ b/contracts/hardhat/deployments/OKX_X1_testnet/.chainId @@ -0,0 +1 @@ +195 \ No newline at end of file diff --git a/contracts/hardhat/deployments/OKTC/APRHistory.json b/contracts/hardhat/deployments/OKX_X1_testnet/APRHistory.json similarity index 98% rename from contracts/hardhat/deployments/OKTC/APRHistory.json rename to contracts/hardhat/deployments/OKX_X1_testnet/APRHistory.json index 5f047ffc..262da660 100644 --- a/contracts/hardhat/deployments/OKTC/APRHistory.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/APRHistory.json @@ -1,5 +1,5 @@ { - "address": "0xd99343a49C1b5b9d6690AEa5dB3Ae0da3A9cC4c4", + "address": "0x633Fff91613e32a91bDBd0Ef30067aA3B86CBcd7", "abi": [ { "inputs": [ @@ -93,18 +93,18 @@ "type": "function" } ], - "transactionHash": "0x0cb7c46ad8834f2107b83c8926d199b2ffe87bfa0216aff1d5d56e79f6b580d9", + "transactionHash": "0xe80caab74b29a90684e55e46401f46d4a9e2b4bc1e21ff63d8f822c7bcf11a18", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0xd99343a49C1b5b9d6690AEa5dB3Ae0da3A9cC4c4", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0x633Fff91613e32a91bDBd0Ef30067aA3B86CBcd7", "transactionIndex": 0, "gasUsed": "745589", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xb629ad9fdbef9cf2ec186a91445cb6b83e2bf254285b2a65f520e534529bc2ed", - "transactionHash": "0x0cb7c46ad8834f2107b83c8926d199b2ffe87bfa0216aff1d5d56e79f6b580d9", + "blockHash": "0xb641ea3ebd7272fee93920eda8817d6af8d63167fd09cbdcf9e46707e52b7301", + "transactionHash": "0xe80caab74b29a90684e55e46401f46d4a9e2b4bc1e21ff63d8f822c7bcf11a18", "logs": [], - "blockNumber": 27819968, + "blockNumber": 10172235, "cumulativeGasUsed": "745589", "status": 1, "byzantium": true diff --git a/contracts/hardhat/deployments/OKTC/GlobalBlacklist.json b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalBlacklist.json similarity index 95% rename from contracts/hardhat/deployments/OKTC/GlobalBlacklist.json rename to contracts/hardhat/deployments/OKX_X1_testnet/GlobalBlacklist.json index a5b6acc9..be5ec261 100644 --- a/contracts/hardhat/deployments/OKTC/GlobalBlacklist.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalBlacklist.json @@ -1,5 +1,5 @@ { - "address": "0x8a0D0714c45B9ba78AEad7601390748F6f8f5452", + "address": "0xc44395eC149C6743A268A901a38e5b02dc87D10C", "abi": [ { "anonymous": false, @@ -251,51 +251,51 @@ "type": "constructor" } ], - "transactionHash": "0xdf0eea29de13ef7a75ec89387bc2e7ef473c69756d91a17860404fc44da473c4", + "transactionHash": "0x57faaff42f061c8fed3700df9aed8538f4817930cdbb0879e0e112d4810e03a3", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0x8a0D0714c45B9ba78AEad7601390748F6f8f5452", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0xc44395eC149C6743A268A901a38e5b02dc87D10C", "transactionIndex": 0, - "gasUsed": "334149", - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000080000000000000000000000000000000000000000000000400200000000000000000000000000040000000000020000000000000000000040000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x985509513b602669f631aa273bcc25b15ebf650e56788754c70f193a11782e8c", - "transactionHash": "0xdf0eea29de13ef7a75ec89387bc2e7ef473c69756d91a17860404fc44da473c4", + "gasUsed": "332449", + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000020000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000800000000000000000000000000000000000000000080000000000000000008000000000000000000000000000400000000000000000000000000000000000010000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000", + "blockHash": "0x478d143f57d1764b85aa10fc95fae3adbb21ca34a6eac823c87cdc5f24455b88", + "transactionHash": "0x57faaff42f061c8fed3700df9aed8538f4817930cdbb0879e0e112d4810e03a3", "logs": [ { "transactionIndex": 0, - "blockNumber": 27819964, - "transactionHash": "0xdf0eea29de13ef7a75ec89387bc2e7ef473c69756d91a17860404fc44da473c4", - "address": "0x8a0D0714c45B9ba78AEad7601390748F6f8f5452", + "blockNumber": 10172227, + "transactionHash": "0x57faaff42f061c8fed3700df9aed8538f4817930cdbb0879e0e112d4810e03a3", + "address": "0xc44395eC149C6743A268A901a38e5b02dc87D10C", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009e3e4ff5738712cff86b18182f90edf1c668156b" + "0x000000000000000000000000fd2a2358d1acefaba5581771f50312244910f3bd" ], "data": "0x", "logIndex": 0, - "blockHash": "0x985509513b602669f631aa273bcc25b15ebf650e56788754c70f193a11782e8c" + "blockHash": "0x478d143f57d1764b85aa10fc95fae3adbb21ca34a6eac823c87cdc5f24455b88" }, { "transactionIndex": 0, - "blockNumber": 27819964, - "transactionHash": "0xdf0eea29de13ef7a75ec89387bc2e7ef473c69756d91a17860404fc44da473c4", - "address": "0x8a0D0714c45B9ba78AEad7601390748F6f8f5452", + "blockNumber": 10172227, + "transactionHash": "0x57faaff42f061c8fed3700df9aed8538f4817930cdbb0879e0e112d4810e03a3", + "address": "0xc44395eC149C6743A268A901a38e5b02dc87D10C", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001", "logIndex": 1, - "blockHash": "0x985509513b602669f631aa273bcc25b15ebf650e56788754c70f193a11782e8c" + "blockHash": "0x478d143f57d1764b85aa10fc95fae3adbb21ca34a6eac823c87cdc5f24455b88" } ], - "blockNumber": 27819964, - "cumulativeGasUsed": "334149", + "blockNumber": 10172227, + "cumulativeGasUsed": "332449", "status": 1, "byzantium": true }, "args": [ - "0x9E3E4FF5738712cFF86b18182F90edf1c668156b", - "0xc4d66de80000000000000000000000002646e026ccf356850ec54e9a522b30b3db679d71" + "0xfD2a2358d1AceFABA5581771F50312244910f3bd", + "0xc4d66de80000000000000000000000002547a36186ecc16c25649b9234d4937216e45978" ], "numDeployments": 1, "solcInputHash": "0e89febeebc7444140de8e67c9067d2c", @@ -305,10 +305,10 @@ "execute": { "methodName": "initialize", "args": [ - "0x2646E026CCF356850eC54E9a522B30b3db679D71" + "0x2547A36186eCC16C25649B9234D4937216e45978" ] }, - "implementation": "0x9E3E4FF5738712cFF86b18182F90edf1c668156b", + "implementation": "0xfD2a2358d1AceFABA5581771F50312244910f3bd", "devdoc": { "details": "This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.", "kind": "dev", diff --git a/contracts/hardhat/deployments/OKTC/GlobalBlacklist_Implementation.json b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalBlacklist_Implementation.json similarity index 98% rename from contracts/hardhat/deployments/OKTC/GlobalBlacklist_Implementation.json rename to contracts/hardhat/deployments/OKX_X1_testnet/GlobalBlacklist_Implementation.json index 73cedf4e..ea36b194 100644 --- a/contracts/hardhat/deployments/OKTC/GlobalBlacklist_Implementation.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalBlacklist_Implementation.json @@ -1,5 +1,5 @@ { - "address": "0x9E3E4FF5738712cFF86b18182F90edf1c668156b", + "address": "0xfD2a2358d1AceFABA5581771F50312244910f3bd", "abi": [ { "inputs": [], @@ -232,32 +232,32 @@ "type": "function" } ], - "transactionHash": "0x2e8a197bc5e59b72f492a8ec9bc632454da76f9b2c117d93e9ff55a9d8b56916", + "transactionHash": "0xf56b7f469704513ef07a2265449f98e983e6f44bc1654147a96a8f719d2751d3", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0x9E3E4FF5738712cFF86b18182F90edf1c668156b", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0xfD2a2358d1AceFABA5581771F50312244910f3bd", "transactionIndex": 0, - "gasUsed": "914340", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000002000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000004000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000", - "blockHash": "0x94ec6867aefb0ff6cbc2cd0091352b081e8d03478414e5e483e1a4af8e2d1462", - "transactionHash": "0x2e8a197bc5e59b72f492a8ec9bc632454da76f9b2c117d93e9ff55a9d8b56916", + "gasUsed": "914240", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080000000000000000000000000000000000000000000000400100000000000000000000000000000000000000000000000000000000008040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xd80613518899ff7e4efaff1e9e97b9f1a8fc1d5c1885aa68113f26b92ef67504", + "transactionHash": "0xf56b7f469704513ef07a2265449f98e983e6f44bc1654147a96a8f719d2751d3", "logs": [ { "transactionIndex": 0, - "blockNumber": 27819961, - "transactionHash": "0x2e8a197bc5e59b72f492a8ec9bc632454da76f9b2c117d93e9ff55a9d8b56916", - "address": "0x9E3E4FF5738712cFF86b18182F90edf1c668156b", + "blockNumber": 10172215, + "transactionHash": "0xf56b7f469704513ef07a2265449f98e983e6f44bc1654147a96a8f719d2751d3", + "address": "0xfD2a2358d1AceFABA5581771F50312244910f3bd", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", "logIndex": 0, - "blockHash": "0x94ec6867aefb0ff6cbc2cd0091352b081e8d03478414e5e483e1a4af8e2d1462" + "blockHash": "0xd80613518899ff7e4efaff1e9e97b9f1a8fc1d5c1885aa68113f26b92ef67504" } ], - "blockNumber": 27819961, - "cumulativeGasUsed": "914340", + "blockNumber": 10172215, + "cumulativeGasUsed": "914240", "status": 1, "byzantium": true }, diff --git a/contracts/hardhat/deployments/OKTC/GlobalBlacklist_Proxy.json b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalBlacklist_Proxy.json similarity index 95% rename from contracts/hardhat/deployments/OKTC/GlobalBlacklist_Proxy.json rename to contracts/hardhat/deployments/OKX_X1_testnet/GlobalBlacklist_Proxy.json index 7acc4f10..ba76945a 100644 --- a/contracts/hardhat/deployments/OKTC/GlobalBlacklist_Proxy.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalBlacklist_Proxy.json @@ -1,5 +1,5 @@ { - "address": "0x8a0D0714c45B9ba78AEad7601390748F6f8f5452", + "address": "0xc44395eC149C6743A268A901a38e5b02dc87D10C", "abi": [ { "inputs": [ @@ -71,51 +71,51 @@ "type": "receive" } ], - "transactionHash": "0xdf0eea29de13ef7a75ec89387bc2e7ef473c69756d91a17860404fc44da473c4", + "transactionHash": "0x57faaff42f061c8fed3700df9aed8538f4817930cdbb0879e0e112d4810e03a3", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0x8a0D0714c45B9ba78AEad7601390748F6f8f5452", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0xc44395eC149C6743A268A901a38e5b02dc87D10C", "transactionIndex": 0, - "gasUsed": "334149", - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000080000000000000000000000000000000000000000000000400200000000000000000000000000040000000000020000000000000000000040000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x985509513b602669f631aa273bcc25b15ebf650e56788754c70f193a11782e8c", - "transactionHash": "0xdf0eea29de13ef7a75ec89387bc2e7ef473c69756d91a17860404fc44da473c4", + "gasUsed": "332449", + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000020000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000800000000000000000000000000000000000000000080000000000000000008000000000000000000000000000400000000000000000000000000000000000010000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000", + "blockHash": "0x478d143f57d1764b85aa10fc95fae3adbb21ca34a6eac823c87cdc5f24455b88", + "transactionHash": "0x57faaff42f061c8fed3700df9aed8538f4817930cdbb0879e0e112d4810e03a3", "logs": [ { "transactionIndex": 0, - "blockNumber": 27819964, - "transactionHash": "0xdf0eea29de13ef7a75ec89387bc2e7ef473c69756d91a17860404fc44da473c4", - "address": "0x8a0D0714c45B9ba78AEad7601390748F6f8f5452", + "blockNumber": 10172227, + "transactionHash": "0x57faaff42f061c8fed3700df9aed8538f4817930cdbb0879e0e112d4810e03a3", + "address": "0xc44395eC149C6743A268A901a38e5b02dc87D10C", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009e3e4ff5738712cff86b18182f90edf1c668156b" + "0x000000000000000000000000fd2a2358d1acefaba5581771f50312244910f3bd" ], "data": "0x", "logIndex": 0, - "blockHash": "0x985509513b602669f631aa273bcc25b15ebf650e56788754c70f193a11782e8c" + "blockHash": "0x478d143f57d1764b85aa10fc95fae3adbb21ca34a6eac823c87cdc5f24455b88" }, { "transactionIndex": 0, - "blockNumber": 27819964, - "transactionHash": "0xdf0eea29de13ef7a75ec89387bc2e7ef473c69756d91a17860404fc44da473c4", - "address": "0x8a0D0714c45B9ba78AEad7601390748F6f8f5452", + "blockNumber": 10172227, + "transactionHash": "0x57faaff42f061c8fed3700df9aed8538f4817930cdbb0879e0e112d4810e03a3", + "address": "0xc44395eC149C6743A268A901a38e5b02dc87D10C", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001", "logIndex": 1, - "blockHash": "0x985509513b602669f631aa273bcc25b15ebf650e56788754c70f193a11782e8c" + "blockHash": "0x478d143f57d1764b85aa10fc95fae3adbb21ca34a6eac823c87cdc5f24455b88" } ], - "blockNumber": 27819964, - "cumulativeGasUsed": "334149", + "blockNumber": 10172227, + "cumulativeGasUsed": "332449", "status": 1, "byzantium": true }, "args": [ - "0x9E3E4FF5738712cFF86b18182F90edf1c668156b", - "0xc4d66de80000000000000000000000002646e026ccf356850ec54e9a522b30b3db679d71" + "0xfD2a2358d1AceFABA5581771F50312244910f3bd", + "0xc4d66de80000000000000000000000002547a36186ecc16c25649b9234d4937216e45978" ], "numDeployments": 1, "solcInputHash": "0e89febeebc7444140de8e67c9067d2c", diff --git a/contracts/hardhat/deployments/OKTC/GlobalOwner.json b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalOwner.json similarity index 95% rename from contracts/hardhat/deployments/OKTC/GlobalOwner.json rename to contracts/hardhat/deployments/OKX_X1_testnet/GlobalOwner.json index 6665795f..9a335e93 100644 --- a/contracts/hardhat/deployments/OKTC/GlobalOwner.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalOwner.json @@ -1,5 +1,5 @@ { - "address": "0x2646E026CCF356850eC54E9a522B30b3db679D71", + "address": "0x2547A36186eCC16C25649B9234D4937216e45978", "abi": [ { "anonymous": false, @@ -226,64 +226,64 @@ "type": "constructor" } ], - "transactionHash": "0x3924719a7a7dcde7e8a4a1798d38892c1d91f50e4c3c0e9f2c86493f06b0aad0", + "transactionHash": "0x6c9accc6f4bc44c9433e5d49554ae5a05604d7b73c94bf4fe10b6537c82aedcf", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0x2646E026CCF356850eC54E9a522B30b3db679D71", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0x2547A36186eCC16C25649B9234D4937216e45978", "transactionIndex": 0, - "gasUsed": "336704", - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000008000000000100100000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000400020000000000000000000800000000000000000000000000001000400000100000000000000000000000000000000000000080000000000000400000000000000000000000000000000400000000000000000000800000000000000000000020000000000000000000040000000000000000000000100000000020000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x70f41406abe0efd10e4771aa9d72b256a001529a52ba8000553f8cd64e85a45d", - "transactionHash": "0x3924719a7a7dcde7e8a4a1798d38892c1d91f50e4c3c0e9f2c86493f06b0aad0", + "gasUsed": "335604", + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000000000800080200000000000000000000000000400000000000400000000000000000000000008000000880000000000000020000000000000000000000000000000400000000000000000000000000000000000000000020000100000000000000040000000020000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x00ae419a6cbb3335925fb182ddfb56f01af90dfe3a372e9d051e0926833b96cc", + "transactionHash": "0x6c9accc6f4bc44c9433e5d49554ae5a05604d7b73c94bf4fe10b6537c82aedcf", "logs": [ { "transactionIndex": 0, - "blockNumber": 27819950, - "transactionHash": "0x3924719a7a7dcde7e8a4a1798d38892c1d91f50e4c3c0e9f2c86493f06b0aad0", - "address": "0x2646E026CCF356850eC54E9a522B30b3db679D71", + "blockNumber": 10172185, + "transactionHash": "0x6c9accc6f4bc44c9433e5d49554ae5a05604d7b73c94bf4fe10b6537c82aedcf", + "address": "0x2547A36186eCC16C25649B9234D4937216e45978", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000001b8db32e8ed2a2a25d4462f446ecce5405bd1c93" + "0x0000000000000000000000001cfefbaa55ad0f9078159cc0f8e6e118d4bc9b97" ], "data": "0x", "logIndex": 0, - "blockHash": "0x70f41406abe0efd10e4771aa9d72b256a001529a52ba8000553f8cd64e85a45d" + "blockHash": "0x00ae419a6cbb3335925fb182ddfb56f01af90dfe3a372e9d051e0926833b96cc" }, { "transactionIndex": 0, - "blockNumber": 27819950, - "transactionHash": "0x3924719a7a7dcde7e8a4a1798d38892c1d91f50e4c3c0e9f2c86493f06b0aad0", - "address": "0x2646E026CCF356850eC54E9a522B30b3db679D71", + "blockNumber": 10172185, + "transactionHash": "0x6c9accc6f4bc44c9433e5d49554ae5a05604d7b73c94bf4fe10b6537c82aedcf", + "address": "0x2547A36186eCC16C25649B9234D4937216e45978", "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000e828d04fd7b0ad97000d44f1122d08cefc49f5b0" + "0x000000000000000000000000b8a2b9da0b39b9d41907f2db44cfd0d67d7237c4" ], "data": "0x", "logIndex": 1, - "blockHash": "0x70f41406abe0efd10e4771aa9d72b256a001529a52ba8000553f8cd64e85a45d" + "blockHash": "0x00ae419a6cbb3335925fb182ddfb56f01af90dfe3a372e9d051e0926833b96cc" }, { "transactionIndex": 0, - "blockNumber": 27819950, - "transactionHash": "0x3924719a7a7dcde7e8a4a1798d38892c1d91f50e4c3c0e9f2c86493f06b0aad0", - "address": "0x2646E026CCF356850eC54E9a522B30b3db679D71", + "blockNumber": 10172185, + "transactionHash": "0x6c9accc6f4bc44c9433e5d49554ae5a05604d7b73c94bf4fe10b6537c82aedcf", + "address": "0x2547A36186eCC16C25649B9234D4937216e45978", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001", "logIndex": 2, - "blockHash": "0x70f41406abe0efd10e4771aa9d72b256a001529a52ba8000553f8cd64e85a45d" + "blockHash": "0x00ae419a6cbb3335925fb182ddfb56f01af90dfe3a372e9d051e0926833b96cc" } ], - "blockNumber": 27819950, - "cumulativeGasUsed": "336704", + "blockNumber": 10172185, + "cumulativeGasUsed": "335604", "status": 1, "byzantium": true }, "args": [ - "0x1B8DB32e8ed2A2a25d4462F446eCCe5405bd1C93", + "0x1cfEFbaA55Ad0F9078159cc0F8e6e118D4bc9B97", "0x8129fc1c" ], "numDeployments": 1, @@ -295,7 +295,7 @@ "methodName": "initialize", "args": [] }, - "implementation": "0x1B8DB32e8ed2A2a25d4462F446eCCe5405bd1C93", + "implementation": "0x1cfEFbaA55Ad0F9078159cc0F8e6e118D4bc9B97", "devdoc": { "details": "This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.", "kind": "dev", diff --git a/contracts/hardhat/deployments/OKTC/GlobalOwner_Implementation.json b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalOwner_Implementation.json similarity index 98% rename from contracts/hardhat/deployments/OKTC/GlobalOwner_Implementation.json rename to contracts/hardhat/deployments/OKX_X1_testnet/GlobalOwner_Implementation.json index de2e0945..b6795502 100644 --- a/contracts/hardhat/deployments/OKTC/GlobalOwner_Implementation.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalOwner_Implementation.json @@ -1,5 +1,5 @@ { - "address": "0x1B8DB32e8ed2A2a25d4462F446eCCe5405bd1C93", + "address": "0x1cfEFbaA55Ad0F9078159cc0F8e6e118D4bc9B97", "abi": [ { "inputs": [], @@ -207,32 +207,32 @@ "type": "function" } ], - "transactionHash": "0xac4456a27941d4611ddd5ed69ef9e5f91b352f88388fb9c2baf456d472bef212", + "transactionHash": "0x3b5c1cb8fe52f7ca5b60105ab7c7687682dbc7cbeaac4e76a3b48c6c16e9f2a8", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0x1B8DB32e8ed2A2a25d4462F446eCCe5405bd1C93", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0x1cfEFbaA55Ad0F9078159cc0F8e6e118D4bc9B97", "transactionIndex": 0, - "gasUsed": "861903", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000008000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xe9330b2a6846f5601df9baa89c46d8fa017a9c17e67f1ecc45f142d21e886462", - "transactionHash": "0xac4456a27941d4611ddd5ed69ef9e5f91b352f88388fb9c2baf456d472bef212", + "gasUsed": "861803", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000010000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x565793b4f3c9068f7f9b64435c0982802ef7256456c0ff72a7df67680b00d937", + "transactionHash": "0x3b5c1cb8fe52f7ca5b60105ab7c7687682dbc7cbeaac4e76a3b48c6c16e9f2a8", "logs": [ { "transactionIndex": 0, - "blockNumber": 27819945, - "transactionHash": "0xac4456a27941d4611ddd5ed69ef9e5f91b352f88388fb9c2baf456d472bef212", - "address": "0x1B8DB32e8ed2A2a25d4462F446eCCe5405bd1C93", + "blockNumber": 10172178, + "transactionHash": "0x3b5c1cb8fe52f7ca5b60105ab7c7687682dbc7cbeaac4e76a3b48c6c16e9f2a8", + "address": "0x1cfEFbaA55Ad0F9078159cc0F8e6e118D4bc9B97", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", "logIndex": 0, - "blockHash": "0xe9330b2a6846f5601df9baa89c46d8fa017a9c17e67f1ecc45f142d21e886462" + "blockHash": "0x565793b4f3c9068f7f9b64435c0982802ef7256456c0ff72a7df67680b00d937" } ], - "blockNumber": 27819945, - "cumulativeGasUsed": "861903", + "blockNumber": 10172178, + "cumulativeGasUsed": "861803", "status": 1, "byzantium": true }, diff --git a/contracts/hardhat/deployments/OKTC/GlobalOwner_Proxy.json b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalOwner_Proxy.json similarity index 94% rename from contracts/hardhat/deployments/OKTC/GlobalOwner_Proxy.json rename to contracts/hardhat/deployments/OKX_X1_testnet/GlobalOwner_Proxy.json index 40aa121e..93a855b9 100644 --- a/contracts/hardhat/deployments/OKTC/GlobalOwner_Proxy.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalOwner_Proxy.json @@ -1,5 +1,5 @@ { - "address": "0x2646E026CCF356850eC54E9a522B30b3db679D71", + "address": "0x2547A36186eCC16C25649B9234D4937216e45978", "abi": [ { "inputs": [ @@ -71,64 +71,64 @@ "type": "receive" } ], - "transactionHash": "0x3924719a7a7dcde7e8a4a1798d38892c1d91f50e4c3c0e9f2c86493f06b0aad0", + "transactionHash": "0x6c9accc6f4bc44c9433e5d49554ae5a05604d7b73c94bf4fe10b6537c82aedcf", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0x2646E026CCF356850eC54E9a522B30b3db679D71", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0x2547A36186eCC16C25649B9234D4937216e45978", "transactionIndex": 0, - "gasUsed": "336704", - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000008000000000100100000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000400020000000000000000000800000000000000000000000000001000400000100000000000000000000000000000000000000080000000000000400000000000000000000000000000000400000000000000000000800000000000000000000020000000000000000000040000000000000000000000100000000020000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x70f41406abe0efd10e4771aa9d72b256a001529a52ba8000553f8cd64e85a45d", - "transactionHash": "0x3924719a7a7dcde7e8a4a1798d38892c1d91f50e4c3c0e9f2c86493f06b0aad0", + "gasUsed": "335604", + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000000000800080200000000000000000000000000400000000000400000000000000000000000008000000880000000000000020000000000000000000000000000000400000000000000000000000000000000000000000020000100000000000000040000000020000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x00ae419a6cbb3335925fb182ddfb56f01af90dfe3a372e9d051e0926833b96cc", + "transactionHash": "0x6c9accc6f4bc44c9433e5d49554ae5a05604d7b73c94bf4fe10b6537c82aedcf", "logs": [ { "transactionIndex": 0, - "blockNumber": 27819950, - "transactionHash": "0x3924719a7a7dcde7e8a4a1798d38892c1d91f50e4c3c0e9f2c86493f06b0aad0", - "address": "0x2646E026CCF356850eC54E9a522B30b3db679D71", + "blockNumber": 10172185, + "transactionHash": "0x6c9accc6f4bc44c9433e5d49554ae5a05604d7b73c94bf4fe10b6537c82aedcf", + "address": "0x2547A36186eCC16C25649B9234D4937216e45978", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000001b8db32e8ed2a2a25d4462f446ecce5405bd1c93" + "0x0000000000000000000000001cfefbaa55ad0f9078159cc0f8e6e118d4bc9b97" ], "data": "0x", "logIndex": 0, - "blockHash": "0x70f41406abe0efd10e4771aa9d72b256a001529a52ba8000553f8cd64e85a45d" + "blockHash": "0x00ae419a6cbb3335925fb182ddfb56f01af90dfe3a372e9d051e0926833b96cc" }, { "transactionIndex": 0, - "blockNumber": 27819950, - "transactionHash": "0x3924719a7a7dcde7e8a4a1798d38892c1d91f50e4c3c0e9f2c86493f06b0aad0", - "address": "0x2646E026CCF356850eC54E9a522B30b3db679D71", + "blockNumber": 10172185, + "transactionHash": "0x6c9accc6f4bc44c9433e5d49554ae5a05604d7b73c94bf4fe10b6537c82aedcf", + "address": "0x2547A36186eCC16C25649B9234D4937216e45978", "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000e828d04fd7b0ad97000d44f1122d08cefc49f5b0" + "0x000000000000000000000000b8a2b9da0b39b9d41907f2db44cfd0d67d7237c4" ], "data": "0x", "logIndex": 1, - "blockHash": "0x70f41406abe0efd10e4771aa9d72b256a001529a52ba8000553f8cd64e85a45d" + "blockHash": "0x00ae419a6cbb3335925fb182ddfb56f01af90dfe3a372e9d051e0926833b96cc" }, { "transactionIndex": 0, - "blockNumber": 27819950, - "transactionHash": "0x3924719a7a7dcde7e8a4a1798d38892c1d91f50e4c3c0e9f2c86493f06b0aad0", - "address": "0x2646E026CCF356850eC54E9a522B30b3db679D71", + "blockNumber": 10172185, + "transactionHash": "0x6c9accc6f4bc44c9433e5d49554ae5a05604d7b73c94bf4fe10b6537c82aedcf", + "address": "0x2547A36186eCC16C25649B9234D4937216e45978", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001", "logIndex": 2, - "blockHash": "0x70f41406abe0efd10e4771aa9d72b256a001529a52ba8000553f8cd64e85a45d" + "blockHash": "0x00ae419a6cbb3335925fb182ddfb56f01af90dfe3a372e9d051e0926833b96cc" } ], - "blockNumber": 27819950, - "cumulativeGasUsed": "336704", + "blockNumber": 10172185, + "cumulativeGasUsed": "335604", "status": 1, "byzantium": true }, "args": [ - "0x1B8DB32e8ed2A2a25d4462F446eCCe5405bd1C93", + "0x1cfEFbaA55Ad0F9078159cc0F8e6e118D4bc9B97", "0x8129fc1c" ], "numDeployments": 1, diff --git a/contracts/hardhat/deployments/OKTC/GlobalPause.json b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalPause.json similarity index 95% rename from contracts/hardhat/deployments/OKTC/GlobalPause.json rename to contracts/hardhat/deployments/OKX_X1_testnet/GlobalPause.json index 55e69aac..f71437f3 100644 --- a/contracts/hardhat/deployments/OKTC/GlobalPause.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalPause.json @@ -1,5 +1,5 @@ { - "address": "0x74774f077c9f60c0cb7e68534C4749f94ef06a3c", + "address": "0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6", "abi": [ { "anonymous": false, @@ -259,51 +259,51 @@ "type": "constructor" } ], - "transactionHash": "0xd7718ffd46e98a7c3a66d906b577abe291c81528f99e19665c8259e7c76b974b", + "transactionHash": "0xa900904a99fe9b337a115ab15a946bf125bd404cdf0e87c146e53aff34c5c1c9", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0x74774f077c9f60c0cb7e68534C4749f94ef06a3c", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6", "transactionIndex": 0, - "gasUsed": "337527", - "logsBloom": "0x00000000000000000000000040000000400000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000040000000000000000400000000000000008000000000000080000000000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x4e257f5deaa315be6a95b76926b4ded3852f7ca08d5b4d418686a6dcee4df101", - "transactionHash": "0xd7718ffd46e98a7c3a66d906b577abe291c81528f99e19665c8259e7c76b974b", + "gasUsed": "335027", + "logsBloom": "0x00000000000000000020000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000008000000000000000080800000000000000000000000000000000000000000000400000000000000000000000000000000000000000020000000000000000000040000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x19c6611dfaa99ce8f0eb73b251f10b39e4384ee21ad651cfe6c5ce79703d2ccc", + "transactionHash": "0xa900904a99fe9b337a115ab15a946bf125bd404cdf0e87c146e53aff34c5c1c9", "logs": [ { "transactionIndex": 0, - "blockNumber": 27819957, - "transactionHash": "0xd7718ffd46e98a7c3a66d906b577abe291c81528f99e19665c8259e7c76b974b", - "address": "0x74774f077c9f60c0cb7e68534C4749f94ef06a3c", + "blockNumber": 10172205, + "transactionHash": "0xa900904a99fe9b337a115ab15a946bf125bd404cdf0e87c146e53aff34c5c1c9", + "address": "0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000ef76f5d0315f5f952cfffa5376962adb35c6eeba" + "0x00000000000000000000000038a43930fe7258c161806e2064d2ef7562c562b8" ], "data": "0x", "logIndex": 0, - "blockHash": "0x4e257f5deaa315be6a95b76926b4ded3852f7ca08d5b4d418686a6dcee4df101" + "blockHash": "0x19c6611dfaa99ce8f0eb73b251f10b39e4384ee21ad651cfe6c5ce79703d2ccc" }, { "transactionIndex": 0, - "blockNumber": 27819957, - "transactionHash": "0xd7718ffd46e98a7c3a66d906b577abe291c81528f99e19665c8259e7c76b974b", - "address": "0x74774f077c9f60c0cb7e68534C4749f94ef06a3c", + "blockNumber": 10172205, + "transactionHash": "0xa900904a99fe9b337a115ab15a946bf125bd404cdf0e87c146e53aff34c5c1c9", + "address": "0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001", "logIndex": 1, - "blockHash": "0x4e257f5deaa315be6a95b76926b4ded3852f7ca08d5b4d418686a6dcee4df101" + "blockHash": "0x19c6611dfaa99ce8f0eb73b251f10b39e4384ee21ad651cfe6c5ce79703d2ccc" } ], - "blockNumber": 27819957, - "cumulativeGasUsed": "337527", + "blockNumber": 10172205, + "cumulativeGasUsed": "335027", "status": 1, "byzantium": true }, "args": [ - "0xef76f5d0315f5F952cfFFa5376962aDb35c6eEba", - "0xc4d66de80000000000000000000000002646e026ccf356850ec54e9a522b30b3db679d71" + "0x38A43930fe7258C161806e2064d2eF7562C562b8", + "0xc4d66de80000000000000000000000002547a36186ecc16c25649b9234d4937216e45978" ], "numDeployments": 1, "solcInputHash": "0e89febeebc7444140de8e67c9067d2c", @@ -313,10 +313,10 @@ "execute": { "methodName": "initialize", "args": [ - "0x2646E026CCF356850eC54E9a522B30b3db679D71" + "0x2547A36186eCC16C25649B9234D4937216e45978" ] }, - "implementation": "0xef76f5d0315f5F952cfFFa5376962aDb35c6eEba", + "implementation": "0x38A43930fe7258C161806e2064d2eF7562C562b8", "devdoc": { "details": "This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.", "kind": "dev", diff --git a/contracts/hardhat/deployments/OKTC/GlobalPause_Implementation.json b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalPause_Implementation.json similarity index 98% rename from contracts/hardhat/deployments/OKTC/GlobalPause_Implementation.json rename to contracts/hardhat/deployments/OKX_X1_testnet/GlobalPause_Implementation.json index 25cd89f4..ae064e1a 100644 --- a/contracts/hardhat/deployments/OKTC/GlobalPause_Implementation.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalPause_Implementation.json @@ -1,5 +1,5 @@ { - "address": "0xef76f5d0315f5F952cfFFa5376962aDb35c6eEba", + "address": "0x38A43930fe7258C161806e2064d2eF7562C562b8", "abi": [ { "inputs": [], @@ -240,32 +240,32 @@ "type": "function" } ], - "transactionHash": "0x830ead41538b1e223ce9b02cd722783f4b35a304686a894e501a5ca073d9ff73", + "transactionHash": "0x0ba62383698e182e1458856f0ab7725391838b957c99c6d11e1edb98c0e19b07", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0xef76f5d0315f5F952cfFFa5376962aDb35c6eEba", - "transactionIndex": 1, - "gasUsed": "955191", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000200000000000000000000000040000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xb0c3a96e44e06f866946881184b278b03aecff838aa777b39dc09220c97c19fd", - "transactionHash": "0x830ead41538b1e223ce9b02cd722783f4b35a304686a894e501a5ca073d9ff73", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0x38A43930fe7258C161806e2064d2eF7562C562b8", + "transactionIndex": 0, + "gasUsed": "955091", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000080000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000", + "blockHash": "0xe296abe94bdb73b555d1bf5d7664b22412a7c3946e93e2b1b330558510255a22", + "transactionHash": "0x0ba62383698e182e1458856f0ab7725391838b957c99c6d11e1edb98c0e19b07", "logs": [ { - "transactionIndex": 1, - "blockNumber": 27819953, - "transactionHash": "0x830ead41538b1e223ce9b02cd722783f4b35a304686a894e501a5ca073d9ff73", - "address": "0xef76f5d0315f5F952cfFFa5376962aDb35c6eEba", + "transactionIndex": 0, + "blockNumber": 10172195, + "transactionHash": "0x0ba62383698e182e1458856f0ab7725391838b957c99c6d11e1edb98c0e19b07", + "address": "0x38A43930fe7258C161806e2064d2eF7562C562b8", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", - "logIndex": 1, - "blockHash": "0xb0c3a96e44e06f866946881184b278b03aecff838aa777b39dc09220c97c19fd" + "logIndex": 0, + "blockHash": "0xe296abe94bdb73b555d1bf5d7664b22412a7c3946e93e2b1b330558510255a22" } ], - "blockNumber": 27819953, - "cumulativeGasUsed": "3255191", + "blockNumber": 10172195, + "cumulativeGasUsed": "955091", "status": 1, "byzantium": true }, diff --git a/contracts/hardhat/deployments/OKTC/GlobalPause_Proxy.json b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalPause_Proxy.json similarity index 95% rename from contracts/hardhat/deployments/OKTC/GlobalPause_Proxy.json rename to contracts/hardhat/deployments/OKX_X1_testnet/GlobalPause_Proxy.json index 6fb8b746..f4dc8a30 100644 --- a/contracts/hardhat/deployments/OKTC/GlobalPause_Proxy.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/GlobalPause_Proxy.json @@ -1,5 +1,5 @@ { - "address": "0x74774f077c9f60c0cb7e68534C4749f94ef06a3c", + "address": "0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6", "abi": [ { "inputs": [ @@ -71,51 +71,51 @@ "type": "receive" } ], - "transactionHash": "0xd7718ffd46e98a7c3a66d906b577abe291c81528f99e19665c8259e7c76b974b", + "transactionHash": "0xa900904a99fe9b337a115ab15a946bf125bd404cdf0e87c146e53aff34c5c1c9", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0x74774f077c9f60c0cb7e68534C4749f94ef06a3c", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6", "transactionIndex": 0, - "gasUsed": "337527", - "logsBloom": "0x00000000000000000000000040000000400000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000040000000000000000400000000000000008000000000000080000000000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x4e257f5deaa315be6a95b76926b4ded3852f7ca08d5b4d418686a6dcee4df101", - "transactionHash": "0xd7718ffd46e98a7c3a66d906b577abe291c81528f99e19665c8259e7c76b974b", + "gasUsed": "335027", + "logsBloom": "0x00000000000000000020000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000008000000000000000080800000000000000000000000000000000000000000000400000000000000000000000000000000000000000020000000000000000000040000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x19c6611dfaa99ce8f0eb73b251f10b39e4384ee21ad651cfe6c5ce79703d2ccc", + "transactionHash": "0xa900904a99fe9b337a115ab15a946bf125bd404cdf0e87c146e53aff34c5c1c9", "logs": [ { "transactionIndex": 0, - "blockNumber": 27819957, - "transactionHash": "0xd7718ffd46e98a7c3a66d906b577abe291c81528f99e19665c8259e7c76b974b", - "address": "0x74774f077c9f60c0cb7e68534C4749f94ef06a3c", + "blockNumber": 10172205, + "transactionHash": "0xa900904a99fe9b337a115ab15a946bf125bd404cdf0e87c146e53aff34c5c1c9", + "address": "0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000ef76f5d0315f5f952cfffa5376962adb35c6eeba" + "0x00000000000000000000000038a43930fe7258c161806e2064d2ef7562c562b8" ], "data": "0x", "logIndex": 0, - "blockHash": "0x4e257f5deaa315be6a95b76926b4ded3852f7ca08d5b4d418686a6dcee4df101" + "blockHash": "0x19c6611dfaa99ce8f0eb73b251f10b39e4384ee21ad651cfe6c5ce79703d2ccc" }, { "transactionIndex": 0, - "blockNumber": 27819957, - "transactionHash": "0xd7718ffd46e98a7c3a66d906b577abe291c81528f99e19665c8259e7c76b974b", - "address": "0x74774f077c9f60c0cb7e68534C4749f94ef06a3c", + "blockNumber": 10172205, + "transactionHash": "0xa900904a99fe9b337a115ab15a946bf125bd404cdf0e87c146e53aff34c5c1c9", + "address": "0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001", "logIndex": 1, - "blockHash": "0x4e257f5deaa315be6a95b76926b4ded3852f7ca08d5b4d418686a6dcee4df101" + "blockHash": "0x19c6611dfaa99ce8f0eb73b251f10b39e4384ee21ad651cfe6c5ce79703d2ccc" } ], - "blockNumber": 27819957, - "cumulativeGasUsed": "337527", + "blockNumber": 10172205, + "cumulativeGasUsed": "335027", "status": 1, "byzantium": true }, "args": [ - "0xef76f5d0315f5F952cfFFa5376962aDb35c6eEba", - "0xc4d66de80000000000000000000000002646e026ccf356850ec54e9a522b30b3db679d71" + "0x38A43930fe7258C161806e2064d2eF7562C562b8", + "0xc4d66de80000000000000000000000002547a36186ecc16c25649b9234d4937216e45978" ], "numDeployments": 1, "solcInputHash": "0e89febeebc7444140de8e67c9067d2c", diff --git a/contracts/hardhat/deployments/OKTC/LDYStaking.json b/contracts/hardhat/deployments/OKX_X1_testnet/LDYStaking.json similarity index 95% rename from contracts/hardhat/deployments/OKTC/LDYStaking.json rename to contracts/hardhat/deployments/OKX_X1_testnet/LDYStaking.json index 3f96fcef..f9a4c587 100644 --- a/contracts/hardhat/deployments/OKTC/LDYStaking.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/LDYStaking.json @@ -1,5 +1,5 @@ { - "address": "0xdc2051273BdEb81739E3dfa67B7df7D7A8e98901", + "address": "0x045f9E9d2225319dF5E0909007FE7979E2674a32", "abi": [ { "anonymous": false, @@ -149,34 +149,34 @@ "type": "function" } ], - "transactionHash": "0x44d38de3d4a28c96ed0cc4de86894e806320ef33c97e8ccfef9cbc4371ecedf7", + "transactionHash": "0x051ee5dbea7c68fd5ff849f15cf8e3f6a47a2dfb9182e26114fb7aaba602dba5", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0xdc2051273BdEb81739E3dfa67B7df7D7A8e98901", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0x045f9E9d2225319dF5E0909007FE7979E2674a32", "transactionIndex": 0, - "gasUsed": "310733", - "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000001000000004000000000000000000000000000020000000000400000000800000000000000000000000000000000400000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000020000000000000000000000000000000004000000000000000000000000000000000", - "blockHash": "0xd42a3e8c628e77c0aa1ab32e84bf2c2a96d818d4b8be7ca2e6e5f5fe22d9ec51", - "transactionHash": "0x44d38de3d4a28c96ed0cc4de86894e806320ef33c97e8ccfef9cbc4371ecedf7", + "gasUsed": "312633", + "logsBloom": "0x00000000100000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000001000000000000000000000000000000000000020000010000000000000800000200000000000000000000000000400000000000400000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x144d942d9d7a74f6d8e4ce80d7372a738b2697e15d3b1cbd37103f752281f3c2", + "transactionHash": "0x051ee5dbea7c68fd5ff849f15cf8e3f6a47a2dfb9182e26114fb7aaba602dba5", "logs": [ { "transactionIndex": 0, - "blockNumber": 27819972, - "transactionHash": "0x44d38de3d4a28c96ed0cc4de86894e806320ef33c97e8ccfef9cbc4371ecedf7", - "address": "0xdc2051273BdEb81739E3dfa67B7df7D7A8e98901", + "blockNumber": 10172240, + "transactionHash": "0x051ee5dbea7c68fd5ff849f15cf8e3f6a47a2dfb9182e26114fb7aaba602dba5", + "address": "0x045f9E9d2225319dF5E0909007FE7979E2674a32", "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000e828d04fd7b0ad97000d44f1122d08cefc49f5b0" + "0x000000000000000000000000b8a2b9da0b39b9d41907f2db44cfd0d67d7237c4" ], "data": "0x", "logIndex": 0, - "blockHash": "0xd42a3e8c628e77c0aa1ab32e84bf2c2a96d818d4b8be7ca2e6e5f5fe22d9ec51" + "blockHash": "0x144d942d9d7a74f6d8e4ce80d7372a738b2697e15d3b1cbd37103f752281f3c2" } ], - "blockNumber": 27819972, - "cumulativeGasUsed": "310733", + "blockNumber": 10172240, + "cumulativeGasUsed": "312633", "status": 1, "byzantium": true }, diff --git a/contracts/hardhat/deployments/OKTC/LTokenSignaler.json b/contracts/hardhat/deployments/OKX_X1_testnet/LTokenSignaler.json similarity index 95% rename from contracts/hardhat/deployments/OKTC/LTokenSignaler.json rename to contracts/hardhat/deployments/OKX_X1_testnet/LTokenSignaler.json index f66833a7..eff30e57 100644 --- a/contracts/hardhat/deployments/OKTC/LTokenSignaler.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/LTokenSignaler.json @@ -1,5 +1,5 @@ { - "address": "0x257E5913605a21561e552171AED2D8C3fa7335aB", + "address": "0x6A88b87aA4865e8d67D7CD32178bA03F885a088a", "abi": [ { "anonymous": false, @@ -232,51 +232,51 @@ "type": "constructor" } ], - "transactionHash": "0x07229f4ddaf075a14024e5e8e5ace94d9bb6f869582456e603fb3ebe8271e9a5", + "transactionHash": "0xf3b2f02e7b14305ea5cc6568f756859799d0f1034ae03b91884db38f389f9a9a", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0x257E5913605a21561e552171AED2D8C3fa7335aB", - "transactionIndex": 1, - "gasUsed": "334171", - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000100000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000800000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000020000000000000000000040000000000000000000000000000000000000000000000000200000000000010200000000000000000000000000000000000", - "blockHash": "0x6a3b947b7cd0420c15b6c49d86fb2b6e44507d7b2fe2d00def2d194d8a3f828f", - "transactionHash": "0x07229f4ddaf075a14024e5e8e5ace94d9bb6f869582456e603fb3ebe8271e9a5", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0x6A88b87aA4865e8d67D7CD32178bA03F885a088a", + "transactionIndex": 0, + "gasUsed": "332471", + "logsBloom": "0x00000000000000000000000000000400404000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000010000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000040000000000000000000000000000000400000000000000000000000000000000000000000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x4bce3f06c707ca6db2c69154b47a1364dd9106292541091777edd568729d16a4", + "transactionHash": "0xf3b2f02e7b14305ea5cc6568f756859799d0f1034ae03b91884db38f389f9a9a", "logs": [ { - "transactionIndex": 1, - "blockNumber": 27819984, - "transactionHash": "0x07229f4ddaf075a14024e5e8e5ace94d9bb6f869582456e603fb3ebe8271e9a5", - "address": "0x257E5913605a21561e552171AED2D8C3fa7335aB", + "transactionIndex": 0, + "blockNumber": 10172287, + "transactionHash": "0xf3b2f02e7b14305ea5cc6568f756859799d0f1034ae03b91884db38f389f9a9a", + "address": "0x6A88b87aA4865e8d67D7CD32178bA03F885a088a", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000062825d3dc53ac21c68f8da4e98d229fdadafc9e4" + "0x000000000000000000000000ecbab0deaf59bd9e2725678df0b3cbc82bc8d364" ], "data": "0x", "logIndex": 0, - "blockHash": "0x6a3b947b7cd0420c15b6c49d86fb2b6e44507d7b2fe2d00def2d194d8a3f828f" + "blockHash": "0x4bce3f06c707ca6db2c69154b47a1364dd9106292541091777edd568729d16a4" }, { - "transactionIndex": 1, - "blockNumber": 27819984, - "transactionHash": "0x07229f4ddaf075a14024e5e8e5ace94d9bb6f869582456e603fb3ebe8271e9a5", - "address": "0x257E5913605a21561e552171AED2D8C3fa7335aB", + "transactionIndex": 0, + "blockNumber": 10172287, + "transactionHash": "0xf3b2f02e7b14305ea5cc6568f756859799d0f1034ae03b91884db38f389f9a9a", + "address": "0x6A88b87aA4865e8d67D7CD32178bA03F885a088a", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001", "logIndex": 1, - "blockHash": "0x6a3b947b7cd0420c15b6c49d86fb2b6e44507d7b2fe2d00def2d194d8a3f828f" + "blockHash": "0x4bce3f06c707ca6db2c69154b47a1364dd9106292541091777edd568729d16a4" } ], - "blockNumber": 27819984, - "cumulativeGasUsed": "1734171", + "blockNumber": 10172287, + "cumulativeGasUsed": "332471", "status": 1, "byzantium": true }, "args": [ - "0x62825D3DC53AC21c68f8Da4E98d229FdADaFc9e4", - "0xc4d66de80000000000000000000000002646e026ccf356850ec54e9a522b30b3db679d71" + "0xECBAb0dEaf59Bd9e2725678df0b3cbC82bc8d364", + "0xc4d66de80000000000000000000000002547a36186ecc16c25649b9234d4937216e45978" ], "numDeployments": 1, "solcInputHash": "0e89febeebc7444140de8e67c9067d2c", @@ -286,10 +286,10 @@ "execute": { "methodName": "initialize", "args": [ - "0x2646E026CCF356850eC54E9a522B30b3db679D71" + "0x2547A36186eCC16C25649B9234D4937216e45978" ] }, - "implementation": "0x62825D3DC53AC21c68f8Da4E98d229FdADaFc9e4", + "implementation": "0xECBAb0dEaf59Bd9e2725678df0b3cbC82bc8d364", "devdoc": { "details": "This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.", "kind": "dev", diff --git a/contracts/hardhat/deployments/OKTC/LTokenSignaler_Implementation.json b/contracts/hardhat/deployments/OKX_X1_testnet/LTokenSignaler_Implementation.json similarity index 98% rename from contracts/hardhat/deployments/OKTC/LTokenSignaler_Implementation.json rename to contracts/hardhat/deployments/OKX_X1_testnet/LTokenSignaler_Implementation.json index 81deedc2..2dc56f33 100644 --- a/contracts/hardhat/deployments/OKTC/LTokenSignaler_Implementation.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/LTokenSignaler_Implementation.json @@ -1,5 +1,5 @@ { - "address": "0x62825D3DC53AC21c68f8Da4E98d229FdADaFc9e4", + "address": "0xECBAb0dEaf59Bd9e2725678df0b3cbC82bc8d364", "abi": [ { "inputs": [], @@ -213,32 +213,32 @@ "type": "function" } ], - "transactionHash": "0xe3e7a69e60435dac0697a1db9850f77d8632b5abe0edf0bc07c87d743b2a6ebd", + "transactionHash": "0x835ac981f3ebbd6fed9a7b70fff192019c0bea3c1da6df7633c591287a7c046e", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0x62825D3DC53AC21c68f8Da4E98d229FdADaFc9e4", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0xECBAb0dEaf59Bd9e2725678df0b3cbC82bc8d364", "transactionIndex": 0, - "gasUsed": "862719", - "logsBloom": "0x00000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x9a7959b31cdf504d5a17e149c5a38c7993db04b579ebec7c48647a56b20914b3", - "transactionHash": "0xe3e7a69e60435dac0697a1db9850f77d8632b5abe0edf0bc07c87d743b2a6ebd", + "gasUsed": "862619", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000800080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x77f332831ea3548af8ced1de40eaf083ae06e373202d074ce7e1b80dd89de453", + "transactionHash": "0x835ac981f3ebbd6fed9a7b70fff192019c0bea3c1da6df7633c591287a7c046e", "logs": [ { "transactionIndex": 0, - "blockNumber": 27819980, - "transactionHash": "0xe3e7a69e60435dac0697a1db9850f77d8632b5abe0edf0bc07c87d743b2a6ebd", - "address": "0x62825D3DC53AC21c68f8Da4E98d229FdADaFc9e4", + "blockNumber": 10172279, + "transactionHash": "0x835ac981f3ebbd6fed9a7b70fff192019c0bea3c1da6df7633c591287a7c046e", + "address": "0xECBAb0dEaf59Bd9e2725678df0b3cbC82bc8d364", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", "logIndex": 0, - "blockHash": "0x9a7959b31cdf504d5a17e149c5a38c7993db04b579ebec7c48647a56b20914b3" + "blockHash": "0x77f332831ea3548af8ced1de40eaf083ae06e373202d074ce7e1b80dd89de453" } ], - "blockNumber": 27819980, - "cumulativeGasUsed": "862719", + "blockNumber": 10172279, + "cumulativeGasUsed": "862619", "status": 1, "byzantium": true }, diff --git a/contracts/hardhat/deployments/OKTC/LTokenSignaler_Proxy.json b/contracts/hardhat/deployments/OKX_X1_testnet/LTokenSignaler_Proxy.json similarity index 95% rename from contracts/hardhat/deployments/OKTC/LTokenSignaler_Proxy.json rename to contracts/hardhat/deployments/OKX_X1_testnet/LTokenSignaler_Proxy.json index 64bc7a68..e8c51a9e 100644 --- a/contracts/hardhat/deployments/OKTC/LTokenSignaler_Proxy.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/LTokenSignaler_Proxy.json @@ -1,5 +1,5 @@ { - "address": "0x257E5913605a21561e552171AED2D8C3fa7335aB", + "address": "0x6A88b87aA4865e8d67D7CD32178bA03F885a088a", "abi": [ { "inputs": [ @@ -71,51 +71,51 @@ "type": "receive" } ], - "transactionHash": "0x07229f4ddaf075a14024e5e8e5ace94d9bb6f869582456e603fb3ebe8271e9a5", + "transactionHash": "0xf3b2f02e7b14305ea5cc6568f756859799d0f1034ae03b91884db38f389f9a9a", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0x257E5913605a21561e552171AED2D8C3fa7335aB", - "transactionIndex": 1, - "gasUsed": "334171", - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000100000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000800000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000020000000000000000000040000000000000000000000000000000000000000000000000200000000000010200000000000000000000000000000000000", - "blockHash": "0x6a3b947b7cd0420c15b6c49d86fb2b6e44507d7b2fe2d00def2d194d8a3f828f", - "transactionHash": "0x07229f4ddaf075a14024e5e8e5ace94d9bb6f869582456e603fb3ebe8271e9a5", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0x6A88b87aA4865e8d67D7CD32178bA03F885a088a", + "transactionIndex": 0, + "gasUsed": "332471", + "logsBloom": "0x00000000000000000000000000000400404000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000010000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000040000000000000000000000000000000400000000000000000000000000000000000000000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x4bce3f06c707ca6db2c69154b47a1364dd9106292541091777edd568729d16a4", + "transactionHash": "0xf3b2f02e7b14305ea5cc6568f756859799d0f1034ae03b91884db38f389f9a9a", "logs": [ { - "transactionIndex": 1, - "blockNumber": 27819984, - "transactionHash": "0x07229f4ddaf075a14024e5e8e5ace94d9bb6f869582456e603fb3ebe8271e9a5", - "address": "0x257E5913605a21561e552171AED2D8C3fa7335aB", + "transactionIndex": 0, + "blockNumber": 10172287, + "transactionHash": "0xf3b2f02e7b14305ea5cc6568f756859799d0f1034ae03b91884db38f389f9a9a", + "address": "0x6A88b87aA4865e8d67D7CD32178bA03F885a088a", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000062825d3dc53ac21c68f8da4e98d229fdadafc9e4" + "0x000000000000000000000000ecbab0deaf59bd9e2725678df0b3cbc82bc8d364" ], "data": "0x", "logIndex": 0, - "blockHash": "0x6a3b947b7cd0420c15b6c49d86fb2b6e44507d7b2fe2d00def2d194d8a3f828f" + "blockHash": "0x4bce3f06c707ca6db2c69154b47a1364dd9106292541091777edd568729d16a4" }, { - "transactionIndex": 1, - "blockNumber": 27819984, - "transactionHash": "0x07229f4ddaf075a14024e5e8e5ace94d9bb6f869582456e603fb3ebe8271e9a5", - "address": "0x257E5913605a21561e552171AED2D8C3fa7335aB", + "transactionIndex": 0, + "blockNumber": 10172287, + "transactionHash": "0xf3b2f02e7b14305ea5cc6568f756859799d0f1034ae03b91884db38f389f9a9a", + "address": "0x6A88b87aA4865e8d67D7CD32178bA03F885a088a", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001", "logIndex": 1, - "blockHash": "0x6a3b947b7cd0420c15b6c49d86fb2b6e44507d7b2fe2d00def2d194d8a3f828f" + "blockHash": "0x4bce3f06c707ca6db2c69154b47a1364dd9106292541091777edd568729d16a4" } ], - "blockNumber": 27819984, - "cumulativeGasUsed": "1734171", + "blockNumber": 10172287, + "cumulativeGasUsed": "332471", "status": 1, "byzantium": true }, "args": [ - "0x62825D3DC53AC21c68f8Da4E98d229FdADaFc9e4", - "0xc4d66de80000000000000000000000002646e026ccf356850ec54e9a522b30b3db679d71" + "0xECBAb0dEaf59Bd9e2725678df0b3cbC82bc8d364", + "0xc4d66de80000000000000000000000002547a36186ecc16c25649b9234d4937216e45978" ], "numDeployments": 1, "solcInputHash": "0e89febeebc7444140de8e67c9067d2c", diff --git a/contracts/hardhat/deployments/OKTC/LUSDC.json b/contracts/hardhat/deployments/OKX_X1_testnet/LUSDC.json similarity index 96% rename from contracts/hardhat/deployments/OKTC/LUSDC.json rename to contracts/hardhat/deployments/OKX_X1_testnet/LUSDC.json index d9eaf14b..9150d64b 100644 --- a/contracts/hardhat/deployments/OKTC/LUSDC.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/LUSDC.json @@ -1,5 +1,5 @@ { - "address": "0xecbC53e4379ABC34Da28E33Da8aEeC54570d2cD1", + "address": "0x1e1B0bB6C182eFD7d64cdAbbF3A3E315dE26E259", "abi": [ { "anonymous": false, @@ -1325,51 +1325,51 @@ "type": "constructor" } ], - "transactionHash": "0x9cd83a2da8774ef237a89ea613548fa17b1611901f4e2288ec23035c1c59916d", + "transactionHash": "0xf8af5ab8bb9964b1f25cab7a3a99654cba65e3d1746dbe1de0bee02f4694fb45", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0xecbC53e4379ABC34Da28E33Da8aEeC54570d2cD1", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0x1e1B0bB6C182eFD7d64cdAbbF3A3E315dE26E259", "transactionIndex": 0, - "gasUsed": "712234", - "logsBloom": "0x00000000000000000020000000000000400000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000400000000000000000000000000000000080000040000000000000000000000000000000000000000404000000000000000000000000000000000000000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x546b8caa1cfa9e113a804bf869908cc9684da9d0d4d820f3165ba3f7bcafb080", - "transactionHash": "0x9cd83a2da8774ef237a89ea613548fa17b1611901f4e2288ec23035c1c59916d", + "gasUsed": "652019", + "logsBloom": "0x00000000000000000000000000000000400000000000000000010000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000200400000000000000000100000000000000800000000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x412daf954f9582330cf45d1f4c96bb0fbb4b83b5d5c7eb4f76675759ca0cb198", + "transactionHash": "0xf8af5ab8bb9964b1f25cab7a3a99654cba65e3d1746dbe1de0bee02f4694fb45", "logs": [ { "transactionIndex": 0, - "blockNumber": 27819978, - "transactionHash": "0x9cd83a2da8774ef237a89ea613548fa17b1611901f4e2288ec23035c1c59916d", - "address": "0xecbC53e4379ABC34Da28E33Da8aEeC54570d2cD1", + "blockNumber": 10172276, + "transactionHash": "0xf8af5ab8bb9964b1f25cab7a3a99654cba65e3d1746dbe1de0bee02f4694fb45", + "address": "0x1e1B0bB6C182eFD7d64cdAbbF3A3E315dE26E259", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000002d5b0d8fcff3634791e235054a93078d15f4fc52" + "0x0000000000000000000000009466891d9e77ead21d8445350c51ecd35fd170bf" ], "data": "0x", "logIndex": 0, - "blockHash": "0x546b8caa1cfa9e113a804bf869908cc9684da9d0d4d820f3165ba3f7bcafb080" + "blockHash": "0x412daf954f9582330cf45d1f4c96bb0fbb4b83b5d5c7eb4f76675759ca0cb198" }, { "transactionIndex": 0, - "blockNumber": 27819978, - "transactionHash": "0x9cd83a2da8774ef237a89ea613548fa17b1611901f4e2288ec23035c1c59916d", - "address": "0xecbC53e4379ABC34Da28E33Da8aEeC54570d2cD1", + "blockNumber": 10172276, + "transactionHash": "0xf8af5ab8bb9964b1f25cab7a3a99654cba65e3d1746dbe1de0bee02f4694fb45", + "address": "0x1e1B0bB6C182eFD7d64cdAbbF3A3E315dE26E259", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001", "logIndex": 1, - "blockHash": "0x546b8caa1cfa9e113a804bf869908cc9684da9d0d4d820f3165ba3f7bcafb080" + "blockHash": "0x412daf954f9582330cf45d1f4c96bb0fbb4b83b5d5c7eb4f76675759ca0cb198" } ], - "blockNumber": 27819978, - "cumulativeGasUsed": "712234", + "blockNumber": 10172276, + "cumulativeGasUsed": "652019", "status": 1, "byzantium": true }, "args": [ - "0x2D5B0d8FCFf3634791E235054a93078D15F4FC52", - "0x1459457a0000000000000000000000002646e026ccf356850ec54e9a522b30b3db679d7100000000000000000000000074774f077c9f60c0cb7e68534c4749f94ef06a3c0000000000000000000000008a0d0714c45b9ba78aead7601390748f6f8f5452000000000000000000000000dc2051273bdeb81739e3dfa67b7df7d7a8e98901000000000000000000000000f8616348fb444479bc84f65f61c410843407860d" + "0x9466891d9E77eAD21D8445350c51ecD35fd170bF", + "0x1459457a0000000000000000000000002547a36186ecc16c25649b9234d4937216e45978000000000000000000000000696c4b4f35ee60e110cdae5b3ebd78a5597f6ac6000000000000000000000000c44395ec149c6743a268a901a38e5b02dc87d10c000000000000000000000000045f9e9d2225319df5e0909007fe7979e2674a320000000000000000000000007c3be0fa5a20ad361685932a50be9dec6f302db6" ], "numDeployments": 1, "solcInputHash": "0e89febeebc7444140de8e67c9067d2c", @@ -1379,14 +1379,14 @@ "execute": { "methodName": "initialize", "args": [ - "0x2646E026CCF356850eC54E9a522B30b3db679D71", - "0x74774f077c9f60c0cb7e68534C4749f94ef06a3c", - "0x8a0D0714c45B9ba78AEad7601390748F6f8f5452", - "0xdc2051273BdEb81739E3dfa67B7df7D7A8e98901", - "0xf8616348fB444479BC84F65F61c410843407860D" + "0x2547A36186eCC16C25649B9234D4937216e45978", + "0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6", + "0xc44395eC149C6743A268A901a38e5b02dc87D10C", + "0x045f9E9d2225319dF5E0909007FE7979E2674a32", + "0x7C3bE0fa5a20ad361685932a50be9dEC6F302db6" ] }, - "implementation": "0x2D5B0d8FCFf3634791E235054a93078D15F4FC52", + "implementation": "0x9466891d9E77eAD21D8445350c51ecD35fd170bF", "devdoc": { "details": "This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.", "kind": "dev", diff --git a/contracts/hardhat/deployments/OKTC/LUSDC_Implementation.json b/contracts/hardhat/deployments/OKX_X1_testnet/LUSDC_Implementation.json similarity index 99% rename from contracts/hardhat/deployments/OKTC/LUSDC_Implementation.json rename to contracts/hardhat/deployments/OKX_X1_testnet/LUSDC_Implementation.json index eebc946f..40bba175 100644 --- a/contracts/hardhat/deployments/OKTC/LUSDC_Implementation.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/LUSDC_Implementation.json @@ -1,5 +1,5 @@ { - "address": "0x2D5B0d8FCFf3634791E235054a93078D15F4FC52", + "address": "0x9466891d9E77eAD21D8445350c51ecD35fd170bF", "abi": [ { "anonymous": false, @@ -1301,32 +1301,32 @@ "type": "function" } ], - "transactionHash": "0x290164716239e183c15f53f62cce9ef411ae3ee65ca02673ffc7a68a098b1dd9", + "transactionHash": "0xbe54d4e1e0ba9482a7eb77bb74fa616c643cba86d9afb07ad8a77061e6085ef2", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0x2D5B0d8FCFf3634791E235054a93078D15F4FC52", - "transactionIndex": 1, - "gasUsed": "5349441", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xf5f805e454f86977bd9d9db43d4cad15d130a9f096830d2e196d58e94ec3e4c6", - "transactionHash": "0x290164716239e183c15f53f62cce9ef411ae3ee65ca02673ffc7a68a098b1dd9", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0x9466891d9E77eAD21D8445350c51ecD35fd170bF", + "transactionIndex": 0, + "gasUsed": "5349341", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x2bb5f98503a3d54c31b972793f96848461a82a2c2807dcbf19f1858fbdb98f6e", + "transactionHash": "0xbe54d4e1e0ba9482a7eb77bb74fa616c643cba86d9afb07ad8a77061e6085ef2", "logs": [ { - "transactionIndex": 1, - "blockNumber": 27819976, - "transactionHash": "0x290164716239e183c15f53f62cce9ef411ae3ee65ca02673ffc7a68a098b1dd9", - "address": "0x2D5B0d8FCFf3634791E235054a93078D15F4FC52", + "transactionIndex": 0, + "blockNumber": 10172269, + "transactionHash": "0xbe54d4e1e0ba9482a7eb77bb74fa616c643cba86d9afb07ad8a77061e6085ef2", + "address": "0x9466891d9E77eAD21D8445350c51ecD35fd170bF", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", "logIndex": 0, - "blockHash": "0xf5f805e454f86977bd9d9db43d4cad15d130a9f096830d2e196d58e94ec3e4c6" + "blockHash": "0x2bb5f98503a3d54c31b972793f96848461a82a2c2807dcbf19f1858fbdb98f6e" } ], - "blockNumber": 27819976, - "cumulativeGasUsed": "6749441", + "blockNumber": 10172269, + "cumulativeGasUsed": "5349341", "status": 1, "byzantium": true }, @@ -1334,10 +1334,10 @@ "numDeployments": 1, "solcInputHash": "289d96c4eee8f123d72afd6fe6bc7791", "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"newAPRUD7x3\",\"type\":\"uint16\"}],\"name\":\"APRChangeEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"int256\",\"name\":\"id\",\"type\":\"int256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum LToken.Action\",\"name\":\"action\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountAfterFees\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum LToken.Status\",\"name\":\"newStatus\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"newId\",\"type\":\"int256\"}],\"name\":\"ActivityEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balanceBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"}],\"name\":\"MintedRewardsEvent\",\"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\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTVL\",\"type\":\"uint256\"}],\"name\":\"TVLChangeEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"}],\"name\":\"cancelWithdrawalRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositFor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feesRateUD7x3\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"frozenRequests\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fund\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAPR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getExpectedRetained\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"getWithdrawnAmountAndFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawnAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalBlacklist\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalPause\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"globalOwner_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"globalPause_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"globalBlacklist_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ldyStaking_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"instantWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"invested\",\"outputs\":[{\"internalType\":\"contract IERC20Upgradeable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ldyStaking\",\"outputs\":[{\"internalType\":\"contract LDYStaking\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"listenerContract\",\"type\":\"address\"}],\"name\":\"listenToTransfers\",\"outputs\":[],\"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\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"}],\"name\":\"processBigQueuedRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"processQueuedRequests\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"realBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"realTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"recoverERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recoverUnderlying\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repatriate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"requestWithdrawal\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"retentionRateUD7x3\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"rewardsRedirectsFromTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"rewardsRedirectsToFrom\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"aprUD7x3\",\"type\":\"uint16\"}],\"name\":\"setAPR\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"feesRateUD7x3_\",\"type\":\"uint32\"}],\"name\":\"setFeesRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"fund_\",\"type\":\"address\"}],\"name\":\"setFund\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"ldyStakingAddress\",\"type\":\"address\"}],\"name\":\"setLDYStaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"retentionRateUD7x3_\",\"type\":\"uint32\"}],\"name\":\"setRetentionRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"withdrawer_\",\"type\":\"address\"}],\"name\":\"setWithdrawer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"startRewardsRedirection\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"stopRewardsRedirection\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalQueued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfersListeners\",\"outputs\":[{\"internalType\":\"contract ITransfersListener\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unclaimedFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"contract IERC20Upgradeable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"listenerContract\",\"type\":\"address\"}],\"name\":\"unlistenToTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"unmintedRewardsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"usableUnderlyings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawalQueue\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalQueueCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawer\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Lila Rest (https://lila.rest)\",\"custom:oz-upgrades-unsafe-allow\":\"external-library-linking\",\"custom:security-contact\":\"security@ledgity.comsecurity@ledgity.com\",\"details\":\"Definitions: - Deposit: Swap of underlying tokens for L-Tokens (1:1 ratio). - Withdrawal: Swap of L-Tokens for underlying tokens (1:1 ratio, minus applicable fees). - Instant: Processed immediately. - Requested: Queued for later processing. - Big Requested: A requested withdrawal exceeding half of the retention rate. - (Withdrawal) queue: An list of all requested withdrawals sorted by priority. - Request ID: The index of a withdrawal request in the queue array. - Retention rate: Maximum fraction of underlying tokens TVL that the contract can retain. - Fees Rate: Percentage of fees applied to successful withdrawals. - Usable underlyings: Amount of underlying tokens that have been deposited through expected ways and are so considered as safe to use by the contract. - Transfers listeners: External contracts listening on L-Tokens transfers. - Fund wallet: Wallet managed by the Ledgity's financial team. - Withdrawer wallet: Managed by an off-chain server to automate withdrawal request processing. Note that words between parenthesis are sometimes omitted for brevity.Security: This contract can safely receive funds immediately after initialization. (i.e., there is no way for funds to be sent to non-owned addresses). It is however recommended to replace ASAP owner and fund wallets by multi-sig wallets.For further details, see \\\"LToken\\\" section of whitepaper.\",\"events\":{\"APRChangeEvent(uint16)\":{\"params\":{\"newAPRUD7x3\":\"The new APR in UD7x3 format.\"}},\"ActivityEvent(int256,address,uint8,uint256,uint256,uint8,int256)\":{\"params\":{\"account\":\"The account involved in the activity.\",\"action\":\"The type of activity.\",\"amount\":\"The amount of underlying tokens involved in the activity.\",\"id\":\"ID of the involved withdrawal request or NO_ID (-1) if not applicable.\",\"newId\":\"The new ID of the request if it has been moved in the queue.\",\"newStatus\":\"The new status of the activity.\"}},\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MintedRewardsEvent(address,uint256,uint256)\":{\"params\":{\"account\":\"The account that received the rewards.\",\"balanceBefore\":\"The balance of the account before the minting.\",\"rewards\":\"The amount of minted rewards.\"}},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"TVLChangeEvent(uint256)\":{\"details\":\"TVL = realTotalSupply()\",\"params\":{\"newTVL\":\"The new TVL of the contract.\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"This is an oOverride of ERC20Upgradeable.balanceOf() that rewards that have not been yet minted to the specified account.\",\"params\":{\"account\":\"The account to check the total balance of.\"},\"returns\":{\"_0\":\"The total balance of the account.\"}},\"cancelWithdrawalRequest(uint256)\":{\"params\":{\"requestId\":\"The ID of the withdrawal request to cancel.\"}},\"decimals()\":{\"details\":\"The ERC20WrapperUpgradeable version is preferred because it mirrors the decimals amount of the underlying stablecoin token.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"deposit(uint256)\":{\"params\":{\"amount\":\"The amount of underlying tokens to deposit.\"}},\"depositFor(address,uint256)\":{\"details\":\"Allow a user to deposit underlying tokens and mint the corresponding number of wrapped tokens.\"},\"getAPR()\":{\"returns\":{\"_0\":\"The current APR in UD7x3 format.\"}},\"getExpectedRetained()\":{\"returns\":{\"amount\":\"The expected amount of retained underlying tokens.\"}},\"getWithdrawnAmountAndFees(address,uint256)\":{\"params\":{\"account\":\"The account initiating the withdrawal.\",\"amount\":\"The amount of the withdrawal.\"}},\"globalBlacklist()\":{\"returns\":{\"_0\":\"The address of the GlobalBlacklist contract.\"}},\"globalOwner()\":{\"returns\":{\"_0\":\"The address of the GlobalOwner contract.\"}},\"globalPause()\":{\"returns\":{\"_0\":\"The address of the GlobalPause contract.\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"initialize(address,address,address,address,address)\":{\"details\":\"See: https://docs.openzeppelin.com/contracts/4.x/upgradeable\",\"params\":{\"globalBlacklist_\":\"The address of the GlobalBlacklist contract.\",\"globalOwner_\":\"The address of the GlobalOwner contract.\",\"globalPause_\":\"The address of the GlobalPause contract.\",\"underlyingToken\":\"The address of the underlying stablecoin ERC20 token.\"}},\"instantWithdrawal(uint256)\":{\"details\":\"In order to save some gas and time to users, frontends should propose this function to users only when it has been verified that it will not revert. They should propose the requestWithdrawal() function otherwise.\",\"params\":{\"amount\":\"The amount L-Tokens to withdraw.\"}},\"invested()\":{\"returns\":{\"_0\":\"The reference to the invested token contract.\"}},\"listenToTransfers(address)\":{\"details\":\"Each time a transfer occurs, the onLTokenTransfer() function of the specified contract will be called.IMPORTANT SECURITY NOTE: This method is not intended to be used with contracts that are not owned by the Ledgity team.\",\"params\":{\"listenerContract\":\"The address of the new transfers listener contract.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"returns\":{\"_0\":\"The address of the owner\"}},\"paused()\":{\"details\":\"Both version are the same as ERC20BaseUpgradeable.paused() mirrors GlobalPausableUpgradeable.paused(), so a random one is chosen.\",\"returns\":{\"_0\":\"Whether the contract is paused or not.\"}},\"processBigQueuedRequest(uint256)\":{\"details\":\"In contrast to non-big requests processing, this function will uses to fund wallet's balance to fill the request. This allows processing requests that are greater than retention rate without having to exceed this rate on the contract.\",\"params\":{\"requestId\":\"The ID of the big request to process.\"}},\"processQueuedRequests()\":{\"details\":\"For further details, see \\\"LToken > Withdrawals\\\" section of whitepaper.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"realBalanceOf(address)\":{\"params\":{\"account\":\"The account to check the real balance of.\"},\"returns\":{\"_0\":\"The real balance of the account.\"}},\"realTotalSupply()\":{\"returns\":{\"_0\":\"The real total supply of L-Tokens.\"}},\"recoverERC20(address,uint256)\":{\"details\":\"This override of RecoverableUpgradeable.recoverERC20() prevents the recovered token from being the underlying token.\",\"params\":{\"amount\":\"The amount of token to recover.\",\"tokenAddress\":\"The address of the token to recover.\"}},\"recoverUnderlying()\":{\"details\":\"To prevent owner from being able to drain the contract, this function only allows recovering \\\"unusable\\\" underlying tokens, i.e., tokens that have not been sent through fund() or deposit() functions.\"},\"repatriate(uint256)\":{\"details\":\"The function will revert if repatriated amount makes the contract exceeding the retention rate.\",\"params\":{\"amount\":\"The amount of underlying tokens to repatriate.\"}},\"requestWithdrawal(uint256)\":{\"details\":\"The sender must attach 0.003 ETH to pre-pay the future processing gas fees paid by the withdrawer wallet.\",\"params\":{\"amount\":\"The amount L-Tokens to withdraw.\"}},\"setAPR(uint16)\":{\"params\":{\"aprUD7x3\":\"The new APR in UD7x3 format.\"}},\"setFeesRate(uint32)\":{\"params\":{\"feesRateUD7x3_\":\"The new withdrawal fee rate in UD7x3 format.\"}},\"setFund(address)\":{\"params\":{\"fund_\":\"The address of the new fund wallet.\"}},\"setLDYStaking(address)\":{\"params\":{\"ldyStakingAddress\":\"The address of the new LDYStaking contract.\"}},\"setRetentionRate(uint32)\":{\"details\":\"The retention rate is capped at 10%, which ensures that no more than 10% of deposited assets will ever be exposed in this contract (reduces attack surface).\",\"params\":{\"retentionRateUD7x3_\":\"The new retention rate in UD7x3 format.\"}},\"setWithdrawer(address)\":{\"params\":{\"withdrawer_\":\"The address of the new withdrawer wallet.\"}},\"startRewardsRedirection(address,address)\":{\"params\":{\"from\":\"The address of the account to redirect rewards from.\",\"to\":\"The address of the account to redirect rewards to.\"}},\"stopRewardsRedirection(address,address)\":{\"params\":{\"from\":\"The address of the account to stop redirecting rewards from.\",\"to\":\"The address of the account to stop redirecting rewards to.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"returns\":{\"_0\":\"The total supply of L-Tokens.\"}},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"},\"underlying()\":{\"details\":\"Returns the address of the underlying ERC-20 token that is being wrapped.\"},\"unlistenToTransfers(address)\":{\"details\":\"The onLTokenTransfer() function of the specified contract will not be called anymore each time a L-Token transfer occurs.\",\"params\":{\"listenerContract\":\"The address of the listener contract.\"}},\"unmintedRewardsOf(address)\":{\"details\":\"This is a public implementation of InvestUpgradeable_rewardsOf(). In the context of LToken, this function returns the amount of rewards that have not been distributed/minted yet to the specified account.This is particularly useful for off-chain services to display charts and statistics, as seen in the Ledgity Yield's frontend.\",\"params\":{\"account\":\"The account to check the unminted rewards of.\"},\"returns\":{\"_0\":\"The amount of account's unminted rewards.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"withdrawTo(address,uint256)\":{\"details\":\"Allow a user to burn a number of wrapped tokens and withdraw the corresponding number of underlying tokens.\"}},\"stateVariables\":{\"frozenRequests\":{\"details\":\"If a request emitter as been blacklisted, its request is moved here to prevent it from blocking the queue.\"},\"transfersListeners\":{\"details\":\"onLTokenTransfer() functions of those contracts will be called on each transfer.\"},\"usableUnderlyings\":{\"details\":\"Are usable, only underlying tokens deposit through deposit() or fund() functions.\"}},\"title\":\"LToken\",\"version\":1},\"userdoc\":{\"events\":{\"APRChangeEvent(uint16)\":{\"notice\":\"Emitted to inform listeners about a change in the APR's value.\"},\"ActivityEvent(int256,address,uint8,uint256,uint256,uint8,int256)\":{\"notice\":\"Emitted to inform listerners about an activity related to deposits and withdrawals.\"},\"MintedRewardsEvent(address,uint256,uint256)\":{\"notice\":\"Emitted to inform listeners that some rewards have been minted.\"},\"TVLChangeEvent(uint256)\":{\"notice\":\"Emitted to inform listeners about a change in the contract's TVL.\"}},\"kind\":\"user\",\"methods\":{\"balanceOf(address)\":{\"notice\":\"Retrieves the total balance of L-Tokens that belong to the account.\"},\"cancelWithdrawalRequest(uint256)\":{\"notice\":\"Cancels a given withdrawal request. The request emitter receive back its L-Tokens and no fees will be charged.\"},\"claimFees()\":{\"notice\":\"Used by owner to claim fees generated from successful withdrawals.\"},\"decimals()\":{\"notice\":\"Required override of decimals() which is implemented by both ERC20Upgradeable and ERC20WrapperUpgradeable parent contracts.\"},\"deposit(uint256)\":{\"notice\":\"Allows exchanging some underlying tokens for the same amount of L-Tokens.\"},\"depositFor(address,uint256)\":{\"notice\":\"Override of ERC20WrapperUpgradeable.depositFor() that reverts. Use deposit() function instead.\"},\"feesRateUD7x3()\":{\"notice\":\"Holds the withdrawal fees rate in UD7x3 format (e.g., 350 = 0.350%).\"},\"frozenRequests(uint256)\":{\"notice\":\"Holds a list of all currently frozen withdrawal requests.\"},\"fund()\":{\"notice\":\"Holds address of fund wallet (managed by Ledgity financial team).\"},\"getAPR()\":{\"notice\":\"Retrieves the most recently set APR.\"},\"getExpectedRetained()\":{\"notice\":\"Computes the maximum amount of underlying tokens that should be retained by the contract (based on retention rate).\"},\"getWithdrawnAmountAndFees(address,uint256)\":{\"notice\":\"Computes fees and net withdrawn amount for a given account withdrawing a given amount.\"},\"globalBlacklist()\":{\"notice\":\"Retrieves the address of GlobalBlacklist contract.\"},\"globalOwner()\":{\"notice\":\"Retrieves the address of GlobalOwner contract.\"},\"globalPause()\":{\"notice\":\"Retrieves the address of GlobalPause contract.\"},\"initialize(address,address,address,address,address)\":{\"notice\":\"Initializer function of the contract. It replaces the constructor() function in the context of upgradeable contracts.\"},\"instantWithdrawal(uint256)\":{\"notice\":\"Allows instaneously exchanging a given amount of L-Tokens for the same amount of underlying tokens. It will fail if the contract currently doesn't hold enough underlying tokens to cover the withdrawal.\"},\"invested()\":{\"notice\":\"Retrieves the reference to the invested token contract.\"},\"ldyStaking()\":{\"notice\":\"Holds a reference to the LDYStaking contract.\"},\"listenToTransfers(address)\":{\"notice\":\"Adds a new contract to the L-Token transfers list.\"},\"owner()\":{\"notice\":\"Override of OwnableUpgradeable.owner() that retrieves the owner's address from the GlobalOwner contract instead.\"},\"paused()\":{\"notice\":\"Required override of paused() which is implemented by both GlobalPausableUpgradeable and ERC20BaseUpgradeable parent contracts.\"},\"processBigQueuedRequest(uint256)\":{\"notice\":\"Processes a given queued big withdrawal request (one that exceeds half of the retention rate).\"},\"processQueuedRequests()\":{\"notice\":\"Processes queued withdrawal requests until there is else no more requests, else not enough underlying tokens to continue.\"},\"realBalanceOf(address)\":{\"notice\":\"Retrieves the \\\"real\\\" balance of an account, i.e., excluding its not yet minted/distributed rewards.\"},\"realTotalSupply()\":{\"notice\":\"Returns the \\\"real\\\" amount of existing L-Tokens, i.e., excluding not yet minted withdrawal fees and L-Tokens currently in the withdrawal queue.\"},\"recoverERC20(address,uint256)\":{\"notice\":\"Recovers a specified amount of a given token address.\"},\"recoverUnderlying()\":{\"notice\":\"Recovers underlying tokens accidentally sent to the contract.\"},\"renounceOwnership()\":{\"notice\":\"Override of OwnableUpgradeable.renounceOwnership() that always reverts. Ownership is managed by the GlobalOwner contract and must be modified there.\"},\"repatriate(uint256)\":{\"notice\":\"Used by the fund wallet to repatriate underlying tokens on the contract whenever those are required to fulfill some withdrawal requests.\"},\"requestWithdrawal(uint256)\":{\"notice\":\"Allows requesting the exchange of a given amount of L-Tokens for the same amount of underlying tokens. The request will be automatically processed later.\"},\"retentionRateUD7x3()\":{\"notice\":\"Holds the retention rate in UD7x3 format.\"},\"rewardsRedirectsFromTo(address)\":{\"notice\":\"Holds active rewards redirections in both from->to and to->from[] ways.\"},\"setAPR(uint16)\":{\"notice\":\"Updates the investment APR. Restricted to owner.\"},\"setFeesRate(uint32)\":{\"notice\":\"Updates the current withdrawal fee rate.\"},\"setFund(address)\":{\"notice\":\"Updates the address of the fund wallet.\"},\"setLDYStaking(address)\":{\"notice\":\"Updates the address of LDYStaking contract.\"},\"setRetentionRate(uint32)\":{\"notice\":\"Updates the current underlying token retention rate.\"},\"setWithdrawer(address)\":{\"notice\":\"Updates the address of the withdrawer wallet.\"},\"startRewardsRedirection(address,address)\":{\"notice\":\"Enables redirection of rewards from one account to another.\"},\"stopRewardsRedirection(address,address)\":{\"notice\":\"Disable an active rewards redirection.\"},\"totalQueued()\":{\"notice\":\"Holds the amount of L-Tokens currently in the withdrawal queue.\"},\"totalSupply()\":{\"notice\":\"Retrives the total supply of L-Tokens, including not yet minted withdrawal fees and L-Tokens currently in the withdrawal queue.\"},\"transferOwnership(address)\":{\"notice\":\"Override of OwnableUpgradeable.transferOwnership() that always reverts. Ownership is managed by the GlobalOwner contract and must be modified there.\"},\"transfersListeners(uint256)\":{\"notice\":\"Holds a list of contracts' references that are listening to L-Tokens transfers.\"},\"unclaimedFees()\":{\"notice\":\"Holds the amount of withdrawal fees not yet claimed by contract's owner.\"},\"unlistenToTransfers(address)\":{\"notice\":\"Removes a contract from the L-Token transfers list.\"},\"unmintedRewardsOf(address)\":{\"notice\":\"Retrieves the amount of given account's not yet minted rewards.\"},\"usableUnderlyings()\":{\"notice\":\"Holds the amount of underlying tokens considered as usable by the contract.\"},\"withdrawTo(address,uint256)\":{\"notice\":\"Override of ERC20WrapperUpgradeable.withdrawTo() that reverts. Use instantWithdrawal() or requestWithdrawal() functions instead.\"},\"withdrawalQueue(uint256)\":{\"notice\":\"Holds an ordered list of active withdrawal requests.\"},\"withdrawalQueueCursor()\":{\"notice\":\"Holds the index of the next withdrawal request to process in the queue.\"},\"withdrawer()\":{\"notice\":\"Holds address of withdrawer wallet (managed by withdrawal server).\"}},\"notice\":\"Main contract of the Ledgity Yield protocol. It powers every L-Token (i.e, investment pools backed by RWA). An L-Token is an ERC20 wrapper around a stablecoin. As soon as a wallet holds some L-Tokens, it starts receiving rewards in the form of additional L-Tokens, which are auto-compounded over time.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/src/LToken.sol\":\"LToken\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./OwnableUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership} and {acceptOwnership}.\\n *\\n * This module is used through inheritance. It will make available all functions\\n * from parent (Ownable).\\n */\\nabstract contract Ownable2StepUpgradeable is Initializable, OwnableUpgradeable {\\n function __Ownable2Step_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable2Step_init_unchained() internal onlyInitializing {\\n }\\n address private _pendingOwner;\\n\\n event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Returns the address of the pending owner.\\n */\\n function pendingOwner() public view virtual returns (address) {\\n return _pendingOwner;\\n }\\n\\n /**\\n * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual override onlyOwner {\\n _pendingOwner = newOwner;\\n emit OwnershipTransferStarted(owner(), newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual override {\\n delete _pendingOwner;\\n super._transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev The new owner accepts the ownership transfer.\\n */\\n function acceptOwnership() public virtual {\\n address sender = _msgSender();\\n require(pendingOwner() == sender, \\\"Ownable2Step: caller is not the new owner\\\");\\n _transferOwnership(sender);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x84efb8889801b0ac817324aff6acc691d07bbee816b671817132911d287a8c63\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which allows children to implement an emergency stop\\n * mechanism that can be triggered by an authorized account.\\n *\\n * This module is used through inheritance. It will make available the\\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\\n * the functions of your contract. Note that they will not be pausable by\\n * simply including this module, only once the modifiers are put in place.\\n */\\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\\n /**\\n * @dev Emitted when the pause is triggered by `account`.\\n */\\n event Paused(address account);\\n\\n /**\\n * @dev Emitted when the pause is lifted by `account`.\\n */\\n event Unpaused(address account);\\n\\n bool private _paused;\\n\\n /**\\n * @dev Initializes the contract in unpaused state.\\n */\\n function __Pausable_init() internal onlyInitializing {\\n __Pausable_init_unchained();\\n }\\n\\n function __Pausable_init_unchained() internal onlyInitializing {\\n _paused = false;\\n }\\n\\n /**\\n * @dev Modifier to make a function callable only when the contract is not paused.\\n *\\n * Requirements:\\n *\\n * - The contract must not be paused.\\n */\\n modifier whenNotPaused() {\\n _requireNotPaused();\\n _;\\n }\\n\\n /**\\n * @dev Modifier to make a function callable only when the contract is paused.\\n *\\n * Requirements:\\n *\\n * - The contract must be paused.\\n */\\n modifier whenPaused() {\\n _requirePaused();\\n _;\\n }\\n\\n /**\\n * @dev Returns true if the contract is paused, and false otherwise.\\n */\\n function paused() public view virtual returns (bool) {\\n return _paused;\\n }\\n\\n /**\\n * @dev Throws if the contract is paused.\\n */\\n function _requireNotPaused() internal view virtual {\\n require(!paused(), \\\"Pausable: paused\\\");\\n }\\n\\n /**\\n * @dev Throws if the contract is not paused.\\n */\\n function _requirePaused() internal view virtual {\\n require(paused(), \\\"Pausable: not paused\\\");\\n }\\n\\n /**\\n * @dev Triggers stopped state.\\n *\\n * Requirements:\\n *\\n * - The contract must not be paused.\\n */\\n function _pause() internal virtual whenNotPaused {\\n _paused = true;\\n emit Paused(_msgSender());\\n }\\n\\n /**\\n * @dev Returns to normal state.\\n *\\n * Requirements:\\n *\\n * - The contract must be paused.\\n */\\n function _unpause() internal virtual whenPaused {\\n _paused = false;\\n emit Unpaused(_msgSender());\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20Upgradeable.sol\\\";\\nimport \\\"./extensions/IERC20MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20Upgradeable, IERC20MetadataUpgradeable {\\n mapping(address => uint256) private _balances;\\n\\n mapping(address => mapping(address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n string private _name;\\n string private _symbol;\\n\\n /**\\n * @dev Sets the values for {name} and {symbol}.\\n *\\n * All two of these values are immutable: they can only be set once during\\n * construction.\\n */\\n function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n __ERC20_init_unchained(name_, symbol_);\\n }\\n\\n function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev Returns the symbol of the token, usually a shorter version of the\\n * name.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev Returns the number of decimals used to get its user representation.\\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n *\\n * Tokens usually opt for a value of 18, imitating the relationship between\\n * Ether and Wei. This is the default value returned by this function, unless\\n * it's overridden.\\n *\\n * NOTE: This information is only used for _display_ purposes: it in\\n * no way affects any of the arithmetic of the contract, including\\n * {IERC20-balanceOf} and {IERC20-transfer}.\\n */\\n function decimals() public view virtual override returns (uint8) {\\n return 18;\\n }\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view virtual override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view virtual override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _transfer(owner, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\\n * `transferFrom`. This is semantically equivalent to an infinite approval.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20}.\\n *\\n * NOTE: Does not update the allowance if the current allowance\\n * is the maximum `uint256`.\\n *\\n * Requirements:\\n *\\n * - `from` and `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n * - the caller must have allowance for ``from``'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {\\n address spender = _msgSender();\\n _spendAllowance(from, spender, amount);\\n _transfer(from, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, allowance(owner, spender) + addedValue);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n uint256 currentAllowance = allowance(owner, spender);\\n require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - subtractedValue);\\n }\\n\\n return true;\\n }\\n\\n /**\\n * @dev Moves `amount` of tokens from `from` to `to`.\\n *\\n * This internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n */\\n function _transfer(address from, address to, uint256 amount) internal virtual {\\n require(from != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(to != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, amount);\\n\\n uint256 fromBalance = _balances[from];\\n require(fromBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n unchecked {\\n _balances[from] = fromBalance - amount;\\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\\n // decrementing then incrementing.\\n _balances[to] += amount;\\n }\\n\\n emit Transfer(from, to, amount);\\n\\n _afterTokenTransfer(from, to, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply += amount;\\n unchecked {\\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\\n _balances[account] += amount;\\n }\\n emit Transfer(address(0), account, amount);\\n\\n _afterTokenTransfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n uint256 accountBalance = _balances[account];\\n require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[account] = accountBalance - amount;\\n // Overflow not possible: amount <= accountBalance <= totalSupply.\\n _totalSupply -= amount;\\n }\\n\\n emit Transfer(account, address(0), amount);\\n\\n _afterTokenTransfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n *\\n * This internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\\n *\\n * Does not update the allowance amount in case of infinite allowance.\\n * Revert if not enough allowance is available.\\n *\\n * Might emit an {Approval} event.\\n */\\n function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\\n uint256 currentAllowance = allowance(owner, spender);\\n if (currentAllowance != type(uint256).max) {\\n require(currentAllowance >= amount, \\\"ERC20: insufficient allowance\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - amount);\\n }\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * will be transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * has been transferred to `to`.\\n * - when `from` is zero, `amount` tokens have been minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[45] private __gap;\\n}\\n\",\"keccak256\":\"0xd14a627157b9a411d2410713e5dd3a377e9064bd5c194a90748bbf27ea625784\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PausableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/ERC20Pausable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC20Upgradeable.sol\\\";\\nimport \\\"../../../security/PausableUpgradeable.sol\\\";\\nimport \\\"../../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev ERC20 token with pausable token transfers, minting and burning.\\n *\\n * Useful for scenarios such as preventing trades until the end of an evaluation\\n * period, or having an emergency switch for freezing all token transfers in the\\n * event of a large bug.\\n *\\n * IMPORTANT: This contract does not include public pause and unpause functions. In\\n * addition to inheriting this contract, you must define both functions, invoking the\\n * {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate\\n * access control, e.g. using {AccessControl} or {Ownable}. Not doing so will\\n * make the contract unpausable.\\n */\\nabstract contract ERC20PausableUpgradeable is Initializable, ERC20Upgradeable, PausableUpgradeable {\\n function __ERC20Pausable_init() internal onlyInitializing {\\n __Pausable_init_unchained();\\n }\\n\\n function __ERC20Pausable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {ERC20-_beforeTokenTransfer}.\\n *\\n * Requirements:\\n *\\n * - the contract must not be paused.\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {\\n super._beforeTokenTransfer(from, to, amount);\\n\\n require(!paused(), \\\"ERC20Pausable: token transfer while paused\\\");\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xf0bd7f71ffae5f0addd375e8511fbf2ad8ca0c9b2606c32d92bdda7d76a7a81c\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20WrapperUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/ERC20Wrapper.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC20Upgradeable.sol\\\";\\nimport \\\"../utils/SafeERC20Upgradeable.sol\\\";\\nimport \\\"../../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Extension of the ERC20 token contract to support token wrapping.\\n *\\n * Users can deposit and withdraw \\\"underlying tokens\\\" and receive a matching number of \\\"wrapped tokens\\\". This is useful\\n * in conjunction with other modules. For example, combining this wrapping mechanism with {ERC20Votes} will allow the\\n * wrapping of an existing \\\"basic\\\" ERC20 into a governance token.\\n *\\n * _Available since v4.2._\\n *\\n * @custom:storage-size 51\\n */\\nabstract contract ERC20WrapperUpgradeable is Initializable, ERC20Upgradeable {\\n IERC20Upgradeable private _underlying;\\n\\n function __ERC20Wrapper_init(IERC20Upgradeable underlyingToken) internal onlyInitializing {\\n __ERC20Wrapper_init_unchained(underlyingToken);\\n }\\n\\n function __ERC20Wrapper_init_unchained(IERC20Upgradeable underlyingToken) internal onlyInitializing {\\n require(underlyingToken != this, \\\"ERC20Wrapper: cannot self wrap\\\");\\n _underlying = underlyingToken;\\n }\\n\\n /**\\n * @dev See {ERC20-decimals}.\\n */\\n function decimals() public view virtual override returns (uint8) {\\n try IERC20MetadataUpgradeable(address(_underlying)).decimals() returns (uint8 value) {\\n return value;\\n } catch {\\n return super.decimals();\\n }\\n }\\n\\n /**\\n * @dev Returns the address of the underlying ERC-20 token that is being wrapped.\\n */\\n function underlying() public view returns (IERC20Upgradeable) {\\n return _underlying;\\n }\\n\\n /**\\n * @dev Allow a user to deposit underlying tokens and mint the corresponding number of wrapped tokens.\\n */\\n function depositFor(address account, uint256 amount) public virtual returns (bool) {\\n address sender = _msgSender();\\n require(sender != address(this), \\\"ERC20Wrapper: wrapper can't deposit\\\");\\n SafeERC20Upgradeable.safeTransferFrom(_underlying, sender, address(this), amount);\\n _mint(account, amount);\\n return true;\\n }\\n\\n /**\\n * @dev Allow a user to burn a number of wrapped tokens and withdraw the corresponding number of underlying tokens.\\n */\\n function withdrawTo(address account, uint256 amount) public virtual returns (bool) {\\n _burn(_msgSender(), amount);\\n SafeERC20Upgradeable.safeTransfer(_underlying, account, amount);\\n return true;\\n }\\n\\n /**\\n * @dev Mint wrapped token to cover any underlyingTokens that would have been transferred by mistake. Internal\\n * function that can be exposed with access control if desired.\\n */\\n function _recover(address account) internal virtual returns (uint256) {\\n uint256 value = _underlying.balanceOf(address(this)) - totalSupply();\\n _mint(account, value);\\n return value;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x14bb62a60fcbc911c33ac0e5456bf31ed50b502c30be46ee15bd3b698e91bd81\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20MetadataUpgradeable is IERC20Upgradeable {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x605434219ebbe4653f703640f06969faa5a1d78f0bfef878e5ddbb1ca369ceeb\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd60f939a3ca0199014d079b4dd66aa757954334947d81eb5c1d35d7a83061ab3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n using AddressUpgradeable for address;\\n\\n /**\\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n /**\\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n */\\n function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n require(\\n (value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n /**\\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\\n }\\n\\n /**\\n * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n unchecked {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\\n }\\n }\\n\\n /**\\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful. Compatible with tokens that require the approval to be set to\\n * 0 before setting it to a non-zero value.\\n */\\n function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\\n\\n if (!_callOptionalReturnBool(token, approvalCall)) {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\\n _callOptionalReturn(token, approvalCall);\\n }\\n }\\n\\n /**\\n * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\\n * Revert on invalid signature.\\n */\\n function safePermit(\\n IERC20PermitUpgradeable token,\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal {\\n uint256 nonceBefore = token.nonces(owner);\\n token.permit(owner, spender, value, deadline, v, r, s);\\n uint256 nonceAfter = token.nonces(owner);\\n require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n require(returndata.length == 0 || abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n *\\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\\n */\\n function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\\n // and not revert is the subcall reverts.\\n\\n (bool success, bytes memory returndata) = address(token).call(data);\\n return\\n success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\\n }\\n}\\n\",\"keccak256\":\"0x4dae161227d332808312ee2caf6384929321b83c16cc89b5642985fbec6b814c\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor() {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n}\\n\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable2Step.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./Ownable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership} and {acceptOwnership}.\\n *\\n * This module is used through inheritance. It will make available all functions\\n * from parent (Ownable).\\n */\\nabstract contract Ownable2Step is Ownable {\\n address private _pendingOwner;\\n\\n event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Returns the address of the pending owner.\\n */\\n function pendingOwner() public view virtual returns (address) {\\n return _pendingOwner;\\n }\\n\\n /**\\n * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual override onlyOwner {\\n _pendingOwner = newOwner;\\n emit OwnershipTransferStarted(owner(), newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual override {\\n delete _pendingOwner;\\n super._transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev The new owner accepts the ownership transfer.\\n */\\n function acceptOwnership() public virtual {\\n address sender = _msgSender();\\n require(pendingOwner() == sender, \\\"Ownable2Step: caller is not the new owner\\\");\\n _transferOwnership(sender);\\n }\\n}\\n\",\"keccak256\":\"0xde231558366826d7cb61725af8147965a61c53b77a352cc8c9af38fc5a92ac3c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"contracts/src/DummyLDYStaking.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.18;\\r\\n\\r\\nimport {Ownable2Step} from \\\"@openzeppelin/contracts/access/Ownable2Step.sol\\\";\\r\\n\\r\\n/**\\r\\n * @title LDYStaking\\r\\n * @author Lila Rest (https://lila.rest)\\r\\n * @custom:security-contact security@ledgity.com\\r\\n *\\r\\n * @notice Replacement to the LDYStaking contract until the $LDY token is available and\\r\\n * the real LDYStaking can be deployed.\\r\\n *\\r\\n * @dev This contract only implements tierOf() function from LDYStaking as it's the only\\r\\n * one the LToken contract relies on.\\r\\n *\\r\\n * @custom:security-contact security@ledgity.com\\r\\n */\\r\\ncontract LDYStaking is Ownable2Step {\\r\\n /**\\r\\n * @notice Holds a mapping of addresses that default to the highest staking tier.\\r\\n * @dev This is notably used to allow PreMining contracts to benefit from 0%\\r\\n * withdrawal fees in L-Tokens contracts, when accounts unlock their funds.\\r\\n */\\r\\n mapping(address => bool) public highTierAccounts;\\r\\n\\r\\n /**\\r\\n * @notice Update high tier status of a given account.\\r\\n * @param account The account to update the high tier status of.\\r\\n */\\r\\n function setHighTierAccount(address account, bool status) public onlyOwner {\\r\\n highTierAccounts[account] = status;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @dev Dummy tierOf() function that always return that the given account is not\\r\\n * ellgible to any LDY staking tier, except if the account is in the\\r\\n * defaultToHighestTier mapping.\\r\\n * @param account The account to check the tier of.\\r\\n */\\r\\n function tierOf(address account) public view returns (uint256 tier) {\\r\\n if (highTierAccounts[account]) return 3;\\r\\n return 0;\\r\\n }\\r\\n}\\r\\n\",\"keccak256\":\"0xf9f5650cf68997c860b0d69c8b9122b4c2df28faaef3eedca008c9daf4fe1b89\",\"license\":\"MIT\"},\"contracts/src/GlobalBlacklist.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.18;\\r\\n\\r\\nimport {Initializable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\r\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\r\\nimport {GlobalOwnableUpgradeable} from \\\"./abstracts/GlobalOwnableUpgradeable.sol\\\";\\r\\n\\r\\n/**\\r\\n * @title GlobalBlacklist\\r\\n * @author Lila Rest (https://lila.rest)\\r\\n * @custom:security-contact security@ledgity.com\\r\\n *\\r\\n * @notice Maintains a global mapping of blacklisted accounts on-chain. All contracts\\r\\n * within the Ledgity Yield codebase reference this mapping to prevent access by\\r\\n * blacklisted accounts.\\r\\n *\\r\\n * @dev Specifically, some contracts within the codebase inherit from the\\r\\n * GlobalRestrictableUpgradeable abstract contract. This provides them with modifiers\\r\\n * and getter functions to easily check against this global blacklist.\\r\\n *\\r\\n * @dev For further details, see \\\"GlobalBlacklist\\\" section of whitepaper.\\r\\n * @custom:security-contact security@ledgity.com\\r\\n */\\r\\ncontract GlobalBlacklist is Initializable, UUPSUpgradeable, GlobalOwnableUpgradeable {\\r\\n /**\\r\\n * @notice Mapping of accounts to their blacklist status.\\r\\n * @dev This mapping is made private and isBlacklisted() should be used instead.This\\r\\n * helps saving gas in some scenario. See isBlacklisted() documentation for more details.\\r\\n */\\r\\n mapping(address => bool) private _list;\\r\\n\\r\\n /**\\r\\n * @notice Prevents implementation contract from being initialized as recommended by\\r\\n * OpenZeppelin.\\r\\n * @dev See: https://docs.openzeppelin.com/contracts/4.x/api/proxy#Initializable-_disableInitializers--\\r\\n * @custom:oz-upgrades-unsafe-allow constructor\\r\\n */\\r\\n constructor() {\\r\\n _disableInitializers();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Initializer function of the contract. It replaces the constructor()\\r\\n * function in the context of upgradeable contracts.\\r\\n * @dev See: https://docs.openzeppelin.com/contracts/4.x/upgradeable\\r\\n * @param globalOwner_ The address of the GlobalOwner contract.\\r\\n */\\r\\n function initialize(address globalOwner_) public initializer {\\r\\n __GlobalOwnable_init(globalOwner_);\\r\\n __UUPSUpgradeable_init();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Override of UUPSUpgradeable._authorizeUpgrade() function restricted to\\r\\n * global owner. It is called by the proxy contract during an upgrade.\\r\\n * @param newImplementation The address of the new implementation contract.\\r\\n */\\r\\n function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n /**\\r\\n * @notice Adds a given account to the blacklist.\\r\\n * @param account The account's address to be blacklisted.\\r\\n */\\r\\n function blacklist(address account) external onlyOwner {\\r\\n require(account != address(0), \\\"L20\\\");\\r\\n _list[account] = true;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Removes a given account from the blacklist.\\r\\n * @param account The account's address to be un-blacklisted.\\r\\n */\\r\\n function unBlacklist(address account) external onlyOwner {\\r\\n _list[account] = false;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Checks whether a given account is blacklisted.\\r\\n * @param account Address of the account to check.\\r\\n * @return 'true' if the account is blacklisted, 'false' otherwise\\r\\n */\\r\\n function isBlacklisted(address account) external view returns (bool) {\\r\\n // Gas optimization: Avoid accessing storage if account is the zero address\\r\\n // (e.g, during a mint or a burn of tokens)\\r\\n if (account == address(0)) return false;\\r\\n\\r\\n // Else, return current account's blacklist status\\r\\n return _list[account];\\r\\n }\\r\\n}\\r\\n\",\"keccak256\":\"0xa5313bead8fee2d264f3c32bad2907b239ff7614b9c5983843d370cef5ddc721\",\"license\":\"MIT\"},\"contracts/src/GlobalOwner.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.8.18;\\r\\n\\r\\nimport {Initializable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\r\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\r\\nimport {Ownable2StepUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\\\";\\r\\n\\r\\n/**\\r\\n * @title GlobalOwner\\r\\n * @author Lila Rest (https://lila.rest)\\r\\n * @custom:security-contact security@ledgity.com\\r\\n *\\r\\n * @notice Maintains the address of a global owner account shared by all contracts of the\\r\\n * Ledgity Yield's codebase.\\r\\n *\\r\\n * @dev Specifically, some contracts within the codebase inherit from the\\r\\n * GlobalOwnableUpgradeable abstract contract. This provides them with an overriden\\r\\n * owner() function that retrieves the owner's address from this contract instead.\\r\\n *\\r\\n * @dev For further details, see \\\"GlobalOwner\\\" section of whitepaper.\\r\\n * @custom:security-contact security@ledgity.com\\r\\n */\\r\\ncontract GlobalOwner is Initializable, UUPSUpgradeable, Ownable2StepUpgradeable {\\r\\n /**\\r\\n * @notice Prevents implementation contract from being initialized as recommended by\\r\\n * OpenZeppelin.\\r\\n * @dev See: https://docs.openzeppelin.com/contracts/4.x/api/proxy#Initializable-_disableInitializers--\\r\\n * @custom:oz-upgrades-unsafe-allow constructor\\r\\n */\\r\\n constructor() {\\r\\n _disableInitializers();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Initializer function of the contract. It replaces the constructor()\\r\\n * function in the context of upgradeable contracts.\\r\\n * @dev See: https://docs.openzeppelin.com/contracts/4.x/upgradeable\\r\\n */\\r\\n function initialize() public initializer {\\r\\n __Ownable2Step_init();\\r\\n __UUPSUpgradeable_init();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Override of UUPSUpgradeable._authorizeUpgrade() function restricted to\\r\\n * global owner. It is called by the proxy contract during an upgrade.\\r\\n * @param newImplementation The address of the new implementation contract.\\r\\n */\\r\\n function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n}\\r\\n\",\"keccak256\":\"0x7eed673c8fd26a555f52c509b4b9f501a743df6e1dc78c4f4eca108fdaa27d9c\",\"license\":\"MIT\"},\"contracts/src/GlobalPause.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.8.18;\\r\\n\\r\\nimport {Initializable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\r\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\r\\nimport {PausableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\\\";\\r\\nimport {GlobalOwnableUpgradeable} from \\\"./abstracts/GlobalOwnableUpgradeable.sol\\\";\\r\\n\\r\\n/**\\r\\n * @title GlobalPause\\r\\n * @author Lila Rest (https://lila.rest)\\r\\n * @custom:security-contact security@ledgity.com\\r\\n *\\r\\n * @notice Maintains a global pause state shared by all contracts of the Ledgity Yield\\r\\n * codebase.\\r\\n *\\r\\n * @dev Specifically, some contracts within the codebase inherit from the\\r\\n * GlobalPausableUpgradeable abstract contract. This provides them with an overriden\\r\\n * paused() function that retrieves the pause state from this contract instead.\\r\\n *\\r\\n * @dev For further details, see \\\"GlobalPause\\\" section of whitepaper.\\r\\n * @custom:security-contact security@ledgity.com\\r\\n */\\r\\ncontract GlobalPause is\\r\\n Initializable,\\r\\n UUPSUpgradeable,\\r\\n GlobalOwnableUpgradeable,\\r\\n PausableUpgradeable\\r\\n{\\r\\n /**\\r\\n * @notice Prevents implementation contract from being initialized as recommended by\\r\\n * OpenZeppelin.\\r\\n * @dev See: https://docs.openzeppelin.com/contracts/4.x/api/proxy#Initializable-_disableInitializers--\\r\\n * @custom:oz-upgrades-unsafe-allow constructor\\r\\n */\\r\\n constructor() {\\r\\n _disableInitializers();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Initializer function of the contract. It replaces the constructor()\\r\\n * function in the context of upgradeable contracts.\\r\\n * @dev See: https://docs.openzeppelin.com/contracts/4.x/upgradeable\\r\\n * @param globalOwner_ The address of the GlobalOwner contract.\\r\\n */\\r\\n function initialize(address globalOwner_) public initializer {\\r\\n __GlobalOwnable_init(globalOwner_);\\r\\n __Pausable_init();\\r\\n __UUPSUpgradeable_init();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Override of UUPSUpgradeable._authorizeUpgrade() function restricted to\\r\\n * global owner. It is called by the proxy contract during an upgrade.\\r\\n * @param newImplementation The address of the new implementation contract.\\r\\n */\\r\\n function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n /**\\r\\n * @dev Public implementation of PausableUpgradeable's pausing and unpausing functions\\r\\n * but restricted to contract's owner.\\r\\n */\\r\\n function pause() public onlyOwner {\\r\\n _pause();\\r\\n }\\r\\n\\r\\n function unpause() public onlyOwner {\\r\\n _unpause();\\r\\n }\\r\\n}\\r\\n\",\"keccak256\":\"0x43dc86a468bfcc0620ec46251b22230c1029f2b62d72f5aa3fdb11ee0733467c\",\"license\":\"MIT\"},\"contracts/src/LToken.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.18;\\r\\n\\r\\n// Contracts\\r\\nimport {ERC20WrapperUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20WrapperUpgradeable.sol\\\";\\r\\nimport \\\"./abstracts/base/ERC20BaseUpgradeable.sol\\\";\\r\\nimport {InvestUpgradeable} from \\\"./abstracts/InvestUpgradeable.sol\\\";\\r\\nimport {LDYStaking} from \\\"./DummyLDYStaking.sol\\\";\\r\\n\\r\\n// Libraries\\r\\nimport {SafeERC20Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\\\";\\r\\nimport {SUD} from \\\"./libs/SUD.sol\\\";\\r\\n\\r\\n// Interfaces\\r\\nimport {IERC20Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\\\";\\r\\nimport {IERC20MetadataUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol\\\";\\r\\nimport {ITransfersListener} from \\\"./interfaces/ITransfersListener.sol\\\";\\r\\n\\r\\n/**\\r\\n * @title LToken\\r\\n * @author Lila Rest (https://lila.rest)\\r\\n * @custom:security-contact security@ledgity.com\\r\\n *\\r\\n * @notice Main contract of the Ledgity Yield protocol. It powers every L-Token (i.e,\\r\\n * investment pools backed by RWA). An L-Token is an ERC20 wrapper around a stablecoin.\\r\\n * As soon as a wallet holds some L-Tokens, it starts receiving rewards in\\r\\n * the form of additional L-Tokens, which are auto-compounded over time.\\r\\n *\\r\\n * @dev Definitions:\\r\\n * - Deposit: Swap of underlying tokens for L-Tokens (1:1 ratio).\\r\\n * - Withdrawal: Swap of L-Tokens for underlying tokens (1:1 ratio, minus applicable fees).\\r\\n * - Instant: Processed immediately.\\r\\n * - Requested: Queued for later processing.\\r\\n * - Big Requested: A requested withdrawal exceeding half of the retention rate.\\r\\n * - (Withdrawal) queue: An list of all requested withdrawals sorted by priority.\\r\\n * - Request ID: The index of a withdrawal request in the queue array.\\r\\n * - Retention rate: Maximum fraction of underlying tokens TVL that the contract can retain.\\r\\n * - Fees Rate: Percentage of fees applied to successful withdrawals.\\r\\n * - Usable underlyings: Amount of underlying tokens that have been deposited through\\r\\n * expected ways and are so considered as safe to use by the contract.\\r\\n * - Transfers listeners: External contracts listening on L-Tokens transfers.\\r\\n * - Fund wallet: Wallet managed by the Ledgity's financial team.\\r\\n * - Withdrawer wallet: Managed by an off-chain server to automate withdrawal request\\r\\n * processing.\\r\\n *\\r\\n * Note that words between parenthesis are sometimes omitted for brevity.\\r\\n *\\r\\n * @dev Security: This contract can safely receive funds immediately after initialization.\\r\\n * (i.e., there is no way for funds to be sent to non-owned addresses). It is however\\r\\n * recommended to replace ASAP owner and fund wallets by multi-sig wallets.\\r\\n *\\r\\n * @dev For further details, see \\\"LToken\\\" section of whitepaper.\\r\\n * @custom:oz-upgrades-unsafe-allow external-library-linking\\r\\n * @custom:security-contact security@ledgity.com\\r\\n */\\r\\ncontract LToken is ERC20BaseUpgradeable, InvestUpgradeable, ERC20WrapperUpgradeable {\\r\\n using SafeERC20Upgradeable for IERC20Upgradeable;\\r\\n\\r\\n /// @dev Represents type of actions triggering ActivityEvent events.\\r\\n enum Action {\\r\\n Deposit,\\r\\n Withdraw\\r\\n }\\r\\n\\r\\n /// @dev Represents different status of actions triggering ActivityEvent events.\\r\\n enum Status {\\r\\n Queued,\\r\\n Cancelled,\\r\\n Success,\\r\\n Moved\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Represents a withdrawal request in the queue.\\r\\n * @dev A request fits in a single storage slot (32 bytes).\\r\\n * @param account The account that initiated the request.\\r\\n * @param amount The amount of underlying tokens requested.\\r\\n */\\r\\n struct WithdrawalRequest {\\r\\n address account; // 20 bytes\\r\\n uint96 amount; // 12 bytes\\r\\n }\\r\\n\\r\\n /// @notice Upper limit of retention rate.\\r\\n uint32 private constant MAX_RETENTION_RATE_UD7x3 = 10 * 10 ** 3; // 10%\\r\\n\\r\\n /// @notice Used in activity events to represent the absence of request ID.\\r\\n int256 private constant NO_ID = -1;\\r\\n\\r\\n /// @notice Holds a reference to the LDYStaking contract.\\r\\n LDYStaking public ldyStaking;\\r\\n\\r\\n /// @notice Holds address of withdrawer wallet (managed by withdrawal server).\\r\\n address payable public withdrawer;\\r\\n\\r\\n /// @notice Holds address of fund wallet (managed by Ledgity financial team).\\r\\n address public fund;\\r\\n\\r\\n /// @notice Holds the withdrawal fees rate in UD7x3 format (e.g., 350 = 0.350%).\\r\\n uint32 public feesRateUD7x3;\\r\\n\\r\\n /// @notice Holds the retention rate in UD7x3 format.\\r\\n uint32 public retentionRateUD7x3;\\r\\n\\r\\n /// @notice Holds the amount of withdrawal fees not yet claimed by contract's owner.\\r\\n uint256 public unclaimedFees;\\r\\n\\r\\n /// @notice Holds the amount of L-Tokens currently in the withdrawal queue.\\r\\n uint256 public totalQueued;\\r\\n\\r\\n /**\\r\\n * @notice Holds the amount of underlying tokens considered as usable by the contract.\\r\\n * @dev Are usable, only underlying tokens deposit through deposit() or fund() functions.\\r\\n */\\r\\n uint256 public usableUnderlyings;\\r\\n\\r\\n /// @notice Holds an ordered list of active withdrawal requests.\\r\\n WithdrawalRequest[] public withdrawalQueue;\\r\\n\\r\\n /// @notice Holds the index of the next withdrawal request to process in the queue.\\r\\n uint256 public withdrawalQueueCursor;\\r\\n\\r\\n /**\\r\\n * @notice Holds a list of all currently frozen withdrawal requests.\\r\\n * @dev If a request emitter as been blacklisted, its request is moved here to prevent\\r\\n * it from blocking the queue.\\r\\n */\\r\\n WithdrawalRequest[] public frozenRequests;\\r\\n\\r\\n /**\\r\\n * @notice Holds a list of contracts' references that are listening to L-Tokens transfers.\\r\\n * @dev onLTokenTransfer() functions of those contracts will be called on each transfer.\\r\\n */\\r\\n ITransfersListener[] public transfersListeners;\\r\\n\\r\\n /**\\r\\n * @notice Emitted to inform listeners about a change in the contract's TVL.\\r\\n * @dev TVL = realTotalSupply()\\r\\n * @param newTVL The new TVL of the contract.\\r\\n */\\r\\n event TVLChangeEvent(uint256 newTVL);\\r\\n\\r\\n /**\\r\\n * @notice Emitted to inform listerners about an activity related to deposits and withdrawals.\\r\\n * @param id ID of the involved withdrawal request or NO_ID (-1) if not applicable.\\r\\n * @param account The account involved in the activity.\\r\\n * @param action The type of activity.\\r\\n * @param amount The amount of underlying tokens involved in the activity.\\r\\n * @param newStatus The new status of the activity.\\r\\n * @param newId The new ID of the request if it has been moved in the queue.\\r\\n */\\r\\n event ActivityEvent(\\r\\n int256 indexed id,\\r\\n address indexed account,\\r\\n Action indexed action,\\r\\n uint256 amount,\\r\\n uint256 amountAfterFees,\\r\\n Status newStatus,\\r\\n int256 newId\\r\\n );\\r\\n\\r\\n /**\\r\\n * @notice Emitted to inform listeners that some rewards have been minted.\\r\\n * @param account The account that received the rewards.\\r\\n * @param balanceBefore The balance of the account before the minting.\\r\\n * @param rewards The amount of minted rewards.\\r\\n */\\r\\n event MintedRewardsEvent(address indexed account, uint256 balanceBefore, uint256 rewards);\\r\\n\\r\\n /// @notice Reverts if the function caller is not the withdrawer wallet.\\r\\n modifier onlyWithdrawer() {\\r\\n require(_msgSender() == withdrawer, \\\"L39\\\");\\r\\n _;\\r\\n }\\r\\n\\r\\n /// @notice Reverts if the function caller is not the fund wallet.\\r\\n modifier onlyFund() {\\r\\n require(_msgSender() == fund, \\\"L40\\\");\\r\\n _;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Initializer function of the contract. It replaces the constructor()\\r\\n * function in the context of upgradeable contracts.\\r\\n * @dev See: https://docs.openzeppelin.com/contracts/4.x/upgradeable\\r\\n * @param globalOwner_ The address of the GlobalOwner contract.\\r\\n * @param globalPause_ The address of the GlobalPause contract.\\r\\n * @param globalBlacklist_ The address of the GlobalBlacklist contract.\\r\\n * @param underlyingToken The address of the underlying stablecoin ERC20 token.\\r\\n */\\r\\n function initialize(\\r\\n address globalOwner_,\\r\\n address globalPause_,\\r\\n address globalBlacklist_,\\r\\n address ldyStaking_,\\r\\n address underlyingToken\\r\\n ) public initializer {\\r\\n // Initialize ERC20 base.\\r\\n string memory underlyingSymbol = IERC20MetadataUpgradeable(underlyingToken).symbol();\\r\\n __ERC20Base_init(\\r\\n globalOwner_,\\r\\n globalPause_,\\r\\n globalBlacklist_,\\r\\n string(abi.encodePacked(\\\"Ledgity \\\", underlyingSymbol)),\\r\\n string(abi.encodePacked(\\\"L\\\", underlyingSymbol))\\r\\n );\\r\\n\\r\\n // IMPORTANT: Below calls must not be restricted to owner at any point.\\r\\n // This is because the GlobalOwner contract may not be a fresh one, and so\\r\\n // the contract deployer may not be the owner anymore after ERC20Base init.\\r\\n\\r\\n // Initialize other parents contracts.\\r\\n __ERC20Wrapper_init(IERC20Upgradeable(underlyingToken));\\r\\n __Invest_init_unchained(address(this));\\r\\n\\r\\n // Set LDYStaking contract\\r\\n ldyStaking = LDYStaking(ldyStaking_);\\r\\n\\r\\n // Set initial withdrawal fees rate to 0.3%\\r\\n feesRateUD7x3 = 300;\\r\\n\\r\\n // Set initial retention rate to 10%\\r\\n retentionRateUD7x3 = 10_000;\\r\\n\\r\\n // Default withdrawer and fund wallet to contract owner address. This prevents\\r\\n // any loss of funds if a deposit/withdrawal is made before those are manually set.\\r\\n withdrawer = payable(owner());\\r\\n fund = payable(owner());\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Required override of decimals() which is implemented by both\\r\\n * ERC20Upgradeable and ERC20WrapperUpgradeable parent contracts.\\r\\n * @dev The ERC20WrapperUpgradeable version is preferred because it mirrors the\\r\\n * decimals amount of the underlying stablecoin token.\\r\\n * @inheritdoc ERC20WrapperUpgradeable\\r\\n */\\r\\n function decimals()\\r\\n public\\r\\n view\\r\\n override(ERC20Upgradeable, ERC20WrapperUpgradeable)\\r\\n returns (uint8)\\r\\n {\\r\\n return ERC20WrapperUpgradeable.decimals();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Required override of paused() which is implemented by both\\r\\n * GlobalPausableUpgradeable and ERC20BaseUpgradeable parent contracts.\\r\\n * @dev Both version are the same as ERC20BaseUpgradeable.paused() mirrors\\r\\n * GlobalPausableUpgradeable.paused(), so a random one is chosen.\\r\\n * @inheritdoc GlobalPausableUpgradeable\\r\\n */\\r\\n function paused()\\r\\n public\\r\\n view\\r\\n virtual\\r\\n override(GlobalPausableUpgradeable, ERC20BaseUpgradeable)\\r\\n returns (bool)\\r\\n {\\r\\n return GlobalPausableUpgradeable.paused();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Updates the current withdrawal fee rate.\\r\\n * @param feesRateUD7x3_ The new withdrawal fee rate in UD7x3 format.\\r\\n */\\r\\n function setFeesRate(uint32 feesRateUD7x3_) public onlyOwner {\\r\\n feesRateUD7x3 = feesRateUD7x3_;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Updates the current underlying token retention rate.\\r\\n * @dev The retention rate is capped at 10%, which ensures that no more than 10% of\\r\\n * deposited assets will ever be exposed in this contract (reduces attack surface).\\r\\n * @param retentionRateUD7x3_ The new retention rate in UD7x3 format.\\r\\n */\\r\\n function setRetentionRate(uint32 retentionRateUD7x3_) public onlyOwner {\\r\\n require(retentionRateUD7x3_ <= MAX_RETENTION_RATE_UD7x3, \\\"L41\\\");\\r\\n retentionRateUD7x3 = retentionRateUD7x3_;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Updates the address of LDYStaking contract.\\r\\n * @param ldyStakingAddress The address of the new LDYStaking contract.\\r\\n */\\r\\n function setLDYStaking(address ldyStakingAddress) public onlyOwner {\\r\\n ldyStaking = LDYStaking(ldyStakingAddress);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Updates the address of the withdrawer wallet.\\r\\n * @param withdrawer_ The address of the new withdrawer wallet.\\r\\n */\\r\\n function setWithdrawer(address payable withdrawer_) public onlyOwner {\\r\\n // Ensure address is not the zero address (pre-processing fees would be lost else)\\r\\n require(withdrawer_ != address(0), \\\"L63\\\");\\r\\n\\r\\n // Set new withdrawer wallet's address\\r\\n withdrawer = withdrawer_;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Updates the address of the fund wallet.\\r\\n * @param fund_ The address of the new fund wallet.\\r\\n */\\r\\n function setFund(address payable fund_) public onlyOwner {\\r\\n // Ensure address is not the zero address (deposited tokens would be lost else)\\r\\n require(fund_ != address(0), \\\"L64\\\");\\r\\n\\r\\n // Set new fund wallet's address\\r\\n fund = fund_;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Adds a new contract to the L-Token transfers list.\\r\\n * @dev Each time a transfer occurs, the onLTokenTransfer() function of the\\r\\n * specified contract will be called.\\r\\n * @dev IMPORTANT SECURITY NOTE: This method is not intended to be used with\\r\\n * contracts that are not owned by the Ledgity team.\\r\\n * @param listenerContract The address of the new transfers listener contract.\\r\\n */\\r\\n function listenToTransfers(address listenerContract) public onlyOwner {\\r\\n transfersListeners.push(ITransfersListener(listenerContract));\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Removes a contract from the L-Token transfers list.\\r\\n * @dev The onLTokenTransfer() function of the specified contract will not be called\\r\\n * anymore each time a L-Token transfer occurs.\\r\\n * @param listenerContract The address of the listener contract.\\r\\n */\\r\\n function unlistenToTransfers(address listenerContract) public onlyOwner {\\r\\n // Find index of listener contract in transferListeners array\\r\\n int256 index = -1;\\r\\n uint256 transfersListenersLength = transfersListeners.length;\\r\\n for (uint256 i = 0; i < transfersListenersLength; i++) {\\r\\n if (address(transfersListeners[i]) == listenerContract) {\\r\\n index = int256(i);\\r\\n break;\\r\\n }\\r\\n }\\r\\n\\r\\n // Revert if given contract wasn't listening to transfers\\r\\n require(index > -1, \\\"L42\\\");\\r\\n\\r\\n // Else, remove transfers listener contract from listeners array\\r\\n transfersListeners[uint256(index)] = transfersListeners[transfersListenersLength - 1];\\r\\n transfersListeners.pop();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Retrieves the amount of given account's not yet minted rewards.\\r\\n * @dev This is a public implementation of InvestUpgradeable_rewardsOf(). In the\\r\\n * context of LToken, this function returns the amount of rewards that have not been\\r\\n * distributed/minted yet to the specified account.\\r\\n * @dev This is particularly useful for off-chain services to display charts and\\r\\n * statistics, as seen in the Ledgity Yield's frontend.\\r\\n * @param account The account to check the unminted rewards of.\\r\\n * @return The amount of account's unminted rewards.\\r\\n */\\r\\n function unmintedRewardsOf(address account) public view returns (uint256) {\\r\\n return _rewardsOf(account, true);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Retrieves the \\\"real\\\" balance of an account, i.e., excluding its not yet\\r\\n * minted/distributed rewards.\\r\\n * @param account The account to check the real balance of.\\r\\n * @return The real balance of the account.\\r\\n */\\r\\n function realBalanceOf(address account) public view returns (uint256) {\\r\\n return super.balanceOf(account);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Retrieves the total balance of L-Tokens that belong to the account.\\r\\n * @dev This is an oOverride of ERC20Upgradeable.balanceOf() that rewards that have\\r\\n * not been yet minted to the specified account.\\r\\n * @param account The account to check the total balance of.\\r\\n * @return The total balance of the account.\\r\\n */\\r\\n function balanceOf(address account) public view override returns (uint256) {\\r\\n return realBalanceOf(account) + unmintedRewardsOf(account);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Returns the \\\"real\\\" amount of existing L-Tokens, i.e., excluding not yet\\r\\n * minted withdrawal fees and L-Tokens currently in the withdrawal queue.\\r\\n * @return The real total supply of L-Tokens.\\r\\n */\\r\\n function realTotalSupply() public view returns (uint256) {\\r\\n return super.totalSupply();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Retrives the total supply of L-Tokens, including not yet minted withdrawal\\r\\n * fees and L-Tokens currently in the withdrawal queue.\\r\\n * @return The total supply of L-Tokens.\\r\\n */\\r\\n function totalSupply() public view override returns (uint256) {\\r\\n return realTotalSupply() + totalQueued + unclaimedFees;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Recovers a specified amount of a given token address.\\r\\n * @dev This override of RecoverableUpgradeable.recoverERC20() prevents the recovered\\r\\n * token from being the underlying token.\\r\\n * @inheritdoc RecoverableUpgradeable\\r\\n */\\r\\n function recoverERC20(address tokenAddress, uint256 amount) public override onlyOwner {\\r\\n // Ensure the token is not the underlying token\\r\\n require(tokenAddress != address(underlying()), \\\"L43\\\");\\r\\n\\r\\n // Proceed to recovery\\r\\n super.recoverERC20(tokenAddress, amount);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Recovers underlying tokens accidentally sent to the contract.\\r\\n * @dev To prevent owner from being able to drain the contract, this function only\\r\\n * allows recovering \\\"unusable\\\" underlying tokens, i.e., tokens that have not been\\r\\n * sent through fund() or deposit() functions.\\r\\n */\\r\\n function recoverUnderlying() external onlyOwner {\\r\\n // Compute the recoverable amount by taking the difference between the contract's\\r\\n // balance and the amount of usable underlying tokens\\r\\n uint256 recoverableAmount = underlying().balanceOf(address(this)) - usableUnderlyings;\\r\\n\\r\\n // Revert if there is nothing to recover\\r\\n require(recoverableAmount > 0, \\\"L44\\\");\\r\\n\\r\\n // Else, proceed to underlying tokens recovery\\r\\n super.recoverERC20(address(underlying()), recoverableAmount);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Retrieves the amount of underlying tokens invested by the given account.\\r\\n * @dev Implementing this function is required by the InvestUpgradeable contract. In\\r\\n * LToken contract, the investment of an account is equal to its real balance.\\r\\n * @inheritdoc InvestUpgradeable\\r\\n */\\r\\n function _investmentOf(address account) internal view override returns (uint256) {\\r\\n return realBalanceOf(account);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Distributes a specified amount of rewards (in L-Tokens) to a given account.\\r\\n * @dev Implementing this function is required by the InvestUpgradeable contract so\\r\\n * it can distribute rewards to accounts before each period reset.\\r\\n * @dev InvestUpgradeable contract already ensure that amount > 0.\\r\\n * @inheritdoc InvestUpgradeable\\r\\n */\\r\\n function _distributeRewards(address account, uint256 amount) internal override returns (bool) {\\r\\n // Inform listeners of the rewards minting\\r\\n emit MintedRewardsEvent(account, realBalanceOf(account), amount);\\r\\n\\r\\n // Mint L-Tokens rewards to account\\r\\n _mint(account, amount);\\r\\n\\r\\n // Return true indicating to InvestUpgradeable that the rewards have been distributed\\r\\n return true;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Override of ERC20._beforeTokenTransfer() to integrate with InvestUpgradeable.\\r\\n * @dev This overriden version ensure that _beforeInvestmentChange() hook is properly\\r\\n * called each time an account's balance is going to change.\\r\\n * @dev Note: whenNotPaused and notBlacklisted modifiers are not set as they are\\r\\n * already included in ERC20BaseUpgradeable._beforeTokenTransfer().\\r\\n * @inheritdoc ERC20BaseUpgradeable\\r\\n */\\r\\n function _beforeTokenTransfer(\\r\\n address from,\\r\\n address to,\\r\\n uint256 amount\\r\\n ) internal override(ERC20Upgradeable, ERC20BaseUpgradeable) {\\r\\n ERC20BaseUpgradeable._beforeTokenTransfer(from, to, amount);\\r\\n\\r\\n // Invoke _beforeInvestmentChange() hook for non-zero accounts\\r\\n if (from != address(0)) _beforeInvestmentChange(from, true);\\r\\n if (to != address(0)) _beforeInvestmentChange(to, true);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Override of ERC20._afterTokenTransfer() to notify all transfers listeners.\\r\\n * @dev This overriden version will trigger onLTokenTransfer() functions of all\\r\\n * transfers listeners.\\r\\n * @dev Note: whenNotPaused and notBlacklisted modifiers are not set as they are\\r\\n * already checked in _beforeTokenTransfer().\\r\\n * @inheritdoc ERC20Upgradeable\\r\\n */\\r\\n function _afterTokenTransfer(address from, address to, uint256 amount) internal override {\\r\\n super._afterTokenTransfer(from, to, amount);\\r\\n\\r\\n // If some L-Token have been burned/minted, inform listeners of a TVL change\\r\\n if (from == address(0) || to == address(0)) emit TVLChangeEvent(totalSupply());\\r\\n\\r\\n // Trigger onLTokenTransfer() functions of all the transfers listeners\\r\\n for (uint256 i = 0; i < transfersListeners.length; i++) {\\r\\n transfersListeners[i].onLTokenTransfer(from, to, amount);\\r\\n }\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Computes the maximum amount of underlying tokens that should be retained\\r\\n * by the contract (based on retention rate).\\r\\n * @return amount The expected amount of retained underlying tokens.\\r\\n */\\r\\n function getExpectedRetained() public view returns (uint256 amount) {\\r\\n // Cache invested token's decimals number\\r\\n uint256 d = SUD.decimalsOf(address(invested()));\\r\\n\\r\\n // Convert totalSupply and retentionRate to SUD\\r\\n uint256 totalSupplySUD = SUD.fromAmount(totalSupply(), d);\\r\\n uint256 retentionRateSUD = SUD.fromRate(retentionRateUD7x3, d);\\r\\n\\r\\n // Compute and return expected retained amount\\r\\n uint256 expectedRetainedSUD = (totalSupplySUD * retentionRateSUD) / SUD.fromInt(100, d);\\r\\n return SUD.toAmount(expectedRetainedSUD, d);\\r\\n }\\r\\n\\r\\n /// @notice Transfers underlying tokens exceeding the retention rate to the fund wallet.\\r\\n function _transferExceedingToFund() internal {\\r\\n // Retrieve the expected amount retained\\r\\n uint256 expectedRetained = getExpectedRetained();\\r\\n\\r\\n // If usable underlyings are less than or equal to expected retained, return\\r\\n if (usableUnderlyings <= expectedRetained) return;\\r\\n\\r\\n // Else, exceeding amount is equal to difference between those values\\r\\n uint256 exceedingAmount = usableUnderlyings - expectedRetained;\\r\\n\\r\\n // Decrease usable underlyings amount accordingly\\r\\n usableUnderlyings -= exceedingAmount;\\r\\n\\r\\n // Transfer the exceeding amount to the fund wallet\\r\\n underlying().safeTransfer(fund, exceedingAmount);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Override of ERC20WrapperUpgradeable.withdrawTo() that reverts.\\r\\n * Use instantWithdrawal() or requestWithdrawal() functions instead.\\r\\n * @inheritdoc ERC20WrapperUpgradeable\\r\\n */\\r\\n function withdrawTo(address account, uint256 amount) public pure override returns (bool) {\\r\\n account; // Silence unused variable compiler warning\\r\\n amount;\\r\\n revert(\\\"L45\\\");\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Override of ERC20WrapperUpgradeable.depositFor() that reverts.\\r\\n * Use deposit() function instead.\\r\\n * @inheritdoc ERC20WrapperUpgradeable\\r\\n */\\r\\n function depositFor(address account, uint256 amount) public pure override returns (bool) {\\r\\n account; // Silence unused variable compiler warning\\r\\n amount;\\r\\n revert(\\\"L46\\\");\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Allows exchanging some underlying tokens for the same amount of L-Tokens.\\r\\n * @param amount The amount of underlying tokens to deposit.\\r\\n */\\r\\n function deposit(uint256 amount) public whenNotPaused notBlacklisted(_msgSender()) {\\r\\n // Ensure the account has enough underlying tokens to deposit\\r\\n require(underlying().balanceOf(_msgSender()) >= amount, \\\"L47\\\");\\r\\n\\r\\n // Update usable underlyings balance accordingly\\r\\n usableUnderlyings += amount;\\r\\n\\r\\n // Inform listeners of the deposit activity event\\r\\n emit ActivityEvent(\\r\\n NO_ID,\\r\\n _msgSender(),\\r\\n Action.Deposit,\\r\\n amount,\\r\\n amount,\\r\\n Status.Success,\\r\\n NO_ID\\r\\n );\\r\\n\\r\\n // Receive underlying tokens and mint L-Tokens to the account in a 1:1 ratio\\r\\n super.depositFor(_msgSender(), amount);\\r\\n\\r\\n // Transfer exceeding underlying tokens to the fund wallet\\r\\n _transferExceedingToFund();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Computes fees and net withdrawn amount for a given account withdrawing a\\r\\n * given amount.\\r\\n * @param account The account initiating the withdrawal.\\r\\n * @param amount The amount of the withdrawal.\\r\\n */\\r\\n function getWithdrawnAmountAndFees(\\r\\n address account,\\r\\n uint256 amount\\r\\n ) public view returns (uint256 withdrawnAmount, uint256 fees) {\\r\\n // If the account is eligible to staking tier 2, no fees are applied\\r\\n if (ldyStaking.tierOf(account) >= 2) return (amount, 0);\\r\\n\\r\\n // Cache invested token's decimals number\\r\\n uint256 d = SUD.decimalsOf(address(invested()));\\r\\n\\r\\n // Convert amount and fees rate to SUD\\r\\n uint256 amountSUD = SUD.fromAmount(amount, d);\\r\\n uint256 feesRateSUD = SUD.fromRate(feesRateUD7x3, d);\\r\\n\\r\\n // Compute fees and withdrawn amount (initial amount minus fees)\\r\\n uint256 feesSUD = (amountSUD * feesRateSUD) / SUD.fromInt(100, d);\\r\\n fees = SUD.toAmount(feesSUD, d);\\r\\n withdrawnAmount = amount - fees;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Allows instaneously exchanging a given amount of L-Tokens for the same\\r\\n * amount of underlying tokens. It will fail if the contract currently doesn't hold\\r\\n * enough underlying tokens to cover the withdrawal.\\r\\n * @dev In order to save some gas and time to users, frontends should propose this\\r\\n * function to users only when it has been verified that it will not revert. They\\r\\n * should propose the requestWithdrawal() function otherwise.\\r\\n * @param amount The amount L-Tokens to withdraw.\\r\\n */\\r\\n function instantWithdrawal(uint256 amount) external whenNotPaused notBlacklisted(_msgSender()) {\\r\\n // Ensure the account has enough L-Tokens to withdraw\\r\\n require(amount <= balanceOf(_msgSender()), \\\"L48\\\");\\r\\n\\r\\n // Can the contract cover this withdrawal plus all already queued requests?\\r\\n bool cond1 = totalQueued + amount <= usableUnderlyings;\\r\\n\\r\\n // Is caller eligible to staking tier 2 and the contract can cover this withdrawal?\\r\\n bool cond2 = ldyStaking.tierOf(_msgSender()) >= 2 && amount <= usableUnderlyings;\\r\\n\\r\\n // Revert if conditions are not met for the withdrawal to be processed instantaneously\\r\\n if (!(cond1 || cond2)) revert(\\\"L49\\\");\\r\\n\\r\\n // Else, retrieve withdrawal fees and net withdrawn amount\\r\\n (uint256 withdrawnAmount, uint256 fees) = getWithdrawnAmountAndFees(_msgSender(), amount);\\r\\n\\r\\n // Increase unclaimed fees amount accordingly\\r\\n unclaimedFees += fees;\\r\\n\\r\\n // Decrease usable underlyings balance accordingly\\r\\n usableUnderlyings -= withdrawnAmount;\\r\\n\\r\\n // Inform listeners of this instant withdrawal activity event\\r\\n emit ActivityEvent(\\r\\n NO_ID,\\r\\n _msgSender(),\\r\\n Action.Withdraw,\\r\\n amount,\\r\\n withdrawnAmount,\\r\\n Status.Success,\\r\\n NO_ID\\r\\n );\\r\\n\\r\\n // Burn withdrawal fees from the account\\r\\n _burn(_msgSender(), fees);\\r\\n\\r\\n // Burn account's withdrawn L-Tokens and transfer to it underlying tokens in a 1:1 ratio\\r\\n super.withdrawTo(_msgSender(), withdrawnAmount);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Allows requesting the exchange of a given amount of L-Tokens for the same\\r\\n * amount of underlying tokens. The request will be automatically processed later.\\r\\n * @dev The sender must attach 0.003 ETH to pre-pay the future processing gas fees\\r\\n * paid by the withdrawer wallet.\\r\\n * @param amount The amount L-Tokens to withdraw.\\r\\n */\\r\\n function requestWithdrawal(\\r\\n uint256 amount\\r\\n ) public payable whenNotPaused notBlacklisted(_msgSender()) {\\r\\n // Ensure the account has enough L-Tokens to withdraw\\r\\n require(amount <= balanceOf(_msgSender()), \\\"L53\\\");\\r\\n\\r\\n // Ensure the requested amount doesn't overflow uint96\\r\\n require(amount <= type(uint96).max, \\\"L54\\\");\\r\\n\\r\\n // Ensure the sender attached the pre-paid processing gas fees\\r\\n require(msg.value == 0.003 * 10 ** 18, \\\"L55\\\");\\r\\n\\r\\n // Create withdrawal request data\\r\\n WithdrawalRequest memory request = WithdrawalRequest({\\r\\n account: _msgSender(),\\r\\n amount: uint96(amount)\\r\\n });\\r\\n\\r\\n // Will hold the request ID\\r\\n uint256 requestId;\\r\\n\\r\\n // Append request to the withdrawal queue:\\r\\n // - At the beginning, if account is eligible to staking tier 2 and cursor is not 0\\r\\n if (ldyStaking.tierOf(_msgSender()) >= 2 && withdrawalQueueCursor > 0) {\\r\\n withdrawalQueueCursor--;\\r\\n requestId = withdrawalQueueCursor;\\r\\n withdrawalQueue[requestId] = request;\\r\\n }\\r\\n // - At the end else\\r\\n else {\\r\\n withdrawalQueue.push(request);\\r\\n requestId = withdrawalQueue.length - 1;\\r\\n }\\r\\n\\r\\n // Increase total amount queued accordingly\\r\\n totalQueued += amount;\\r\\n\\r\\n // Inform listeners of this new queued withdrawal activity event\\r\\n emit ActivityEvent(\\r\\n int256(requestId),\\r\\n _msgSender(),\\r\\n Action.Withdraw,\\r\\n amount,\\r\\n amount,\\r\\n Status.Queued,\\r\\n NO_ID\\r\\n );\\r\\n\\r\\n // Burn withdrawal L-Tokens amount from account's balance\\r\\n _burn(_msgSender(), amount);\\r\\n\\r\\n // Forward pre-paid processing gas fees to the withdrawer wallet\\r\\n (bool sent, ) = withdrawer.call{value: msg.value}(\\\"\\\");\\r\\n require(sent, \\\"L56\\\");\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Processes queued withdrawal requests until there is else no more requests,\\r\\n * else not enough underlying tokens to continue.\\r\\n * @dev For further details, see \\\"LToken > Withdrawals\\\" section of whitepaper.\\r\\n */\\r\\n function processQueuedRequests() external onlyWithdrawer whenNotPaused {\\r\\n // Accumulators variables, will be written on-chain after the loop\\r\\n uint256 cumulatedFees = 0;\\r\\n uint256 cumulatedWithdrawnAmount = 0;\\r\\n uint256 nextRequestId = withdrawalQueueCursor;\\r\\n\\r\\n // Cache queue length to avoid multiple SLOADs and avoid infinite loop as big\\r\\n // requests are increasing the queue length when moved at the end of the queue.\\r\\n uint256 queueLength = withdrawalQueue.length;\\r\\n\\r\\n // Iterate over requests to be processed\\r\\n while (nextRequestId < queueLength) {\\r\\n // Stop processing requests if there is not enough gas left to continue the\\r\\n // loop and properly end the function call. This prevents an attacker from\\r\\n // blocking the withdrawal processing by creating a ton of tiny requests so\\r\\n // this function call cannot fit anymore in block gas limit.\\r\\n if (gasleft() < 45000) break;\\r\\n\\r\\n // Retrieve request data\\r\\n WithdrawalRequest memory request = withdrawalQueue[nextRequestId];\\r\\n\\r\\n // Skip empty request (processed big requests or cancelled requests)\\r\\n if (request.account == address(0)) {}\\r\\n //\\r\\n // If account has been blacklisted since request emission\\r\\n else if (isBlacklisted(request.account)) {\\r\\n // Remove request from queue\\r\\n delete withdrawalQueue[nextRequestId];\\r\\n\\r\\n // Append request in the frozen requests list\\r\\n frozenRequests.push(request);\\r\\n }\\r\\n //\\r\\n // Or if request is a big request, move it at the end of the queue for now.\\r\\n // This request will be processed manually later using processBigQueuedRequest()\\r\\n else if (request.amount > getExpectedRetained() / 2) {\\r\\n // Inform listeners of this queued request being moved at the end of the queue\\r\\n emit ActivityEvent(\\r\\n int256(nextRequestId),\\r\\n _msgSender(),\\r\\n Action.Withdraw,\\r\\n request.amount,\\r\\n request.amount,\\r\\n Status.Moved,\\r\\n int256(withdrawalQueue.length)\\r\\n );\\r\\n\\r\\n // Remove request from queue\\r\\n delete withdrawalQueue[nextRequestId];\\r\\n\\r\\n // Append request at the end of the queue\\r\\n withdrawalQueue.push(request);\\r\\n }\\r\\n //\\r\\n // Else, continue request processing\\r\\n else {\\r\\n // Retrieve withdrawal fees and net withdrawn amount\\r\\n (uint256 withdrawnAmount, uint256 fees) = getWithdrawnAmountAndFees(\\r\\n request.account,\\r\\n request.amount\\r\\n );\\r\\n\\r\\n // Break if the contract doesn't hold enough funds to cover the request\\r\\n if (withdrawnAmount > usableUnderlyings - cumulatedWithdrawnAmount) break;\\r\\n\\r\\n // Accumulate fees and withdrawn amount\\r\\n cumulatedFees += fees;\\r\\n cumulatedWithdrawnAmount += withdrawnAmount;\\r\\n\\r\\n // Inform listeners of this queued withdrawal processing activity event\\r\\n emit ActivityEvent(\\r\\n int256(nextRequestId),\\r\\n request.account,\\r\\n Action.Withdraw,\\r\\n request.amount,\\r\\n withdrawnAmount,\\r\\n Status.Success,\\r\\n NO_ID\\r\\n );\\r\\n\\r\\n // Remove request from queue\\r\\n delete withdrawalQueue[nextRequestId];\\r\\n\\r\\n // Transfer underlying tokens to account. Burning L-Tokens is not required\\r\\n // as equestWithdrawal() already did it.\\r\\n // Security note: Re-entrancy warning are disabled as the request has\\r\\n // just been deleted from the queue, it will so be skipped if trying to\\r\\n // process it again.\\r\\n // slither-disable-next-line reentrancy-no-eth\\r\\n underlying().safeTransfer(request.account, withdrawnAmount);\\r\\n }\\r\\n\\r\\n // Increment next request ID\\r\\n nextRequestId++;\\r\\n }\\r\\n\\r\\n // Increase unclaimed fees by the amount of cumulated fees\\r\\n unclaimedFees += cumulatedFees;\\r\\n\\r\\n // Decrease usable underlyings by the cumulated amount of withdrawn underlyings\\r\\n usableUnderlyings -= cumulatedWithdrawnAmount;\\r\\n\\r\\n // Decrease total amount queued by the cumulated amount requested\\r\\n totalQueued -= cumulatedWithdrawnAmount + cumulatedFees;\\r\\n\\r\\n // Update new queue cursor\\r\\n withdrawalQueueCursor = nextRequestId;\\r\\n\\r\\n // Retention rate cannot exceeds as the withdrawal decreases both usable\\r\\n // underlyings and expected retained amounts by the same number and as the\\r\\n // expected retained amount is a subset of usable underlyings amount.\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Processes a given queued big withdrawal request (one that exceeds half of\\r\\n * the retention rate).\\r\\n * @dev In contrast to non-big requests processing, this function will uses to fund\\r\\n * wallet's balance to fill the request. This allows processing requests that are\\r\\n * greater than retention rate without having to exceed this rate on the contract.\\r\\n * @param requestId The ID of the big request to process.\\r\\n */\\r\\n function processBigQueuedRequest(uint256 requestId) external onlyFund whenNotPaused {\\r\\n // Retrieve request data\\r\\n WithdrawalRequest memory request = withdrawalQueue[requestId];\\r\\n\\r\\n // Ensure the request is active\\r\\n require(request.account != address(0), \\\"L66\\\");\\r\\n\\r\\n // Ensure the request emitter has not been blacklisted since request emission\\r\\n require(!isBlacklisted(request.account), \\\"L50\\\");\\r\\n\\r\\n // Ensure this is indeed a big request\\r\\n require(request.amount > getExpectedRetained() / 2, \\\"L51\\\");\\r\\n\\r\\n // Retrieve withdrawal fees and net withdrawn amount\\r\\n (uint256 withdrawnAmount, uint256 fees) = getWithdrawnAmountAndFees(\\r\\n request.account,\\r\\n request.amount\\r\\n );\\r\\n\\r\\n // Ensure withdrawn amount can be covered by contract + fund wallet balances\\r\\n uint256 fundBalance = underlying().balanceOf(fund);\\r\\n require(withdrawnAmount <= usableUnderlyings + fundBalance, \\\"L52\\\");\\r\\n\\r\\n // Increase amount of unclaimed fees accordingly\\r\\n unclaimedFees += fees;\\r\\n\\r\\n // Decrease total queued amount by request amount\\r\\n totalQueued -= request.amount;\\r\\n\\r\\n // Increment queue cursor if request was the next request to be processed\\r\\n if (requestId == withdrawalQueueCursor) withdrawalQueueCursor++;\\r\\n\\r\\n // Inform listeners of this queued withdrawal processing activity event\\r\\n emit ActivityEvent(\\r\\n int256(requestId),\\r\\n request.account,\\r\\n Action.Withdraw,\\r\\n request.amount,\\r\\n withdrawnAmount,\\r\\n Status.Success,\\r\\n NO_ID\\r\\n );\\r\\n\\r\\n // Remove request from queue\\r\\n delete withdrawalQueue[requestId];\\r\\n\\r\\n // If fund wallet's balance can cover request, rely on it only\\r\\n if (withdrawnAmount <= fundBalance) {\\r\\n underlying().safeTransferFrom(_msgSender(), request.account, withdrawnAmount);\\r\\n }\\r\\n // Else, cover request from both fund wallet and contract balances\\r\\n else {\\r\\n // Compute amount missing from fund wallet to cover request\\r\\n uint256 missingAmount = withdrawnAmount - fundBalance;\\r\\n\\r\\n // Decrease usable amount of underlying tokens accordingly\\r\\n usableUnderlyings -= missingAmount;\\r\\n\\r\\n // Transfer entire fund balance to request's emitter\\r\\n underlying().safeTransferFrom(_msgSender(), request.account, fundBalance);\\r\\n\\r\\n // Transfer missing amount from contract balance to request emitter\\r\\n underlying().safeTransfer(request.account, missingAmount);\\r\\n }\\r\\n\\r\\n // Transfer exceeding underlying tokens to the fund wallet\\r\\n _transferExceedingToFund();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Cancels a given withdrawal request. The request emitter receive back its\\r\\n * L-Tokens and no fees will be charged.\\r\\n * @param requestId The ID of the withdrawal request to cancel.\\r\\n */\\r\\n function cancelWithdrawalRequest(\\r\\n uint256 requestId\\r\\n ) public whenNotPaused notBlacklisted(_msgSender()) {\\r\\n // Retrieve request data\\r\\n WithdrawalRequest memory request = withdrawalQueue[requestId];\\r\\n\\r\\n // Ensure request belongs to caller\\r\\n require(_msgSender() == request.account, \\\"L57\\\");\\r\\n\\r\\n // Decrease total amount queued accordingly\\r\\n totalQueued -= request.amount;\\r\\n\\r\\n // Delete the withdrawal request from queue\\r\\n delete withdrawalQueue[requestId];\\r\\n\\r\\n // Inform listeners of this cancelled withdrawal request activity event\\r\\n emit ActivityEvent(\\r\\n int256(requestId),\\r\\n request.account,\\r\\n Action.Withdraw,\\r\\n request.amount,\\r\\n request.amount,\\r\\n Status.Cancelled,\\r\\n NO_ID\\r\\n );\\r\\n\\r\\n // Mint back L-Tokens to account\\r\\n _mint(request.account, uint256(request.amount));\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Used by the fund wallet to repatriate underlying tokens on the contract\\r\\n * whenever those are required to fulfill some withdrawal requests.\\r\\n * @dev The function will revert if repatriated amount makes the contract exceeding\\r\\n * the retention rate.\\r\\n * @param amount The amount of underlying tokens to repatriate.\\r\\n */\\r\\n function repatriate(uint256 amount) external onlyFund whenNotPaused {\\r\\n // Ensure the fund wallet has enough funds to repatriate\\r\\n require(amount <= underlying().balanceOf(fund), \\\"L58\\\");\\r\\n\\r\\n // Calculate new contract usable balance\\r\\n uint256 newBalance = usableUnderlyings + amount;\\r\\n\\r\\n // Ensure the new balance doesn't exceed the retention rate\\r\\n require(newBalance <= getExpectedRetained(), \\\"L59\\\");\\r\\n\\r\\n // Increase usable underlyings amount by repatriated amount\\r\\n usableUnderlyings += amount;\\r\\n\\r\\n // Transfer amount from fund wallet to contract\\r\\n underlying().safeTransferFrom(_msgSender(), address(this), amount);\\r\\n }\\r\\n\\r\\n /// @notice Used by owner to claim fees generated from successful withdrawals.\\r\\n function claimFees() external onlyOwner {\\r\\n // Ensure there are some fees to claim\\r\\n require(unclaimedFees > 0, \\\"L60\\\");\\r\\n\\r\\n // Ensure the contract holds enough underlying tokens to cover fees\\r\\n require(usableUnderlyings >= unclaimedFees, \\\"L61\\\");\\r\\n\\r\\n // Decrease usable underlyings amount accordingly\\r\\n usableUnderlyings -= unclaimedFees;\\r\\n\\r\\n // Store fees amount in memory and reset unclaimed fees amount\\r\\n uint256 fees = unclaimedFees;\\r\\n unclaimedFees = 0;\\r\\n\\r\\n // Transfer unclaimed fees to owner\\r\\n underlying().safeTransfer(owner(), fees);\\r\\n }\\r\\n}\\r\\n\",\"keccak256\":\"0x13d036e334e664e5ee7d76c67d887fe7b7468fc23c323d527fbfca87ab436682\",\"license\":\"MIT\"},\"contracts/src/abstracts/GlobalOwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.18;\\r\\n\\r\\nimport {Initializable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\r\\nimport {OwnableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\\\";\\r\\nimport {GlobalOwner} from \\\"../GlobalOwner.sol\\\";\\r\\n\\r\\n/**\\r\\n * @title GlobalOwnableUpgradeable\\r\\n * @author Lila Rest (https://lila.rest)\\r\\n * @custom:security-contact security@ledgity.com\\r\\n *\\r\\n * @notice Derived contracts will inherit ownership from the specified GlobalOwner\\r\\n * contract (see GlobalOwner.sol). This design facilitates centralized management\\r\\n * of ownership for all the Ledgity Yield contracts.\\r\\n *\\r\\n * @dev Note: The _globalOwner state must be set at initialization-time and for evident\\r\\n * security reasons cannot be changed afterwards.\\r\\n *\\r\\n * @dev For further details, see \\\"GlobalOwnableUpgradeable\\\" section of whitepaper.\\r\\n * @custom:security-contact security@ledgity.com\\r\\n */\\r\\nabstract contract GlobalOwnableUpgradeable is Initializable, OwnableUpgradeable {\\r\\n /**\\r\\n * @notice The GlobalOwner contract the ownership will be inherited from.\\r\\n * @dev This state is private so derived contracts cannot change its value.\\r\\n */\\r\\n GlobalOwner private _globalOwner;\\r\\n\\r\\n /**\\r\\n * @notice Initializer functions of the contract. They replace the constructor()\\r\\n * function in the context of upgradeable contracts.\\r\\n * @dev See: https://docs.openzeppelin.com/contracts/4.x/upgradeable\\r\\n * @param globalOwner_ The address of the GlobalOwner contract.\\r\\n */\\r\\n function __GlobalOwnable_init(address globalOwner_) internal onlyInitializing {\\r\\n __GlobalOwnable_init_unchained(globalOwner_);\\r\\n // Note: __Ownable_init() doesn't have to be called as the overriden owner()\\r\\n // function no longer rely on the _owner state. Since __Ownable_init() only sets\\r\\n // the initial _owner value, calling it would have no effect.\\r\\n }\\r\\n\\r\\n function __GlobalOwnable_init_unchained(address globalOwner_) internal onlyInitializing {\\r\\n _globalOwner = GlobalOwner(globalOwner_);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Retrieves the address of GlobalOwner contract.\\r\\n * @return The address of the GlobalOwner contract.\\r\\n */\\r\\n function globalOwner() public view returns (address) {\\r\\n return address(_globalOwner);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Override of OwnableUpgradeable.owner() that retrieves the owner's address\\r\\n * from the GlobalOwner contract instead.\\r\\n * @return The address of the owner\\r\\n */\\r\\n function owner() public view override returns (address) {\\r\\n return _globalOwner.owner();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Override of OwnableUpgradeable.transferOwnership() that always reverts.\\r\\n * Ownership is managed by the GlobalOwner contract and must be modified there.\\r\\n */\\r\\n function transferOwnership(address newOwner) public view override onlyOwner {\\r\\n newOwner; // Silence unused variable compiler warning\\r\\n revert(\\\"L8\\\");\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Override of OwnableUpgradeable.renounceOwnership() that always reverts.\\r\\n * Ownership is managed by the GlobalOwner contract and must be modified there.\\r\\n */\\r\\n function renounceOwnership() public view override onlyOwner {\\r\\n revert(\\\"L65\\\");\\r\\n }\\r\\n\\r\\n /**\\r\\n * @dev This empty reserved space is put in place to allow future versions to add\\r\\n * new variables without shifting down storage in the inheritance chain.\\r\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\r\\n */\\r\\n uint256[50] private __gap;\\r\\n}\\r\\n\",\"keccak256\":\"0x5b0b6d4f7a461d8b56e360cf829d73b7aa7d9641dcac664ec50f31470e008b1b\",\"license\":\"MIT\"},\"contracts/src/abstracts/GlobalPausableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.18;\\r\\n\\r\\nimport {Initializable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\r\\nimport {PausableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\\\";\\r\\nimport {GlobalPause} from \\\"../GlobalPause.sol\\\";\\r\\n\\r\\n/**\\r\\n * @title GlobalPausableUpgradeable\\r\\n * @author Lila Rest (https://lila.rest)\\r\\n * @custom:security-contact security@ledgity.com\\r\\n *\\r\\n * @notice Derived contracts will inherit pause state from the specified GlobalPause\\r\\n * contract (see GlobalPause.sol). This design facilitates centralized management of\\r\\n * pause state for all the Ledgity Yield contracts.\\r\\n *\\r\\n * @dev Note: The _globalPause state must be set at initialization-time and for evident\\r\\n * security reasons cannot be changed afterwards.\\r\\n *\\r\\n * @dev For further details, see \\\"GlobalPausableUpgradeable\\\" section of whitepaper.\\r\\n * @custom:security-contact security@ledgity.com\\r\\n */\\r\\nabstract contract GlobalPausableUpgradeable is Initializable, PausableUpgradeable {\\r\\n /**\\r\\n * @notice The GlobalPause contract the pause state will be inherited from.\\r\\n * @dev This state is private so derived contracts cannot change its value.\\r\\n */\\r\\n GlobalPause private _globalPause;\\r\\n\\r\\n /**\\r\\n * @notice Initializer functions of the contract. They replace the constructor()\\r\\n * function in the context of upgradeable contracts.\\r\\n * @dev See: https://docs.openzeppelin.com/contracts/4.x/upgradeable\\r\\n * @param globalPause_ The address of the GlobalPause contract.\\r\\n */\\r\\n function __GlobalPausable_init(address globalPause_) internal onlyInitializing {\\r\\n __Pausable_init();\\r\\n __GlobalPausable_init_unchained(globalPause_);\\r\\n }\\r\\n\\r\\n function __GlobalPausable_init_unchained(address globalPause_) internal onlyInitializing {\\r\\n _globalPause = GlobalPause(globalPause_);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Retrieves the address of GlobalPause contract.\\r\\n * @return The address of the GlobalPause contract.\\r\\n */\\r\\n function globalPause() public view returns (address) {\\r\\n return address(_globalPause);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Override of PausableUpgradeable.pause() that retrieves the pause state\\r\\n * from the GlobalPause contract instead.\\r\\n * @return Whether the contract is paused or not.\\r\\n */\\r\\n function paused() public view virtual override returns (bool) {\\r\\n return _globalPause.paused();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @dev This empty reserved space is put in place to allow future versions to add\\r\\n * new variables without shifting down storage in the inheritance chain.\\r\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\r\\n */\\r\\n uint256[50] private __gap;\\r\\n}\\r\\n\",\"keccak256\":\"0xdd07fb275079cdafec6fd9c5848fbe2caf52af114e574d2714160d7622c51ddc\",\"license\":\"MIT\"},\"contracts/src/abstracts/GlobalRestrictableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.18;\\r\\n\\r\\nimport {Initializable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\r\\nimport {GlobalBlacklist} from \\\"../GlobalBlacklist.sol\\\";\\r\\n\\r\\n/**\\r\\n * @title GlobalRestrictableUpgradeable\\r\\n * @author Lila Rest (https://lila.rest)\\r\\n * @custom:security-contact security@ledgity.com\\r\\n *\\r\\n * @notice Derived contracts will inherit blacklist state from the specified\\r\\n * GlobalBlacklist contract (see GlobalBlacklist.sol). This design facilitates\\r\\n * centralized management of a blacklist for all the Ledgity Yield contracts.\\r\\n *\\r\\n * @dev Note: The _globalBlacklist state must be set at initialization-time and for\\r\\n * evident security reasons cannot be changed afterwards.\\r\\n *\\r\\n * @dev For further details, see \\\"GlobalRestrictableUpgradeable\\\" section of whitepaper.\\r\\n * @custom:security-contact security@ledgity.com\\r\\n */\\r\\nabstract contract GlobalRestrictableUpgradeable is Initializable {\\r\\n /**\\r\\n * @notice The GlobalBlacklist contract the blacklist state will be inherited from.\\r\\n * @dev This state is private so derived contracts cannot change its value.\\r\\n */\\r\\n GlobalBlacklist private _globalBlacklist;\\r\\n\\r\\n /**\\r\\n * @notice Initializer functions of the contract. They replace the constructor()\\r\\n * function in the context of upgradeable contracts.\\r\\n * @dev See: https://docs.openzeppelin.com/contracts/4.x/upgradeable\\r\\n * @param globalBlacklist_ The address of the GlobalBlacklist contract.\\r\\n */\\r\\n function __GlobalRestrictable_init(address globalBlacklist_) internal onlyInitializing {\\r\\n __GlobalRestrictable_init_unchained(globalBlacklist_);\\r\\n }\\r\\n\\r\\n function __GlobalRestrictable_init_unchained(\\r\\n address globalBlacklist_\\r\\n ) internal onlyInitializing {\\r\\n _globalBlacklist = GlobalBlacklist(globalBlacklist_);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Retrieves the address of GlobalBlacklist contract.\\r\\n * @return The address of the GlobalBlacklist contract.\\r\\n */\\r\\n function globalBlacklist() public view returns (address) {\\r\\n return address(_globalBlacklist);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Reverts if the given account is blacklisted by the GlobalBlacklist contract.\\r\\n * @param account Address to verify.\\r\\n */\\r\\n modifier notBlacklisted(address account) {\\r\\n require(isBlacklisted(account) == false, \\\"L9\\\");\\r\\n _;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Checks if the given account is blacklisted by the GlobalBlacklist contract.\\r\\n * @param account Address to verify.\\r\\n * @return Whether the account is blacklisted.\\r\\n */\\r\\n function isBlacklisted(address account) internal view returns (bool) {\\r\\n return _globalBlacklist.isBlacklisted(account);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @dev This empty reserved space is put in place to allow future versions to add\\r\\n * new variables without shifting down storage in the inheritance chain.\\r\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\r\\n */\\r\\n uint256[50] private __gap;\\r\\n}\\r\\n\",\"keccak256\":\"0x1dd38517b55974515a49e451cbafcf39119bfc8d33899bedc24d477651b370a4\",\"license\":\"MIT\"},\"contracts/src/abstracts/InvestUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.18;\\r\\n\\r\\n// Contracts\\r\\nimport {Initializable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\r\\nimport {GlobalOwnableUpgradeable} from \\\"./GlobalOwnableUpgradeable.sol\\\";\\r\\nimport {GlobalPausableUpgradeable} from \\\"./GlobalPausableUpgradeable.sol\\\";\\r\\nimport {GlobalRestrictableUpgradeable} from \\\"./GlobalRestrictableUpgradeable.sol\\\";\\r\\nimport \\\"./base/BaseUpgradeable.sol\\\";\\r\\nimport {RecoverableUpgradeable} from \\\"../abstracts/RecoverableUpgradeable.sol\\\";\\r\\n\\r\\n// Libraries\\r\\nimport {SafeERC20Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\\\";\\r\\nimport {APRHistory as APRH} from \\\"../libs/APRHistory.sol\\\";\\r\\nimport {SUD} from \\\"../libs/SUD.sol\\\";\\r\\n\\r\\n// Interfaces\\r\\nimport {IERC20Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\\\";\\r\\nimport {IERC20MetadataUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol\\\";\\r\\n\\r\\n/**\\r\\n * @title InvestUpgradeable\\r\\n * @author Lila Rest (https://lila.rest)\\r\\n * @custom:security-contact security@ledgity.com\\r\\n *\\r\\n * @notice Derived contracts are provided with utilities to manage an invested token,\\r\\n * users' investment periods, rewards calculations, virtual balances, and auto-compounding.\\r\\n *\\r\\n * @dev Intuition:\\r\\n * This contract primarily exists for code splitting and reusability. It unburdens the\\r\\n * LToken contract code, making it easier to understand and maintain.\\r\\n *\\r\\n * This contract is generic because it may be used in the LDYStaking contract in the future.\\r\\n *\\r\\n * @dev Definitions:\\r\\n * - Investment: The act of depositing or investing tokens into the contract.\\r\\n * - Investment period: Time between the start of an investment or the last rewards\\r\\n * distribution for an account to the present.\\r\\n * - Virtual balance: Temporary storage for account rewards, used when those can't be\\r\\n * distributed between investment periods.\\r\\n * - Rewards redirection: Mechanism allowing an account to redirect its rewards to another.\\r\\n *\\r\\n * @dev Derived contract must:\\r\\n * - Set invested token during initialization\\r\\n * - Implement _investmentOf() function\\r\\n * - Implement _distributeRewards() function (optional)\\r\\n *\\r\\n * @dev For further details, see \\\"InvestmentUpgradeable\\\" section of whitepaper.\\r\\n * @custom:security-contact security@ledgity.com\\r\\n */\\r\\nabstract contract InvestUpgradeable is BaseUpgradeable {\\r\\n using SafeERC20Upgradeable for IERC20Upgradeable;\\r\\n using APRH for APRH.Pack[];\\r\\n\\r\\n /**\\r\\n * @notice Represents an account's investment period.\\r\\n * @param timestamp The timestamp of the most recent rewards distribution.\\r\\n * @param ref The reference of the last APR checkpoint at that timestamp.\\r\\n */\\r\\n struct InvestmentPeriod {\\r\\n uint40 timestamp; // Supports dates up to 20/02/36812\\r\\n APRH.Reference ref;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Represents the investment details of an account.\\r\\n * @param period The current investment period of the account.\\r\\n * @param virtualBalance May hold a part of account rewards until they are claimed.\\r\\n */\\r\\n struct AccountDetails {\\r\\n InvestmentPeriod period;\\r\\n uint256 virtualBalance;\\r\\n }\\r\\n\\r\\n /// @notice Holds a reference to the invested token's contract.\\r\\n IERC20Upgradeable private _invested;\\r\\n\\r\\n /// @notice Holds investment details of each account.\\r\\n mapping(address => AccountDetails) internal accountsDetails;\\r\\n\\r\\n /// @notice Holds an history of the APR value over time (see APRHistory.sol).\\r\\n APRH.Pack[] private _aprHistory;\\r\\n\\r\\n /// @notice Holds active rewards redirections in both from->to and to->from[] ways.\\r\\n mapping(address => address) public rewardsRedirectsFromTo;\\r\\n mapping(address => address[]) public rewardsRedirectsToFrom;\\r\\n\\r\\n /// @notice Is used to prevent infinite loop in _beforeInvestmentChange().\\r\\n bool private _isClaiming;\\r\\n\\r\\n /**\\r\\n * @notice Emitted to inform listeners about a change in the APR's value.\\r\\n * @param newAPRUD7x3 The new APR in UD7x3 format.\\r\\n */\\r\\n event APRChangeEvent(uint16 newAPRUD7x3);\\r\\n\\r\\n /**\\r\\n * @notice Initializer functions of the contract. They replace the constructor()\\r\\n * function in the context of upgradeable contracts.\\r\\n * @dev See: https://docs.openzeppelin.com/contracts/4.x/upgradeable\\r\\n * @param globalOwner_ The address of the GlobalOwner contract.\\r\\n * @param globalPause_ The address of the GlobalPause contract.\\r\\n * @param globalBlacklist_ The address of the GlobalBlacklist contract.\\r\\n * @param invested_ The address of the invested token contract.\\r\\n */\\r\\n function __Invest_init(\\r\\n address globalOwner_,\\r\\n address globalPause_,\\r\\n address globalBlacklist_,\\r\\n address invested_\\r\\n ) internal onlyInitializing {\\r\\n __Base_init(globalOwner_, globalPause_, globalBlacklist_);\\r\\n __Invest_init_unchained(invested_);\\r\\n }\\r\\n\\r\\n function __Invest_init_unchained(address invested_) internal onlyInitializing {\\r\\n // Set invested token\\r\\n _invested = IERC20Upgradeable(invested_);\\r\\n\\r\\n // Define initial APR to 0%. This would prevent getAPR() from reverting because\\r\\n // of an empty APR history\\r\\n _aprHistory.setAPR(0);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Retrieves the reference to the invested token contract.\\r\\n * @return The reference to the invested token contract.\\r\\n */\\r\\n function invested() public view returns (IERC20Upgradeable) {\\r\\n return _invested;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Updates the investment APR. Restricted to owner.\\r\\n * @param aprUD7x3 The new APR in UD7x3 format.\\r\\n */\\r\\n function setAPR(uint16 aprUD7x3) public onlyOwner {\\r\\n _aprHistory.setAPR(aprUD7x3);\\r\\n emit APRChangeEvent(aprUD7x3);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Retrieves the most recently set APR.\\r\\n * @return The current APR in UD7x3 format.\\r\\n */\\r\\n function getAPR() public view returns (uint16) {\\r\\n return _aprHistory.getAPR();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Enables redirection of rewards from one account to another.\\r\\n * @param from The address of the account to redirect rewards from.\\r\\n * @param to The address of the account to redirect rewards to.\\r\\n */\\r\\n function startRewardsRedirection(\\r\\n address from,\\r\\n address to\\r\\n ) public whenNotPaused notBlacklisted(from) notBlacklisted(to) {\\r\\n // Ensure the address is not already redirecting rewards\\r\\n require(rewardsRedirectsFromTo[from] == address(0), \\\"L62\\\");\\r\\n\\r\\n // Ensure neither 'from' nor 'to' are the zero address\\r\\n require(from != address(0), \\\"L12\\\");\\r\\n require(to != address(0), \\\"L13\\\");\\r\\n\\r\\n // Ensure 'from' and 'to' addresses are distinct\\r\\n require(from != to, \\\"L14\\\");\\r\\n\\r\\n // Ensure function caller is either the owner or the 'from' address\\r\\n require(_msgSender() == owner() || _msgSender() == from, \\\"L15\\\");\\r\\n\\r\\n // Distribute current rewards and reset investment periods of both accounts\\r\\n _beforeInvestmentChange(from, true);\\r\\n _beforeInvestmentChange(to, true);\\r\\n\\r\\n // Activate rewards redirection\\r\\n rewardsRedirectsFromTo[from] = to;\\r\\n rewardsRedirectsToFrom[to].push(from);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Disable an active rewards redirection.\\r\\n * @param from The address of the account to stop redirecting rewards from.\\r\\n * @param to The address of the account to stop redirecting rewards to.\\r\\n */\\r\\n function stopRewardsRedirection(\\r\\n address from,\\r\\n address to\\r\\n ) public whenNotPaused notBlacklisted(from) notBlacklisted(to) {\\r\\n // Ensure neither 'from' nor 'to' are the zero address\\r\\n require(from != address(0), \\\"L16\\\");\\r\\n require(to != address(0), \\\"L17\\\");\\r\\n\\r\\n // Ensure function caller is either the owner or the 'from' address\\r\\n require(_msgSender() == owner() || _msgSender() == from, \\\"L18\\\");\\r\\n\\r\\n // Ensure a rewards redirection was active\\r\\n require(rewardsRedirectsFromTo[from] == to, \\\"L19\\\");\\r\\n\\r\\n // Distribute current rewards and reset investment periods of both accounts\\r\\n _beforeInvestmentChange(from, true);\\r\\n _beforeInvestmentChange(to, true);\\r\\n\\r\\n // Retrieve 'from' index in the redirection array of 'to'\\r\\n int256 fromIndex = -1;\\r\\n for (uint256 i = 0; i < rewardsRedirectsToFrom[to].length; i++) {\\r\\n if (rewardsRedirectsToFrom[to][i] == from) {\\r\\n fromIndex = int256(i);\\r\\n break;\\r\\n }\\r\\n }\\r\\n\\r\\n // fromIndex should never be -1 at this point\\r\\n assert(fromIndex >= 0);\\r\\n\\r\\n // Deactivate rewards redirection\\r\\n rewardsRedirectsFromTo[from] = address(0);\\r\\n rewardsRedirectsToFrom[to][uint256(fromIndex)] = rewardsRedirectsToFrom[to][\\r\\n rewardsRedirectsToFrom[to].length - 1\\r\\n ];\\r\\n rewardsRedirectsToFrom[to].pop();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Retrieves the total amount of tokens invested by the given account.\\r\\n * @dev Derived contracts must implement this function.\\r\\n * @param account The account to get the investment of.\\r\\n * @return The total amount of tokens invested by the given account.\\r\\n */\\r\\n function _investmentOf(address account) internal view virtual returns (uint256);\\r\\n\\r\\n /**\\r\\n * @notice Distributes a specified amount of rewards to a given account.\\r\\n * @dev Derived contracts may optionally implement this function.\\r\\n * @dev Implementations must return true to indicate a successful distribution, and\\r\\n * false otherwise. If it returns false, the rewards will be added to the account's\\r\\n * virtual balance, in order to be claimed later.\\r\\n * @param account The account to claim the rewards of.\\r\\n * @param amount The amount of rewards to claim.\\r\\n * @return Whether the rewards distribution was successfull.\\r\\n */\\r\\n function _distributeRewards(address account, uint256 amount) internal virtual returns (bool) {\\r\\n account; // Silence unused variables warning\\r\\n amount;\\r\\n return false;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Computes the rewards accrued over a specified period of time, based on a\\r\\n * given APR and amount of invested tokens.\\r\\n * @dev For further details, see \\\"InvestUpgradeable > Rewards calculation\\\" section of\\r\\n * the whitepaper.\\r\\n * @param beginTimestamp The moment the period commenced.\\r\\n * @param endTimestamp The moment the period concluded.\\r\\n * @param aprUD7x3 The APR during this period, in UD7x3 format.\\r\\n * @param investedAmount The amount of tokens deposited/invested during the period.\\r\\n * @return The amount of rewards generated during the period.\\r\\n */\\r\\n function _calculatePeriodRewards(\\r\\n uint40 beginTimestamp,\\r\\n uint40 endTimestamp,\\r\\n uint16 aprUD7x3,\\r\\n uint256 investedAmount\\r\\n ) internal view returns (uint256) {\\r\\n // Cache invested token's decimals number\\r\\n uint256 d = SUD.decimalsOf(address(invested()));\\r\\n\\r\\n // Compute the number of elapsed years\\r\\n uint256 elapsedTimeSUD = SUD.fromInt(endTimestamp - beginTimestamp, d);\\r\\n uint256 elapsedYearsSUD = (elapsedTimeSUD * SUD.fromInt(1, d)) / SUD.fromInt(365 days, d);\\r\\n\\r\\n // Compute the growth in invested amount (thanks to rewards)\\r\\n uint256 aprSUD = SUD.fromRate(aprUD7x3, d);\\r\\n uint256 growthSUD = (elapsedYearsSUD * aprSUD) / SUD.fromInt(1, d);\\r\\n\\r\\n // Compute and return the rewards\\r\\n uint256 investedAmountSUD = SUD.fromAmount(investedAmount, d);\\r\\n uint256 rewardsSUD = (investedAmountSUD * growthSUD) / SUD.fromInt(100, d);\\r\\n return SUD.toAmount(rewardsSUD, d);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Computes the sum of given account's invested amount, plus invested amount\\r\\n * of all accounts that recursively redirect rewards to this account.\\r\\n * @param account The account to calculate the deep investment of.\\r\\n * @return deepInvestedAmount The deep invested amount.\\r\\n */\\r\\n function _deepInvestmentOf(address account) internal view returns (uint256 deepInvestedAmount) {\\r\\n // Consider account's direct investment\\r\\n deepInvestedAmount += _investmentOf(account);\\r\\n\\r\\n // But also the deep investments of all accounts redirecting rewards to this account\\r\\n for (uint256 i = 0; i < rewardsRedirectsToFrom[account].length; i++) {\\r\\n deepInvestedAmount += _deepInvestmentOf(rewardsRedirectsToFrom[account][i]);\\r\\n }\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Computes the amount of unclaimed/undistributed rewards of a given account.\\r\\n * @dev For further details, see \\\"InvestUpgradeable > Rewards calculation\\\" section of\\r\\n * the whitepaper.\\r\\n * @param account The account to calculate the unclaimed rewards of.\\r\\n * @param autocompound Whether to autocompound the rewards between APR checkpoints.\\r\\n * @return rewards The amount of unclaimed/undistributed rewards of the given account.\\r\\n */\\r\\n function _rewardsOf(\\r\\n address account,\\r\\n bool autocompound\\r\\n ) internal view returns (uint256 rewards) {\\r\\n // Retrieve account's investment details\\r\\n AccountDetails memory details = accountsDetails[account];\\r\\n\\r\\n // Retrieve account's deep invested amount\\r\\n uint256 investedAmount = _deepInvestmentOf(account);\\r\\n\\r\\n // Return 0 if the account has never invested or has no invested amount\\r\\n if (details.period.timestamp == 0 || investedAmount == 0) return 0;\\r\\n\\r\\n // Retrieve reference and data of APR checkpoint at which started investment period\\r\\n APRH.Reference memory currRef = details.period.ref;\\r\\n APRH.CheckpointData memory currCheckpoint = _aprHistory.getDataFromReference(currRef);\\r\\n\\r\\n // Retrieve reference of latest APR checkpoint\\r\\n APRH.Reference memory latestRef = _aprHistory.getLatestReference();\\r\\n\\r\\n // 1) Fill rewards with virtual balance (rewards not claimed/distributed yet)\\r\\n // See \\\"InvestUpgradeable > Rewards calculation > 1)\\\" section of the whitepaper\\r\\n rewards = details.virtualBalance;\\r\\n\\r\\n // If start checkpoint is not the latest one\\r\\n if (!APRH.eq(currRef, latestRef)) {\\r\\n // Retrieve reference and data of APR checkpoint that comes after start checkpoint\\r\\n APRH.Reference memory nextRef = APRH.incrementReference(currRef);\\r\\n APRH.CheckpointData memory nextCheckpoint = _aprHistory.getDataFromReference(nextRef);\\r\\n\\r\\n // 2) Calculate rewards from investment period start to next checkpoint\\r\\n // See \\\"InvestUpgradeable > Rewards calculation > 2)\\\" section of the whitepaper\\r\\n rewards += _calculatePeriodRewards(\\r\\n details.period.timestamp,\\r\\n nextCheckpoint.timestamp,\\r\\n currCheckpoint.aprUD7x3,\\r\\n investedAmount + (autocompound ? rewards : 0)\\r\\n );\\r\\n\\r\\n // 3) Calculate rewards for each crossed pair of checkpoints\\r\\n // See \\\"InvestUpgradeable > Rewards calculation > 3)\\\" section of the whitepaper\\r\\n while (true) {\\r\\n // Set next checkpoint as the current one\\r\\n currRef = nextRef;\\r\\n currCheckpoint = nextCheckpoint;\\r\\n\\r\\n // Break if current checkpoint is the latest one\\r\\n if (APRH.eq(currRef, latestRef)) break;\\r\\n\\r\\n // Else, retrieve the new next checkpoint\\r\\n nextRef = APRH.incrementReference(currRef);\\r\\n nextCheckpoint = _aprHistory.getDataFromReference(nextRef);\\r\\n\\r\\n // Calculate rewards between the current pair of checkpoints\\r\\n rewards += _calculatePeriodRewards(\\r\\n currCheckpoint.timestamp,\\r\\n nextCheckpoint.timestamp,\\r\\n currCheckpoint.aprUD7x3,\\r\\n investedAmount + (autocompound ? rewards : 0)\\r\\n );\\r\\n }\\r\\n\\r\\n // 4) Calculate rewards from the latest checkpoint to now\\r\\n // See \\\"InvestUpgradeable > Rewards calculation > 4)\\\" section of the whitepaper\\r\\n rewards += _calculatePeriodRewards(\\r\\n currCheckpoint.timestamp,\\r\\n uint40(block.timestamp),\\r\\n currCheckpoint.aprUD7x3,\\r\\n investedAmount + (autocompound ? rewards : 0)\\r\\n );\\r\\n } else {\\r\\n // 2.bis) Calculate rewards from investment period start to now\\r\\n // See \\\"InvestUpgradeable > Rewards calculation > 2.bis)\\\" section of the whitepaper\\r\\n rewards += _calculatePeriodRewards(\\r\\n details.period.timestamp,\\r\\n uint40(block.timestamp),\\r\\n currCheckpoint.aprUD7x3,\\r\\n investedAmount + (autocompound ? rewards : 0)\\r\\n );\\r\\n }\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Recursively resets the investment period of the specified account and of\\r\\n * all accounts that directly or indirectly redirect rewards to this account.\\r\\n * @param account The account to deeply reset the investment period of.\\r\\n */\\r\\n function _deepResetInvestmentPeriodOf(address account) internal {\\r\\n // Reset account investment period timestamp and APR checkpoint to latest ones\\r\\n accountsDetails[account].period.timestamp = uint40(block.timestamp);\\r\\n accountsDetails[account].period.ref = _aprHistory.getLatestReference();\\r\\n\\r\\n // Also reset the ones of all accounts that recursively redirect rewards to this account\\r\\n for (uint256 i = 0; i < rewardsRedirectsToFrom[account].length; i++) {\\r\\n _deepResetInvestmentPeriodOf(rewardsRedirectsToFrom[account][i]);\\r\\n }\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Hook to be invoked before the invested amount of an account changes. It\\r\\n * ensures that rewards are distributed and that account's investment period is reset.\\r\\n * @param account The account whose invested amount is going to change.\\r\\n * @param autocompound Whether to autocompound the rewards between APR checkpoints.\\r\\n */\\r\\n function _beforeInvestmentChange(address account, bool autocompound) internal {\\r\\n // This hook is called inside LToken._beforeTokenTransfer() and as new tokens are\\r\\n // minted in LToken._distributeRewards(), this guards against infinite loop.\\r\\n if (_isClaiming) return;\\r\\n\\r\\n // LToken._beforeTokenTransfer() calls this hook for both involved addresses.\\r\\n // As first call will treat both addresses, the second call would be redundant.\\r\\n // Therefore, we skip accounts already processed in this block to save up some gas.\\r\\n if (accountsDetails[account].period.timestamp == uint40(block.timestamp)) return;\\r\\n\\r\\n // If account redirects its rewards\\r\\n address redirectRewardsTo = rewardsRedirectsFromTo[account];\\r\\n if (redirectRewardsTo != address(0)) {\\r\\n // Call hook on redirection target (this will indirectly reset the investment\\r\\n // of this source account) and return\\r\\n _beforeInvestmentChange(redirectRewardsTo, autocompound);\\r\\n return;\\r\\n }\\r\\n\\r\\n // Else, compute account's undistributed/unclaimed rewards\\r\\n uint256 rewards = _rewardsOf(account, autocompound);\\r\\n\\r\\n // If there are some rewards\\r\\n if (rewards > 0) {\\r\\n // Try to distribute rewards to account\\r\\n _isClaiming = true;\\r\\n bool distributed = _distributeRewards(account, rewards);\\r\\n _isClaiming = false;\\r\\n\\r\\n // If rewards have not been distributed, accumulate them in account's virtual balance\\r\\n if (!distributed) accountsDetails[account].virtualBalance = rewards;\\r\\n }\\r\\n\\r\\n // Finally, deeply reset investment period of the account\\r\\n _deepResetInvestmentPeriodOf(account);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @dev This empty reserved space is put in place to allow future versions to add\\r\\n * new variables without shifting down storage in the inheritance chain.\\r\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\r\\n */\\r\\n uint256[50] private __gap;\\r\\n}\\r\\n\",\"keccak256\":\"0x81408ebf7515885ccbb0eb8043f852b890ecc2a11a2dbcd28df4e8661e7ccfee\",\"license\":\"MIT\"},\"contracts/src/abstracts/RecoverableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.18;\\r\\n\\r\\n// Conracts\\r\\nimport {Initializable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\r\\nimport {GlobalOwnableUpgradeable} from \\\"./GlobalOwnableUpgradeable.sol\\\";\\r\\n\\r\\n// Libraries\\r\\nimport {SafeERC20Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\\\";\\r\\n\\r\\n// Interfaces\\r\\nimport {IERC20Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\\\";\\r\\n\\r\\n/**\\r\\n * @title RecoverableUpgradeable\\r\\n * @author Lila Rest (https://lila.rest)\\r\\n * @custom:security-contact security@ledgity.com\\r\\n *\\r\\n * @notice Derived contracts are provided with helpers functions that allow recovering\\r\\n * assets accidentally sent to them.\\r\\n *\\r\\n * @dev Note: This abstract contract currently supports only ERC20 tokens. Derived\\r\\n * contracts currently do not implement necessary functions to receive Ether or\\r\\n * ERC721/ERC1155 tokens.\\r\\n *\\r\\n * @dev For further details, see \\\"RecoverableUpgradeable\\\" section of whitepaper.\\r\\n * @custom:security-contact security@ledgity.com\\r\\n */\\r\\nabstract contract RecoverableUpgradeable is Initializable, GlobalOwnableUpgradeable {\\r\\n using SafeERC20Upgradeable for IERC20Upgradeable;\\r\\n\\r\\n /**\\r\\n * @notice Initializer functions of the contract. They replace the constructor()\\r\\n * function in the context of upgradeable contracts.\\r\\n * @dev See: https://docs.openzeppelin.com/contracts/4.x/upgradeable\\r\\n * @param globalOwner_ The address of the GlobalOwner contract.\\r\\n */\\r\\n function __Recoverable_init(address globalOwner_) internal onlyInitializing {\\r\\n __GlobalOwnable_init(globalOwner_);\\r\\n __Recoverable_init_unchained();\\r\\n }\\r\\n\\r\\n function __Recoverable_init_unchained() internal onlyInitializing {}\\r\\n\\r\\n /**\\r\\n * @notice Recovers a specified amount of a given token address. Will fail if the\\r\\n * contract doesn't hold enough tokens.\\r\\n * @param tokenAddress The address of the token to recover.\\r\\n * @param amount The amount of token to recover.\\r\\n */\\r\\n function recoverERC20(address tokenAddress, uint256 amount) public virtual onlyOwner {\\r\\n // Ensure the specified amount is not zero\\r\\n require(amount > 0, \\\"L10\\\");\\r\\n\\r\\n // Create a reference to token's contract\\r\\n IERC20Upgradeable tokenContract = IERC20Upgradeable(tokenAddress);\\r\\n\\r\\n // Ensure there is enough token to recover\\r\\n require(tokenContract.balanceOf(address(this)) >= amount, \\\"L11\\\");\\r\\n\\r\\n // Transfer the recovered token amount to the sender\\r\\n tokenContract.safeTransfer(_msgSender(), amount);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @dev This empty reserved space is put in place to allow future versions to add\\r\\n * new variables without shifting down storage in the inheritance chain.\\r\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\r\\n */\\r\\n uint256[50] private __gap;\\r\\n}\\r\\n\",\"keccak256\":\"0xd16711b7e8352cb8d7cfbae7a50f4065c9b6173c0240d06d925b406268a1ca9c\",\"license\":\"MIT\"},\"contracts/src/abstracts/base/BaseUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.18;\\r\\n\\r\\nimport {Initializable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\r\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\r\\nimport {GlobalPausableUpgradeable} from \\\"../GlobalPausableUpgradeable.sol\\\";\\r\\nimport {GlobalOwnableUpgradeable} from \\\"../GlobalOwnableUpgradeable.sol\\\";\\r\\nimport {GlobalRestrictableUpgradeable} from \\\"../GlobalRestrictableUpgradeable.sol\\\";\\r\\nimport {RecoverableUpgradeable} from \\\"../RecoverableUpgradeable.sol\\\";\\r\\n\\r\\n/**\\r\\n * @title BaseUpgradeable\\r\\n * @author Lila Rest (https://lila.rest)\\r\\n * @custom:security-contact security@ledgity.com\\r\\n *\\r\\n * @notice This abstract contract acts as a base for numerous contracts contract in this\\r\\n * codebase, minimizing code repetition and enhancing readability and maintainability.\\r\\n *\\r\\n * @dev For further details, see \\\"Base\\\" section of whitepaper.\\r\\n * @custom:security-contact security@ledgity.com\\r\\n */\\r\\nabstract contract BaseUpgradeable is\\r\\n Initializable,\\r\\n UUPSUpgradeable,\\r\\n GlobalOwnableUpgradeable,\\r\\n GlobalPausableUpgradeable,\\r\\n GlobalRestrictableUpgradeable,\\r\\n RecoverableUpgradeable\\r\\n{\\r\\n /**\\r\\n * @notice Prevents implementation contract from being initialized as recommended by\\r\\n * OpenZeppelin.\\r\\n * @dev See: https://docs.openzeppelin.com/contracts/4.x/api/proxy#Initializable-_disableInitializers--\\r\\n * @custom:oz-upgrades-unsafe-allow constructor\\r\\n */\\r\\n constructor() {\\r\\n _disableInitializers();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Initializer functions of the contract. They replace the constructor()\\r\\n * function in the context of upgradeable contracts.\\r\\n * @dev See: https://docs.openzeppelin.com/contracts/4.x/upgradeable\\r\\n * @param globalOwner_ The address of the GlobalOwner contract.\\r\\n * @param globalPause_ The address of the GlobalPause contract.\\r\\n * @param globalBlacklist_ The address of the GlobalBlacklist contract.\\r\\n */\\r\\n function __Base_init(\\r\\n address globalOwner_,\\r\\n address globalPause_,\\r\\n address globalBlacklist_\\r\\n ) internal onlyInitializing {\\r\\n __UUPSUpgradeable_init();\\r\\n __GlobalOwnable_init(globalOwner_);\\r\\n __Pausable_init();\\r\\n __GlobalPausable_init_unchained(globalPause_);\\r\\n __GlobalRestrictable_init_unchained(globalBlacklist_);\\r\\n __Recoverable_init_unchained();\\r\\n }\\r\\n\\r\\n function __Base_init_unchained() internal onlyInitializing {}\\r\\n\\r\\n /**\\r\\n * @notice Override of UUPSUpgradeable._authorizeUpgrade() function restricted to\\r\\n * global owner. It is called by the proxy contract during an upgrade.\\r\\n * @param newImplementation The address of the new implementation contract.\\r\\n */\\r\\n function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n /**\\r\\n * @dev This empty reserved space is put in place to allow future versions to add\\r\\n * new variables without shifting down storage in the inheritance chain.\\r\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\r\\n */\\r\\n uint256[50] private __gap;\\r\\n}\\r\\n\",\"keccak256\":\"0x7cdc7bcbe55135f25bcd2fdf3e0c52bca1aeace1f9104c6c9edd6185ee75fc60\",\"license\":\"MIT\"},\"contracts/src/abstracts/base/ERC20BaseUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.18;\\r\\n\\r\\nimport {ERC20Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\\\";\\r\\nimport {ERC20PausableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PausableUpgradeable.sol\\\";\\r\\nimport {PausableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\\\";\\r\\nimport \\\"./BaseUpgradeable.sol\\\";\\r\\nimport {GlobalPausableUpgradeable} from \\\"../GlobalPausableUpgradeable.sol\\\";\\r\\n\\r\\n/**\\r\\n * @title ERC20BaseUpgradeable\\r\\n * @author Lila Rest (https://lila.rest)\\r\\n * @custom:security-contact security@ledgity.com\\r\\n *\\r\\n * @notice This abstract contracts is an extension of BaseUpgradeable intended to be used\\r\\n * as a base for ERC20 tokens contracts.\\r\\n *\\r\\n * @dev For further details, see \\\"ERC20BaseUpgradeable\\\" section of whitepaper.\\r\\n * @custom:security-contact security@ledgity.com\\r\\n */\\r\\nabstract contract ERC20BaseUpgradeable is\\r\\n ERC20Upgradeable,\\r\\n BaseUpgradeable,\\r\\n ERC20PausableUpgradeable\\r\\n{\\r\\n /**\\r\\n * @notice Initializer functions of the contract. They replace the constructor()\\r\\n * function in the context of upgradeable contracts.\\r\\n * @dev See: https://docs.openzeppelin.com/contracts/4.x/upgradeable\\r\\n * @param globalOwner_ The address of the GlobalOwner contract.\\r\\n * @param globalPause_ The address of the GlobalPause contract.\\r\\n * @param globalBlacklist_ The address of the GlobalBlacklist contract.\\r\\n * @param name_ The display name of the token.\\r\\n * @param symbol_ The symbol of the token.\\r\\n */\\r\\n function __ERC20Base_init(\\r\\n address globalOwner_,\\r\\n address globalPause_,\\r\\n address globalBlacklist_,\\r\\n string memory name_,\\r\\n string memory symbol_\\r\\n ) internal onlyInitializing {\\r\\n __Base_init(globalOwner_, globalPause_, globalBlacklist_);\\r\\n __ERC20_init(name_, symbol_);\\r\\n __ERC20Pausable_init_unchained();\\r\\n }\\r\\n\\r\\n function __ERC20Base_init_unchained() internal onlyInitializing {}\\r\\n\\r\\n /**\\r\\n * @notice Required override of paused() which is implemented by both\\r\\n * GlobalPausableUpgradeable and PausableUpgradeable parent contracts.\\r\\n * The GlobalPausableUpgradeable version is preferred because it checks the pause\\r\\n * state from the GlobalPause contract.\\r\\n * @inheritdoc GlobalPausableUpgradeable\\r\\n */\\r\\n function paused()\\r\\n public\\r\\n view\\r\\n virtual\\r\\n override(GlobalPausableUpgradeable, PausableUpgradeable)\\r\\n returns (bool)\\r\\n {\\r\\n return GlobalPausableUpgradeable.paused();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @dev Required override of _beforeTokenTransfer() which is implemented by both\\r\\n * ERC20PausableUpgradeable and ERC20Upgradeable parent contracts.\\r\\n * The ERC20PausableUpgradeable version is preferred because it also checks that\\r\\n * the contract is not paused before allowing the transfer.\\r\\n * @inheritdoc ERC20PausableUpgradeable\\r\\n */\\r\\n function _beforeTokenTransfer(\\r\\n address from,\\r\\n address to,\\r\\n uint256 amount\\r\\n )\\r\\n internal\\r\\n virtual\\r\\n override(ERC20PausableUpgradeable, ERC20Upgradeable)\\r\\n whenNotPaused\\r\\n notBlacklisted(from)\\r\\n notBlacklisted(to)\\r\\n {\\r\\n ERC20PausableUpgradeable._beforeTokenTransfer(from, to, amount);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @dev This empty reserved space is put in place to allow future versions to add\\r\\n * new variables without shifting down storage in the inheritance chain.\\r\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\r\\n */\\r\\n uint256[50] private __gap;\\r\\n}\\r\\n\",\"keccak256\":\"0x204f187757cb5c3d79b8edc12f4ea52756f2975ebf173d338d6b331102f6f156\",\"license\":\"MIT\"},\"contracts/src/interfaces/ITransfersListener.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.18;\\r\\n\\r\\ninterface ITransfersListener {\\r\\n function onLTokenTransfer(address from, address to, uint256 amount) external;\\r\\n}\\r\\n\",\"keccak256\":\"0x9764edcd2106059a31e1fabdeb249913bf282eee57f8a83b6cd2c81b0dd17749\",\"license\":\"MIT\"},\"contracts/src/libs/APRHistory.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.18;\\r\\n\\r\\n/**\\r\\n * @title APRHistory\\r\\n * @author Lila Rest (https://lila.rest)\\r\\n * @custom:security-contact security@ledgity.com\\r\\n *\\r\\n * @notice This library offers utilities to efficiently maintain on chain, the history of\\r\\n * an APR (Annual Percentage Rate). Each entry in this history is called a \\\"checkpoint\\\".\\r\\n *\\r\\n * @dev Intuition:\\r\\n * Each checkpoint in an APR history consists in two data:\\r\\n * - the creation timestamp\\r\\n * - the APR at that time\\r\\n *\\r\\n * Given that reads and writes to storage slots are among the most costly operations in\\r\\n * Solidity, this library provides a way to store those data on chain in a way that\\r\\n * minimizes the number of used storage slots.\\r\\n *\\r\\n * Instead of storing each checkpoint in a separate storage slot, this library\\r\\n * facilitates the packing of up to 4 checkpoints in a single storage slot.\\r\\n *\\r\\n * @dev Definitions:\\r\\n * - Checkpoint: A record of an APR change\\r\\n * - Pack: A collection of 4 checkpoints stored in a single storage slot\\r\\n * - History: A dynamic array of packs\\r\\n * - Reference: A storage pointer to a checkpoint in the APR history\\r\\n * - CheckpointData: An in-memory representation of a checkpoint data\\r\\n *\\r\\n * @dev Limitation: This library can accommodate APRs only up to 65.536%. This is however\\r\\n * sufficient for APR in LToken contract, which is expected to remain below 10%.\\r\\n *\\r\\n * @dev For further details, see \\\"APRHistory\\\" section of whitepaper.\\r\\n * @custom:security-contact security@ledgity.com\\r\\n */\\r\\nlibrary APRHistory {\\r\\n /**\\r\\n * @notice Represents data of a checkpoint extracted from the on-chain history.\\r\\n * For on-chain representation see \\\"Pack\\\" struct.\\r\\n * @param aprUD7x3 APR in UD7x3 format (e.g., 12345 = 12.345%).\\r\\n * @param timestamp Timestamp of the checkpoint's creation.\\r\\n */\\r\\n struct CheckpointData {\\r\\n uint16 aprUD7x3; // Allows up to 65.536%\\r\\n uint40 timestamp; // Supports dates up to 20/02/36812\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Represents how APR checkpoints are stored on chain. Each pack can contain\\r\\n * the data 4 checkpoints. Packs are then stored in a dynamic array (the history).\\r\\n * @param aprsUD7x3 Array of checkpoints' APRs.\\r\\n * @param timestamps Array of checkpoints' timestamps.\\r\\n * @param cursor Index of the next checkpoint to be written.\\r\\n */\\r\\n struct Pack {\\r\\n uint16[4] aprsUD7x3;\\r\\n uint40[4] timestamps;\\r\\n uint32 cursor;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Represents a storage pointer to a specific checkpoint in the history.\\r\\n * @param packIndex Index of the pack the checkpoint belongs to.\\r\\n * @param cursorIndex Index of the checkpoint in this pack (between 0 and 3).\\r\\n */\\r\\n struct Reference {\\r\\n uint256 packIndex;\\r\\n uint32 cursorIndex;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Compares two checkpoints references.\\r\\n * @param ref1 The first reference to compare.\\r\\n * @param ref2 The second reference to compare.\\r\\n * @return Whether the two references points to the same checkpoint.\\r\\n */\\r\\n function eq(Reference memory ref1, Reference memory ref2) external pure returns (bool) {\\r\\n return ref1.packIndex == ref2.packIndex && ref1.cursorIndex == ref2.cursorIndex;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Returns the reference of the checkpoint that should come right after the\\r\\n * referenced checkpoint in the APR history.\\r\\n * @param ref The reference to be incremented.\\r\\n * @return The incremented reference.\\r\\n */\\r\\n function incrementReference(Reference memory ref) public pure returns (Reference memory) {\\r\\n // Ensure cursor index of the given ref is within valid range [0, 3]\\r\\n require(ref.cursorIndex <= 3, \\\"L1\\\");\\r\\n\\r\\n // If the given ref is the last slot in its pack, return ref of next pack's first slot\\r\\n if (ref.cursorIndex == 3) return Reference(ref.packIndex + 1, 0);\\r\\n //\\r\\n // Else, return ref of next slot in current pack\\r\\n else return Reference(ref.packIndex, ref.cursorIndex + 1);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Extracts checkpoint data from a given reference and in APR history.\\r\\n * @param self The APR history to extract the checkpoint from.\\r\\n * @param ref The reference of the checkpoint data to extract.\\r\\n * @return The extracted checkpoint's data.\\r\\n */\\r\\n function getDataFromReference(\\r\\n Pack[] storage self,\\r\\n Reference memory ref\\r\\n ) public view returns (CheckpointData memory) {\\r\\n // Ensure cursor index of the given ref is within valid range [0, 3]\\r\\n require(ref.cursorIndex <= 3, \\\"L2\\\");\\r\\n\\r\\n // Ensure pack index of the given ref exists in history\\r\\n require(ref.packIndex < self.length, \\\"L3\\\");\\r\\n\\r\\n // Retrieve pack data from history\\r\\n Pack memory pack = self[ref.packIndex];\\r\\n\\r\\n // Ensure cursor index of the given ref has been written\\r\\n require(ref.cursorIndex < pack.cursor, \\\"L4\\\");\\r\\n\\r\\n // Build and return the checkpoint data\\r\\n return\\r\\n CheckpointData({\\r\\n aprUD7x3: pack.aprsUD7x3[ref.cursorIndex],\\r\\n timestamp: pack.timestamps[ref.cursorIndex]\\r\\n });\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Retrieves the reference to the most recently added checkpoint in the APR history.\\r\\n * @param self The history to extract the reference from.\\r\\n * @return The reference of the latest checkpoint.\\r\\n */\\r\\n function getLatestReference(Pack[] storage self) public view returns (Reference memory) {\\r\\n // Ensure the given history is not empty\\r\\n require(self.length != 0, \\\"L5\\\");\\r\\n\\r\\n // Retrieve latest pack's index and cursor\\r\\n uint256 packIndex = self.length - 1;\\r\\n uint32 packCursor = self[packIndex].cursor;\\r\\n\\r\\n // If this is the first pack ever, ensure it is not empty\\r\\n if (packIndex == 0) require(packCursor != 0, \\\"L6\\\");\\r\\n\\r\\n // If the pack is empty, return ref of previous pack's latest slot\\r\\n if (packCursor == 0) return Reference(packIndex - 1, 3);\\r\\n //\\r\\n // Else, return ref of previous slot in current pack\\r\\n else return Reference(packIndex, packCursor - 1);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Appends a new empty pack to the end of the given APR history array.\\r\\n * @param self The APR history to append an empty to.\\r\\n */\\r\\n function newBlankPack(Pack[] storage self) internal {\\r\\n // If history is not empty, ensure the latest pack is full\\r\\n require(self.length == 0 || getLatestReference(self).cursorIndex == 3, \\\"L7\\\");\\r\\n\\r\\n // Push a new blank pack to the history array\\r\\n self.push(\\r\\n Pack({\\r\\n aprsUD7x3: [uint16(0), uint16(0), uint16(0), uint16(0)],\\r\\n timestamps: [uint40(0), uint40(0), uint40(0), uint40(0)],\\r\\n cursor: 0\\r\\n })\\r\\n );\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Write a new APR checkpoint at the end of the given history array.\\r\\n * @param self The array of packs to write the new checkpoint to.\\r\\n * @param aprUD7x3 The new APR in UD7x3 format.\\r\\n */\\r\\n function setAPR(Pack[] storage self, uint16 aprUD7x3) external {\\r\\n // Determine the reference where the new checkpoint should be written\\r\\n Reference memory newRef = self.length == 0\\r\\n ? Reference(0, 0)\\r\\n : incrementReference(getLatestReference(self));\\r\\n\\r\\n // If pack to be written doesn't exist yet, push a new blank pack in history\\r\\n if (newRef.packIndex >= self.length) newBlankPack(self);\\r\\n\\r\\n // Retrieve the pack where the new checkpoint will be stored\\r\\n Pack memory pack = self[newRef.packIndex];\\r\\n\\r\\n // Add new checkpoint's data to the pack\\r\\n pack.aprsUD7x3[newRef.cursorIndex] = aprUD7x3;\\r\\n pack.timestamps[newRef.cursorIndex] = uint40(block.timestamp);\\r\\n\\r\\n // Increment the pack's cursor\\r\\n pack.cursor++;\\r\\n\\r\\n // Write the updated pack in storage\\r\\n self[newRef.packIndex] = pack;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Retrieves the APR of the latest checkpoint written in the APR history.\\r\\n * @param self The history array to read APR from.\\r\\n * @return The latest checkpoint's APR.\\r\\n */\\r\\n function getAPR(Pack[] storage self) public view returns (uint16) {\\r\\n // Retrieve the latest checkpoint data\\r\\n Reference memory ref = getLatestReference(self);\\r\\n CheckpointData memory data = getDataFromReference(self, ref);\\r\\n\\r\\n // Return the latest checkpoint's APR\\r\\n return data.aprUD7x3;\\r\\n }\\r\\n}\\r\\n\",\"keccak256\":\"0xd583afa417f5f23acec6efcb52a723b2ceaef767a698cd0c5c8996c92c02ee21\",\"license\":\"MIT\"},\"contracts/src/libs/SUD.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.18;\\r\\n\\r\\nimport {IERC20MetadataUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol\\\";\\r\\n\\r\\n/**\\r\\n * @title SUD\\r\\n * @author Lila Rest (https://lila.rest)\\r\\n * @custom:security-contact security@ledgity.com\\r\\n *\\r\\n * @notice SUD serves as an intermediary number format for calculations within this\\r\\n * codebase. It ensures consistency and reduces precision losses. This library\\r\\n * facilitates conversions between various number formats and the SUD format.\\r\\n *\\r\\n * @dev Intuition:\\r\\n * This codebase employs UD (unsigned decimal fixed-point numbers) format to represent\\r\\n * both percentage rates and tokens amounts.\\r\\n *\\r\\n * Rates are expressed in UD7x3 format, whereas the format for tokens amounts depends on\\r\\n * the decimals() value of the involved tokens.\\r\\n *\\r\\n * Three challenges arise from this:\\r\\n * 1) To compute values together, it's essential that they are in the same format\\r\\n * 2) Calculations involving consecutive divisions on UD numbers lead to accumulated\\r\\n * precision loss (because division shrinks). A common approach is to scale up and\\r\\n * down values by a few decimals before and after performing calculations.\\r\\n * 3) Given that rates use the UD7x3 format, if we decided to scale them to and from\\r\\n * the number of decimals of the involved token, 1 to 3 of the rates' decimals would\\r\\n * be shrinked in case token's decimals number is in [0, 2].\\r\\n *\\r\\n * To address these challenges, this library provides the SUD format, which acts as a\\r\\n * consistent and scaled intermediate format to perform calculations on.\\r\\n *\\r\\n * SUD is an acronym for either \\\"Scaled UD\\\" or \\\"Safe UD\\\".\\r\\n *\\r\\n * @dev Definitions:\\r\\n * - Integer: A number without fractional part, e.g., block.timestamp\\r\\n * - UD: A decimal unsigned fixed-point number. The \\\"UD\\\" notation is inspired from\\r\\n * libraries like [prb-math](https://github.com/PaulRBerg/prb-math/)\\r\\n * - Amount: An UD with an unknown (at writing time) repartition of digits between\\r\\n * integral and fractional parts. Represents a token amount.\\r\\n * - Rate: An UD with 7 integral digits and 3 fractional ones (a.k.a UD7x3).\\r\\n * Represents a percentage rate.\\r\\n * - SUD: An UD with 3 more decimals than the involved rate or amount with the highest\\r\\n * decimals number. As rates are represented by UD7x3, a SUD number has at least 6\\r\\n * decimals (3+3) and so ranges from UD71x6 to UD0x77 formats.\\r\\n * Used as an intermediate format to perform calculations.\\r\\n *\\r\\n * @dev This library provides utilities to perform the following conversions:\\r\\n * - Amount <--> SUD\\r\\n * - Rate (UD7x3) <--> SUD\\r\\n * - Integer <--> SUD\\r\\n *\\r\\n * @dev Why scaling by 3 decimals?\\r\\n * - It provides an adequate degree of precision for this codebase,\\r\\n * - It enables the conversion of a UD7x3 rate to SUD format by merely scaling it up by\\r\\n * the involved token's decimal number.\\r\\n *\\r\\n * @dev Optimization note: The functions of this library are not set to external because\\r\\n * incorporating them directly into contracts is more gas-efficient. Given their minimal\\r\\n * size and frequent usage in the InvestUpgradeable, LDYStaking, and LToken contracts,\\r\\n * any bytecode savings from making them external are negated by the additional bytecode\\r\\n * required for external calls to this library.\\r\\n * The can be observed by comparing the output of `pnpm cc:size` when those functions's\\r\\n * visibility is set to external or internal.\\r\\n *\\r\\n * @dev Precision note: While this library mitigates precision loss during calculations\\r\\n * on UD numbers, it's important to note that tokens with lower decimal counts and supply\\r\\n * inherently suffer more from precision loss. Conversely, tokens with higher decimal\\r\\n * counts and supply will experience less precision loss.\\r\\n *\\r\\n * @dev For further details, see \\\"SUD\\\" section of whitepaper.\\r\\n * @custom:security-contact security@ledgity.com\\r\\n */\\r\\nlibrary SUD {\\r\\n /**\\r\\n * @notice Retrieves decimals number of the given ERC20 contract address.\\r\\n * @param tokenAddress The address to retrieve decimals number from.\\r\\n * @return decimals The decimals number of the given ERC20 contract address.\\r\\n */\\r\\n function decimalsOf(address tokenAddress) internal view returns (uint256 decimals) {\\r\\n return IERC20MetadataUpgradeable(tokenAddress).decimals();\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Convert a given token amount into SUD format.\\r\\n * @param nAmount The token amount to convert.\\r\\n * @param decimals The decimals number of the involved ERC20 token.\\r\\n * @return nSUD The amount in SUD format\\r\\n */\\r\\n function fromAmount(uint256 nAmount, uint256 decimals) internal pure returns (uint256 nSUD) {\\r\\n // If token decimals < 3, return a UD71x6 number\\r\\n if (decimals < 3) return nAmount * 10 ** (6 - decimals);\\r\\n\\r\\n // Else return a number with decimals+3 fractional digits\\r\\n return nAmount * 10 ** 3;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Convert a given SUD number into token amount format.\\r\\n * @param nSUD The SUD number to convert.\\r\\n * @param decimals The decimals number of the involved ERC20 token.\\r\\n * @return nAmount The number in amount format\\r\\n */\\r\\n function toAmount(uint256 nSUD, uint256 decimals) internal pure returns (uint256 nAmount) {\\r\\n // If token decimals < 3, convert from a UD71x6 number\\r\\n if (decimals < 3) return nSUD / 10 ** (6 - decimals);\\r\\n\\r\\n // Else, convert from a number with decimals+3 fractional digits\\r\\n return nSUD / 10 ** 3;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Converts a given UD7x3 rate into SUD format.\\r\\n * @param nUD7x3 The UD7x3 rate to convert.\\r\\n * @param decimals The decimals number of the involved ERC20 token.\\r\\n * @return nSUD The rate in SUD format.\\r\\n */\\r\\n function fromRate(uint256 nUD7x3, uint256 decimals) internal pure returns (uint256 nSUD) {\\r\\n // If token decimals < 3, return a UD71x6 number\\r\\n if (decimals < 3) return nUD7x3 * 10 ** 3;\\r\\n\\r\\n // Else, return a number with decimals+3 fractional digits\\r\\n return nUD7x3 * 10 ** decimals;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Converts a given SUD number into a UD7x3 rate.\\r\\n * @param nSUD The SUD number to convert.\\r\\n * @param decimals The decimals number of the involved ERC20 token.\\r\\n * @return nUD7x3 The number in UD7x3 rate format.\\r\\n */\\r\\n function toRate(uint256 nSUD, uint256 decimals) internal pure returns (uint256 nUD7x3) {\\r\\n // If token decimals < 3, convert from a UD71x6 number\\r\\n if (decimals < 3) return nSUD / 10 ** 3;\\r\\n\\r\\n // Else, convert from a number with decimals+3 fractional digits\\r\\n return nSUD / 10 ** decimals;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Converts a given integer into SUD format.\\r\\n * @param n The integer to convert.\\r\\n * @param decimals The decimals number of the involved ERC20 token.\\r\\n * @return nSUD The integer in SUD format.\\r\\n */\\r\\n function fromInt(uint256 n, uint256 decimals) internal pure returns (uint256 nSUD) {\\r\\n // If token decimals < 3, return a UD71x6 number\\r\\n if (decimals < 3) return n * 10 ** 6;\\r\\n\\r\\n // Else, return a number with decimals+3 fractional digits\\r\\n return n * 10 ** (decimals + 3);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @notice Converts a given SUD number as an integer (all decimals shrinked).\\r\\n * @param nSUD The SUD number to convert.\\r\\n * @param decimals The decimals number of the involved ERC20 token.\\r\\n * @return n The SUD number as an integer.\\r\\n */\\r\\n function toInt(uint256 nSUD, uint256 decimals) internal pure returns (uint256 n) {\\r\\n // If token decimals < 3, convert from a UD71x6 number\\r\\n if (decimals < 3) return nSUD / 10 ** 6;\\r\\n\\r\\n // Else, convert from a number with decimals+3 fractional digits\\r\\n return nSUD / 10 ** (decimals + 3);\\r\\n }\\r\\n}\\r\\n\",\"keccak256\":\"0xf73e9380b9df21d58eba638fca4ac1b71ade2f6ee2f37f740531a9e503cac778\",\"license\":\"MIT\"}},\"version\":1}", - "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615f536200011f60003960008181611462015281816114a2015281816118fd0152818161193d01526119d00152615f536000f3fe6080604052600436106103d95760003560e01c80638980f11f116101fd578063c822adda11610118578063dd62ed3e116100ab578063ef356a791161007a578063ef356a7914610b96578063f12d54d814610bab578063f2fde38b14610bca578063f762e73414610bea578063f94ce2c214610c0957600080fd5b8063dd62ed3e14610b11578063ee1335d114610b31578063ee153c4f14610b51578063ef2591af14610b7157600080fd5b8063d038875c116100e7578063d038875c14610a8d578063d039981b14610ac7578063d294f09314610ae7578063db84faac14610afc57600080fd5b8063c822adda14610a05578063c89d5b8b14610a25578063cafb220214610a4d578063cdc1842414610a6c57600080fd5b8063a457c2d711610190578063b2de2a431161015f578063b2de2a431461097a578063b60d42881461098f578063b6b55f25146109b0578063bacd609e146109d057600080fd5b8063a457c2d7146108fa578063a64c91cc1461091a578063a8f763201461093a578063a9059cbb1461095a57600080fd5b806395d89b41116101cc57806395d89b411461089257806399a03c70146108a75780639c271975146108c75780639ee679e8146108e757600080fd5b80638980f11f146108065780638d8e6bd7146108265780638da5cb5b1461085d57806392e5ced71461087257600080fd5b80634134bee9116102f85780636d3a4ac81161028b578063734d82871161025a578063734d8287146107795780637594d0b51461079057806375a5652b146107a75780637c2edb16146107c75780638370e1f7146107e657600080fd5b80636d3a4ac8146107055780636f307dc31461072557806370a0823114610744578063715018a61461076457600080fd5b806353ac4b66116102c757806353ac4b661461067257806353d3a42f146106895780635c975abb146106d05780635f0e8e37146106e557600080fd5b80634134bee91461060a57806345b05d091461062a5780634f1ef2861461064a57806352d1902d1461065d57600080fd5b806323b872dd116103705780633659cfe61161033f5780633659cfe614610571578063391d85ec1461059157806339509351146105ca5780633e7ae353146105ea57600080fd5b806323b872dd146104f55780632a1b8b1c146105155780632f4f21e21461052a578063313ce5671461054a57600080fd5b80631459457a116103ac5780631459457a1461047b57806318160ddd1461049b5780631c19be6d146104be578063205c2878146104d557600080fd5b806306fdde03146103de578063095ea7b3146104095780630d174c24146104395780630e21750f1461045b575b600080fd5b3480156103ea57600080fd5b506103f3610c29565b6040516104009190615460565b60405180910390f35b34801561041557600080fd5b506104296104243660046154a8565b610cbb565b6040519015158152602001610400565b34801561044557600080fd5b506104596104543660046154d4565b610cd5565b005b34801561046757600080fd5b506104596104763660046154d4565b610d41565b34801561048757600080fd5b506104596104963660046154f1565b610da8565b3480156104a757600080fd5b506104b061100c565b604051908152602001610400565b3480156104ca57600080fd5b506104b06102fe5481565b3480156104e157600080fd5b506104296104f03660046154a8565b611037565b34801561050157600080fd5b50610429610510366004615562565b611068565b34801561052157600080fd5b5061045961108e565b34801561053657600080fd5b506104296105453660046154a8565b61141d565b34801561055657600080fd5b5061055f61144e565b60405160ff9091168152602001610400565b34801561057d57600080fd5b5061045961058c3660046154d4565b611458565b34801561059d57600080fd5b506102f9546105b2906001600160a01b031681565b6040516001600160a01b039091168152602001610400565b3480156105d657600080fd5b506104296105e53660046154a8565b611537565b3480156105f657600080fd5b506105b26106053660046154a8565b611559565b34801561061657600080fd5b506104596106253660046155a3565b611592565b34801561063657600080fd5b506104596106453660046155a3565b611786565b610459610658366004615654565b6118f3565b34801561066957600080fd5b506104b06119c3565b34801561067e57600080fd5b506104b06102fd5481565b34801561069557600080fd5b506106a96106a43660046155a3565b611a76565b604080516001600160a01b0390931683526001600160601b03909116602083015201610400565b3480156106dc57600080fd5b50610429611ab2565b3480156106f157600080fd5b506104596107003660046154d4565b611abc565b34801561071157600080fd5b506104596107203660046156f7565b611c13565b34801561073157600080fd5b506102c6546001600160a01b03166105b2565b34801561075057600080fd5b506104b061075f3660046154d4565b611cc4565b34801561077057600080fd5b50610459611ce2565b34801561078557600080fd5b506104b06102fc5481565b34801561079c57600080fd5b506104b06103005481565b3480156107b357600080fd5b506104596107c23660046155a3565b611d18565b3480156107d357600080fd5b50610193546001600160a01b03166105b2565b3480156107f257600080fd5b506104596108013660046155a3565b6120d4565b34801561081257600080fd5b506104596108213660046154a8565b612258565b34801561083257600080fd5b506105b26108413660046154d4565b610291602052600090815260409020546001600160a01b031681565b34801561086957600080fd5b506105b26122bd565b34801561087e57600080fd5b5061045961088d366004615714565b61232c565b34801561089e57600080fd5b506103f3612563565b3480156108b357600080fd5b506104b06108c23660046154d4565b612572565b3480156108d357600080fd5b506104596108e23660046154d4565b612590565b6104596108f53660046155a3565b6125eb565b34801561090657600080fd5b506104296109153660046154a8565b612952565b34801561092657600080fd5b506104596109353660046154d4565b6129d8565b34801561094657600080fd5b50610459610955366004615714565b612a03565b34801561096657600080fd5b506104296109753660046154a8565b612d39565b34801561098657600080fd5b50610459612d47565b34801561099b57600080fd5b506102fb546105b2906001600160a01b031681565b3480156109bc57600080fd5b506104596109cb3660046155a3565b612e30565b3480156109dc57600080fd5b506109f06109eb3660046154a8565b612f87565b60408051928352602083019190915201610400565b348015610a1157600080fd5b506106a9610a203660046155a3565b6130a3565b348015610a3157600080fd5b50610a3a6130b4565b60405161ffff9091168152602001610400565b348015610a5957600080fd5b5061028e546001600160a01b03166105b2565b348015610a7857600080fd5b506102fa546105b2906001600160a01b031681565b348015610a9957600080fd5b506102fb54610ab290600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610400565b348015610ad357600080fd5b506104b0610ae23660046154d4565b61312c565b348015610af357600080fd5b50610459613139565b348015610b0857600080fd5b506104b06131fa565b348015610b1d57600080fd5b506104b0610b2c366004615714565b613281565b348015610b3d57600080fd5b50610459610b4c36600461575f565b6132ac565b348015610b5d57600080fd5b506105b2610b6c3660046155a3565b6132db565b348015610b7d57600080fd5b506102fb54610ab290600160c01b900463ffffffff1681565b348015610ba257600080fd5b506104b0613306565b348015610bb757600080fd5b50610160546001600160a01b03166105b2565b348015610bd657600080fd5b50610459610be53660046154d4565b613311565b348015610bf657600080fd5b5061012d546001600160a01b03166105b2565b348015610c1557600080fd5b50610459610c2436600461575f565b613346565b6060609a8054610c389061577c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c649061577c565b8015610cb15780601f10610c8657610100808354040283529160200191610cb1565b820191906000526020600020905b815481529060010190602001808311610c9457829003601f168201915b5050505050905090565b600033610cc98185856133b3565b60019150505b92915050565b610cdd6134d7565b6001600160a01b038116610d1e5760405162461bcd60e51b81526020600482015260036024820152624c363360e81b60448201526064015b60405180910390fd5b6102fa80546001600160a01b0319166001600160a01b0392909216919091179055565b610d496134d7565b6001600160a01b038116610d855760405162461bcd60e51b8152602060048201526003602482015262130d8d60ea1b6044820152606401610d15565b6102fb80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1615808015610dc85750600054600160ff909116105b80610de25750303b158015610de2575060005460ff166001145b610e455760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d15565b6000805460ff191660011790558015610e68576000805461ff0019166101001790555b6000826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ea8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ed091908101906157b0565b9050610f1d87878784604051602001610ee99190615827565b60405160208183030381529060405285604051602001610f099190615857565b604051602081830303815290604052613538565b610f268361357c565b610f2f306135ac565b6102f980546001600160a01b0319166001600160a01b0386161790556102fb805467ffffffffffffffff60a01b19166509c40000004b60a21b179055610f736122bd565b6102fa80546001600160a01b0319166001600160a01b0392909216919091179055610f9c6122bd565b6102fb80546001600160a01b0319166001600160a01b0392909216919091179055508015611004576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60006102fc546102fd5461101e613306565b6110289190615896565b6110329190615896565b905090565b60405162461bcd60e51b81526020600482015260036024820152624c343560e81b6044820152600090606401610d15565b600033611076858285613656565b6110818585856136d0565b60019150505b9392505050565b6102fa546001600160a01b0316336001600160a01b0316146110d85760405162461bcd60e51b81526020600482015260036024820152624c333960e81b6044820152606401610d15565b6110e061388c565b610300546102ff5460009182915b808210156113c05761afc85a106113c05760006102ff8381548110611115576111156158a9565b6000918252602091829020604080518082019091529101546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092529150156113ad578051611164906138d4565b156111e6576102ff838154811061117d5761117d6158a9565b60009182526020808320909101829055610301805460018101825592528251908301516001600160601b0316600160a01b026001600160a01b0391909116177fe78f8e39db67a8c6e0d54c288efc6f296f5d558bc028138a8476c9b97f6fcaa4909101556113ad565b60026111f06131fa565b6111fa91906158bf565b81602001516001600160601b031611156112c65760208101516102ff5460405160019233928792600080516020615efe833981519152926112419290918291600391615903565b60405180910390a46102ff838154811061125d5761125d6158a9565b600091825260208083209091018290556102ff805460018101825592528251908301516001600160601b0316600160a01b026001600160a01b0391909116177f5a4a1f748f8cfa795b59cdc37192794ee567e6029e925719381be08d7ccaf4ec909101556113ad565b6000806112e4836000015184602001516001600160601b0316612f87565b91509150856102fe546112f79190615937565b821115611306575050506113c0565b6113108188615896565b965061131c8287615896565b9550600183600001516001600160a01b031686600080516020615efe8339815191528660200151866002600019604051611359949392919061594a565b60405180910390a46102ff8581548110611375576113756158a9565b600091825260208220015582516113aa908361139a6102c6546001600160a01b031690565b6001600160a01b03169190613944565b50505b826113b78161596e565b935050506110ee565b836102fc60008282546113d39190615896565b92505081905550826102fe60008282546113ed9190615937565b909155506113fd90508484615896565b6102fd600082825461140f9190615937565b909155505050610300555050565b60405162461bcd60e51b8152602060048201526003602482015262261a1b60e91b6044820152600090606401610d15565b60006110326139a7565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114a05760405162461bcd60e51b8152600401610d1590615987565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114e9600080516020615eb7833981519152546001600160a01b031690565b6001600160a01b03161461150f5760405162461bcd60e51b8152600401610d15906159d3565b61151881613a1d565b6040805160008082526020820190925261153491839190613a25565b50565b600033610cc981858561154a8383613281565b6115549190615896565b6133b3565b610292602052816000526040600020818154811061157657600080fd5b6000918252602090912001546001600160a01b03169150829050565b61159a61388c565b336115a4816138d4565b156115c15760405162461bcd60e51b8152600401610d1590615a1f565b6115ca33611cc4565b8211156115ff5760405162461bcd60e51b815260206004820152600360248201526209868760eb1b6044820152606401610d15565b60006102fe54836102fd546116149190615896565b6102f95491101591506000906002906001600160a01b031663c8f74bb8336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169a9190615a3b565b101580156116ab57506102fe548411155b905081806116b65750805b6116e85760405162461bcd60e51b81526020600482015260036024820152624c343960e81b6044820152606401610d15565b6000806116f53387612f87565b91509150806102fc600082825461170c9190615896565b92505081905550816102fe60008282546117269190615937565b9091555060019050336001600160a01b0316600019600080516020615efe833981519152898660026000196040516117619493929190615a54565b60405180910390a46117733382613b90565b61177d3383613cd7565b50505050505050565b61178e61388c565b33611798816138d4565b156117b55760405162461bcd60e51b8152600401610d1590615a1f565b60006102ff83815481106117cb576117cb6158a9565b6000918252602091829020604080518082019091529101546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092529150336001600160a01b0316146118475760405162461bcd60e51b81526020600482015260036024820152624c353760e81b6044820152606401610d15565b80602001516001600160601b03166102fd60008282546118679190615937565b90915550506102ff805484908110611881576118816158a9565b6000918252602082200155600181600001516001600160a01b031684600080516020615efe8339815191528460200151856020015160016000196040516118cb9493929190615903565b60405180910390a46118ee816000015182602001516001600160601b0316613d04565b505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361193b5760405162461bcd60e51b8152600401610d1590615987565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611984600080516020615eb7833981519152546001600160a01b031690565b6001600160a01b0316146119aa5760405162461bcd60e51b8152600401610d15906159d3565b6119b382613a1d565b6119bf82826001613a25565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a635760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610d15565b50600080516020615eb783398151915290565b6103018181548110611a8757600080fd5b6000918252602090912001546001600160a01b0381169150600160a01b90046001600160601b031682565b6000611032613dd9565b611ac46134d7565b610302546000199060005b81811015611b2957836001600160a01b03166103028281548110611af557611af56158a9565b6000918252602090912001546001600160a01b031603611b1757809250611b29565b80611b218161596e565b915050611acf565b506000198213611b615760405162461bcd60e51b8152602060048201526003602482015262261a1960e91b6044820152606401610d15565b610302611b6f600183615937565b81548110611b7f57611b7f6158a9565b60009182526020909120015461030280546001600160a01b039092169184908110611bac57611bac6158a9565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550610302805480611bec57611bec615a6f565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b611c1b6134d7565b60405163433e3bad60e11b8152610290600482015261ffff8216602482015273d99343a49C1b5b9d6690AEa5dB3Ae0da3A9cC4c49063867c775a9060440160006040518083038186803b158015611c7157600080fd5b505af4158015611c85573d6000803e3d6000fd5b505060405161ffff841681527f3d6d63f501ae621a01c729938fb4428a25138835257943d6b56c49b402ba36329250602001905060405180910390a150565b6000611ccf8261312c565b611cd883612572565b610ccf9190615896565b611cea6134d7565b60405162461bcd60e51b81526020600482015260036024820152624c363560e81b6044820152606401610d15565b6102fb546001600160a01b0316336001600160a01b031614611d625760405162461bcd60e51b815260206004820152600360248201526204c34360ec1b6044820152606401610d15565b611d6a61388c565b60006102ff8281548110611d8057611d806158a9565b6000918252602091829020604080518082019091529101546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092529150611df15760405162461bcd60e51b8152602060048201526003602482015262261b1b60e91b6044820152606401610d15565b8051611dfc906138d4565b15611e2f5760405162461bcd60e51b815260206004820152600360248201526204c35360ec1b6044820152606401610d15565b6002611e396131fa565b611e4391906158bf565b81602001516001600160601b031611611e845760405162461bcd60e51b81526020600482015260036024820152624c353160e81b6044820152606401610d15565b600080611ea2836000015184602001516001600160601b0316612f87565b915091506000611ebb6102c6546001600160a01b031690565b6102fb546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015611f05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f299190615a3b565b9050806102fe54611f3a9190615896565b831115611f6f5760405162461bcd60e51b8152602060048201526003602482015262261a9960e91b6044820152606401610d15565b816102fc6000828254611f829190615896565b9250508190555083602001516001600160601b03166102fd6000828254611fa99190615937565b9091555050610300548503611fcf576103008054906000611fc98361596e565b91905055505b600184600001516001600160a01b031686600080516020615efe833981519152876020015187600260001960405161200a949392919061594a565b60405180910390a46102ff8581548110612026576120266158a9565b600091825260208220015580831161206857612063338551856120526102c6546001600160a01b031690565b6001600160a01b0316929190613e48565b6120c5565b60006120748285615937565b9050806102fe60008282546120899190615937565b909155506120a99050338651846120526102c6546001600160a01b031690565b84516120c3908261139a6102c6546001600160a01b031690565b505b6120cd613e80565b5050505050565b6102fb546001600160a01b0316336001600160a01b03161461211e5760405162461bcd60e51b815260206004820152600360248201526204c34360ec1b6044820152606401610d15565b61212661388c565b6102c6546001600160a01b03166102fb546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa15801561217d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a19190615a3b565b8111156121d65760405162461bcd60e51b81526020600482015260036024820152620986a760eb1b6044820152606401610d15565b6000816102fe546121e79190615896565b90506121f16131fa565b8111156122265760405162461bcd60e51b81526020600482015260036024820152624c353960e81b6044820152606401610d15565b816102fe60008282546122399190615896565b909155506119bf90503330846120526102c6546001600160a01b031690565b6122606134d7565b6102c6546001600160a01b03166001600160a01b0316826001600160a01b0316036122b35760405162461bcd60e51b81526020600482015260036024820152624c343360e81b6044820152606401610d15565b6119bf8282613ee9565b61012d5460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015612308573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110329190615a85565b61233461388c565b8161233e816138d4565b1561235b5760405162461bcd60e51b8152600401610d1590615a1f565b81612365816138d4565b156123825760405162461bcd60e51b8152600401610d1590615a1f565b6001600160a01b038481166000908152610291602052604090205416156123d15760405162461bcd60e51b8152602060048201526003602482015262261b1960e91b6044820152606401610d15565b6001600160a01b03841661240d5760405162461bcd60e51b815260206004820152600360248201526226189960e91b6044820152606401610d15565b6001600160a01b0383166124495760405162461bcd60e51b81526020600482015260036024820152624c313360e81b6044820152606401610d15565b826001600160a01b0316846001600160a01b0316036124905760405162461bcd60e51b8152602060048201526003602482015262130c4d60ea1b6044820152606401610d15565b6124986122bd565b6001600160a01b0316336001600160a01b031614806124bf5750336001600160a01b038516145b6124f15760405162461bcd60e51b81526020600482015260036024820152624c313560e81b6044820152606401610d15565b6124fc846001613fdb565b612507836001613fdb565b50506001600160a01b039182166000818152610291602090815260408083208054969095166001600160a01b03199687168117909555938252610292815292812080546001810182559082529290209091018054909216179055565b6060609b8054610c389061577c565b6001600160a01b038116600090815260976020526040812054610ccf565b6125986134d7565b61030280546001810182556000919091527f552430c2010355dda19e8bae437f75cfb136cb8d667c4c0867367db21eee69b60180546001600160a01b0319166001600160a01b0392909216919091179055565b6125f361388c565b336125fd816138d4565b1561261a5760405162461bcd60e51b8152600401610d1590615a1f565b61262333611cc4565b8211156126585760405162461bcd60e51b81526020600482015260036024820152624c353360e81b6044820152606401610d15565b6001600160601b038211156126955760405162461bcd60e51b8152602060048201526003602482015262130d4d60ea1b6044820152606401610d15565b34660aa87bee538000146126d15760405162461bcd60e51b81526020600482015260036024820152624c353560e81b6044820152606401610d15565b600060405180604001604052806126e53390565b6001600160a01b0390811682526001600160601b0386166020909201919091526102f9549192506000916002911663c8f74bb8336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561275d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127819190615a3b565b101580156127925750600061030054115b156128005761030080549060006127a883615aa2565b9190505550610300549050816102ff82815481106127c8576127c86158a9565b6000918252602091829020835193909201516001600160601b0316600160a01b026001600160a01b039093169290921791015561286a565b6102ff8054600181810183556000839052845160208601516001600160601b0316600160a01b026001600160a01b03909116177f5a4a1f748f8cfa795b59cdc37192794ee567e6029e925719381be08d7ccaf4ec9092019190915590546128679190615937565b90505b836102fd600082825461287d9190615896565b9091555060019050336001600160a01b031682600080516020615efe833981519152878860006000196040516128b69493929190615a54565b60405180910390a46128c83385613b90565b6102fa546040516000916001600160a01b03169034908381818185875af1925050503d8060008114612916576040519150601f19603f3d011682016040523d82523d6000602084013e61291b565b606091505b50509050806120cd5760405162461bcd60e51b8152602060048201526003602482015262261a9b60e91b6044820152606401610d15565b600033816129608286613281565b9050838110156129c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d15565b6129cd82868684036133b3565b506001949350505050565b6129e06134d7565b6102f980546001600160a01b0319166001600160a01b0392909216919091179055565b612a0b61388c565b81612a15816138d4565b15612a325760405162461bcd60e51b8152600401610d1590615a1f565b81612a3c816138d4565b15612a595760405162461bcd60e51b8152600401610d1590615a1f565b6001600160a01b038416612a955760405162461bcd60e51b815260206004820152600360248201526226189b60e91b6044820152606401610d15565b6001600160a01b038316612ad15760405162461bcd60e51b81526020600482015260036024820152624c313760e81b6044820152606401610d15565b612ad96122bd565b6001600160a01b0316336001600160a01b03161480612b005750336001600160a01b038516145b612b325760405162461bcd60e51b815260206004820152600360248201526209862760eb1b6044820152606401610d15565b6001600160a01b0384811660009081526102916020526040902054811690841614612b855760405162461bcd60e51b81526020600482015260036024820152624c313960e81b6044820152606401610d15565b612b90846001613fdb565b612b9b836001613fdb565b60001960005b6001600160a01b03851660009081526102926020526040902054811015612c26576001600160a01b0385811660009081526102926020526040902080549188169183908110612bf257612bf26158a9565b6000918252602090912001546001600160a01b031603612c1457809150612c26565b80612c1e8161596e565b915050612ba1565b506000811215612c3857612c38615ab9565b6001600160a01b0380861660009081526102916020908152604080832080546001600160a01b031916905592871682526102929052208054612c7c90600190615937565b81548110612c8c57612c8c6158a9565b60009182526020808320909101546001600160a01b0387811684526102929092526040909220805491909216919083908110612cca57612cca6158a9565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918616815261029290915260409020805480612d1057612d10615a6f565b600082815260209020810160001990810180546001600160a01b03191690550190555050505050565b600033610cc98185856136d0565b612d4f6134d7565b60006102fe54612d686102c6546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015612dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd29190615a3b565b612ddc9190615937565b905060008111612e145760405162461bcd60e51b8152602060048201526003602482015262130d0d60ea1b6044820152606401610d15565b611534612e2a6102c6546001600160a01b031690565b82613ee9565b612e3861388c565b33612e42816138d4565b15612e5f5760405162461bcd60e51b8152600401610d1590615a1f565b81612e736102c6546001600160a01b031690565b6001600160a01b03166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eea9190615a3b565b1015612f1e5760405162461bcd60e51b81526020600482015260036024820152624c343760e81b6044820152606401610d15565b816102fe6000828254612f319190615896565b9091555060009050336001600160a01b0316600019600080516020615efe83398151915285866002600019604051612f6c9493929190615a54565b60405180910390a4612f7e33836140b0565b506119bf613e80565b6102f95460405163191ee97760e31b81526001600160a01b03848116600483015260009283926002929091169063c8f74bb890602401602060405180830381865afa158015612fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ffe9190615a3b565b1061300e5750819050600061309c565b600061302b61302661028e546001600160a01b031690565b614131565b90506000613039858361419e565b6102fb5490915060009061305a90600160a01b900463ffffffff16846141dc565b90506000613069606485614208565b6130738385615acf565b61307d91906158bf565b90506130898185614236565b94506130958588615937565b9550505050505b9250929050565b6102ff8181548110611a8757600080fd5b60405163106d64cf60e31b8152610290600482015260009073d99343a49C1b5b9d6690AEa5dB3Ae0da3A9cC4c49063836b267890602401602060405180830381865af4158015613108573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110329190615ae6565b6000610ccf82600161426d565b6131416134d7565b60006102fc541161317a5760405162461bcd60e51b815260206004820152600360248201526204c36360ec1b6044820152606401610d15565b6102fc546102fe5410156131b65760405162461bcd60e51b81526020600482015260036024820152624c363160e81b6044820152606401610d15565b6102fc546102fe60008282546131cc9190615937565b90915550506102fc805460009091556115346131e66122bd565b8261139a6102c6546001600160a01b031690565b60008061321361302661028e546001600160a01b031690565b9050600061322861322261100c565b8361419e565b6102fb5490915060009061324990600160c01b900463ffffffff16846141dc565b90506000613258606485614208565b6132628385615acf565b61326c91906158bf565b90506132788185614236565b94505050505090565b6001600160a01b03918216600090815260986020908152604080832093909416825291909152205490565b6132b46134d7565b6102fb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b61030281815481106132ec57600080fd5b6000918252602090912001546001600160a01b0316905081565b600061103260995490565b6133196134d7565b60405162461bcd60e51b8152602060048201526002602482015261098760f31b6044820152606401610d15565b61334e6134d7565b61271063ffffffff8216111561338c5760405162461bcd60e51b81526020600482015260036024820152624c343160e81b6044820152606401610d15565b6102fb805463ffffffff909216600160c01b0263ffffffff60c01b19909216919091179055565b6001600160a01b0383166134155760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d15565b6001600160a01b0382166134765760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d15565b6001600160a01b0383811660008181526098602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b336134e06122bd565b6001600160a01b0316146135365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d15565b565b600054610100900460ff1661355f5760405162461bcd60e51b8152600401610d1590615b03565b61356a8585856147d3565b613574828261482d565b6120cd61485e565b600054610100900460ff166135a35760405162461bcd60e51b8152600401610d1590615b03565b61153481614885565b600054610100900460ff166135d35760405162461bcd60e51b8152600401610d1590615b03565b61028e80546001600160a01b0319166001600160a01b03831617905560405163433e3bad60e11b815261029060048201526000602482015273d99343a49C1b5b9d6690AEa5dB3Ae0da3A9cC4c49063867c775a9060440160006040518083038186803b15801561364257600080fd5b505af41580156120cd573d6000803e3d6000fd5b60006136628484613281565b905060001981146136ca57818110156136bd5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d15565b6136ca84848484036133b3565b50505050565b6001600160a01b0383166137345760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d15565b6001600160a01b0382166137965760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d15565b6137a1838383614927565b6001600160a01b038316600090815260976020526040902054818110156138195760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d15565b6001600160a01b0380851660008181526097602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906138799086815260200190565b60405180910390a36136ca848484614966565b613894611ab2565b156135365760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610d15565b6101935460405163fe575a8760e01b81526001600160a01b038381166004830152600092169063fe575a8790602401602060405180830381865afa158015613920573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccf9190615b4e565b6040516001600160a01b0383166024820152604481018290526118ee90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614a6f565b6102c6546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa925050508015613a0e575060408051601f3d908101601f19168201909252613a0b91810190615b70565b60015b613a185750601290565b919050565b6115346134d7565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615613a58576118ee83614b44565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613ab2575060408051601f3d908101601f19168201909252613aaf91810190615a3b565b60015b613b155760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610d15565b600080516020615eb78339815191528114613b845760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610d15565b506118ee838383614be0565b6001600160a01b038216613bf05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610d15565b613bfc82600083614927565b6001600160a01b03821660009081526097602052604090205481811015613c705760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610d15565b6001600160a01b03831660008181526097602090815260408083208686039055609980548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36118ee83600084614966565b6000613ce33383613b90565b6102c654613cfb906001600160a01b03168484613944565b50600192915050565b6001600160a01b038216613d5a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610d15565b613d6660008383614927565b8060996000828254613d789190615896565b90915550506001600160a01b0382166000818152609760209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36119bf60008383614966565b6101605460408051635c975abb60e01b815290516000926001600160a01b031691635c975abb9160048083019260209291908290030181865afa158015613e24573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110329190615b4e565b6040516001600160a01b03808516602483015283166044820152606481018290526136ca9085906323b872dd60e01b90608401613970565b6000613e8a6131fa565b9050806102fe5411613e995750565b6000816102fe54613eaa9190615937565b9050806102fe6000828254613ebf9190615937565b90915550506102fb546119bf906001600160a01b03168261139a6102c6546001600160a01b031690565b613ef16134d7565b60008111613f275760405162461bcd60e51b815260206004820152600360248201526204c31360ec1b6044820152606401610d15565b6040516370a0823160e01b8152306004820152829082906001600160a01b038316906370a0823190602401602060405180830381865afa158015613f6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f939190615a3b565b1015613fc75760405162461bcd60e51b81526020600482015260036024820152624c313160e81b6044820152606401610d15565b6118ee6001600160a01b0382163384613944565b6102935460ff1615613feb575050565b6001600160a01b038216600090815261028f602052604090205464ffffffffff428116911603614019575050565b6001600160a01b0380831660009081526102916020526040902054168015614045576118ee8183613fdb565b6000614051848461426d565b905080156140a757610293805460ff1916600117905560006140738583614c05565b610293805460ff191690559050806140a5576001600160a01b038516600090815261028f602052604090206003018290555b505b6136ca84614c5c565b60003330810361410e5760405162461bcd60e51b815260206004820152602360248201527f4552433230577261707065723a20777261707065722063616e2774206465706f6044820152621cda5d60ea1b6064820152608401610d15565b6102c654614127906001600160a01b0316823086613e48565b610cc98484613d04565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015614171573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141959190615b70565b60ff1692915050565b600060038210156141d0576141b4826006615937565b6141bf90600a615c77565b6141c99084615acf565b9050610ccf565b611087836103e8615acf565b600060038210156141f3576141c9836103e8615acf565b6141fe82600a615c77565b6110879084615acf565b60006003821015614220576141c983620f4240615acf565b61422b826003615896565b6141fe90600a615c77565b600060038210156142615761424c826006615937565b61425790600a615c77565b6141c990846158bf565b6110876103e8846158bf565b6001600160a01b038216600090815261028f602090815260408083208151608081018352815464ffffffffff16818401908152835180850190945260018301548452600283015463ffffffff168486015260608201939093529182526003015491810191909152816142de85614dbe565b82515190915064ffffffffff1615806142f5575080155b1561430557600092505050610ccf565b815160200151604051630b27cfb160e31b815260009073d99343a49C1b5b9d6690AEa5dB3Ae0da3A9cC4c49063593e7d889061434990610290908690600401615c83565b6040805180830381865af4158015614365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143899190615ca7565b60405163038255fd60e11b8152610290600482015290915060009073d99343a49C1b5b9d6690AEa5dB3Ae0da3A9cC4c490630704abfa906024016040805180830381865af41580156143df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144039190615cf2565b90508460200151955073d99343a49C1b5b9d6690AEa5dB3Ae0da3A9cC4c4634ead0c5384836040518363ffffffff1660e01b8152600401614445929190615d1e565b602060405180830381865af4158015614462573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144869190615b4e565b61479757604051633e1e5c5360e11b815260009073d99343a49C1b5b9d6690AEa5dB3Ae0da3A9cC4c490637c3cb8a6906144c4908790600401615d52565b6040805180830381865af41580156144e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145049190615cf2565b604051630b27cfb160e31b815290915060009073d99343a49C1b5b9d6690AEa5dB3Ae0da3A9cC4c49063593e7d889061454590610290908690600401615c83565b6040805180830381865af4158015614561573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145859190615ca7565b875151602082015186519293506145b3928c6145a25760006145a4565b8b5b6145ae908b615896565b614e67565b6145bd9089615896565b97505b81945080935073d99343a49C1b5b9d6690AEa5dB3Ae0da3A9cC4c4634ead0c5386856040518363ffffffff1660e01b81526004016145ff929190615d1e565b602060405180830381865af415801561461c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146409190615b4e565b61476a57604051633e1e5c5360e11b815273d99343a49C1b5b9d6690AEa5dB3Ae0da3A9cC4c490637c3cb8a69061467b908890600401615d52565b6040805180830381865af4158015614697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146bb9190615cf2565b604051630b27cfb160e31b815290925073d99343a49C1b5b9d6690AEa5dB3Ae0da3A9cC4c49063593e7d88906146f990610290908690600401615c83565b6040805180830381865af4158015614715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147399190615ca7565b90506147598460200151826020015186600001518c6145a25760006145a4565b6147639089615896565b97506145c0565b61478484602001514286600001518c6145a25760006145a4565b61478e9089615896565b975050506147c8565b84515182516147bb919042908a6147af5760006147b1565b895b6145ae9089615896565b6147c59087615896565b95505b505050505092915050565b600054610100900460ff166147fa5760405162461bcd60e51b8152600401610d1590615b03565b61480261485e565b61480b83614f53565b614813614f83565b61481c82614fb2565b61482581614ffc565b6118ee61485e565b600054610100900460ff166148545760405162461bcd60e51b8152600401610d1590615b03565b6119bf8282615046565b600054610100900460ff166135365760405162461bcd60e51b8152600401610d1590615b03565b600054610100900460ff166148ac5760405162461bcd60e51b8152600401610d1590615b03565b306001600160a01b038216036149045760405162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a2063616e6e6f742073656c66207772617000006044820152606401610d15565b6102c680546001600160a01b0319166001600160a01b0392909216919091179055565b614932838383615086565b6001600160a01b0383161561494c5761494c836001613fdb565b6001600160a01b038216156118ee576118ee826001613fdb565b6001600160a01b038316158061498357506001600160a01b038216155b156149c3577f980f7e6fb44009001d533a10bc3bd558b4efe22dcb4888bca4767aa93c71ce1f6149b161100c565b60405190815260200160405180910390a15b60005b610302548110156136ca5761030281815481106149e5576149e56158a9565b600091825260209091200154604051636e0d037d60e11b81526001600160a01b0386811660048301528581166024830152604482018590529091169063dc1a06fa90606401600060405180830381600087803b158015614a4457600080fd5b505af1158015614a58573d6000803e3d6000fd5b505050508080614a679061596e565b9150506149c6565b6000614ac4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166150e79092919063ffffffff16565b9050805160001480614ae5575080806020019051810190614ae59190615b4e565b6118ee5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d15565b6001600160a01b0381163b614bb15760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610d15565b600080516020615eb783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b614be9836150f6565b600082511180614bf65750805b156118ee576136ca8383615136565b6000826001600160a01b03167f05a71d417f891ba4b7a94b48d1b1f4b59b070921cba593b3c72a05a5587a78a9614c3b85612572565b60408051918252602082018690520160405180910390a2613cfb8383613d04565b6001600160a01b038116600090815261028f602052604090819020805464ffffffffff19164264ffffffffff161790555163038255fd60e11b8152610290600482015273d99343a49C1b5b9d6690AEa5dB3Ae0da3A9cC4c490630704abfa906024016040805180830381865af4158015614cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cfe9190615cf2565b6001600160a01b038216600090815261028f602090815260408220835160018201559201516002909201805463ffffffff191663ffffffff909316929092179091555b6001600160a01b038216600090815261029260205260409020548110156119bf576001600160a01b0382166000908152610292602052604090208054614dac919083908110614d9257614d926158a9565b6000918252602090912001546001600160a01b0316614c5c565b80614db68161596e565b915050614d41565b6000614dc98261515b565b614dd39082615896565b905060005b6001600160a01b03831660009081526102926020526040902054811015614e61576001600160a01b0383166000908152610292602052604090208054614e43919083908110614e2957614e296158a9565b6000918252602090912001546001600160a01b0316614dbe565b614e4d9083615896565b915080614e598161596e565b915050614dd8565b50919050565b600080614e8061302661028e546001600160a01b031690565b90506000614e9e614e918888615d6f565b64ffffffffff1683614208565b90506000614eb06301e1338084614208565b614ebb600185614208565b614ec59084615acf565b614ecf91906158bf565b90506000614ee18761ffff16856141dc565b90506000614ef0600186614208565b614efa8385615acf565b614f0491906158bf565b90506000614f12888761419e565b90506000614f21606488614208565b614f2b8484615acf565b614f3591906158bf565b9050614f418188614236565b9750505050505050505b949350505050565b600054610100900460ff16614f7a5760405162461bcd60e51b8152600401610d1590615b03565b61153481615166565b600054610100900460ff16614faa5760405162461bcd60e51b8152600401610d1590615b03565b6135366151b0565b600054610100900460ff16614fd95760405162461bcd60e51b8152600401610d1590615b03565b61016080546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166150235760405162461bcd60e51b8152600401610d1590615b03565b61019380546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661506d5760405162461bcd60e51b8152600401610d1590615b03565b609a6150798382615dda565b50609b6118ee8282615dda565b61508e61388c565b82615098816138d4565b156150b55760405162461bcd60e51b8152600401610d1590615a1f565b826150bf816138d4565b156150dc5760405162461bcd60e51b8152600401610d1590615a1f565b6120cd8585856151e3565b6060614f4b848460008561524b565b6150ff81614b44565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606110878383604051806060016040528060278152602001615ed760279139615326565b6000610ccf82612572565b600054610100900460ff1661518d5760405162461bcd60e51b8152600401610d1590615b03565b61012d80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166151d75760405162461bcd60e51b8152600401610d1590615b03565b60c9805460ff19169055565b6151eb611ab2565b156118ee5760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610d15565b6060824710156152ac5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610d15565b600080866001600160a01b031685876040516152c89190615e9a565b60006040518083038185875af1925050503d8060008114615305576040519150601f19603f3d011682016040523d82523d6000602084013e61530a565b606091505b509150915061531b8783838761539e565b979650505050505050565b6060600080856001600160a01b0316856040516153439190615e9a565b600060405180830381855af49150503d806000811461537e576040519150601f19603f3d011682016040523d82523d6000602084013e615383565b606091505b50915091506153948683838761539e565b9695505050505050565b6060831561540d578251600003615406576001600160a01b0385163b6154065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d15565b5081614f4b565b614f4b83838151156154225781518083602001fd5b8060405162461bcd60e51b8152600401610d159190615460565b60005b8381101561545757818101518382015260200161543f565b50506000910152565b602081526000825180602084015261547f81604085016020870161543c565b601f01601f19169190910160400192915050565b6001600160a01b038116811461153457600080fd5b600080604083850312156154bb57600080fd5b82356154c681615493565b946020939093013593505050565b6000602082840312156154e657600080fd5b813561108781615493565b600080600080600060a0868803121561550957600080fd5b853561551481615493565b9450602086013561552481615493565b9350604086013561553481615493565b9250606086013561554481615493565b9150608086013561555481615493565b809150509295509295909350565b60008060006060848603121561557757600080fd5b833561558281615493565b9250602084013561559281615493565b929592945050506040919091013590565b6000602082840312156155b557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156155f5576155f56155bc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715615624576156246155bc565b604052919050565b600067ffffffffffffffff821115615646576156466155bc565b50601f01601f191660200190565b6000806040838503121561566757600080fd5b823561567281615493565b9150602083013567ffffffffffffffff81111561568e57600080fd5b8301601f8101851361569f57600080fd5b80356156b26156ad8261562c565b6155fb565b8181528660208385010111156156c757600080fd5b816020840160208301376000602083830101528093505050509250929050565b61ffff8116811461153457600080fd5b60006020828403121561570957600080fd5b8135611087816156e7565b6000806040838503121561572757600080fd5b823561573281615493565b9150602083013561574281615493565b809150509250929050565b63ffffffff8116811461153457600080fd5b60006020828403121561577157600080fd5b81356110878161574d565b600181811c9082168061579057607f821691505b602082108103614e6157634e487b7160e01b600052602260045260246000fd5b6000602082840312156157c257600080fd5b815167ffffffffffffffff8111156157d957600080fd5b8201601f810184136157ea57600080fd5b80516157f86156ad8261562c565b81815285602083850101111561580d57600080fd5b61581e82602083016020860161543c565b95945050505050565b6702632b233b4ba3c960c51b81526000825161584a81600885016020870161543c565b9190910160080192915050565b601360fa1b81526000825161587381600185016020870161543c565b9190910160010192915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ccf57610ccf615880565b634e487b7160e01b600052603260045260246000fd5b6000826158dc57634e487b7160e01b600052601260045260246000fd5b500490565b600481106158ff57634e487b7160e01b600052602160045260246000fd5b9052565b6001600160601b038581168252841660208201526080810161592860408301856158e1565b82606083015295945050505050565b81810381811115610ccf57610ccf615880565b6001600160601b0385168152602081018490526080810161592860408301856158e1565b60006001820161598057615980615880565b5060010190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252600290820152614c3960f01b604082015260600190565b600060208284031215615a4d57600080fd5b5051919050565b848152602081018490526080810161592860408301856158e1565b634e487b7160e01b600052603160045260246000fd5b600060208284031215615a9757600080fd5b815161108781615493565b600081615ab157615ab1615880565b506000190190565b634e487b7160e01b600052600160045260246000fd5b8082028115828204841417610ccf57610ccf615880565b600060208284031215615af857600080fd5b8151611087816156e7565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215615b6057600080fd5b8151801515811461108757600080fd5b600060208284031215615b8257600080fd5b815160ff8116811461108757600080fd5b600181815b80851115615bce578160001904821115615bb457615bb4615880565b80851615615bc157918102915b93841c9390800290615b98565b509250929050565b600082615be557506001610ccf565b81615bf257506000610ccf565b8160018114615c085760028114615c1257615c2e565b6001915050610ccf565b60ff841115615c2357615c23615880565b50506001821b610ccf565b5060208310610133831016604e8410600b8410161715615c51575081810a610ccf565b615c5b8383615b93565b8060001904821115615c6f57615c6f615880565b029392505050565b60006110878383615bd6565b8281526060810161108760208301848051825260209081015163ffffffff16910152565b600060408284031215615cb957600080fd5b615cc16155d2565b8251615ccc816156e7565b8152602083015164ffffffffff81168114615ce657600080fd5b60208201529392505050565b600060408284031215615d0457600080fd5b615d0c6155d2565b825181526020830151615ce68161574d565b8251815260208084015163ffffffff16908201526080810182516040830152602083015163ffffffff166060830152611087565b8151815260208083015163ffffffff169082015260408101610ccf565b64ffffffffff828116828216039080821115615d8d57615d8d615880565b5092915050565b601f8211156118ee57600081815260208120601f850160051c81016020861015615dbb5750805b601f850160051c820191505b8181101561100457828155600101615dc7565b815167ffffffffffffffff811115615df457615df46155bc565b615e0881615e02845461577c565b84615d94565b602080601f831160018114615e3d5760008415615e255750858301515b600019600386901b1c1916600185901b178555611004565b600085815260208120601f198616915b82811015615e6c57888601518255948401946001909101908401615e4d565b5085821015615e8a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251615eac81846020870161543c565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564d58e94604d90293a1c1ad95bfe6a6e6c352c33c5774a4b6b4f4b6f7460da29c5a264697066735822122083de4bac720b6756a4a127b005ba62c6fb215167a3ea3396462d1f395ec1640564736f6c63430008120033", + "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615f536200011f60003960008181611462015281816114a2015281816118fd0152818161193d01526119d00152615f536000f3fe6080604052600436106103d95760003560e01c80638980f11f116101fd578063c822adda11610118578063dd62ed3e116100ab578063ef356a791161007a578063ef356a7914610b96578063f12d54d814610bab578063f2fde38b14610bca578063f762e73414610bea578063f94ce2c214610c0957600080fd5b8063dd62ed3e14610b11578063ee1335d114610b31578063ee153c4f14610b51578063ef2591af14610b7157600080fd5b8063d038875c116100e7578063d038875c14610a8d578063d039981b14610ac7578063d294f09314610ae7578063db84faac14610afc57600080fd5b8063c822adda14610a05578063c89d5b8b14610a25578063cafb220214610a4d578063cdc1842414610a6c57600080fd5b8063a457c2d711610190578063b2de2a431161015f578063b2de2a431461097a578063b60d42881461098f578063b6b55f25146109b0578063bacd609e146109d057600080fd5b8063a457c2d7146108fa578063a64c91cc1461091a578063a8f763201461093a578063a9059cbb1461095a57600080fd5b806395d89b41116101cc57806395d89b411461089257806399a03c70146108a75780639c271975146108c75780639ee679e8146108e757600080fd5b80638980f11f146108065780638d8e6bd7146108265780638da5cb5b1461085d57806392e5ced71461087257600080fd5b80634134bee9116102f85780636d3a4ac81161028b578063734d82871161025a578063734d8287146107795780637594d0b51461079057806375a5652b146107a75780637c2edb16146107c75780638370e1f7146107e657600080fd5b80636d3a4ac8146107055780636f307dc31461072557806370a0823114610744578063715018a61461076457600080fd5b806353ac4b66116102c757806353ac4b661461067257806353d3a42f146106895780635c975abb146106d05780635f0e8e37146106e557600080fd5b80634134bee91461060a57806345b05d091461062a5780634f1ef2861461064a57806352d1902d1461065d57600080fd5b806323b872dd116103705780633659cfe61161033f5780633659cfe614610571578063391d85ec1461059157806339509351146105ca5780633e7ae353146105ea57600080fd5b806323b872dd146104f55780632a1b8b1c146105155780632f4f21e21461052a578063313ce5671461054a57600080fd5b80631459457a116103ac5780631459457a1461047b57806318160ddd1461049b5780631c19be6d146104be578063205c2878146104d557600080fd5b806306fdde03146103de578063095ea7b3146104095780630d174c24146104395780630e21750f1461045b575b600080fd5b3480156103ea57600080fd5b506103f3610c29565b6040516104009190615460565b60405180910390f35b34801561041557600080fd5b506104296104243660046154a8565b610cbb565b6040519015158152602001610400565b34801561044557600080fd5b506104596104543660046154d4565b610cd5565b005b34801561046757600080fd5b506104596104763660046154d4565b610d41565b34801561048757600080fd5b506104596104963660046154f1565b610da8565b3480156104a757600080fd5b506104b061100c565b604051908152602001610400565b3480156104ca57600080fd5b506104b06102fe5481565b3480156104e157600080fd5b506104296104f03660046154a8565b611037565b34801561050157600080fd5b50610429610510366004615562565b611068565b34801561052157600080fd5b5061045961108e565b34801561053657600080fd5b506104296105453660046154a8565b61141d565b34801561055657600080fd5b5061055f61144e565b60405160ff9091168152602001610400565b34801561057d57600080fd5b5061045961058c3660046154d4565b611458565b34801561059d57600080fd5b506102f9546105b2906001600160a01b031681565b6040516001600160a01b039091168152602001610400565b3480156105d657600080fd5b506104296105e53660046154a8565b611537565b3480156105f657600080fd5b506105b26106053660046154a8565b611559565b34801561061657600080fd5b506104596106253660046155a3565b611592565b34801561063657600080fd5b506104596106453660046155a3565b611786565b610459610658366004615654565b6118f3565b34801561066957600080fd5b506104b06119c3565b34801561067e57600080fd5b506104b06102fd5481565b34801561069557600080fd5b506106a96106a43660046155a3565b611a76565b604080516001600160a01b0390931683526001600160601b03909116602083015201610400565b3480156106dc57600080fd5b50610429611ab2565b3480156106f157600080fd5b506104596107003660046154d4565b611abc565b34801561071157600080fd5b506104596107203660046156f7565b611c13565b34801561073157600080fd5b506102c6546001600160a01b03166105b2565b34801561075057600080fd5b506104b061075f3660046154d4565b611cc4565b34801561077057600080fd5b50610459611ce2565b34801561078557600080fd5b506104b06102fc5481565b34801561079c57600080fd5b506104b06103005481565b3480156107b357600080fd5b506104596107c23660046155a3565b611d18565b3480156107d357600080fd5b50610193546001600160a01b03166105b2565b3480156107f257600080fd5b506104596108013660046155a3565b6120d4565b34801561081257600080fd5b506104596108213660046154a8565b612258565b34801561083257600080fd5b506105b26108413660046154d4565b610291602052600090815260409020546001600160a01b031681565b34801561086957600080fd5b506105b26122bd565b34801561087e57600080fd5b5061045961088d366004615714565b61232c565b34801561089e57600080fd5b506103f3612563565b3480156108b357600080fd5b506104b06108c23660046154d4565b612572565b3480156108d357600080fd5b506104596108e23660046154d4565b612590565b6104596108f53660046155a3565b6125eb565b34801561090657600080fd5b506104296109153660046154a8565b612952565b34801561092657600080fd5b506104596109353660046154d4565b6129d8565b34801561094657600080fd5b50610459610955366004615714565b612a03565b34801561096657600080fd5b506104296109753660046154a8565b612d39565b34801561098657600080fd5b50610459612d47565b34801561099b57600080fd5b506102fb546105b2906001600160a01b031681565b3480156109bc57600080fd5b506104596109cb3660046155a3565b612e30565b3480156109dc57600080fd5b506109f06109eb3660046154a8565b612f87565b60408051928352602083019190915201610400565b348015610a1157600080fd5b506106a9610a203660046155a3565b6130a3565b348015610a3157600080fd5b50610a3a6130b4565b60405161ffff9091168152602001610400565b348015610a5957600080fd5b5061028e546001600160a01b03166105b2565b348015610a7857600080fd5b506102fa546105b2906001600160a01b031681565b348015610a9957600080fd5b506102fb54610ab290600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610400565b348015610ad357600080fd5b506104b0610ae23660046154d4565b61312c565b348015610af357600080fd5b50610459613139565b348015610b0857600080fd5b506104b06131fa565b348015610b1d57600080fd5b506104b0610b2c366004615714565b613281565b348015610b3d57600080fd5b50610459610b4c36600461575f565b6132ac565b348015610b5d57600080fd5b506105b2610b6c3660046155a3565b6132db565b348015610b7d57600080fd5b506102fb54610ab290600160c01b900463ffffffff1681565b348015610ba257600080fd5b506104b0613306565b348015610bb757600080fd5b50610160546001600160a01b03166105b2565b348015610bd657600080fd5b50610459610be53660046154d4565b613311565b348015610bf657600080fd5b5061012d546001600160a01b03166105b2565b348015610c1557600080fd5b50610459610c2436600461575f565b613346565b6060609a8054610c389061577c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c649061577c565b8015610cb15780601f10610c8657610100808354040283529160200191610cb1565b820191906000526020600020905b815481529060010190602001808311610c9457829003601f168201915b5050505050905090565b600033610cc98185856133b3565b60019150505b92915050565b610cdd6134d7565b6001600160a01b038116610d1e5760405162461bcd60e51b81526020600482015260036024820152624c363360e81b60448201526064015b60405180910390fd5b6102fa80546001600160a01b0319166001600160a01b0392909216919091179055565b610d496134d7565b6001600160a01b038116610d855760405162461bcd60e51b8152602060048201526003602482015262130d8d60ea1b6044820152606401610d15565b6102fb80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1615808015610dc85750600054600160ff909116105b80610de25750303b158015610de2575060005460ff166001145b610e455760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d15565b6000805460ff191660011790558015610e68576000805461ff0019166101001790555b6000826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ea8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ed091908101906157b0565b9050610f1d87878784604051602001610ee99190615827565b60405160208183030381529060405285604051602001610f099190615857565b604051602081830303815290604052613538565b610f268361357c565b610f2f306135ac565b6102f980546001600160a01b0319166001600160a01b0386161790556102fb805467ffffffffffffffff60a01b19166509c40000004b60a21b179055610f736122bd565b6102fa80546001600160a01b0319166001600160a01b0392909216919091179055610f9c6122bd565b6102fb80546001600160a01b0319166001600160a01b0392909216919091179055508015611004576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60006102fc546102fd5461101e613306565b6110289190615896565b6110329190615896565b905090565b60405162461bcd60e51b81526020600482015260036024820152624c343560e81b6044820152600090606401610d15565b600033611076858285613656565b6110818585856136d0565b60019150505b9392505050565b6102fa546001600160a01b0316336001600160a01b0316146110d85760405162461bcd60e51b81526020600482015260036024820152624c333960e81b6044820152606401610d15565b6110e061388c565b610300546102ff5460009182915b808210156113c05761afc85a106113c05760006102ff8381548110611115576111156158a9565b6000918252602091829020604080518082019091529101546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092529150156113ad578051611164906138d4565b156111e6576102ff838154811061117d5761117d6158a9565b60009182526020808320909101829055610301805460018101825592528251908301516001600160601b0316600160a01b026001600160a01b0391909116177fe78f8e39db67a8c6e0d54c288efc6f296f5d558bc028138a8476c9b97f6fcaa4909101556113ad565b60026111f06131fa565b6111fa91906158bf565b81602001516001600160601b031611156112c65760208101516102ff5460405160019233928792600080516020615efe833981519152926112419290918291600391615903565b60405180910390a46102ff838154811061125d5761125d6158a9565b600091825260208083209091018290556102ff805460018101825592528251908301516001600160601b0316600160a01b026001600160a01b0391909116177f5a4a1f748f8cfa795b59cdc37192794ee567e6029e925719381be08d7ccaf4ec909101556113ad565b6000806112e4836000015184602001516001600160601b0316612f87565b91509150856102fe546112f79190615937565b821115611306575050506113c0565b6113108188615896565b965061131c8287615896565b9550600183600001516001600160a01b031686600080516020615efe8339815191528660200151866002600019604051611359949392919061594a565b60405180910390a46102ff8581548110611375576113756158a9565b600091825260208220015582516113aa908361139a6102c6546001600160a01b031690565b6001600160a01b03169190613944565b50505b826113b78161596e565b935050506110ee565b836102fc60008282546113d39190615896565b92505081905550826102fe60008282546113ed9190615937565b909155506113fd90508484615896565b6102fd600082825461140f9190615937565b909155505050610300555050565b60405162461bcd60e51b8152602060048201526003602482015262261a1b60e91b6044820152600090606401610d15565b60006110326139a7565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114a05760405162461bcd60e51b8152600401610d1590615987565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114e9600080516020615eb7833981519152546001600160a01b031690565b6001600160a01b03161461150f5760405162461bcd60e51b8152600401610d15906159d3565b61151881613a1d565b6040805160008082526020820190925261153491839190613a25565b50565b600033610cc981858561154a8383613281565b6115549190615896565b6133b3565b610292602052816000526040600020818154811061157657600080fd5b6000918252602090912001546001600160a01b03169150829050565b61159a61388c565b336115a4816138d4565b156115c15760405162461bcd60e51b8152600401610d1590615a1f565b6115ca33611cc4565b8211156115ff5760405162461bcd60e51b815260206004820152600360248201526209868760eb1b6044820152606401610d15565b60006102fe54836102fd546116149190615896565b6102f95491101591506000906002906001600160a01b031663c8f74bb8336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169a9190615a3b565b101580156116ab57506102fe548411155b905081806116b65750805b6116e85760405162461bcd60e51b81526020600482015260036024820152624c343960e81b6044820152606401610d15565b6000806116f53387612f87565b91509150806102fc600082825461170c9190615896565b92505081905550816102fe60008282546117269190615937565b9091555060019050336001600160a01b0316600019600080516020615efe833981519152898660026000196040516117619493929190615a54565b60405180910390a46117733382613b90565b61177d3383613cd7565b50505050505050565b61178e61388c565b33611798816138d4565b156117b55760405162461bcd60e51b8152600401610d1590615a1f565b60006102ff83815481106117cb576117cb6158a9565b6000918252602091829020604080518082019091529101546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092529150336001600160a01b0316146118475760405162461bcd60e51b81526020600482015260036024820152624c353760e81b6044820152606401610d15565b80602001516001600160601b03166102fd60008282546118679190615937565b90915550506102ff805484908110611881576118816158a9565b6000918252602082200155600181600001516001600160a01b031684600080516020615efe8339815191528460200151856020015160016000196040516118cb9493929190615903565b60405180910390a46118ee816000015182602001516001600160601b0316613d04565b505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361193b5760405162461bcd60e51b8152600401610d1590615987565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611984600080516020615eb7833981519152546001600160a01b031690565b6001600160a01b0316146119aa5760405162461bcd60e51b8152600401610d15906159d3565b6119b382613a1d565b6119bf82826001613a25565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a635760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610d15565b50600080516020615eb783398151915290565b6103018181548110611a8757600080fd5b6000918252602090912001546001600160a01b0381169150600160a01b90046001600160601b031682565b6000611032613dd9565b611ac46134d7565b610302546000199060005b81811015611b2957836001600160a01b03166103028281548110611af557611af56158a9565b6000918252602090912001546001600160a01b031603611b1757809250611b29565b80611b218161596e565b915050611acf565b506000198213611b615760405162461bcd60e51b8152602060048201526003602482015262261a1960e91b6044820152606401610d15565b610302611b6f600183615937565b81548110611b7f57611b7f6158a9565b60009182526020909120015461030280546001600160a01b039092169184908110611bac57611bac6158a9565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550610302805480611bec57611bec615a6f565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b611c1b6134d7565b60405163433e3bad60e11b8152610290600482015261ffff8216602482015273633Fff91613e32a91bDBd0Ef30067aA3B86CBcd79063867c775a9060440160006040518083038186803b158015611c7157600080fd5b505af4158015611c85573d6000803e3d6000fd5b505060405161ffff841681527f3d6d63f501ae621a01c729938fb4428a25138835257943d6b56c49b402ba36329250602001905060405180910390a150565b6000611ccf8261312c565b611cd883612572565b610ccf9190615896565b611cea6134d7565b60405162461bcd60e51b81526020600482015260036024820152624c363560e81b6044820152606401610d15565b6102fb546001600160a01b0316336001600160a01b031614611d625760405162461bcd60e51b815260206004820152600360248201526204c34360ec1b6044820152606401610d15565b611d6a61388c565b60006102ff8281548110611d8057611d806158a9565b6000918252602091829020604080518082019091529101546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092529150611df15760405162461bcd60e51b8152602060048201526003602482015262261b1b60e91b6044820152606401610d15565b8051611dfc906138d4565b15611e2f5760405162461bcd60e51b815260206004820152600360248201526204c35360ec1b6044820152606401610d15565b6002611e396131fa565b611e4391906158bf565b81602001516001600160601b031611611e845760405162461bcd60e51b81526020600482015260036024820152624c353160e81b6044820152606401610d15565b600080611ea2836000015184602001516001600160601b0316612f87565b915091506000611ebb6102c6546001600160a01b031690565b6102fb546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015611f05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f299190615a3b565b9050806102fe54611f3a9190615896565b831115611f6f5760405162461bcd60e51b8152602060048201526003602482015262261a9960e91b6044820152606401610d15565b816102fc6000828254611f829190615896565b9250508190555083602001516001600160601b03166102fd6000828254611fa99190615937565b9091555050610300548503611fcf576103008054906000611fc98361596e565b91905055505b600184600001516001600160a01b031686600080516020615efe833981519152876020015187600260001960405161200a949392919061594a565b60405180910390a46102ff8581548110612026576120266158a9565b600091825260208220015580831161206857612063338551856120526102c6546001600160a01b031690565b6001600160a01b0316929190613e48565b6120c5565b60006120748285615937565b9050806102fe60008282546120899190615937565b909155506120a99050338651846120526102c6546001600160a01b031690565b84516120c3908261139a6102c6546001600160a01b031690565b505b6120cd613e80565b5050505050565b6102fb546001600160a01b0316336001600160a01b03161461211e5760405162461bcd60e51b815260206004820152600360248201526204c34360ec1b6044820152606401610d15565b61212661388c565b6102c6546001600160a01b03166102fb546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa15801561217d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a19190615a3b565b8111156121d65760405162461bcd60e51b81526020600482015260036024820152620986a760eb1b6044820152606401610d15565b6000816102fe546121e79190615896565b90506121f16131fa565b8111156122265760405162461bcd60e51b81526020600482015260036024820152624c353960e81b6044820152606401610d15565b816102fe60008282546122399190615896565b909155506119bf90503330846120526102c6546001600160a01b031690565b6122606134d7565b6102c6546001600160a01b03166001600160a01b0316826001600160a01b0316036122b35760405162461bcd60e51b81526020600482015260036024820152624c343360e81b6044820152606401610d15565b6119bf8282613ee9565b61012d5460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015612308573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110329190615a85565b61233461388c565b8161233e816138d4565b1561235b5760405162461bcd60e51b8152600401610d1590615a1f565b81612365816138d4565b156123825760405162461bcd60e51b8152600401610d1590615a1f565b6001600160a01b038481166000908152610291602052604090205416156123d15760405162461bcd60e51b8152602060048201526003602482015262261b1960e91b6044820152606401610d15565b6001600160a01b03841661240d5760405162461bcd60e51b815260206004820152600360248201526226189960e91b6044820152606401610d15565b6001600160a01b0383166124495760405162461bcd60e51b81526020600482015260036024820152624c313360e81b6044820152606401610d15565b826001600160a01b0316846001600160a01b0316036124905760405162461bcd60e51b8152602060048201526003602482015262130c4d60ea1b6044820152606401610d15565b6124986122bd565b6001600160a01b0316336001600160a01b031614806124bf5750336001600160a01b038516145b6124f15760405162461bcd60e51b81526020600482015260036024820152624c313560e81b6044820152606401610d15565b6124fc846001613fdb565b612507836001613fdb565b50506001600160a01b039182166000818152610291602090815260408083208054969095166001600160a01b03199687168117909555938252610292815292812080546001810182559082529290209091018054909216179055565b6060609b8054610c389061577c565b6001600160a01b038116600090815260976020526040812054610ccf565b6125986134d7565b61030280546001810182556000919091527f552430c2010355dda19e8bae437f75cfb136cb8d667c4c0867367db21eee69b60180546001600160a01b0319166001600160a01b0392909216919091179055565b6125f361388c565b336125fd816138d4565b1561261a5760405162461bcd60e51b8152600401610d1590615a1f565b61262333611cc4565b8211156126585760405162461bcd60e51b81526020600482015260036024820152624c353360e81b6044820152606401610d15565b6001600160601b038211156126955760405162461bcd60e51b8152602060048201526003602482015262130d4d60ea1b6044820152606401610d15565b34660aa87bee538000146126d15760405162461bcd60e51b81526020600482015260036024820152624c353560e81b6044820152606401610d15565b600060405180604001604052806126e53390565b6001600160a01b0390811682526001600160601b0386166020909201919091526102f9549192506000916002911663c8f74bb8336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561275d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127819190615a3b565b101580156127925750600061030054115b156128005761030080549060006127a883615aa2565b9190505550610300549050816102ff82815481106127c8576127c86158a9565b6000918252602091829020835193909201516001600160601b0316600160a01b026001600160a01b039093169290921791015561286a565b6102ff8054600181810183556000839052845160208601516001600160601b0316600160a01b026001600160a01b03909116177f5a4a1f748f8cfa795b59cdc37192794ee567e6029e925719381be08d7ccaf4ec9092019190915590546128679190615937565b90505b836102fd600082825461287d9190615896565b9091555060019050336001600160a01b031682600080516020615efe833981519152878860006000196040516128b69493929190615a54565b60405180910390a46128c83385613b90565b6102fa546040516000916001600160a01b03169034908381818185875af1925050503d8060008114612916576040519150601f19603f3d011682016040523d82523d6000602084013e61291b565b606091505b50509050806120cd5760405162461bcd60e51b8152602060048201526003602482015262261a9b60e91b6044820152606401610d15565b600033816129608286613281565b9050838110156129c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d15565b6129cd82868684036133b3565b506001949350505050565b6129e06134d7565b6102f980546001600160a01b0319166001600160a01b0392909216919091179055565b612a0b61388c565b81612a15816138d4565b15612a325760405162461bcd60e51b8152600401610d1590615a1f565b81612a3c816138d4565b15612a595760405162461bcd60e51b8152600401610d1590615a1f565b6001600160a01b038416612a955760405162461bcd60e51b815260206004820152600360248201526226189b60e91b6044820152606401610d15565b6001600160a01b038316612ad15760405162461bcd60e51b81526020600482015260036024820152624c313760e81b6044820152606401610d15565b612ad96122bd565b6001600160a01b0316336001600160a01b03161480612b005750336001600160a01b038516145b612b325760405162461bcd60e51b815260206004820152600360248201526209862760eb1b6044820152606401610d15565b6001600160a01b0384811660009081526102916020526040902054811690841614612b855760405162461bcd60e51b81526020600482015260036024820152624c313960e81b6044820152606401610d15565b612b90846001613fdb565b612b9b836001613fdb565b60001960005b6001600160a01b03851660009081526102926020526040902054811015612c26576001600160a01b0385811660009081526102926020526040902080549188169183908110612bf257612bf26158a9565b6000918252602090912001546001600160a01b031603612c1457809150612c26565b80612c1e8161596e565b915050612ba1565b506000811215612c3857612c38615ab9565b6001600160a01b0380861660009081526102916020908152604080832080546001600160a01b031916905592871682526102929052208054612c7c90600190615937565b81548110612c8c57612c8c6158a9565b60009182526020808320909101546001600160a01b0387811684526102929092526040909220805491909216919083908110612cca57612cca6158a9565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918616815261029290915260409020805480612d1057612d10615a6f565b600082815260209020810160001990810180546001600160a01b03191690550190555050505050565b600033610cc98185856136d0565b612d4f6134d7565b60006102fe54612d686102c6546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015612dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd29190615a3b565b612ddc9190615937565b905060008111612e145760405162461bcd60e51b8152602060048201526003602482015262130d0d60ea1b6044820152606401610d15565b611534612e2a6102c6546001600160a01b031690565b82613ee9565b612e3861388c565b33612e42816138d4565b15612e5f5760405162461bcd60e51b8152600401610d1590615a1f565b81612e736102c6546001600160a01b031690565b6001600160a01b03166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eea9190615a3b565b1015612f1e5760405162461bcd60e51b81526020600482015260036024820152624c343760e81b6044820152606401610d15565b816102fe6000828254612f319190615896565b9091555060009050336001600160a01b0316600019600080516020615efe83398151915285866002600019604051612f6c9493929190615a54565b60405180910390a4612f7e33836140b0565b506119bf613e80565b6102f95460405163191ee97760e31b81526001600160a01b03848116600483015260009283926002929091169063c8f74bb890602401602060405180830381865afa158015612fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ffe9190615a3b565b1061300e5750819050600061309c565b600061302b61302661028e546001600160a01b031690565b614131565b90506000613039858361419e565b6102fb5490915060009061305a90600160a01b900463ffffffff16846141dc565b90506000613069606485614208565b6130738385615acf565b61307d91906158bf565b90506130898185614236565b94506130958588615937565b9550505050505b9250929050565b6102ff8181548110611a8757600080fd5b60405163106d64cf60e31b8152610290600482015260009073633Fff91613e32a91bDBd0Ef30067aA3B86CBcd79063836b267890602401602060405180830381865af4158015613108573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110329190615ae6565b6000610ccf82600161426d565b6131416134d7565b60006102fc541161317a5760405162461bcd60e51b815260206004820152600360248201526204c36360ec1b6044820152606401610d15565b6102fc546102fe5410156131b65760405162461bcd60e51b81526020600482015260036024820152624c363160e81b6044820152606401610d15565b6102fc546102fe60008282546131cc9190615937565b90915550506102fc805460009091556115346131e66122bd565b8261139a6102c6546001600160a01b031690565b60008061321361302661028e546001600160a01b031690565b9050600061322861322261100c565b8361419e565b6102fb5490915060009061324990600160c01b900463ffffffff16846141dc565b90506000613258606485614208565b6132628385615acf565b61326c91906158bf565b90506132788185614236565b94505050505090565b6001600160a01b03918216600090815260986020908152604080832093909416825291909152205490565b6132b46134d7565b6102fb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b61030281815481106132ec57600080fd5b6000918252602090912001546001600160a01b0316905081565b600061103260995490565b6133196134d7565b60405162461bcd60e51b8152602060048201526002602482015261098760f31b6044820152606401610d15565b61334e6134d7565b61271063ffffffff8216111561338c5760405162461bcd60e51b81526020600482015260036024820152624c343160e81b6044820152606401610d15565b6102fb805463ffffffff909216600160c01b0263ffffffff60c01b19909216919091179055565b6001600160a01b0383166134155760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d15565b6001600160a01b0382166134765760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d15565b6001600160a01b0383811660008181526098602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b336134e06122bd565b6001600160a01b0316146135365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d15565b565b600054610100900460ff1661355f5760405162461bcd60e51b8152600401610d1590615b03565b61356a8585856147d3565b613574828261482d565b6120cd61485e565b600054610100900460ff166135a35760405162461bcd60e51b8152600401610d1590615b03565b61153481614885565b600054610100900460ff166135d35760405162461bcd60e51b8152600401610d1590615b03565b61028e80546001600160a01b0319166001600160a01b03831617905560405163433e3bad60e11b815261029060048201526000602482015273633Fff91613e32a91bDBd0Ef30067aA3B86CBcd79063867c775a9060440160006040518083038186803b15801561364257600080fd5b505af41580156120cd573d6000803e3d6000fd5b60006136628484613281565b905060001981146136ca57818110156136bd5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d15565b6136ca84848484036133b3565b50505050565b6001600160a01b0383166137345760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d15565b6001600160a01b0382166137965760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d15565b6137a1838383614927565b6001600160a01b038316600090815260976020526040902054818110156138195760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d15565b6001600160a01b0380851660008181526097602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906138799086815260200190565b60405180910390a36136ca848484614966565b613894611ab2565b156135365760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610d15565b6101935460405163fe575a8760e01b81526001600160a01b038381166004830152600092169063fe575a8790602401602060405180830381865afa158015613920573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccf9190615b4e565b6040516001600160a01b0383166024820152604481018290526118ee90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614a6f565b6102c6546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa925050508015613a0e575060408051601f3d908101601f19168201909252613a0b91810190615b70565b60015b613a185750601290565b919050565b6115346134d7565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615613a58576118ee83614b44565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613ab2575060408051601f3d908101601f19168201909252613aaf91810190615a3b565b60015b613b155760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610d15565b600080516020615eb78339815191528114613b845760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610d15565b506118ee838383614be0565b6001600160a01b038216613bf05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610d15565b613bfc82600083614927565b6001600160a01b03821660009081526097602052604090205481811015613c705760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610d15565b6001600160a01b03831660008181526097602090815260408083208686039055609980548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36118ee83600084614966565b6000613ce33383613b90565b6102c654613cfb906001600160a01b03168484613944565b50600192915050565b6001600160a01b038216613d5a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610d15565b613d6660008383614927565b8060996000828254613d789190615896565b90915550506001600160a01b0382166000818152609760209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36119bf60008383614966565b6101605460408051635c975abb60e01b815290516000926001600160a01b031691635c975abb9160048083019260209291908290030181865afa158015613e24573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110329190615b4e565b6040516001600160a01b03808516602483015283166044820152606481018290526136ca9085906323b872dd60e01b90608401613970565b6000613e8a6131fa565b9050806102fe5411613e995750565b6000816102fe54613eaa9190615937565b9050806102fe6000828254613ebf9190615937565b90915550506102fb546119bf906001600160a01b03168261139a6102c6546001600160a01b031690565b613ef16134d7565b60008111613f275760405162461bcd60e51b815260206004820152600360248201526204c31360ec1b6044820152606401610d15565b6040516370a0823160e01b8152306004820152829082906001600160a01b038316906370a0823190602401602060405180830381865afa158015613f6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f939190615a3b565b1015613fc75760405162461bcd60e51b81526020600482015260036024820152624c313160e81b6044820152606401610d15565b6118ee6001600160a01b0382163384613944565b6102935460ff1615613feb575050565b6001600160a01b038216600090815261028f602052604090205464ffffffffff428116911603614019575050565b6001600160a01b0380831660009081526102916020526040902054168015614045576118ee8183613fdb565b6000614051848461426d565b905080156140a757610293805460ff1916600117905560006140738583614c05565b610293805460ff191690559050806140a5576001600160a01b038516600090815261028f602052604090206003018290555b505b6136ca84614c5c565b60003330810361410e5760405162461bcd60e51b815260206004820152602360248201527f4552433230577261707065723a20777261707065722063616e2774206465706f6044820152621cda5d60ea1b6064820152608401610d15565b6102c654614127906001600160a01b0316823086613e48565b610cc98484613d04565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015614171573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141959190615b70565b60ff1692915050565b600060038210156141d0576141b4826006615937565b6141bf90600a615c77565b6141c99084615acf565b9050610ccf565b611087836103e8615acf565b600060038210156141f3576141c9836103e8615acf565b6141fe82600a615c77565b6110879084615acf565b60006003821015614220576141c983620f4240615acf565b61422b826003615896565b6141fe90600a615c77565b600060038210156142615761424c826006615937565b61425790600a615c77565b6141c990846158bf565b6110876103e8846158bf565b6001600160a01b038216600090815261028f602090815260408083208151608081018352815464ffffffffff16818401908152835180850190945260018301548452600283015463ffffffff168486015260608201939093529182526003015491810191909152816142de85614dbe565b82515190915064ffffffffff1615806142f5575080155b1561430557600092505050610ccf565b815160200151604051630b27cfb160e31b815260009073633Fff91613e32a91bDBd0Ef30067aA3B86CBcd79063593e7d889061434990610290908690600401615c83565b6040805180830381865af4158015614365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143899190615ca7565b60405163038255fd60e11b8152610290600482015290915060009073633Fff91613e32a91bDBd0Ef30067aA3B86CBcd790630704abfa906024016040805180830381865af41580156143df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144039190615cf2565b90508460200151955073633Fff91613e32a91bDBd0Ef30067aA3B86CBcd7634ead0c5384836040518363ffffffff1660e01b8152600401614445929190615d1e565b602060405180830381865af4158015614462573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144869190615b4e565b61479757604051633e1e5c5360e11b815260009073633Fff91613e32a91bDBd0Ef30067aA3B86CBcd790637c3cb8a6906144c4908790600401615d52565b6040805180830381865af41580156144e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145049190615cf2565b604051630b27cfb160e31b815290915060009073633Fff91613e32a91bDBd0Ef30067aA3B86CBcd79063593e7d889061454590610290908690600401615c83565b6040805180830381865af4158015614561573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145859190615ca7565b875151602082015186519293506145b3928c6145a25760006145a4565b8b5b6145ae908b615896565b614e67565b6145bd9089615896565b97505b81945080935073633Fff91613e32a91bDBd0Ef30067aA3B86CBcd7634ead0c5386856040518363ffffffff1660e01b81526004016145ff929190615d1e565b602060405180830381865af415801561461c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146409190615b4e565b61476a57604051633e1e5c5360e11b815273633Fff91613e32a91bDBd0Ef30067aA3B86CBcd790637c3cb8a69061467b908890600401615d52565b6040805180830381865af4158015614697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146bb9190615cf2565b604051630b27cfb160e31b815290925073633Fff91613e32a91bDBd0Ef30067aA3B86CBcd79063593e7d88906146f990610290908690600401615c83565b6040805180830381865af4158015614715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147399190615ca7565b90506147598460200151826020015186600001518c6145a25760006145a4565b6147639089615896565b97506145c0565b61478484602001514286600001518c6145a25760006145a4565b61478e9089615896565b975050506147c8565b84515182516147bb919042908a6147af5760006147b1565b895b6145ae9089615896565b6147c59087615896565b95505b505050505092915050565b600054610100900460ff166147fa5760405162461bcd60e51b8152600401610d1590615b03565b61480261485e565b61480b83614f53565b614813614f83565b61481c82614fb2565b61482581614ffc565b6118ee61485e565b600054610100900460ff166148545760405162461bcd60e51b8152600401610d1590615b03565b6119bf8282615046565b600054610100900460ff166135365760405162461bcd60e51b8152600401610d1590615b03565b600054610100900460ff166148ac5760405162461bcd60e51b8152600401610d1590615b03565b306001600160a01b038216036149045760405162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a2063616e6e6f742073656c66207772617000006044820152606401610d15565b6102c680546001600160a01b0319166001600160a01b0392909216919091179055565b614932838383615086565b6001600160a01b0383161561494c5761494c836001613fdb565b6001600160a01b038216156118ee576118ee826001613fdb565b6001600160a01b038316158061498357506001600160a01b038216155b156149c3577f980f7e6fb44009001d533a10bc3bd558b4efe22dcb4888bca4767aa93c71ce1f6149b161100c565b60405190815260200160405180910390a15b60005b610302548110156136ca5761030281815481106149e5576149e56158a9565b600091825260209091200154604051636e0d037d60e11b81526001600160a01b0386811660048301528581166024830152604482018590529091169063dc1a06fa90606401600060405180830381600087803b158015614a4457600080fd5b505af1158015614a58573d6000803e3d6000fd5b505050508080614a679061596e565b9150506149c6565b6000614ac4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166150e79092919063ffffffff16565b9050805160001480614ae5575080806020019051810190614ae59190615b4e565b6118ee5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d15565b6001600160a01b0381163b614bb15760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610d15565b600080516020615eb783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b614be9836150f6565b600082511180614bf65750805b156118ee576136ca8383615136565b6000826001600160a01b03167f05a71d417f891ba4b7a94b48d1b1f4b59b070921cba593b3c72a05a5587a78a9614c3b85612572565b60408051918252602082018690520160405180910390a2613cfb8383613d04565b6001600160a01b038116600090815261028f602052604090819020805464ffffffffff19164264ffffffffff161790555163038255fd60e11b8152610290600482015273633Fff91613e32a91bDBd0Ef30067aA3B86CBcd790630704abfa906024016040805180830381865af4158015614cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cfe9190615cf2565b6001600160a01b038216600090815261028f602090815260408220835160018201559201516002909201805463ffffffff191663ffffffff909316929092179091555b6001600160a01b038216600090815261029260205260409020548110156119bf576001600160a01b0382166000908152610292602052604090208054614dac919083908110614d9257614d926158a9565b6000918252602090912001546001600160a01b0316614c5c565b80614db68161596e565b915050614d41565b6000614dc98261515b565b614dd39082615896565b905060005b6001600160a01b03831660009081526102926020526040902054811015614e61576001600160a01b0383166000908152610292602052604090208054614e43919083908110614e2957614e296158a9565b6000918252602090912001546001600160a01b0316614dbe565b614e4d9083615896565b915080614e598161596e565b915050614dd8565b50919050565b600080614e8061302661028e546001600160a01b031690565b90506000614e9e614e918888615d6f565b64ffffffffff1683614208565b90506000614eb06301e1338084614208565b614ebb600185614208565b614ec59084615acf565b614ecf91906158bf565b90506000614ee18761ffff16856141dc565b90506000614ef0600186614208565b614efa8385615acf565b614f0491906158bf565b90506000614f12888761419e565b90506000614f21606488614208565b614f2b8484615acf565b614f3591906158bf565b9050614f418188614236565b9750505050505050505b949350505050565b600054610100900460ff16614f7a5760405162461bcd60e51b8152600401610d1590615b03565b61153481615166565b600054610100900460ff16614faa5760405162461bcd60e51b8152600401610d1590615b03565b6135366151b0565b600054610100900460ff16614fd95760405162461bcd60e51b8152600401610d1590615b03565b61016080546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166150235760405162461bcd60e51b8152600401610d1590615b03565b61019380546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661506d5760405162461bcd60e51b8152600401610d1590615b03565b609a6150798382615dda565b50609b6118ee8282615dda565b61508e61388c565b82615098816138d4565b156150b55760405162461bcd60e51b8152600401610d1590615a1f565b826150bf816138d4565b156150dc5760405162461bcd60e51b8152600401610d1590615a1f565b6120cd8585856151e3565b6060614f4b848460008561524b565b6150ff81614b44565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606110878383604051806060016040528060278152602001615ed760279139615326565b6000610ccf82612572565b600054610100900460ff1661518d5760405162461bcd60e51b8152600401610d1590615b03565b61012d80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166151d75760405162461bcd60e51b8152600401610d1590615b03565b60c9805460ff19169055565b6151eb611ab2565b156118ee5760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610d15565b6060824710156152ac5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610d15565b600080866001600160a01b031685876040516152c89190615e9a565b60006040518083038185875af1925050503d8060008114615305576040519150601f19603f3d011682016040523d82523d6000602084013e61530a565b606091505b509150915061531b8783838761539e565b979650505050505050565b6060600080856001600160a01b0316856040516153439190615e9a565b600060405180830381855af49150503d806000811461537e576040519150601f19603f3d011682016040523d82523d6000602084013e615383565b606091505b50915091506153948683838761539e565b9695505050505050565b6060831561540d578251600003615406576001600160a01b0385163b6154065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d15565b5081614f4b565b614f4b83838151156154225781518083602001fd5b8060405162461bcd60e51b8152600401610d159190615460565b60005b8381101561545757818101518382015260200161543f565b50506000910152565b602081526000825180602084015261547f81604085016020870161543c565b601f01601f19169190910160400192915050565b6001600160a01b038116811461153457600080fd5b600080604083850312156154bb57600080fd5b82356154c681615493565b946020939093013593505050565b6000602082840312156154e657600080fd5b813561108781615493565b600080600080600060a0868803121561550957600080fd5b853561551481615493565b9450602086013561552481615493565b9350604086013561553481615493565b9250606086013561554481615493565b9150608086013561555481615493565b809150509295509295909350565b60008060006060848603121561557757600080fd5b833561558281615493565b9250602084013561559281615493565b929592945050506040919091013590565b6000602082840312156155b557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156155f5576155f56155bc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715615624576156246155bc565b604052919050565b600067ffffffffffffffff821115615646576156466155bc565b50601f01601f191660200190565b6000806040838503121561566757600080fd5b823561567281615493565b9150602083013567ffffffffffffffff81111561568e57600080fd5b8301601f8101851361569f57600080fd5b80356156b26156ad8261562c565b6155fb565b8181528660208385010111156156c757600080fd5b816020840160208301376000602083830101528093505050509250929050565b61ffff8116811461153457600080fd5b60006020828403121561570957600080fd5b8135611087816156e7565b6000806040838503121561572757600080fd5b823561573281615493565b9150602083013561574281615493565b809150509250929050565b63ffffffff8116811461153457600080fd5b60006020828403121561577157600080fd5b81356110878161574d565b600181811c9082168061579057607f821691505b602082108103614e6157634e487b7160e01b600052602260045260246000fd5b6000602082840312156157c257600080fd5b815167ffffffffffffffff8111156157d957600080fd5b8201601f810184136157ea57600080fd5b80516157f86156ad8261562c565b81815285602083850101111561580d57600080fd5b61581e82602083016020860161543c565b95945050505050565b6702632b233b4ba3c960c51b81526000825161584a81600885016020870161543c565b9190910160080192915050565b601360fa1b81526000825161587381600185016020870161543c565b9190910160010192915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ccf57610ccf615880565b634e487b7160e01b600052603260045260246000fd5b6000826158dc57634e487b7160e01b600052601260045260246000fd5b500490565b600481106158ff57634e487b7160e01b600052602160045260246000fd5b9052565b6001600160601b038581168252841660208201526080810161592860408301856158e1565b82606083015295945050505050565b81810381811115610ccf57610ccf615880565b6001600160601b0385168152602081018490526080810161592860408301856158e1565b60006001820161598057615980615880565b5060010190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252600290820152614c3960f01b604082015260600190565b600060208284031215615a4d57600080fd5b5051919050565b848152602081018490526080810161592860408301856158e1565b634e487b7160e01b600052603160045260246000fd5b600060208284031215615a9757600080fd5b815161108781615493565b600081615ab157615ab1615880565b506000190190565b634e487b7160e01b600052600160045260246000fd5b8082028115828204841417610ccf57610ccf615880565b600060208284031215615af857600080fd5b8151611087816156e7565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215615b6057600080fd5b8151801515811461108757600080fd5b600060208284031215615b8257600080fd5b815160ff8116811461108757600080fd5b600181815b80851115615bce578160001904821115615bb457615bb4615880565b80851615615bc157918102915b93841c9390800290615b98565b509250929050565b600082615be557506001610ccf565b81615bf257506000610ccf565b8160018114615c085760028114615c1257615c2e565b6001915050610ccf565b60ff841115615c2357615c23615880565b50506001821b610ccf565b5060208310610133831016604e8410600b8410161715615c51575081810a610ccf565b615c5b8383615b93565b8060001904821115615c6f57615c6f615880565b029392505050565b60006110878383615bd6565b8281526060810161108760208301848051825260209081015163ffffffff16910152565b600060408284031215615cb957600080fd5b615cc16155d2565b8251615ccc816156e7565b8152602083015164ffffffffff81168114615ce657600080fd5b60208201529392505050565b600060408284031215615d0457600080fd5b615d0c6155d2565b825181526020830151615ce68161574d565b8251815260208084015163ffffffff16908201526080810182516040830152602083015163ffffffff166060830152611087565b8151815260208083015163ffffffff169082015260408101610ccf565b64ffffffffff828116828216039080821115615d8d57615d8d615880565b5092915050565b601f8211156118ee57600081815260208120601f850160051c81016020861015615dbb5750805b601f850160051c820191505b8181101561100457828155600101615dc7565b815167ffffffffffffffff811115615df457615df46155bc565b615e0881615e02845461577c565b84615d94565b602080601f831160018114615e3d5760008415615e255750858301515b600019600386901b1c1916600185901b178555611004565b600085815260208120601f198616915b82811015615e6c57888601518255948401946001909101908401615e4d565b5085821015615e8a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251615eac81846020870161543c565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564d58e94604d90293a1c1ad95bfe6a6e6c352c33c5774a4b6b4f4b6f7460da29c5a264697066735822122083de4bac720b6756a4a127b005ba62c6fb215167a3ea3396462d1f395ec1640564736f6c63430008120033", "deployedBytecode": "0x6080604052600436106103d95760003560e01c80638980f11f116101fd578063c822adda11610118578063dd62ed3e116100ab578063ef356a791161007a578063ef356a7914610b96578063f12d54d814610bab578063f2fde38b14610bca578063f762e73414610bea578063f94ce2c214610c0957600080fd5b8063dd62ed3e14610b11578063ee1335d114610b31578063ee153c4f14610b51578063ef2591af14610b7157600080fd5b8063d038875c116100e7578063d038875c14610a8d578063d039981b14610ac7578063d294f09314610ae7578063db84faac14610afc57600080fd5b8063c822adda14610a05578063c89d5b8b14610a25578063cafb220214610a4d578063cdc1842414610a6c57600080fd5b8063a457c2d711610190578063b2de2a431161015f578063b2de2a431461097a578063b60d42881461098f578063b6b55f25146109b0578063bacd609e146109d057600080fd5b8063a457c2d7146108fa578063a64c91cc1461091a578063a8f763201461093a578063a9059cbb1461095a57600080fd5b806395d89b41116101cc57806395d89b411461089257806399a03c70146108a75780639c271975146108c75780639ee679e8146108e757600080fd5b80638980f11f146108065780638d8e6bd7146108265780638da5cb5b1461085d57806392e5ced71461087257600080fd5b80634134bee9116102f85780636d3a4ac81161028b578063734d82871161025a578063734d8287146107795780637594d0b51461079057806375a5652b146107a75780637c2edb16146107c75780638370e1f7146107e657600080fd5b80636d3a4ac8146107055780636f307dc31461072557806370a0823114610744578063715018a61461076457600080fd5b806353ac4b66116102c757806353ac4b661461067257806353d3a42f146106895780635c975abb146106d05780635f0e8e37146106e557600080fd5b80634134bee91461060a57806345b05d091461062a5780634f1ef2861461064a57806352d1902d1461065d57600080fd5b806323b872dd116103705780633659cfe61161033f5780633659cfe614610571578063391d85ec1461059157806339509351146105ca5780633e7ae353146105ea57600080fd5b806323b872dd146104f55780632a1b8b1c146105155780632f4f21e21461052a578063313ce5671461054a57600080fd5b80631459457a116103ac5780631459457a1461047b57806318160ddd1461049b5780631c19be6d146104be578063205c2878146104d557600080fd5b806306fdde03146103de578063095ea7b3146104095780630d174c24146104395780630e21750f1461045b575b600080fd5b3480156103ea57600080fd5b506103f3610c29565b6040516104009190615460565b60405180910390f35b34801561041557600080fd5b506104296104243660046154a8565b610cbb565b6040519015158152602001610400565b34801561044557600080fd5b506104596104543660046154d4565b610cd5565b005b34801561046757600080fd5b506104596104763660046154d4565b610d41565b34801561048757600080fd5b506104596104963660046154f1565b610da8565b3480156104a757600080fd5b506104b061100c565b604051908152602001610400565b3480156104ca57600080fd5b506104b06102fe5481565b3480156104e157600080fd5b506104296104f03660046154a8565b611037565b34801561050157600080fd5b50610429610510366004615562565b611068565b34801561052157600080fd5b5061045961108e565b34801561053657600080fd5b506104296105453660046154a8565b61141d565b34801561055657600080fd5b5061055f61144e565b60405160ff9091168152602001610400565b34801561057d57600080fd5b5061045961058c3660046154d4565b611458565b34801561059d57600080fd5b506102f9546105b2906001600160a01b031681565b6040516001600160a01b039091168152602001610400565b3480156105d657600080fd5b506104296105e53660046154a8565b611537565b3480156105f657600080fd5b506105b26106053660046154a8565b611559565b34801561061657600080fd5b506104596106253660046155a3565b611592565b34801561063657600080fd5b506104596106453660046155a3565b611786565b610459610658366004615654565b6118f3565b34801561066957600080fd5b506104b06119c3565b34801561067e57600080fd5b506104b06102fd5481565b34801561069557600080fd5b506106a96106a43660046155a3565b611a76565b604080516001600160a01b0390931683526001600160601b03909116602083015201610400565b3480156106dc57600080fd5b50610429611ab2565b3480156106f157600080fd5b506104596107003660046154d4565b611abc565b34801561071157600080fd5b506104596107203660046156f7565b611c13565b34801561073157600080fd5b506102c6546001600160a01b03166105b2565b34801561075057600080fd5b506104b061075f3660046154d4565b611cc4565b34801561077057600080fd5b50610459611ce2565b34801561078557600080fd5b506104b06102fc5481565b34801561079c57600080fd5b506104b06103005481565b3480156107b357600080fd5b506104596107c23660046155a3565b611d18565b3480156107d357600080fd5b50610193546001600160a01b03166105b2565b3480156107f257600080fd5b506104596108013660046155a3565b6120d4565b34801561081257600080fd5b506104596108213660046154a8565b612258565b34801561083257600080fd5b506105b26108413660046154d4565b610291602052600090815260409020546001600160a01b031681565b34801561086957600080fd5b506105b26122bd565b34801561087e57600080fd5b5061045961088d366004615714565b61232c565b34801561089e57600080fd5b506103f3612563565b3480156108b357600080fd5b506104b06108c23660046154d4565b612572565b3480156108d357600080fd5b506104596108e23660046154d4565b612590565b6104596108f53660046155a3565b6125eb565b34801561090657600080fd5b506104296109153660046154a8565b612952565b34801561092657600080fd5b506104596109353660046154d4565b6129d8565b34801561094657600080fd5b50610459610955366004615714565b612a03565b34801561096657600080fd5b506104296109753660046154a8565b612d39565b34801561098657600080fd5b50610459612d47565b34801561099b57600080fd5b506102fb546105b2906001600160a01b031681565b3480156109bc57600080fd5b506104596109cb3660046155a3565b612e30565b3480156109dc57600080fd5b506109f06109eb3660046154a8565b612f87565b60408051928352602083019190915201610400565b348015610a1157600080fd5b506106a9610a203660046155a3565b6130a3565b348015610a3157600080fd5b50610a3a6130b4565b60405161ffff9091168152602001610400565b348015610a5957600080fd5b5061028e546001600160a01b03166105b2565b348015610a7857600080fd5b506102fa546105b2906001600160a01b031681565b348015610a9957600080fd5b506102fb54610ab290600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610400565b348015610ad357600080fd5b506104b0610ae23660046154d4565b61312c565b348015610af357600080fd5b50610459613139565b348015610b0857600080fd5b506104b06131fa565b348015610b1d57600080fd5b506104b0610b2c366004615714565b613281565b348015610b3d57600080fd5b50610459610b4c36600461575f565b6132ac565b348015610b5d57600080fd5b506105b2610b6c3660046155a3565b6132db565b348015610b7d57600080fd5b506102fb54610ab290600160c01b900463ffffffff1681565b348015610ba257600080fd5b506104b0613306565b348015610bb757600080fd5b50610160546001600160a01b03166105b2565b348015610bd657600080fd5b50610459610be53660046154d4565b613311565b348015610bf657600080fd5b5061012d546001600160a01b03166105b2565b348015610c1557600080fd5b50610459610c2436600461575f565b613346565b6060609a8054610c389061577c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c649061577c565b8015610cb15780601f10610c8657610100808354040283529160200191610cb1565b820191906000526020600020905b815481529060010190602001808311610c9457829003601f168201915b5050505050905090565b600033610cc98185856133b3565b60019150505b92915050565b610cdd6134d7565b6001600160a01b038116610d1e5760405162461bcd60e51b81526020600482015260036024820152624c363360e81b60448201526064015b60405180910390fd5b6102fa80546001600160a01b0319166001600160a01b0392909216919091179055565b610d496134d7565b6001600160a01b038116610d855760405162461bcd60e51b8152602060048201526003602482015262130d8d60ea1b6044820152606401610d15565b6102fb80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1615808015610dc85750600054600160ff909116105b80610de25750303b158015610de2575060005460ff166001145b610e455760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d15565b6000805460ff191660011790558015610e68576000805461ff0019166101001790555b6000826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ea8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ed091908101906157b0565b9050610f1d87878784604051602001610ee99190615827565b60405160208183030381529060405285604051602001610f099190615857565b604051602081830303815290604052613538565b610f268361357c565b610f2f306135ac565b6102f980546001600160a01b0319166001600160a01b0386161790556102fb805467ffffffffffffffff60a01b19166509c40000004b60a21b179055610f736122bd565b6102fa80546001600160a01b0319166001600160a01b0392909216919091179055610f9c6122bd565b6102fb80546001600160a01b0319166001600160a01b0392909216919091179055508015611004576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60006102fc546102fd5461101e613306565b6110289190615896565b6110329190615896565b905090565b60405162461bcd60e51b81526020600482015260036024820152624c343560e81b6044820152600090606401610d15565b600033611076858285613656565b6110818585856136d0565b60019150505b9392505050565b6102fa546001600160a01b0316336001600160a01b0316146110d85760405162461bcd60e51b81526020600482015260036024820152624c333960e81b6044820152606401610d15565b6110e061388c565b610300546102ff5460009182915b808210156113c05761afc85a106113c05760006102ff8381548110611115576111156158a9565b6000918252602091829020604080518082019091529101546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092529150156113ad578051611164906138d4565b156111e6576102ff838154811061117d5761117d6158a9565b60009182526020808320909101829055610301805460018101825592528251908301516001600160601b0316600160a01b026001600160a01b0391909116177fe78f8e39db67a8c6e0d54c288efc6f296f5d558bc028138a8476c9b97f6fcaa4909101556113ad565b60026111f06131fa565b6111fa91906158bf565b81602001516001600160601b031611156112c65760208101516102ff5460405160019233928792600080516020615efe833981519152926112419290918291600391615903565b60405180910390a46102ff838154811061125d5761125d6158a9565b600091825260208083209091018290556102ff805460018101825592528251908301516001600160601b0316600160a01b026001600160a01b0391909116177f5a4a1f748f8cfa795b59cdc37192794ee567e6029e925719381be08d7ccaf4ec909101556113ad565b6000806112e4836000015184602001516001600160601b0316612f87565b91509150856102fe546112f79190615937565b821115611306575050506113c0565b6113108188615896565b965061131c8287615896565b9550600183600001516001600160a01b031686600080516020615efe8339815191528660200151866002600019604051611359949392919061594a565b60405180910390a46102ff8581548110611375576113756158a9565b600091825260208220015582516113aa908361139a6102c6546001600160a01b031690565b6001600160a01b03169190613944565b50505b826113b78161596e565b935050506110ee565b836102fc60008282546113d39190615896565b92505081905550826102fe60008282546113ed9190615937565b909155506113fd90508484615896565b6102fd600082825461140f9190615937565b909155505050610300555050565b60405162461bcd60e51b8152602060048201526003602482015262261a1b60e91b6044820152600090606401610d15565b60006110326139a7565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114a05760405162461bcd60e51b8152600401610d1590615987565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114e9600080516020615eb7833981519152546001600160a01b031690565b6001600160a01b03161461150f5760405162461bcd60e51b8152600401610d15906159d3565b61151881613a1d565b6040805160008082526020820190925261153491839190613a25565b50565b600033610cc981858561154a8383613281565b6115549190615896565b6133b3565b610292602052816000526040600020818154811061157657600080fd5b6000918252602090912001546001600160a01b03169150829050565b61159a61388c565b336115a4816138d4565b156115c15760405162461bcd60e51b8152600401610d1590615a1f565b6115ca33611cc4565b8211156115ff5760405162461bcd60e51b815260206004820152600360248201526209868760eb1b6044820152606401610d15565b60006102fe54836102fd546116149190615896565b6102f95491101591506000906002906001600160a01b031663c8f74bb8336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169a9190615a3b565b101580156116ab57506102fe548411155b905081806116b65750805b6116e85760405162461bcd60e51b81526020600482015260036024820152624c343960e81b6044820152606401610d15565b6000806116f53387612f87565b91509150806102fc600082825461170c9190615896565b92505081905550816102fe60008282546117269190615937565b9091555060019050336001600160a01b0316600019600080516020615efe833981519152898660026000196040516117619493929190615a54565b60405180910390a46117733382613b90565b61177d3383613cd7565b50505050505050565b61178e61388c565b33611798816138d4565b156117b55760405162461bcd60e51b8152600401610d1590615a1f565b60006102ff83815481106117cb576117cb6158a9565b6000918252602091829020604080518082019091529101546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092529150336001600160a01b0316146118475760405162461bcd60e51b81526020600482015260036024820152624c353760e81b6044820152606401610d15565b80602001516001600160601b03166102fd60008282546118679190615937565b90915550506102ff805484908110611881576118816158a9565b6000918252602082200155600181600001516001600160a01b031684600080516020615efe8339815191528460200151856020015160016000196040516118cb9493929190615903565b60405180910390a46118ee816000015182602001516001600160601b0316613d04565b505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361193b5760405162461bcd60e51b8152600401610d1590615987565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611984600080516020615eb7833981519152546001600160a01b031690565b6001600160a01b0316146119aa5760405162461bcd60e51b8152600401610d15906159d3565b6119b382613a1d565b6119bf82826001613a25565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a635760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610d15565b50600080516020615eb783398151915290565b6103018181548110611a8757600080fd5b6000918252602090912001546001600160a01b0381169150600160a01b90046001600160601b031682565b6000611032613dd9565b611ac46134d7565b610302546000199060005b81811015611b2957836001600160a01b03166103028281548110611af557611af56158a9565b6000918252602090912001546001600160a01b031603611b1757809250611b29565b80611b218161596e565b915050611acf565b506000198213611b615760405162461bcd60e51b8152602060048201526003602482015262261a1960e91b6044820152606401610d15565b610302611b6f600183615937565b81548110611b7f57611b7f6158a9565b60009182526020909120015461030280546001600160a01b039092169184908110611bac57611bac6158a9565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550610302805480611bec57611bec615a6f565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b611c1b6134d7565b60405163433e3bad60e11b8152610290600482015261ffff8216602482015273__$3728f51d90da6977d2525dcec632daa0b3$__9063867c775a9060440160006040518083038186803b158015611c7157600080fd5b505af4158015611c85573d6000803e3d6000fd5b505060405161ffff841681527f3d6d63f501ae621a01c729938fb4428a25138835257943d6b56c49b402ba36329250602001905060405180910390a150565b6000611ccf8261312c565b611cd883612572565b610ccf9190615896565b611cea6134d7565b60405162461bcd60e51b81526020600482015260036024820152624c363560e81b6044820152606401610d15565b6102fb546001600160a01b0316336001600160a01b031614611d625760405162461bcd60e51b815260206004820152600360248201526204c34360ec1b6044820152606401610d15565b611d6a61388c565b60006102ff8281548110611d8057611d806158a9565b6000918252602091829020604080518082019091529101546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092529150611df15760405162461bcd60e51b8152602060048201526003602482015262261b1b60e91b6044820152606401610d15565b8051611dfc906138d4565b15611e2f5760405162461bcd60e51b815260206004820152600360248201526204c35360ec1b6044820152606401610d15565b6002611e396131fa565b611e4391906158bf565b81602001516001600160601b031611611e845760405162461bcd60e51b81526020600482015260036024820152624c353160e81b6044820152606401610d15565b600080611ea2836000015184602001516001600160601b0316612f87565b915091506000611ebb6102c6546001600160a01b031690565b6102fb546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015611f05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f299190615a3b565b9050806102fe54611f3a9190615896565b831115611f6f5760405162461bcd60e51b8152602060048201526003602482015262261a9960e91b6044820152606401610d15565b816102fc6000828254611f829190615896565b9250508190555083602001516001600160601b03166102fd6000828254611fa99190615937565b9091555050610300548503611fcf576103008054906000611fc98361596e565b91905055505b600184600001516001600160a01b031686600080516020615efe833981519152876020015187600260001960405161200a949392919061594a565b60405180910390a46102ff8581548110612026576120266158a9565b600091825260208220015580831161206857612063338551856120526102c6546001600160a01b031690565b6001600160a01b0316929190613e48565b6120c5565b60006120748285615937565b9050806102fe60008282546120899190615937565b909155506120a99050338651846120526102c6546001600160a01b031690565b84516120c3908261139a6102c6546001600160a01b031690565b505b6120cd613e80565b5050505050565b6102fb546001600160a01b0316336001600160a01b03161461211e5760405162461bcd60e51b815260206004820152600360248201526204c34360ec1b6044820152606401610d15565b61212661388c565b6102c6546001600160a01b03166102fb546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa15801561217d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a19190615a3b565b8111156121d65760405162461bcd60e51b81526020600482015260036024820152620986a760eb1b6044820152606401610d15565b6000816102fe546121e79190615896565b90506121f16131fa565b8111156122265760405162461bcd60e51b81526020600482015260036024820152624c353960e81b6044820152606401610d15565b816102fe60008282546122399190615896565b909155506119bf90503330846120526102c6546001600160a01b031690565b6122606134d7565b6102c6546001600160a01b03166001600160a01b0316826001600160a01b0316036122b35760405162461bcd60e51b81526020600482015260036024820152624c343360e81b6044820152606401610d15565b6119bf8282613ee9565b61012d5460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015612308573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110329190615a85565b61233461388c565b8161233e816138d4565b1561235b5760405162461bcd60e51b8152600401610d1590615a1f565b81612365816138d4565b156123825760405162461bcd60e51b8152600401610d1590615a1f565b6001600160a01b038481166000908152610291602052604090205416156123d15760405162461bcd60e51b8152602060048201526003602482015262261b1960e91b6044820152606401610d15565b6001600160a01b03841661240d5760405162461bcd60e51b815260206004820152600360248201526226189960e91b6044820152606401610d15565b6001600160a01b0383166124495760405162461bcd60e51b81526020600482015260036024820152624c313360e81b6044820152606401610d15565b826001600160a01b0316846001600160a01b0316036124905760405162461bcd60e51b8152602060048201526003602482015262130c4d60ea1b6044820152606401610d15565b6124986122bd565b6001600160a01b0316336001600160a01b031614806124bf5750336001600160a01b038516145b6124f15760405162461bcd60e51b81526020600482015260036024820152624c313560e81b6044820152606401610d15565b6124fc846001613fdb565b612507836001613fdb565b50506001600160a01b039182166000818152610291602090815260408083208054969095166001600160a01b03199687168117909555938252610292815292812080546001810182559082529290209091018054909216179055565b6060609b8054610c389061577c565b6001600160a01b038116600090815260976020526040812054610ccf565b6125986134d7565b61030280546001810182556000919091527f552430c2010355dda19e8bae437f75cfb136cb8d667c4c0867367db21eee69b60180546001600160a01b0319166001600160a01b0392909216919091179055565b6125f361388c565b336125fd816138d4565b1561261a5760405162461bcd60e51b8152600401610d1590615a1f565b61262333611cc4565b8211156126585760405162461bcd60e51b81526020600482015260036024820152624c353360e81b6044820152606401610d15565b6001600160601b038211156126955760405162461bcd60e51b8152602060048201526003602482015262130d4d60ea1b6044820152606401610d15565b34660aa87bee538000146126d15760405162461bcd60e51b81526020600482015260036024820152624c353560e81b6044820152606401610d15565b600060405180604001604052806126e53390565b6001600160a01b0390811682526001600160601b0386166020909201919091526102f9549192506000916002911663c8f74bb8336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561275d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127819190615a3b565b101580156127925750600061030054115b156128005761030080549060006127a883615aa2565b9190505550610300549050816102ff82815481106127c8576127c86158a9565b6000918252602091829020835193909201516001600160601b0316600160a01b026001600160a01b039093169290921791015561286a565b6102ff8054600181810183556000839052845160208601516001600160601b0316600160a01b026001600160a01b03909116177f5a4a1f748f8cfa795b59cdc37192794ee567e6029e925719381be08d7ccaf4ec9092019190915590546128679190615937565b90505b836102fd600082825461287d9190615896565b9091555060019050336001600160a01b031682600080516020615efe833981519152878860006000196040516128b69493929190615a54565b60405180910390a46128c83385613b90565b6102fa546040516000916001600160a01b03169034908381818185875af1925050503d8060008114612916576040519150601f19603f3d011682016040523d82523d6000602084013e61291b565b606091505b50509050806120cd5760405162461bcd60e51b8152602060048201526003602482015262261a9b60e91b6044820152606401610d15565b600033816129608286613281565b9050838110156129c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d15565b6129cd82868684036133b3565b506001949350505050565b6129e06134d7565b6102f980546001600160a01b0319166001600160a01b0392909216919091179055565b612a0b61388c565b81612a15816138d4565b15612a325760405162461bcd60e51b8152600401610d1590615a1f565b81612a3c816138d4565b15612a595760405162461bcd60e51b8152600401610d1590615a1f565b6001600160a01b038416612a955760405162461bcd60e51b815260206004820152600360248201526226189b60e91b6044820152606401610d15565b6001600160a01b038316612ad15760405162461bcd60e51b81526020600482015260036024820152624c313760e81b6044820152606401610d15565b612ad96122bd565b6001600160a01b0316336001600160a01b03161480612b005750336001600160a01b038516145b612b325760405162461bcd60e51b815260206004820152600360248201526209862760eb1b6044820152606401610d15565b6001600160a01b0384811660009081526102916020526040902054811690841614612b855760405162461bcd60e51b81526020600482015260036024820152624c313960e81b6044820152606401610d15565b612b90846001613fdb565b612b9b836001613fdb565b60001960005b6001600160a01b03851660009081526102926020526040902054811015612c26576001600160a01b0385811660009081526102926020526040902080549188169183908110612bf257612bf26158a9565b6000918252602090912001546001600160a01b031603612c1457809150612c26565b80612c1e8161596e565b915050612ba1565b506000811215612c3857612c38615ab9565b6001600160a01b0380861660009081526102916020908152604080832080546001600160a01b031916905592871682526102929052208054612c7c90600190615937565b81548110612c8c57612c8c6158a9565b60009182526020808320909101546001600160a01b0387811684526102929092526040909220805491909216919083908110612cca57612cca6158a9565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918616815261029290915260409020805480612d1057612d10615a6f565b600082815260209020810160001990810180546001600160a01b03191690550190555050505050565b600033610cc98185856136d0565b612d4f6134d7565b60006102fe54612d686102c6546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015612dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd29190615a3b565b612ddc9190615937565b905060008111612e145760405162461bcd60e51b8152602060048201526003602482015262130d0d60ea1b6044820152606401610d15565b611534612e2a6102c6546001600160a01b031690565b82613ee9565b612e3861388c565b33612e42816138d4565b15612e5f5760405162461bcd60e51b8152600401610d1590615a1f565b81612e736102c6546001600160a01b031690565b6001600160a01b03166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eea9190615a3b565b1015612f1e5760405162461bcd60e51b81526020600482015260036024820152624c343760e81b6044820152606401610d15565b816102fe6000828254612f319190615896565b9091555060009050336001600160a01b0316600019600080516020615efe83398151915285866002600019604051612f6c9493929190615a54565b60405180910390a4612f7e33836140b0565b506119bf613e80565b6102f95460405163191ee97760e31b81526001600160a01b03848116600483015260009283926002929091169063c8f74bb890602401602060405180830381865afa158015612fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ffe9190615a3b565b1061300e5750819050600061309c565b600061302b61302661028e546001600160a01b031690565b614131565b90506000613039858361419e565b6102fb5490915060009061305a90600160a01b900463ffffffff16846141dc565b90506000613069606485614208565b6130738385615acf565b61307d91906158bf565b90506130898185614236565b94506130958588615937565b9550505050505b9250929050565b6102ff8181548110611a8757600080fd5b60405163106d64cf60e31b8152610290600482015260009073__$3728f51d90da6977d2525dcec632daa0b3$__9063836b267890602401602060405180830381865af4158015613108573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110329190615ae6565b6000610ccf82600161426d565b6131416134d7565b60006102fc541161317a5760405162461bcd60e51b815260206004820152600360248201526204c36360ec1b6044820152606401610d15565b6102fc546102fe5410156131b65760405162461bcd60e51b81526020600482015260036024820152624c363160e81b6044820152606401610d15565b6102fc546102fe60008282546131cc9190615937565b90915550506102fc805460009091556115346131e66122bd565b8261139a6102c6546001600160a01b031690565b60008061321361302661028e546001600160a01b031690565b9050600061322861322261100c565b8361419e565b6102fb5490915060009061324990600160c01b900463ffffffff16846141dc565b90506000613258606485614208565b6132628385615acf565b61326c91906158bf565b90506132788185614236565b94505050505090565b6001600160a01b03918216600090815260986020908152604080832093909416825291909152205490565b6132b46134d7565b6102fb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b61030281815481106132ec57600080fd5b6000918252602090912001546001600160a01b0316905081565b600061103260995490565b6133196134d7565b60405162461bcd60e51b8152602060048201526002602482015261098760f31b6044820152606401610d15565b61334e6134d7565b61271063ffffffff8216111561338c5760405162461bcd60e51b81526020600482015260036024820152624c343160e81b6044820152606401610d15565b6102fb805463ffffffff909216600160c01b0263ffffffff60c01b19909216919091179055565b6001600160a01b0383166134155760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d15565b6001600160a01b0382166134765760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d15565b6001600160a01b0383811660008181526098602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b336134e06122bd565b6001600160a01b0316146135365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d15565b565b600054610100900460ff1661355f5760405162461bcd60e51b8152600401610d1590615b03565b61356a8585856147d3565b613574828261482d565b6120cd61485e565b600054610100900460ff166135a35760405162461bcd60e51b8152600401610d1590615b03565b61153481614885565b600054610100900460ff166135d35760405162461bcd60e51b8152600401610d1590615b03565b61028e80546001600160a01b0319166001600160a01b03831617905560405163433e3bad60e11b815261029060048201526000602482015273__$3728f51d90da6977d2525dcec632daa0b3$__9063867c775a9060440160006040518083038186803b15801561364257600080fd5b505af41580156120cd573d6000803e3d6000fd5b60006136628484613281565b905060001981146136ca57818110156136bd5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d15565b6136ca84848484036133b3565b50505050565b6001600160a01b0383166137345760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d15565b6001600160a01b0382166137965760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d15565b6137a1838383614927565b6001600160a01b038316600090815260976020526040902054818110156138195760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d15565b6001600160a01b0380851660008181526097602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906138799086815260200190565b60405180910390a36136ca848484614966565b613894611ab2565b156135365760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610d15565b6101935460405163fe575a8760e01b81526001600160a01b038381166004830152600092169063fe575a8790602401602060405180830381865afa158015613920573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccf9190615b4e565b6040516001600160a01b0383166024820152604481018290526118ee90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614a6f565b6102c6546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa925050508015613a0e575060408051601f3d908101601f19168201909252613a0b91810190615b70565b60015b613a185750601290565b919050565b6115346134d7565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615613a58576118ee83614b44565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613ab2575060408051601f3d908101601f19168201909252613aaf91810190615a3b565b60015b613b155760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610d15565b600080516020615eb78339815191528114613b845760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610d15565b506118ee838383614be0565b6001600160a01b038216613bf05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610d15565b613bfc82600083614927565b6001600160a01b03821660009081526097602052604090205481811015613c705760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610d15565b6001600160a01b03831660008181526097602090815260408083208686039055609980548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36118ee83600084614966565b6000613ce33383613b90565b6102c654613cfb906001600160a01b03168484613944565b50600192915050565b6001600160a01b038216613d5a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610d15565b613d6660008383614927565b8060996000828254613d789190615896565b90915550506001600160a01b0382166000818152609760209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36119bf60008383614966565b6101605460408051635c975abb60e01b815290516000926001600160a01b031691635c975abb9160048083019260209291908290030181865afa158015613e24573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110329190615b4e565b6040516001600160a01b03808516602483015283166044820152606481018290526136ca9085906323b872dd60e01b90608401613970565b6000613e8a6131fa565b9050806102fe5411613e995750565b6000816102fe54613eaa9190615937565b9050806102fe6000828254613ebf9190615937565b90915550506102fb546119bf906001600160a01b03168261139a6102c6546001600160a01b031690565b613ef16134d7565b60008111613f275760405162461bcd60e51b815260206004820152600360248201526204c31360ec1b6044820152606401610d15565b6040516370a0823160e01b8152306004820152829082906001600160a01b038316906370a0823190602401602060405180830381865afa158015613f6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f939190615a3b565b1015613fc75760405162461bcd60e51b81526020600482015260036024820152624c313160e81b6044820152606401610d15565b6118ee6001600160a01b0382163384613944565b6102935460ff1615613feb575050565b6001600160a01b038216600090815261028f602052604090205464ffffffffff428116911603614019575050565b6001600160a01b0380831660009081526102916020526040902054168015614045576118ee8183613fdb565b6000614051848461426d565b905080156140a757610293805460ff1916600117905560006140738583614c05565b610293805460ff191690559050806140a5576001600160a01b038516600090815261028f602052604090206003018290555b505b6136ca84614c5c565b60003330810361410e5760405162461bcd60e51b815260206004820152602360248201527f4552433230577261707065723a20777261707065722063616e2774206465706f6044820152621cda5d60ea1b6064820152608401610d15565b6102c654614127906001600160a01b0316823086613e48565b610cc98484613d04565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015614171573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141959190615b70565b60ff1692915050565b600060038210156141d0576141b4826006615937565b6141bf90600a615c77565b6141c99084615acf565b9050610ccf565b611087836103e8615acf565b600060038210156141f3576141c9836103e8615acf565b6141fe82600a615c77565b6110879084615acf565b60006003821015614220576141c983620f4240615acf565b61422b826003615896565b6141fe90600a615c77565b600060038210156142615761424c826006615937565b61425790600a615c77565b6141c990846158bf565b6110876103e8846158bf565b6001600160a01b038216600090815261028f602090815260408083208151608081018352815464ffffffffff16818401908152835180850190945260018301548452600283015463ffffffff168486015260608201939093529182526003015491810191909152816142de85614dbe565b82515190915064ffffffffff1615806142f5575080155b1561430557600092505050610ccf565b815160200151604051630b27cfb160e31b815260009073__$3728f51d90da6977d2525dcec632daa0b3$__9063593e7d889061434990610290908690600401615c83565b6040805180830381865af4158015614365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143899190615ca7565b60405163038255fd60e11b8152610290600482015290915060009073__$3728f51d90da6977d2525dcec632daa0b3$__90630704abfa906024016040805180830381865af41580156143df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144039190615cf2565b90508460200151955073__$3728f51d90da6977d2525dcec632daa0b3$__634ead0c5384836040518363ffffffff1660e01b8152600401614445929190615d1e565b602060405180830381865af4158015614462573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144869190615b4e565b61479757604051633e1e5c5360e11b815260009073__$3728f51d90da6977d2525dcec632daa0b3$__90637c3cb8a6906144c4908790600401615d52565b6040805180830381865af41580156144e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145049190615cf2565b604051630b27cfb160e31b815290915060009073__$3728f51d90da6977d2525dcec632daa0b3$__9063593e7d889061454590610290908690600401615c83565b6040805180830381865af4158015614561573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145859190615ca7565b875151602082015186519293506145b3928c6145a25760006145a4565b8b5b6145ae908b615896565b614e67565b6145bd9089615896565b97505b81945080935073__$3728f51d90da6977d2525dcec632daa0b3$__634ead0c5386856040518363ffffffff1660e01b81526004016145ff929190615d1e565b602060405180830381865af415801561461c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146409190615b4e565b61476a57604051633e1e5c5360e11b815273__$3728f51d90da6977d2525dcec632daa0b3$__90637c3cb8a69061467b908890600401615d52565b6040805180830381865af4158015614697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146bb9190615cf2565b604051630b27cfb160e31b815290925073__$3728f51d90da6977d2525dcec632daa0b3$__9063593e7d88906146f990610290908690600401615c83565b6040805180830381865af4158015614715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147399190615ca7565b90506147598460200151826020015186600001518c6145a25760006145a4565b6147639089615896565b97506145c0565b61478484602001514286600001518c6145a25760006145a4565b61478e9089615896565b975050506147c8565b84515182516147bb919042908a6147af5760006147b1565b895b6145ae9089615896565b6147c59087615896565b95505b505050505092915050565b600054610100900460ff166147fa5760405162461bcd60e51b8152600401610d1590615b03565b61480261485e565b61480b83614f53565b614813614f83565b61481c82614fb2565b61482581614ffc565b6118ee61485e565b600054610100900460ff166148545760405162461bcd60e51b8152600401610d1590615b03565b6119bf8282615046565b600054610100900460ff166135365760405162461bcd60e51b8152600401610d1590615b03565b600054610100900460ff166148ac5760405162461bcd60e51b8152600401610d1590615b03565b306001600160a01b038216036149045760405162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a2063616e6e6f742073656c66207772617000006044820152606401610d15565b6102c680546001600160a01b0319166001600160a01b0392909216919091179055565b614932838383615086565b6001600160a01b0383161561494c5761494c836001613fdb565b6001600160a01b038216156118ee576118ee826001613fdb565b6001600160a01b038316158061498357506001600160a01b038216155b156149c3577f980f7e6fb44009001d533a10bc3bd558b4efe22dcb4888bca4767aa93c71ce1f6149b161100c565b60405190815260200160405180910390a15b60005b610302548110156136ca5761030281815481106149e5576149e56158a9565b600091825260209091200154604051636e0d037d60e11b81526001600160a01b0386811660048301528581166024830152604482018590529091169063dc1a06fa90606401600060405180830381600087803b158015614a4457600080fd5b505af1158015614a58573d6000803e3d6000fd5b505050508080614a679061596e565b9150506149c6565b6000614ac4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166150e79092919063ffffffff16565b9050805160001480614ae5575080806020019051810190614ae59190615b4e565b6118ee5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d15565b6001600160a01b0381163b614bb15760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610d15565b600080516020615eb783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b614be9836150f6565b600082511180614bf65750805b156118ee576136ca8383615136565b6000826001600160a01b03167f05a71d417f891ba4b7a94b48d1b1f4b59b070921cba593b3c72a05a5587a78a9614c3b85612572565b60408051918252602082018690520160405180910390a2613cfb8383613d04565b6001600160a01b038116600090815261028f602052604090819020805464ffffffffff19164264ffffffffff161790555163038255fd60e11b8152610290600482015273__$3728f51d90da6977d2525dcec632daa0b3$__90630704abfa906024016040805180830381865af4158015614cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cfe9190615cf2565b6001600160a01b038216600090815261028f602090815260408220835160018201559201516002909201805463ffffffff191663ffffffff909316929092179091555b6001600160a01b038216600090815261029260205260409020548110156119bf576001600160a01b0382166000908152610292602052604090208054614dac919083908110614d9257614d926158a9565b6000918252602090912001546001600160a01b0316614c5c565b80614db68161596e565b915050614d41565b6000614dc98261515b565b614dd39082615896565b905060005b6001600160a01b03831660009081526102926020526040902054811015614e61576001600160a01b0383166000908152610292602052604090208054614e43919083908110614e2957614e296158a9565b6000918252602090912001546001600160a01b0316614dbe565b614e4d9083615896565b915080614e598161596e565b915050614dd8565b50919050565b600080614e8061302661028e546001600160a01b031690565b90506000614e9e614e918888615d6f565b64ffffffffff1683614208565b90506000614eb06301e1338084614208565b614ebb600185614208565b614ec59084615acf565b614ecf91906158bf565b90506000614ee18761ffff16856141dc565b90506000614ef0600186614208565b614efa8385615acf565b614f0491906158bf565b90506000614f12888761419e565b90506000614f21606488614208565b614f2b8484615acf565b614f3591906158bf565b9050614f418188614236565b9750505050505050505b949350505050565b600054610100900460ff16614f7a5760405162461bcd60e51b8152600401610d1590615b03565b61153481615166565b600054610100900460ff16614faa5760405162461bcd60e51b8152600401610d1590615b03565b6135366151b0565b600054610100900460ff16614fd95760405162461bcd60e51b8152600401610d1590615b03565b61016080546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166150235760405162461bcd60e51b8152600401610d1590615b03565b61019380546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661506d5760405162461bcd60e51b8152600401610d1590615b03565b609a6150798382615dda565b50609b6118ee8282615dda565b61508e61388c565b82615098816138d4565b156150b55760405162461bcd60e51b8152600401610d1590615a1f565b826150bf816138d4565b156150dc5760405162461bcd60e51b8152600401610d1590615a1f565b6120cd8585856151e3565b6060614f4b848460008561524b565b6150ff81614b44565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606110878383604051806060016040528060278152602001615ed760279139615326565b6000610ccf82612572565b600054610100900460ff1661518d5760405162461bcd60e51b8152600401610d1590615b03565b61012d80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166151d75760405162461bcd60e51b8152600401610d1590615b03565b60c9805460ff19169055565b6151eb611ab2565b156118ee5760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610d15565b6060824710156152ac5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610d15565b600080866001600160a01b031685876040516152c89190615e9a565b60006040518083038185875af1925050503d8060008114615305576040519150601f19603f3d011682016040523d82523d6000602084013e61530a565b606091505b509150915061531b8783838761539e565b979650505050505050565b6060600080856001600160a01b0316856040516153439190615e9a565b600060405180830381855af49150503d806000811461537e576040519150601f19603f3d011682016040523d82523d6000602084013e615383565b606091505b50915091506153948683838761539e565b9695505050505050565b6060831561540d578251600003615406576001600160a01b0385163b6154065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d15565b5081614f4b565b614f4b83838151156154225781518083602001fd5b8060405162461bcd60e51b8152600401610d159190615460565b60005b8381101561545757818101518382015260200161543f565b50506000910152565b602081526000825180602084015261547f81604085016020870161543c565b601f01601f19169190910160400192915050565b6001600160a01b038116811461153457600080fd5b600080604083850312156154bb57600080fd5b82356154c681615493565b946020939093013593505050565b6000602082840312156154e657600080fd5b813561108781615493565b600080600080600060a0868803121561550957600080fd5b853561551481615493565b9450602086013561552481615493565b9350604086013561553481615493565b9250606086013561554481615493565b9150608086013561555481615493565b809150509295509295909350565b60008060006060848603121561557757600080fd5b833561558281615493565b9250602084013561559281615493565b929592945050506040919091013590565b6000602082840312156155b557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156155f5576155f56155bc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715615624576156246155bc565b604052919050565b600067ffffffffffffffff821115615646576156466155bc565b50601f01601f191660200190565b6000806040838503121561566757600080fd5b823561567281615493565b9150602083013567ffffffffffffffff81111561568e57600080fd5b8301601f8101851361569f57600080fd5b80356156b26156ad8261562c565b6155fb565b8181528660208385010111156156c757600080fd5b816020840160208301376000602083830101528093505050509250929050565b61ffff8116811461153457600080fd5b60006020828403121561570957600080fd5b8135611087816156e7565b6000806040838503121561572757600080fd5b823561573281615493565b9150602083013561574281615493565b809150509250929050565b63ffffffff8116811461153457600080fd5b60006020828403121561577157600080fd5b81356110878161574d565b600181811c9082168061579057607f821691505b602082108103614e6157634e487b7160e01b600052602260045260246000fd5b6000602082840312156157c257600080fd5b815167ffffffffffffffff8111156157d957600080fd5b8201601f810184136157ea57600080fd5b80516157f86156ad8261562c565b81815285602083850101111561580d57600080fd5b61581e82602083016020860161543c565b95945050505050565b6702632b233b4ba3c960c51b81526000825161584a81600885016020870161543c565b9190910160080192915050565b601360fa1b81526000825161587381600185016020870161543c565b9190910160010192915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ccf57610ccf615880565b634e487b7160e01b600052603260045260246000fd5b6000826158dc57634e487b7160e01b600052601260045260246000fd5b500490565b600481106158ff57634e487b7160e01b600052602160045260246000fd5b9052565b6001600160601b038581168252841660208201526080810161592860408301856158e1565b82606083015295945050505050565b81810381811115610ccf57610ccf615880565b6001600160601b0385168152602081018490526080810161592860408301856158e1565b60006001820161598057615980615880565b5060010190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252600290820152614c3960f01b604082015260600190565b600060208284031215615a4d57600080fd5b5051919050565b848152602081018490526080810161592860408301856158e1565b634e487b7160e01b600052603160045260246000fd5b600060208284031215615a9757600080fd5b815161108781615493565b600081615ab157615ab1615880565b506000190190565b634e487b7160e01b600052600160045260246000fd5b8082028115828204841417610ccf57610ccf615880565b600060208284031215615af857600080fd5b8151611087816156e7565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215615b6057600080fd5b8151801515811461108757600080fd5b600060208284031215615b8257600080fd5b815160ff8116811461108757600080fd5b600181815b80851115615bce578160001904821115615bb457615bb4615880565b80851615615bc157918102915b93841c9390800290615b98565b509250929050565b600082615be557506001610ccf565b81615bf257506000610ccf565b8160018114615c085760028114615c1257615c2e565b6001915050610ccf565b60ff841115615c2357615c23615880565b50506001821b610ccf565b5060208310610133831016604e8410600b8410161715615c51575081810a610ccf565b615c5b8383615b93565b8060001904821115615c6f57615c6f615880565b029392505050565b60006110878383615bd6565b8281526060810161108760208301848051825260209081015163ffffffff16910152565b600060408284031215615cb957600080fd5b615cc16155d2565b8251615ccc816156e7565b8152602083015164ffffffffff81168114615ce657600080fd5b60208201529392505050565b600060408284031215615d0457600080fd5b615d0c6155d2565b825181526020830151615ce68161574d565b8251815260208084015163ffffffff16908201526080810182516040830152602083015163ffffffff166060830152611087565b8151815260208083015163ffffffff169082015260408101610ccf565b64ffffffffff828116828216039080821115615d8d57615d8d615880565b5092915050565b601f8211156118ee57600081815260208120601f850160051c81016020861015615dbb5750805b601f850160051c820191505b8181101561100457828155600101615dc7565b815167ffffffffffffffff811115615df457615df46155bc565b615e0881615e02845461577c565b84615d94565b602080601f831160018114615e3d5760008415615e255750858301515b600019600386901b1c1916600185901b178555611004565b600085815260208120601f198616915b82811015615e6c57888601518255948401946001909101908401615e4d565b5085821015615e8a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251615eac81846020870161543c565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564d58e94604d90293a1c1ad95bfe6a6e6c352c33c5774a4b6b4f4b6f7460da29c5a264697066735822122083de4bac720b6756a4a127b005ba62c6fb215167a3ea3396462d1f395ec1640564736f6c63430008120033", "libraries": { - "APRHistory": "0xd99343a49C1b5b9d6690AEa5dB3Ae0da3A9cC4c4" + "APRHistory": "0x633Fff91613e32a91bDBd0Ef30067aA3B86CBcd7" }, "devdoc": { "author": "Lila Rest (https://lila.rest)", diff --git a/contracts/hardhat/deployments/OKTC/LUSDC_Proxy.json b/contracts/hardhat/deployments/OKX_X1_testnet/LUSDC_Proxy.json similarity index 94% rename from contracts/hardhat/deployments/OKTC/LUSDC_Proxy.json rename to contracts/hardhat/deployments/OKX_X1_testnet/LUSDC_Proxy.json index 353d0eda..f5d47db5 100644 --- a/contracts/hardhat/deployments/OKTC/LUSDC_Proxy.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/LUSDC_Proxy.json @@ -1,5 +1,5 @@ { - "address": "0xecbC53e4379ABC34Da28E33Da8aEeC54570d2cD1", + "address": "0x1e1B0bB6C182eFD7d64cdAbbF3A3E315dE26E259", "abi": [ { "inputs": [ @@ -71,51 +71,51 @@ "type": "receive" } ], - "transactionHash": "0x9cd83a2da8774ef237a89ea613548fa17b1611901f4e2288ec23035c1c59916d", + "transactionHash": "0xf8af5ab8bb9964b1f25cab7a3a99654cba65e3d1746dbe1de0bee02f4694fb45", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0xecbC53e4379ABC34Da28E33Da8aEeC54570d2cD1", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0x1e1B0bB6C182eFD7d64cdAbbF3A3E315dE26E259", "transactionIndex": 0, - "gasUsed": "712234", - "logsBloom": "0x00000000000000000020000000000000400000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000400000000000000000000000000000000080000040000000000000000000000000000000000000000404000000000000000000000000000000000000000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x546b8caa1cfa9e113a804bf869908cc9684da9d0d4d820f3165ba3f7bcafb080", - "transactionHash": "0x9cd83a2da8774ef237a89ea613548fa17b1611901f4e2288ec23035c1c59916d", + "gasUsed": "652019", + "logsBloom": "0x00000000000000000000000000000000400000000000000000010000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000200400000000000000000100000000000000800000000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x412daf954f9582330cf45d1f4c96bb0fbb4b83b5d5c7eb4f76675759ca0cb198", + "transactionHash": "0xf8af5ab8bb9964b1f25cab7a3a99654cba65e3d1746dbe1de0bee02f4694fb45", "logs": [ { "transactionIndex": 0, - "blockNumber": 27819978, - "transactionHash": "0x9cd83a2da8774ef237a89ea613548fa17b1611901f4e2288ec23035c1c59916d", - "address": "0xecbC53e4379ABC34Da28E33Da8aEeC54570d2cD1", + "blockNumber": 10172276, + "transactionHash": "0xf8af5ab8bb9964b1f25cab7a3a99654cba65e3d1746dbe1de0bee02f4694fb45", + "address": "0x1e1B0bB6C182eFD7d64cdAbbF3A3E315dE26E259", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000002d5b0d8fcff3634791e235054a93078d15f4fc52" + "0x0000000000000000000000009466891d9e77ead21d8445350c51ecd35fd170bf" ], "data": "0x", "logIndex": 0, - "blockHash": "0x546b8caa1cfa9e113a804bf869908cc9684da9d0d4d820f3165ba3f7bcafb080" + "blockHash": "0x412daf954f9582330cf45d1f4c96bb0fbb4b83b5d5c7eb4f76675759ca0cb198" }, { "transactionIndex": 0, - "blockNumber": 27819978, - "transactionHash": "0x9cd83a2da8774ef237a89ea613548fa17b1611901f4e2288ec23035c1c59916d", - "address": "0xecbC53e4379ABC34Da28E33Da8aEeC54570d2cD1", + "blockNumber": 10172276, + "transactionHash": "0xf8af5ab8bb9964b1f25cab7a3a99654cba65e3d1746dbe1de0bee02f4694fb45", + "address": "0x1e1B0bB6C182eFD7d64cdAbbF3A3E315dE26E259", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001", "logIndex": 1, - "blockHash": "0x546b8caa1cfa9e113a804bf869908cc9684da9d0d4d820f3165ba3f7bcafb080" + "blockHash": "0x412daf954f9582330cf45d1f4c96bb0fbb4b83b5d5c7eb4f76675759ca0cb198" } ], - "blockNumber": 27819978, - "cumulativeGasUsed": "712234", + "blockNumber": 10172276, + "cumulativeGasUsed": "652019", "status": 1, "byzantium": true }, "args": [ - "0x2D5B0d8FCFf3634791E235054a93078D15F4FC52", - "0x1459457a0000000000000000000000002646e026ccf356850ec54e9a522b30b3db679d7100000000000000000000000074774f077c9f60c0cb7e68534c4749f94ef06a3c0000000000000000000000008a0d0714c45b9ba78aead7601390748f6f8f5452000000000000000000000000dc2051273bdeb81739e3dfa67b7df7d7a8e98901000000000000000000000000f8616348fb444479bc84f65f61c410843407860d" + "0x9466891d9E77eAD21D8445350c51ecD35fd170bF", + "0x1459457a0000000000000000000000002547a36186ecc16c25649b9234d4937216e45978000000000000000000000000696c4b4f35ee60e110cdae5b3ebd78a5597f6ac6000000000000000000000000c44395ec149c6743a268a901a38e5b02dc87d10c000000000000000000000000045f9e9d2225319df5e0909007fe7979e2674a320000000000000000000000007c3be0fa5a20ad361685932a50be9dec6f302db6" ], "numDeployments": 1, "solcInputHash": "0e89febeebc7444140de8e67c9067d2c", diff --git a/contracts/hardhat/deployments/OKTC/PreMining.json b/contracts/hardhat/deployments/OKX_X1_testnet/PreMining.json similarity index 99% rename from contracts/hardhat/deployments/OKTC/PreMining.json rename to contracts/hardhat/deployments/OKX_X1_testnet/PreMining.json index 231b3631..09e34227 100644 --- a/contracts/hardhat/deployments/OKTC/PreMining.json +++ b/contracts/hardhat/deployments/OKX_X1_testnet/PreMining.json @@ -1,5 +1,5 @@ { - "address": "0xbB7acA39EDFCdeBcecb738b77251C17e78318AbE", + "address": "0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9", "abi": [ { "inputs": [ @@ -596,39 +596,39 @@ "type": "function" } ], - "transactionHash": "0xe8716fcab6042177a59ecd23e11d6ca6e50a88c017cac245fc2ca2365c25cb0b", + "transactionHash": "0xb5a81f8866729118794e06c9adc1d93ed55875686f69ea2aed7f7eabf809b9fd", "receipt": { "to": null, - "from": "0xE828d04fd7b0ad97000d44f1122D08cefc49f5b0", - "contractAddress": "0xbB7acA39EDFCdeBcecb738b77251C17e78318AbE", + "from": "0xB8A2b9DA0b39b9D41907F2Db44cfD0d67d7237c4", + "contractAddress": "0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9", "transactionIndex": 0, - "gasUsed": "1900105", - "logsBloom": "0x00000000000000000000004000000000000000000000000000800000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000100000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000020000000000000000000000000000000000000000000000080000000000000000000", - "blockHash": "0x8f5d0683951eddebc3c9a35a05d836a12af0f8b65696275337e559ed10b238fe", - "transactionHash": "0xe8716fcab6042177a59ecd23e11d6ca6e50a88c017cac245fc2ca2365c25cb0b", + "gasUsed": "1907005", + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000028000000000000000000800000200000000000000000000000000400000000000400000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000020000000000000000400000000000000000000000000000000000000000000000000", + "blockHash": "0x0b4ab0cd9b1a51c71ccb09865f85db6b32d3c2509cd8a19737a8d444564dbc13", + "transactionHash": "0xb5a81f8866729118794e06c9adc1d93ed55875686f69ea2aed7f7eabf809b9fd", "logs": [ { "transactionIndex": 0, - "blockNumber": 27819988, - "transactionHash": "0xe8716fcab6042177a59ecd23e11d6ca6e50a88c017cac245fc2ca2365c25cb0b", - "address": "0xbB7acA39EDFCdeBcecb738b77251C17e78318AbE", + "blockNumber": 10172300, + "transactionHash": "0xb5a81f8866729118794e06c9adc1d93ed55875686f69ea2aed7f7eabf809b9fd", + "address": "0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9", "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000e828d04fd7b0ad97000d44f1122d08cefc49f5b0" + "0x000000000000000000000000b8a2b9da0b39b9d41907f2db44cfd0d67d7237c4" ], "data": "0x", "logIndex": 0, - "blockHash": "0x8f5d0683951eddebc3c9a35a05d836a12af0f8b65696275337e559ed10b238fe" + "blockHash": "0x0b4ab0cd9b1a51c71ccb09865f85db6b32d3c2509cd8a19737a8d444564dbc13" } ], - "blockNumber": 27819988, - "cumulativeGasUsed": "1900105", + "blockNumber": 10172300, + "cumulativeGasUsed": "1907005", "status": 1, "byzantium": true }, "args": [ - "0xecbC53e4379ABC34Da28E33Da8aEeC54570d2cD1", + "0x1e1B0bB6C182eFD7d64cdAbbF3A3E315dE26E259", "1125000000000000000000000", "4000000000000", 3, diff --git a/contracts/hardhat/deployments/OKTC/solcInputs/0e89febeebc7444140de8e67c9067d2c.json b/contracts/hardhat/deployments/OKX_X1_testnet/solcInputs/0e89febeebc7444140de8e67c9067d2c.json similarity index 100% rename from contracts/hardhat/deployments/OKTC/solcInputs/0e89febeebc7444140de8e67c9067d2c.json rename to contracts/hardhat/deployments/OKX_X1_testnet/solcInputs/0e89febeebc7444140de8e67c9067d2c.json diff --git a/contracts/hardhat/deployments/OKTC/solcInputs/289d96c4eee8f123d72afd6fe6bc7791.json b/contracts/hardhat/deployments/OKX_X1_testnet/solcInputs/289d96c4eee8f123d72afd6fe6bc7791.json similarity index 100% rename from contracts/hardhat/deployments/OKTC/solcInputs/289d96c4eee8f123d72afd6fe6bc7791.json rename to contracts/hardhat/deployments/OKX_X1_testnet/solcInputs/289d96c4eee8f123d72afd6fe6bc7791.json diff --git a/hardhat.config.cts b/hardhat.config.cts index 771bc4e7..93907a69 100644 --- a/hardhat.config.cts +++ b/hardhat.config.cts @@ -88,9 +88,9 @@ const config: HardhatUserConfig = { }, }, }, - OKTC: { - chainId: 65, - url: "https://exchaintestrpc.okex.org", + OKX_X1_testnet: { + chainId: 195, + url: "https://testrpc.x1.tech", accounts: deployerPrivateKey ? [deployerPrivateKey] : [], saveDeployments: true, }, diff --git a/package.json b/package.json index f8b0a13e..ab72802a 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "remixicon": "^4", "sharp": "^0", "viem": "^2", - "wagmi": "^2", + "wagmi": "^2.5.7", "zod": "^3.22.4" }, "devDependencies": { diff --git a/scripts/extract-abis.mts b/scripts/extract-abis.mts index 429e6673..2b3f513a 100644 --- a/scripts/extract-abis.mts +++ b/scripts/extract-abis.mts @@ -45,4 +45,6 @@ const extractABIsFromDirectory = async (directory: string) => { }; await extractABIsFromDirectory(sourceDirectory); -console.log("ABIs extracted successfully!"); \ No newline at end of file +console.log("ABIs extracted successfully!"); + + diff --git a/src/generated.ts b/src/generated.ts index a87a92a3..643aa9c9 100644 --- a/src/generated.ts +++ b/src/generated.ts @@ -18,13 +18,13 @@ import { export const genericErc20Abi = [ { - stateMutability: 'nonpayable', type: 'constructor', inputs: [ { name: 'name', internalType: 'string', type: 'string' }, { name: 'symbol', internalType: 'string', type: 'string' }, { name: 'decimals_', internalType: 'uint8', type: 'uint8' }, ], + stateMutability: 'nonpayable', }, { type: 'event', @@ -67,7 +67,6 @@ export const genericErc20Abi = [ name: 'Transfer', }, { - stateMutability: 'view', type: 'function', inputs: [ { name: 'owner', internalType: 'address', type: 'address' }, @@ -75,9 +74,9 @@ export const genericErc20Abi = [ ], name: 'allowance', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'spender', internalType: 'address', type: 'address' }, @@ -85,23 +84,23 @@ export const genericErc20Abi = [ ], name: 'approve', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: 'account', internalType: 'address', type: 'address' }], name: 'balanceOf', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }], name: 'burn', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'account', internalType: 'address', type: 'address' }, @@ -109,16 +108,16 @@ export const genericErc20Abi = [ ], name: 'burnFrom', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'decimals', outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'spender', internalType: 'address', type: 'address' }, @@ -126,9 +125,9 @@ export const genericErc20Abi = [ ], name: 'decreaseAllowance', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'spender', internalType: 'address', type: 'address' }, @@ -136,44 +135,44 @@ export const genericErc20Abi = [ ], name: 'increaseAllowance', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }], name: 'mint', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'name', outputs: [{ name: '', internalType: 'string', type: 'string' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [{ name: 'decimals_', internalType: 'uint8', type: 'uint8' }], name: 'setDecimals', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'symbol', outputs: [{ name: '', internalType: 'string', type: 'string' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'totalSupply', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'to', internalType: 'address', type: 'address' }, @@ -181,9 +180,9 @@ export const genericErc20Abi = [ ], name: 'transfer', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'from', internalType: 'address', type: 'address' }, @@ -192,6 +191,7 @@ export const genericErc20Abi = [ ], name: 'transferFrom', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'nonpayable', }, ] as const @@ -200,6 +200,7 @@ export const genericErc20Abi = [ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -207,7 +208,7 @@ export const genericErc20Abi = [ * - [__View Contract on Arbitrum Goerli Arbiscan__](https://goerli.arbiscan.io/address/0x1549647606A71B2a79b85AEb54631b8eA2a1939a) */ export const globalBlacklistAbi = [ - { stateMutability: 'nonpayable', type: 'constructor', inputs: [] }, + { type: 'constructor', inputs: [], stateMutability: 'nonpayable' }, { type: 'event', anonymous: false, @@ -281,81 +282,80 @@ export const globalBlacklistAbi = [ name: 'Upgraded', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [{ name: 'account', internalType: 'address', type: 'address' }], name: 'blacklist', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'globalOwner', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'globalOwner_', internalType: 'address', type: 'address' }, ], name: 'initialize', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: 'account', internalType: 'address', type: 'address' }], name: 'isBlacklisted', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'owner', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'proxiableUUID', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'renounceOwnership', outputs: [], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }], name: 'transferOwnership', outputs: [], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [{ name: 'account', internalType: 'address', type: 'address' }], name: 'unBlacklist', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'newImplementation', internalType: 'address', type: 'address' }, ], name: 'upgradeTo', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'payable', type: 'function', inputs: [ { name: 'newImplementation', internalType: 'address', type: 'address' }, @@ -363,10 +363,12 @@ export const globalBlacklistAbi = [ ], name: 'upgradeToAndCall', outputs: [], + stateMutability: 'payable', }, ] as const /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -374,7 +376,7 @@ export const globalBlacklistAbi = [ * - [__View Contract on Arbitrum Goerli Arbiscan__](https://goerli.arbiscan.io/address/0x1549647606A71B2a79b85AEb54631b8eA2a1939a) */ export const globalBlacklistAddress = { - 65: '0x8a0D0714c45B9ba78AEad7601390748F6f8f5452', + 195: '0xc44395eC149C6743A268A901a38e5b02dc87D10C', 31337: '0x5FC8d32690cc91D4c39d9d3abcBD16989F875707', 42161: '0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350', 59140: '0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf', @@ -383,6 +385,7 @@ export const globalBlacklistAddress = { } as const /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -399,6 +402,7 @@ export const globalBlacklistConfig = { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -406,7 +410,7 @@ export const globalBlacklistConfig = { * - [__View Contract on Arbitrum Goerli Arbiscan__](https://goerli.arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) */ export const globalOwnerAbi = [ - { stateMutability: 'nonpayable', type: 'constructor', inputs: [] }, + { type: 'constructor', inputs: [], stateMutability: 'nonpayable' }, { type: 'event', anonymous: false, @@ -499,65 +503,64 @@ export const globalOwnerAbi = [ name: 'Upgraded', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'acceptOwnership', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'initialize', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'owner', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'pendingOwner', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'proxiableUUID', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'renounceOwnership', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }], name: 'transferOwnership', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'newImplementation', internalType: 'address', type: 'address' }, ], name: 'upgradeTo', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'payable', type: 'function', inputs: [ { name: 'newImplementation', internalType: 'address', type: 'address' }, @@ -565,10 +568,12 @@ export const globalOwnerAbi = [ ], name: 'upgradeToAndCall', outputs: [], + stateMutability: 'payable', }, ] as const /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -576,7 +581,7 @@ export const globalOwnerAbi = [ * - [__View Contract on Arbitrum Goerli Arbiscan__](https://goerli.arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) */ export const globalOwnerAddress = { - 65: '0x2646E026CCF356850eC54E9a522B30b3db679D71', + 195: '0x2547A36186eCC16C25649B9234D4937216e45978', 31337: '0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512', 42161: '0xe4Af4573bFc5F04D8b84c61744de8A94059f2462', 59140: '0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6', @@ -585,6 +590,7 @@ export const globalOwnerAddress = { } as const /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -601,6 +607,7 @@ export const globalOwnerConfig = { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -608,7 +615,7 @@ export const globalOwnerConfig = { * - [__View Contract on Arbitrum Goerli Arbiscan__](https://goerli.arbiscan.io/address/0x06f54B7f27eEC56616b951598BaA3B84D7660AB4) */ export const globalPauseAbi = [ - { stateMutability: 'nonpayable', type: 'constructor', inputs: [] }, + { type: 'constructor', inputs: [], stateMutability: 'nonpayable' }, { type: 'event', anonymous: false, @@ -708,81 +715,80 @@ export const globalPauseAbi = [ name: 'Upgraded', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'globalOwner', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'globalOwner_', internalType: 'address', type: 'address' }, ], name: 'initialize', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'owner', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'pause', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'paused', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'proxiableUUID', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'renounceOwnership', outputs: [], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }], name: 'transferOwnership', outputs: [], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'unpause', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'newImplementation', internalType: 'address', type: 'address' }, ], name: 'upgradeTo', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'payable', type: 'function', inputs: [ { name: 'newImplementation', internalType: 'address', type: 'address' }, @@ -790,10 +796,12 @@ export const globalPauseAbi = [ ], name: 'upgradeToAndCall', outputs: [], + stateMutability: 'payable', }, ] as const /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -801,7 +809,7 @@ export const globalPauseAbi = [ * - [__View Contract on Arbitrum Goerli Arbiscan__](https://goerli.arbiscan.io/address/0x06f54B7f27eEC56616b951598BaA3B84D7660AB4) */ export const globalPauseAddress = { - 65: '0x74774f077c9f60c0cb7e68534C4749f94ef06a3c', + 195: '0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6', 31337: '0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9', 42161: '0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB', 59140: '0x4fB551213757619558A93a599a08524e9Dd59C67', @@ -810,6 +818,7 @@ export const globalPauseAddress = { } as const /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -827,7 +836,6 @@ export const globalPauseConfig = { export const iTransfersListenerAbi = [ { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'from', internalType: 'address', type: 'address' }, @@ -836,6 +844,7 @@ export const iTransfersListenerAbi = [ ], name: 'onLTokenTransfer', outputs: [], + stateMutability: 'nonpayable', }, ] as const @@ -844,6 +853,7 @@ export const iTransfersListenerAbi = [ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -890,42 +900,41 @@ export const ldyStakingAbi = [ name: 'OwnershipTransferred', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'acceptOwnership', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: '', internalType: 'address', type: 'address' }], name: 'highTierAccounts', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'owner', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'pendingOwner', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'renounceOwnership', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'account', internalType: 'address', type: 'address' }, @@ -933,24 +942,26 @@ export const ldyStakingAbi = [ ], name: 'setHighTierAccount', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: 'account', internalType: 'address', type: 'address' }], name: 'tierOf', outputs: [{ name: 'tier', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }], name: 'transferOwnership', outputs: [], + stateMutability: 'nonpayable', }, ] as const /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -958,7 +969,7 @@ export const ldyStakingAbi = [ * - [__View Contract on Arbitrum Goerli Arbiscan__](https://goerli.arbiscan.io/address/0x5BFFC5303719f0dC6050a2D8042936714109985f) */ export const ldyStakingAddress = { - 65: '0xdc2051273BdEb81739E3dfa67B7df7D7A8e98901', + 195: '0x045f9E9d2225319dF5E0909007FE7979E2674a32', 31337: '0xa513E6E4b8f2a923D98304ec87F64353C4D5C853', 42161: '0x4e80beDBD58b084a8946b7BA6814c28906Be2d02', 59140: '0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6', @@ -967,6 +978,7 @@ export const ldyStakingAddress = { } as const /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -1212,7 +1224,6 @@ export const lTokenAbi = [ name: 'Upgraded', }, { - stateMutability: 'view', type: 'function', inputs: [ { name: 'owner', internalType: 'address', type: 'address' }, @@ -1220,9 +1231,9 @@ export const lTokenAbi = [ ], name: 'allowance', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'spender', internalType: 'address', type: 'address' }, @@ -1230,37 +1241,37 @@ export const lTokenAbi = [ ], name: 'approve', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: 'account', internalType: 'address', type: 'address' }], name: 'balanceOf', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [{ name: 'requestId', internalType: 'uint256', type: 'uint256' }], name: 'cancelWithdrawalRequest', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'claimFees', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'decimals', outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'spender', internalType: 'address', type: 'address' }, @@ -1268,16 +1279,16 @@ export const lTokenAbi = [ ], name: 'decreaseAllowance', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }], name: 'deposit', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'pure', type: 'function', inputs: [ { name: 'account', internalType: 'address', type: 'address' }, @@ -1285,16 +1296,16 @@ export const lTokenAbi = [ ], name: 'depositFor', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'pure', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'feesRateUD7x3', outputs: [{ name: '', internalType: 'uint32', type: 'uint32' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], name: 'frozenRequests', @@ -1302,30 +1313,30 @@ export const lTokenAbi = [ { name: 'account', internalType: 'address', type: 'address' }, { name: 'amount', internalType: 'uint96', type: 'uint96' }, ], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'fund', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'getAPR', outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'getExpectedRetained', outputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [ { name: 'account', internalType: 'address', type: 'address' }, @@ -1336,30 +1347,30 @@ export const lTokenAbi = [ { name: 'withdrawnAmount', internalType: 'uint256', type: 'uint256' }, { name: 'fees', internalType: 'uint256', type: 'uint256' }, ], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'globalBlacklist', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'globalOwner', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'globalPause', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'spender', internalType: 'address', type: 'address' }, @@ -1367,9 +1378,9 @@ export const lTokenAbi = [ ], name: 'increaseAllowance', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'globalOwner_', internalType: 'address', type: 'address' }, @@ -1380,99 +1391,99 @@ export const lTokenAbi = [ ], name: 'initialize', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }], name: 'instantWithdrawal', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'invested', outputs: [ { name: '', internalType: 'contract IERC20Upgradeable', type: 'address' }, ], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'ldyStaking', outputs: [ { name: '', internalType: 'contract LDYStaking', type: 'address' }, ], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'listenerContract', internalType: 'address', type: 'address' }, ], name: 'listenToTransfers', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'name', outputs: [{ name: '', internalType: 'string', type: 'string' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'owner', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'paused', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [{ name: 'requestId', internalType: 'uint256', type: 'uint256' }], name: 'processBigQueuedRequest', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'processQueuedRequests', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'proxiableUUID', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: 'account', internalType: 'address', type: 'address' }], name: 'realBalanceOf', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'realTotalSupply', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'tokenAddress', internalType: 'address', type: 'address' }, @@ -1480,51 +1491,51 @@ export const lTokenAbi = [ ], name: 'recoverERC20', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'recoverUnderlying', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'renounceOwnership', outputs: [], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }], name: 'repatriate', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'payable', type: 'function', inputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }], name: 'requestWithdrawal', outputs: [], + stateMutability: 'payable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'retentionRateUD7x3', outputs: [{ name: '', internalType: 'uint32', type: 'uint32' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: '', internalType: 'address', type: 'address' }], name: 'rewardsRedirectsFromTo', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [ { name: '', internalType: 'address', type: 'address' }, @@ -1532,61 +1543,61 @@ export const lTokenAbi = [ ], name: 'rewardsRedirectsToFrom', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [{ name: 'aprUD7x3', internalType: 'uint16', type: 'uint16' }], name: 'setAPR', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'feesRateUD7x3_', internalType: 'uint32', type: 'uint32' }, ], name: 'setFeesRate', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'fund_', internalType: 'address payable', type: 'address' }, ], name: 'setFund', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'ldyStakingAddress', internalType: 'address', type: 'address' }, ], name: 'setLDYStaking', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'retentionRateUD7x3_', internalType: 'uint32', type: 'uint32' }, ], name: 'setRetentionRate', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'withdrawer_', internalType: 'address payable', type: 'address' }, ], name: 'setWithdrawer', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'from', internalType: 'address', type: 'address' }, @@ -1594,9 +1605,9 @@ export const lTokenAbi = [ ], name: 'startRewardsRedirection', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'from', internalType: 'address', type: 'address' }, @@ -1604,30 +1615,30 @@ export const lTokenAbi = [ ], name: 'stopRewardsRedirection', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'symbol', outputs: [{ name: '', internalType: 'string', type: 'string' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'totalQueued', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'totalSupply', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'to', internalType: 'address', type: 'address' }, @@ -1635,9 +1646,9 @@ export const lTokenAbi = [ ], name: 'transfer', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'from', internalType: 'address', type: 'address' }, @@ -1646,16 +1657,16 @@ export const lTokenAbi = [ ], name: 'transferFrom', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }], name: 'transferOwnership', outputs: [], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], name: 'transfersListeners', @@ -1666,50 +1677,50 @@ export const lTokenAbi = [ type: 'address', }, ], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'unclaimedFees', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'underlying', outputs: [ { name: '', internalType: 'contract IERC20Upgradeable', type: 'address' }, ], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'listenerContract', internalType: 'address', type: 'address' }, ], name: 'unlistenToTransfers', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: 'account', internalType: 'address', type: 'address' }], name: 'unmintedRewardsOf', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'newImplementation', internalType: 'address', type: 'address' }, ], name: 'upgradeTo', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'payable', type: 'function', inputs: [ { name: 'newImplementation', internalType: 'address', type: 'address' }, @@ -1717,16 +1728,16 @@ export const lTokenAbi = [ ], name: 'upgradeToAndCall', outputs: [], + stateMutability: 'payable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'usableUnderlyings', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'pure', type: 'function', inputs: [ { name: 'account', internalType: 'address', type: 'address' }, @@ -1734,9 +1745,9 @@ export const lTokenAbi = [ ], name: 'withdrawTo', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'pure', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], name: 'withdrawalQueue', @@ -1744,20 +1755,21 @@ export const lTokenAbi = [ { name: 'account', internalType: 'address', type: 'address' }, { name: 'amount', internalType: 'uint96', type: 'uint96' }, ], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'withdrawalQueueCursor', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'withdrawer', outputs: [{ name: '', internalType: 'address payable', type: 'address' }], + stateMutability: 'view', }, ] as const @@ -1766,6 +1778,7 @@ export const lTokenAbi = [ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -1773,7 +1786,7 @@ export const lTokenAbi = [ * - [__View Contract on Arbitrum Goerli Arbiscan__](https://goerli.arbiscan.io/address/0x1dA817E33C0dB209C7b508B79F9dac4480f94522) */ export const lTokenSignalerAbi = [ - { stateMutability: 'nonpayable', type: 'constructor', inputs: [] }, + { type: 'constructor', inputs: [], stateMutability: 'nonpayable' }, { type: 'event', anonymous: false, @@ -1860,69 +1873,68 @@ export const lTokenSignalerAbi = [ name: 'Upgraded', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'globalOwner', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'globalOwner_', internalType: 'address', type: 'address' }, ], name: 'initialize', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'owner', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'proxiableUUID', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'renounceOwnership', outputs: [], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'lTokenAddress', internalType: 'address', type: 'address' }, ], name: 'signalLToken', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }], name: 'transferOwnership', outputs: [], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'newImplementation', internalType: 'address', type: 'address' }, ], name: 'upgradeTo', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'payable', type: 'function', inputs: [ { name: 'newImplementation', internalType: 'address', type: 'address' }, @@ -1930,10 +1942,12 @@ export const lTokenSignalerAbi = [ ], name: 'upgradeToAndCall', outputs: [], + stateMutability: 'payable', }, ] as const /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -1941,7 +1955,7 @@ export const lTokenSignalerAbi = [ * - [__View Contract on Arbitrum Goerli Arbiscan__](https://goerli.arbiscan.io/address/0x1dA817E33C0dB209C7b508B79F9dac4480f94522) */ export const lTokenSignalerAddress = { - 65: '0x257E5913605a21561e552171AED2D8C3fa7335aB', + 195: '0x6A88b87aA4865e8d67D7CD32178bA03F885a088a', 31337: '0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0', 42161: '0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1', 59140: '0x04a678103bE57c3d81100fe08e43C94e50adC37B', @@ -1950,6 +1964,7 @@ export const lTokenSignalerAddress = { } as const /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -1966,13 +1981,13 @@ export const lTokenSignalerConfig = { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) */ export const preMiningAbi = [ { - stateMutability: 'nonpayable', type: 'constructor', inputs: [ { name: 'lTokenAddress_', internalType: 'address', type: 'address' }, @@ -1982,6 +1997,7 @@ export const preMiningAbi = [ { name: 'maxLockDuration_', internalType: 'uint8', type: 'uint8' }, { name: 'vestingDuration_', internalType: 'uint8', type: 'uint8' }, ], + stateMutability: 'nonpayable', }, { type: 'event', @@ -2073,14 +2089,13 @@ export const preMiningAbi = [ name: 'Unpaused', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'acceptOwnership', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: '', internalType: 'address', type: 'address' }], name: 'accountsLocks', @@ -2091,86 +2106,86 @@ export const preMiningAbi = [ { name: 'claimedRewards', internalType: 'uint216', type: 'uint216' }, { name: 'lockEndTimestamp', internalType: 'uint40', type: 'uint40' }, ], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: 'account', internalType: 'address', type: 'address' }], name: 'availableToClaim', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'claimPhaseStartTimestamp', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'claimRewards', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: 'account', internalType: 'address', type: 'address' }], name: 'eligibleRewardsOf', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'endDepositPhase', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'hasClaimPhaseStarted', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'hasDepositPhaseEnded', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'hasRecoveryPhaseStarted', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'instantUnlock', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'lToken', outputs: [{ name: '', internalType: 'contract LToken', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'ldyToken', outputs: [{ name: '', internalType: 'contract IERC20', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'amount', internalType: 'uint256', type: 'uint256' }, @@ -2178,79 +2193,79 @@ export const preMiningAbi = [ ], name: 'lock', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'lockedHardCap', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'maxDistributedLDY', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'maxLockDuration', outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'maxWeight', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'minLockDuration', outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'owner', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'pause', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'paused', outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'pendingOwner', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'processUnlockRequests', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'tokenAddress', internalType: 'address', type: 'address' }, @@ -2258,108 +2273,111 @@ export const preMiningAbi = [ ], name: 'recoverERC20', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'renounceOwnership', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'payable', type: 'function', inputs: [], name: 'requestUnlock', outputs: [], + stateMutability: 'payable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [ { name: 'ldyTokenAddress', internalType: 'address', type: 'address' }, ], name: 'setLDYToken', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'startClaimPhase', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'startRecoveryPhase', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'totalLocked', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }], name: 'transferOwnership', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'underlyingToken', outputs: [{ name: '', internalType: 'contract IERC20', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], name: 'unlockRequests', outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'unlockRequestsCursor', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', }, { - stateMutability: 'nonpayable', type: 'function', inputs: [], name: 'unpause', outputs: [], + stateMutability: 'nonpayable', }, { - stateMutability: 'view', type: 'function', inputs: [], name: 'vestingDuration', outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }], + stateMutability: 'view', }, ] as const /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) */ export const preMiningAddress = { - 65: '0xbB7acA39EDFCdeBcecb738b77251C17e78318AbE', + 195: '0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9', 31337: '0x9A676e781A523b5d0C0e43731313A708CB607508', 42161: '0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c', 59144: '0xd54d564606611A3502FE8909bBD3075dbeb77813', } as const /** + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -2626,6 +2644,7 @@ export const useWatchGenericErc20TransferEvent = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalBlacklistAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2640,6 +2659,7 @@ export const useReadGlobalBlacklist = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"globalOwner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2656,6 +2676,7 @@ export const useReadGlobalBlacklistGlobalOwner = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"isBlacklisted"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2672,6 +2693,7 @@ export const useReadGlobalBlacklistIsBlacklisted = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"owner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2687,6 +2709,7 @@ export const useReadGlobalBlacklistOwner = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"proxiableUUID"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2703,6 +2726,7 @@ export const useReadGlobalBlacklistProxiableUuid = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2719,6 +2743,7 @@ export const useReadGlobalBlacklistRenounceOwnership = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2735,6 +2760,7 @@ export const useReadGlobalBlacklistTransferOwnership = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalBlacklistAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2749,6 +2775,7 @@ export const useWriteGlobalBlacklist = /*#__PURE__*/ createUseWriteContract({ /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"blacklist"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2765,6 +2792,7 @@ export const useWriteGlobalBlacklistBlacklist = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"initialize"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2781,6 +2809,7 @@ export const useWriteGlobalBlacklistInitialize = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"unBlacklist"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2797,6 +2826,7 @@ export const useWriteGlobalBlacklistUnBlacklist = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"upgradeTo"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2813,6 +2843,7 @@ export const useWriteGlobalBlacklistUpgradeTo = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"upgradeToAndCall"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2829,6 +2860,7 @@ export const useWriteGlobalBlacklistUpgradeToAndCall = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalBlacklistAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2844,6 +2876,7 @@ export const useSimulateGlobalBlacklist = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"blacklist"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2860,6 +2893,7 @@ export const useSimulateGlobalBlacklistBlacklist = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"initialize"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2876,6 +2910,7 @@ export const useSimulateGlobalBlacklistInitialize = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"unBlacklist"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2892,6 +2927,7 @@ export const useSimulateGlobalBlacklistUnBlacklist = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"upgradeTo"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2908,6 +2944,7 @@ export const useSimulateGlobalBlacklistUpgradeTo = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"upgradeToAndCall"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2924,6 +2961,7 @@ export const useSimulateGlobalBlacklistUpgradeToAndCall = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalBlacklistAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2939,6 +2977,7 @@ export const useWatchGlobalBlacklistEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalBlacklistAbi}__ and `eventName` set to `"AdminChanged"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2955,6 +2994,7 @@ export const useWatchGlobalBlacklistAdminChangedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalBlacklistAbi}__ and `eventName` set to `"BeaconUpgraded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2971,6 +3011,7 @@ export const useWatchGlobalBlacklistBeaconUpgradedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalBlacklistAbi}__ and `eventName` set to `"Initialized"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -2987,6 +3028,7 @@ export const useWatchGlobalBlacklistInitializedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalBlacklistAbi}__ and `eventName` set to `"OwnershipTransferred"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -3003,6 +3045,7 @@ export const useWatchGlobalBlacklistOwnershipTransferredEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalBlacklistAbi}__ and `eventName` set to `"Upgraded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -3019,6 +3062,7 @@ export const useWatchGlobalBlacklistUpgradedEvent = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalOwnerAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3033,6 +3077,7 @@ export const useReadGlobalOwner = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"owner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3048,6 +3093,7 @@ export const useReadGlobalOwnerOwner = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"pendingOwner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3064,6 +3110,7 @@ export const useReadGlobalOwnerPendingOwner = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"proxiableUUID"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3080,6 +3127,7 @@ export const useReadGlobalOwnerProxiableUuid = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalOwnerAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3094,6 +3142,7 @@ export const useWriteGlobalOwner = /*#__PURE__*/ createUseWriteContract({ /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"acceptOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3110,6 +3159,7 @@ export const useWriteGlobalOwnerAcceptOwnership = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"initialize"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3126,6 +3176,7 @@ export const useWriteGlobalOwnerInitialize = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3142,6 +3193,7 @@ export const useWriteGlobalOwnerRenounceOwnership = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3158,6 +3210,7 @@ export const useWriteGlobalOwnerTransferOwnership = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"upgradeTo"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3174,6 +3227,7 @@ export const useWriteGlobalOwnerUpgradeTo = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"upgradeToAndCall"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3190,6 +3244,7 @@ export const useWriteGlobalOwnerUpgradeToAndCall = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalOwnerAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3204,6 +3259,7 @@ export const useSimulateGlobalOwner = /*#__PURE__*/ createUseSimulateContract({ /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"acceptOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3220,6 +3276,7 @@ export const useSimulateGlobalOwnerAcceptOwnership = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"initialize"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3236,6 +3293,7 @@ export const useSimulateGlobalOwnerInitialize = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3252,6 +3310,7 @@ export const useSimulateGlobalOwnerRenounceOwnership = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3268,6 +3327,7 @@ export const useSimulateGlobalOwnerTransferOwnership = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"upgradeTo"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3284,6 +3344,7 @@ export const useSimulateGlobalOwnerUpgradeTo = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"upgradeToAndCall"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3300,6 +3361,7 @@ export const useSimulateGlobalOwnerUpgradeToAndCall = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalOwnerAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3315,6 +3377,7 @@ export const useWatchGlobalOwnerEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalOwnerAbi}__ and `eventName` set to `"AdminChanged"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3331,6 +3394,7 @@ export const useWatchGlobalOwnerAdminChangedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalOwnerAbi}__ and `eventName` set to `"BeaconUpgraded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3347,6 +3411,7 @@ export const useWatchGlobalOwnerBeaconUpgradedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalOwnerAbi}__ and `eventName` set to `"Initialized"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3363,6 +3428,7 @@ export const useWatchGlobalOwnerInitializedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalOwnerAbi}__ and `eventName` set to `"OwnershipTransferStarted"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3379,6 +3445,7 @@ export const useWatchGlobalOwnerOwnershipTransferStartedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalOwnerAbi}__ and `eventName` set to `"OwnershipTransferred"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3395,6 +3462,7 @@ export const useWatchGlobalOwnerOwnershipTransferredEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalOwnerAbi}__ and `eventName` set to `"Upgraded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -3411,6 +3479,7 @@ export const useWatchGlobalOwnerUpgradedEvent = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalPauseAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3425,6 +3494,7 @@ export const useReadGlobalPause = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"globalOwner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3441,6 +3511,7 @@ export const useReadGlobalPauseGlobalOwner = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"owner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3456,6 +3527,7 @@ export const useReadGlobalPauseOwner = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"paused"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3471,6 +3543,7 @@ export const useReadGlobalPausePaused = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"proxiableUUID"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3487,6 +3560,7 @@ export const useReadGlobalPauseProxiableUuid = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3503,6 +3577,7 @@ export const useReadGlobalPauseRenounceOwnership = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3519,6 +3594,7 @@ export const useReadGlobalPauseTransferOwnership = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalPauseAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3533,6 +3609,7 @@ export const useWriteGlobalPause = /*#__PURE__*/ createUseWriteContract({ /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"initialize"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3549,6 +3626,7 @@ export const useWriteGlobalPauseInitialize = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"pause"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3564,6 +3642,7 @@ export const useWriteGlobalPausePause = /*#__PURE__*/ createUseWriteContract({ /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"unpause"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3579,6 +3658,7 @@ export const useWriteGlobalPauseUnpause = /*#__PURE__*/ createUseWriteContract({ /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"upgradeTo"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3595,6 +3675,7 @@ export const useWriteGlobalPauseUpgradeTo = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"upgradeToAndCall"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3611,6 +3692,7 @@ export const useWriteGlobalPauseUpgradeToAndCall = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalPauseAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3625,6 +3707,7 @@ export const useSimulateGlobalPause = /*#__PURE__*/ createUseSimulateContract({ /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"initialize"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3641,6 +3724,7 @@ export const useSimulateGlobalPauseInitialize = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"pause"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3657,6 +3741,7 @@ export const useSimulateGlobalPausePause = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"unpause"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3673,6 +3758,7 @@ export const useSimulateGlobalPauseUnpause = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"upgradeTo"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3689,6 +3775,7 @@ export const useSimulateGlobalPauseUpgradeTo = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"upgradeToAndCall"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3705,6 +3792,7 @@ export const useSimulateGlobalPauseUpgradeToAndCall = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalPauseAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3720,6 +3808,7 @@ export const useWatchGlobalPauseEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalPauseAbi}__ and `eventName` set to `"AdminChanged"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3736,6 +3825,7 @@ export const useWatchGlobalPauseAdminChangedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalPauseAbi}__ and `eventName` set to `"BeaconUpgraded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3752,6 +3842,7 @@ export const useWatchGlobalPauseBeaconUpgradedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalPauseAbi}__ and `eventName` set to `"Initialized"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3768,6 +3859,7 @@ export const useWatchGlobalPauseInitializedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalPauseAbi}__ and `eventName` set to `"OwnershipTransferred"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3784,6 +3876,7 @@ export const useWatchGlobalPauseOwnershipTransferredEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalPauseAbi}__ and `eventName` set to `"Paused"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3800,6 +3893,7 @@ export const useWatchGlobalPausePausedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalPauseAbi}__ and `eventName` set to `"Unpaused"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3816,6 +3910,7 @@ export const useWatchGlobalPauseUnpausedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link globalPauseAbi}__ and `eventName` set to `"Upgraded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -3863,6 +3958,7 @@ export const useSimulateITransfersListenerOnLTokenTransfer = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link ldyStakingAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -3877,6 +3973,7 @@ export const useReadLdyStaking = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"highTierAccounts"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -3893,6 +3990,7 @@ export const useReadLdyStakingHighTierAccounts = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"owner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -3908,6 +4006,7 @@ export const useReadLdyStakingOwner = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"pendingOwner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -3924,6 +4023,7 @@ export const useReadLdyStakingPendingOwner = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"tierOf"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -3939,6 +4039,7 @@ export const useReadLdyStakingTierOf = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link ldyStakingAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -3953,6 +4054,7 @@ export const useWriteLdyStaking = /*#__PURE__*/ createUseWriteContract({ /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"acceptOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -3969,6 +4071,7 @@ export const useWriteLdyStakingAcceptOwnership = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -3985,6 +4088,7 @@ export const useWriteLdyStakingRenounceOwnership = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"setHighTierAccount"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -4001,6 +4105,7 @@ export const useWriteLdyStakingSetHighTierAccount = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -4017,6 +4122,7 @@ export const useWriteLdyStakingTransferOwnership = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link ldyStakingAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -4031,6 +4137,7 @@ export const useSimulateLdyStaking = /*#__PURE__*/ createUseSimulateContract({ /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"acceptOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -4047,6 +4154,7 @@ export const useSimulateLdyStakingAcceptOwnership = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -4063,6 +4171,7 @@ export const useSimulateLdyStakingRenounceOwnership = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"setHighTierAccount"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -4079,6 +4188,7 @@ export const useSimulateLdyStakingSetHighTierAccount = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -4095,6 +4205,7 @@ export const useSimulateLdyStakingTransferOwnership = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link ldyStakingAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -4110,6 +4221,7 @@ export const useWatchLdyStakingEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link ldyStakingAbi}__ and `eventName` set to `"OwnershipTransferStarted"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -4126,6 +4238,7 @@ export const useWatchLdyStakingOwnershipTransferStartedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link ldyStakingAbi}__ and `eventName` set to `"OwnershipTransferred"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -5080,6 +5193,7 @@ export const useWatchLTokenUpgradedEvent = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5094,6 +5208,7 @@ export const useReadLTokenSignaler = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"globalOwner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5110,6 +5225,7 @@ export const useReadLTokenSignalerGlobalOwner = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"owner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5125,6 +5241,7 @@ export const useReadLTokenSignalerOwner = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"proxiableUUID"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5141,6 +5258,7 @@ export const useReadLTokenSignalerProxiableUuid = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5157,6 +5275,7 @@ export const useReadLTokenSignalerRenounceOwnership = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5173,6 +5292,7 @@ export const useReadLTokenSignalerTransferOwnership = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5187,6 +5307,7 @@ export const useWriteLTokenSignaler = /*#__PURE__*/ createUseWriteContract({ /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"initialize"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5203,6 +5324,7 @@ export const useWriteLTokenSignalerInitialize = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"signalLToken"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5219,6 +5341,7 @@ export const useWriteLTokenSignalerSignalLToken = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"upgradeTo"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5235,6 +5358,7 @@ export const useWriteLTokenSignalerUpgradeTo = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"upgradeToAndCall"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5251,6 +5375,7 @@ export const useWriteLTokenSignalerUpgradeToAndCall = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5266,6 +5391,7 @@ export const useSimulateLTokenSignaler = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"initialize"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5282,6 +5408,7 @@ export const useSimulateLTokenSignalerInitialize = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"signalLToken"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5298,6 +5425,7 @@ export const useSimulateLTokenSignalerSignalLToken = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"upgradeTo"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5314,6 +5442,7 @@ export const useSimulateLTokenSignalerUpgradeTo = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"upgradeToAndCall"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5330,6 +5459,7 @@ export const useSimulateLTokenSignalerUpgradeToAndCall = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link lTokenSignalerAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5345,6 +5475,7 @@ export const useWatchLTokenSignalerEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `eventName` set to `"AdminChanged"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5361,6 +5492,7 @@ export const useWatchLTokenSignalerAdminChangedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `eventName` set to `"BeaconUpgraded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5377,6 +5509,7 @@ export const useWatchLTokenSignalerBeaconUpgradedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `eventName` set to `"Initialized"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5393,6 +5526,7 @@ export const useWatchLTokenSignalerInitializedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `eventName` set to `"LTokenSignalEvent"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5409,6 +5543,7 @@ export const useWatchLTokenSignalerLTokenSignalEventEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `eventName` set to `"OwnershipTransferred"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5425,6 +5560,7 @@ export const useWatchLTokenSignalerOwnershipTransferredEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `eventName` set to `"Upgraded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -5441,6 +5577,7 @@ export const useWatchLTokenSignalerUpgradedEvent = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5453,6 +5590,7 @@ export const useReadPreMining = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"accountsLocks"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5467,6 +5605,7 @@ export const useReadPreMiningAccountsLocks = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"availableToClaim"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5481,6 +5620,7 @@ export const useReadPreMiningAvailableToClaim = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"claimPhaseStartTimestamp"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5495,6 +5635,7 @@ export const useReadPreMiningClaimPhaseStartTimestamp = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"eligibleRewardsOf"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5509,6 +5650,7 @@ export const useReadPreMiningEligibleRewardsOf = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"hasClaimPhaseStarted"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5523,6 +5665,7 @@ export const useReadPreMiningHasClaimPhaseStarted = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"hasDepositPhaseEnded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5537,6 +5680,7 @@ export const useReadPreMiningHasDepositPhaseEnded = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"hasRecoveryPhaseStarted"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5551,6 +5695,7 @@ export const useReadPreMiningHasRecoveryPhaseStarted = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"lToken"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5564,6 +5709,7 @@ export const useReadPreMiningLToken = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"ldyToken"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5577,6 +5723,7 @@ export const useReadPreMiningLdyToken = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"lockedHardCap"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5591,6 +5738,7 @@ export const useReadPreMiningLockedHardCap = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"maxDistributedLDY"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5605,6 +5753,7 @@ export const useReadPreMiningMaxDistributedLdy = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"maxLockDuration"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5619,6 +5768,7 @@ export const useReadPreMiningMaxLockDuration = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"maxWeight"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5632,6 +5782,7 @@ export const useReadPreMiningMaxWeight = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"minLockDuration"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5646,6 +5797,7 @@ export const useReadPreMiningMinLockDuration = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"owner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5659,6 +5811,7 @@ export const useReadPreMiningOwner = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"paused"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5672,6 +5825,7 @@ export const useReadPreMiningPaused = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"pendingOwner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5687,6 +5841,7 @@ export const useReadPreMiningPendingOwner = /*#__PURE__*/ createUseReadContract( /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"totalLocked"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5700,6 +5855,7 @@ export const useReadPreMiningTotalLocked = /*#__PURE__*/ createUseReadContract({ /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"underlyingToken"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5714,6 +5870,7 @@ export const useReadPreMiningUnderlyingToken = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"unlockRequests"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5728,6 +5885,7 @@ export const useReadPreMiningUnlockRequests = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"unlockRequestsCursor"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5742,6 +5900,7 @@ export const useReadPreMiningUnlockRequestsCursor = /** * Wraps __{@link useReadContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"vestingDuration"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5756,6 +5915,7 @@ export const useReadPreMiningVestingDuration = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link preMiningAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5768,6 +5928,7 @@ export const useWritePreMining = /*#__PURE__*/ createUseWriteContract({ /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"acceptOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5782,6 +5943,7 @@ export const useWritePreMiningAcceptOwnership = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"claimRewards"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5796,6 +5958,7 @@ export const useWritePreMiningClaimRewards = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"endDepositPhase"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5810,6 +5973,7 @@ export const useWritePreMiningEndDepositPhase = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"instantUnlock"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5824,6 +5988,7 @@ export const useWritePreMiningInstantUnlock = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"lock"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5837,6 +6002,7 @@ export const useWritePreMiningLock = /*#__PURE__*/ createUseWriteContract({ /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"pause"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5850,6 +6016,7 @@ export const useWritePreMiningPause = /*#__PURE__*/ createUseWriteContract({ /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"processUnlockRequests"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5864,6 +6031,7 @@ export const useWritePreMiningProcessUnlockRequests = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"recoverERC20"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5878,6 +6046,7 @@ export const useWritePreMiningRecoverErc20 = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5892,6 +6061,7 @@ export const useWritePreMiningRenounceOwnership = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"requestUnlock"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5906,6 +6076,7 @@ export const useWritePreMiningRequestUnlock = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"setLDYToken"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5920,6 +6091,7 @@ export const useWritePreMiningSetLdyToken = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"startClaimPhase"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5934,6 +6106,7 @@ export const useWritePreMiningStartClaimPhase = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"startRecoveryPhase"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5948,6 +6121,7 @@ export const useWritePreMiningStartRecoveryPhase = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5962,6 +6136,7 @@ export const useWritePreMiningTransferOwnership = /** * Wraps __{@link useWriteContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"unpause"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5975,6 +6150,7 @@ export const useWritePreMiningUnpause = /*#__PURE__*/ createUseWriteContract({ /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link preMiningAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -5987,6 +6163,7 @@ export const useSimulatePreMining = /*#__PURE__*/ createUseSimulateContract({ /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"acceptOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6001,6 +6178,7 @@ export const useSimulatePreMiningAcceptOwnership = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"claimRewards"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6015,6 +6193,7 @@ export const useSimulatePreMiningClaimRewards = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"endDepositPhase"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6029,6 +6208,7 @@ export const useSimulatePreMiningEndDepositPhase = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"instantUnlock"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6043,6 +6223,7 @@ export const useSimulatePreMiningInstantUnlock = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"lock"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6054,6 +6235,7 @@ export const useSimulatePreMiningLock = /*#__PURE__*/ createUseSimulateContract( /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"pause"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6068,6 +6250,7 @@ export const useSimulatePreMiningPause = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"processUnlockRequests"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6082,6 +6265,7 @@ export const useSimulatePreMiningProcessUnlockRequests = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"recoverERC20"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6096,6 +6280,7 @@ export const useSimulatePreMiningRecoverErc20 = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6110,6 +6295,7 @@ export const useSimulatePreMiningRenounceOwnership = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"requestUnlock"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6124,6 +6310,7 @@ export const useSimulatePreMiningRequestUnlock = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"setLDYToken"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6138,6 +6325,7 @@ export const useSimulatePreMiningSetLdyToken = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"startClaimPhase"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6152,6 +6340,7 @@ export const useSimulatePreMiningStartClaimPhase = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"startRecoveryPhase"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6166,6 +6355,7 @@ export const useSimulatePreMiningStartRecoveryPhase = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6180,6 +6370,7 @@ export const useSimulatePreMiningTransferOwnership = /** * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"unpause"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6194,6 +6385,7 @@ export const useSimulatePreMiningUnpause = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link preMiningAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6205,6 +6397,7 @@ export const useWatchPreMiningEvent = /*#__PURE__*/ createUseWatchContractEvent( /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link preMiningAbi}__ and `eventName` set to `"Lock"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6219,6 +6412,7 @@ export const useWatchPreMiningLockEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link preMiningAbi}__ and `eventName` set to `"OwnershipTransferStarted"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6233,6 +6427,7 @@ export const useWatchPreMiningOwnershipTransferStartedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link preMiningAbi}__ and `eventName` set to `"OwnershipTransferred"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6247,6 +6442,7 @@ export const useWatchPreMiningOwnershipTransferredEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link preMiningAbi}__ and `eventName` set to `"Paused"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6261,6 +6457,7 @@ export const useWatchPreMiningPausedEvent = /** * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link preMiningAbi}__ and `eventName` set to `"Unpaused"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -6524,6 +6721,7 @@ export const watchGenericErc20TransferEvent = /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalBlacklistAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6538,6 +6736,7 @@ export const readGlobalBlacklist = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"globalOwner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6553,6 +6752,7 @@ export const readGlobalBlacklistGlobalOwner = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"isBlacklisted"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6569,6 +6769,7 @@ export const readGlobalBlacklistIsBlacklisted = /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"owner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6584,6 +6785,7 @@ export const readGlobalBlacklistOwner = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"proxiableUUID"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6600,6 +6802,7 @@ export const readGlobalBlacklistProxiableUuid = /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6616,6 +6819,7 @@ export const readGlobalBlacklistRenounceOwnership = /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6632,6 +6836,7 @@ export const readGlobalBlacklistTransferOwnership = /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalBlacklistAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6646,6 +6851,7 @@ export const writeGlobalBlacklist = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"blacklist"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6661,6 +6867,7 @@ export const writeGlobalBlacklistBlacklist = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"initialize"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6678,6 +6885,7 @@ export const writeGlobalBlacklistInitialize = /*#__PURE__*/ createWriteContract( /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"unBlacklist"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6694,6 +6902,7 @@ export const writeGlobalBlacklistUnBlacklist = /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"upgradeTo"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6709,6 +6918,7 @@ export const writeGlobalBlacklistUpgradeTo = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"upgradeToAndCall"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6725,6 +6935,7 @@ export const writeGlobalBlacklistUpgradeToAndCall = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalBlacklistAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6739,6 +6950,7 @@ export const simulateGlobalBlacklist = /*#__PURE__*/ createSimulateContract({ /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"blacklist"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6755,6 +6967,7 @@ export const simulateGlobalBlacklistBlacklist = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"initialize"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6771,6 +6984,7 @@ export const simulateGlobalBlacklistInitialize = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"unBlacklist"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6787,6 +7001,7 @@ export const simulateGlobalBlacklistUnBlacklist = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"upgradeTo"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6803,6 +7018,7 @@ export const simulateGlobalBlacklistUpgradeTo = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalBlacklistAbi}__ and `functionName` set to `"upgradeToAndCall"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6819,6 +7035,7 @@ export const simulateGlobalBlacklistUpgradeToAndCall = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalBlacklistAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6832,6 +7049,7 @@ export const watchGlobalBlacklistEvent = /*#__PURE__*/ createWatchContractEvent( /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalBlacklistAbi}__ and `eventName` set to `"AdminChanged"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6848,6 +7066,7 @@ export const watchGlobalBlacklistAdminChangedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalBlacklistAbi}__ and `eventName` set to `"BeaconUpgraded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6864,6 +7083,7 @@ export const watchGlobalBlacklistBeaconUpgradedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalBlacklistAbi}__ and `eventName` set to `"Initialized"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6880,6 +7100,7 @@ export const watchGlobalBlacklistInitializedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalBlacklistAbi}__ and `eventName` set to `"OwnershipTransferred"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6896,6 +7117,7 @@ export const watchGlobalBlacklistOwnershipTransferredEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalBlacklistAbi}__ and `eventName` set to `"Upgraded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0xc44395eC149C6743A268A901a38e5b02dc87D10C) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xcA55A2394876e7Cf52e99Ab36Fc9151a7d9CF350) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7fbE57dD4Ba76CACBFfBA821EE0B7faa240a11bf) @@ -6912,6 +7134,7 @@ export const watchGlobalBlacklistUpgradedEvent = /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalOwnerAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -6926,6 +7149,7 @@ export const readGlobalOwner = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"owner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -6941,6 +7165,7 @@ export const readGlobalOwnerOwner = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"pendingOwner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -6956,6 +7181,7 @@ export const readGlobalOwnerPendingOwner = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"proxiableUUID"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -6971,6 +7197,7 @@ export const readGlobalOwnerProxiableUuid = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalOwnerAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -6985,6 +7212,7 @@ export const writeGlobalOwner = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"acceptOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7001,6 +7229,7 @@ export const writeGlobalOwnerAcceptOwnership = /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"initialize"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7016,6 +7245,7 @@ export const writeGlobalOwnerInitialize = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7032,6 +7262,7 @@ export const writeGlobalOwnerRenounceOwnership = /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7048,6 +7279,7 @@ export const writeGlobalOwnerTransferOwnership = /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"upgradeTo"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7063,6 +7295,7 @@ export const writeGlobalOwnerUpgradeTo = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"upgradeToAndCall"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7079,6 +7312,7 @@ export const writeGlobalOwnerUpgradeToAndCall = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalOwnerAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7093,6 +7327,7 @@ export const simulateGlobalOwner = /*#__PURE__*/ createSimulateContract({ /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"acceptOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7109,6 +7344,7 @@ export const simulateGlobalOwnerAcceptOwnership = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"initialize"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7125,6 +7361,7 @@ export const simulateGlobalOwnerInitialize = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7141,6 +7378,7 @@ export const simulateGlobalOwnerRenounceOwnership = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7157,6 +7395,7 @@ export const simulateGlobalOwnerTransferOwnership = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"upgradeTo"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7173,6 +7412,7 @@ export const simulateGlobalOwnerUpgradeTo = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalOwnerAbi}__ and `functionName` set to `"upgradeToAndCall"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7189,6 +7429,7 @@ export const simulateGlobalOwnerUpgradeToAndCall = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalOwnerAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7203,6 +7444,7 @@ export const watchGlobalOwnerEvent = /*#__PURE__*/ createWatchContractEvent({ /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalOwnerAbi}__ and `eventName` set to `"AdminChanged"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7219,6 +7461,7 @@ export const watchGlobalOwnerAdminChangedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalOwnerAbi}__ and `eventName` set to `"BeaconUpgraded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7235,6 +7478,7 @@ export const watchGlobalOwnerBeaconUpgradedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalOwnerAbi}__ and `eventName` set to `"Initialized"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7251,6 +7495,7 @@ export const watchGlobalOwnerInitializedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalOwnerAbi}__ and `eventName` set to `"OwnershipTransferStarted"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7267,6 +7512,7 @@ export const watchGlobalOwnerOwnershipTransferStartedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalOwnerAbi}__ and `eventName` set to `"OwnershipTransferred"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7283,6 +7529,7 @@ export const watchGlobalOwnerOwnershipTransferredEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalOwnerAbi}__ and `eventName` set to `"Upgraded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2547A36186eCC16C25649B9234D4937216e45978) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xe4Af4573bFc5F04D8b84c61744de8A94059f2462) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0xDbac01A784fB7E5F1Ae9c8d61f776A2d9d59faB6) @@ -7299,6 +7546,7 @@ export const watchGlobalOwnerUpgradedEvent = /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalPauseAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7313,6 +7561,7 @@ export const readGlobalPause = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"globalOwner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7328,6 +7577,7 @@ export const readGlobalPauseGlobalOwner = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"owner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7343,6 +7593,7 @@ export const readGlobalPauseOwner = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"paused"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7358,6 +7609,7 @@ export const readGlobalPausePaused = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"proxiableUUID"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7373,6 +7625,7 @@ export const readGlobalPauseProxiableUuid = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7389,6 +7642,7 @@ export const readGlobalPauseRenounceOwnership = /** * Wraps __{@link readContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7405,6 +7659,7 @@ export const readGlobalPauseTransferOwnership = /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalPauseAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7419,6 +7674,7 @@ export const writeGlobalPause = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"initialize"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7434,6 +7690,7 @@ export const writeGlobalPauseInitialize = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"pause"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7449,6 +7706,7 @@ export const writeGlobalPausePause = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"unpause"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7464,6 +7722,7 @@ export const writeGlobalPauseUnpause = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"upgradeTo"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7479,6 +7738,7 @@ export const writeGlobalPauseUpgradeTo = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"upgradeToAndCall"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7495,6 +7755,7 @@ export const writeGlobalPauseUpgradeToAndCall = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalPauseAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7509,6 +7770,7 @@ export const simulateGlobalPause = /*#__PURE__*/ createSimulateContract({ /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"initialize"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7525,6 +7787,7 @@ export const simulateGlobalPauseInitialize = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"pause"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7540,6 +7803,7 @@ export const simulateGlobalPausePause = /*#__PURE__*/ createSimulateContract({ /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"unpause"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7555,6 +7819,7 @@ export const simulateGlobalPauseUnpause = /*#__PURE__*/ createSimulateContract({ /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"upgradeTo"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7571,6 +7836,7 @@ export const simulateGlobalPauseUpgradeTo = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link globalPauseAbi}__ and `functionName` set to `"upgradeToAndCall"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7587,6 +7853,7 @@ export const simulateGlobalPauseUpgradeToAndCall = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalPauseAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7601,6 +7868,7 @@ export const watchGlobalPauseEvent = /*#__PURE__*/ createWatchContractEvent({ /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalPauseAbi}__ and `eventName` set to `"AdminChanged"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7617,6 +7885,7 @@ export const watchGlobalPauseAdminChangedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalPauseAbi}__ and `eventName` set to `"BeaconUpgraded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7633,6 +7902,7 @@ export const watchGlobalPauseBeaconUpgradedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalPauseAbi}__ and `eventName` set to `"Initialized"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7649,6 +7919,7 @@ export const watchGlobalPauseInitializedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalPauseAbi}__ and `eventName` set to `"OwnershipTransferred"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7665,6 +7936,7 @@ export const watchGlobalPauseOwnershipTransferredEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalPauseAbi}__ and `eventName` set to `"Paused"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7681,6 +7953,7 @@ export const watchGlobalPausePausedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalPauseAbi}__ and `eventName` set to `"Unpaused"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7697,6 +7970,7 @@ export const watchGlobalPauseUnpausedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link globalPauseAbi}__ and `eventName` set to `"Upgraded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x696C4B4f35Ee60e110cDaE5b3eBd78a5597f6Ac6) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0xd4D4c68CE70fa88B9E527DD3A4a6d19c5cbdd4dB) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x4fB551213757619558A93a599a08524e9Dd59C67) @@ -7745,6 +8019,7 @@ export const simulateITransfersListenerOnLTokenTransfer = /** * Wraps __{@link readContract}__ with `abi` set to __{@link ldyStakingAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -7759,6 +8034,7 @@ export const readLdyStaking = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"highTierAccounts"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -7774,6 +8050,7 @@ export const readLdyStakingHighTierAccounts = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"owner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -7789,6 +8066,7 @@ export const readLdyStakingOwner = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"pendingOwner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -7804,6 +8082,7 @@ export const readLdyStakingPendingOwner = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"tierOf"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -7819,6 +8098,7 @@ export const readLdyStakingTierOf = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link ldyStakingAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -7833,6 +8113,7 @@ export const writeLdyStaking = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"acceptOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -7850,6 +8131,7 @@ export const writeLdyStakingAcceptOwnership = /*#__PURE__*/ createWriteContract( /** * Wraps __{@link writeContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -7866,6 +8148,7 @@ export const writeLdyStakingRenounceOwnership = /** * Wraps __{@link writeContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"setHighTierAccount"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -7882,6 +8165,7 @@ export const writeLdyStakingSetHighTierAccount = /** * Wraps __{@link writeContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -7898,6 +8182,7 @@ export const writeLdyStakingTransferOwnership = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link ldyStakingAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -7912,6 +8197,7 @@ export const simulateLdyStaking = /*#__PURE__*/ createSimulateContract({ /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"acceptOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -7928,6 +8214,7 @@ export const simulateLdyStakingAcceptOwnership = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -7944,6 +8231,7 @@ export const simulateLdyStakingRenounceOwnership = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"setHighTierAccount"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -7960,6 +8248,7 @@ export const simulateLdyStakingSetHighTierAccount = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link ldyStakingAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -7976,6 +8265,7 @@ export const simulateLdyStakingTransferOwnership = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link ldyStakingAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -7990,6 +8280,7 @@ export const watchLdyStakingEvent = /*#__PURE__*/ createWatchContractEvent({ /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link ldyStakingAbi}__ and `eventName` set to `"OwnershipTransferStarted"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -8006,6 +8297,7 @@ export const watchLdyStakingOwnershipTransferStartedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link ldyStakingAbi}__ and `eventName` set to `"OwnershipTransferred"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x045f9E9d2225319dF5E0909007FE7979E2674a32) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x4e80beDBD58b084a8946b7BA6814c28906Be2d02) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x7A78A93dad6A64d0A92C913C008dC79dBf919Fa6) @@ -8928,6 +9220,7 @@ export const watchLTokenUpgradedEvent = /*#__PURE__*/ createWatchContractEvent({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -8942,6 +9235,7 @@ export const readLTokenSignaler = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"globalOwner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -8957,6 +9251,7 @@ export const readLTokenSignalerGlobalOwner = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"owner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -8972,6 +9267,7 @@ export const readLTokenSignalerOwner = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"proxiableUUID"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -8989,6 +9285,7 @@ export const readLTokenSignalerProxiableUuid = /*#__PURE__*/ createReadContract( /** * Wraps __{@link readContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9005,6 +9302,7 @@ export const readLTokenSignalerRenounceOwnership = /** * Wraps __{@link readContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9021,6 +9319,7 @@ export const readLTokenSignalerTransferOwnership = /** * Wraps __{@link writeContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9035,6 +9334,7 @@ export const writeLTokenSignaler = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"initialize"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9050,6 +9350,7 @@ export const writeLTokenSignalerInitialize = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"signalLToken"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9066,6 +9367,7 @@ export const writeLTokenSignalerSignalLToken = /** * Wraps __{@link writeContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"upgradeTo"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9081,6 +9383,7 @@ export const writeLTokenSignalerUpgradeTo = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"upgradeToAndCall"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9097,6 +9400,7 @@ export const writeLTokenSignalerUpgradeToAndCall = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9111,6 +9415,7 @@ export const simulateLTokenSignaler = /*#__PURE__*/ createSimulateContract({ /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"initialize"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9127,6 +9432,7 @@ export const simulateLTokenSignalerInitialize = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"signalLToken"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9143,6 +9449,7 @@ export const simulateLTokenSignalerSignalLToken = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"upgradeTo"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9159,6 +9466,7 @@ export const simulateLTokenSignalerUpgradeTo = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `functionName` set to `"upgradeToAndCall"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9175,6 +9483,7 @@ export const simulateLTokenSignalerUpgradeToAndCall = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link lTokenSignalerAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9189,6 +9498,7 @@ export const watchLTokenSignalerEvent = /*#__PURE__*/ createWatchContractEvent({ /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `eventName` set to `"AdminChanged"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9205,6 +9515,7 @@ export const watchLTokenSignalerAdminChangedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `eventName` set to `"BeaconUpgraded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9221,6 +9532,7 @@ export const watchLTokenSignalerBeaconUpgradedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `eventName` set to `"Initialized"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9237,6 +9549,7 @@ export const watchLTokenSignalerInitializedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `eventName` set to `"LTokenSignalEvent"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9253,6 +9566,7 @@ export const watchLTokenSignalerLTokenSignalEventEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `eventName` set to `"OwnershipTransferred"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9269,6 +9583,7 @@ export const watchLTokenSignalerOwnershipTransferredEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link lTokenSignalerAbi}__ and `eventName` set to `"Upgraded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x6A88b87aA4865e8d67D7CD32178bA03F885a088a) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x627Ff3485a2e34916a6E1c0D0b350A422F5d89D1) * - [__View Contract on Linea Goerli Testnet Etherscan__](https://goerli.lineascan.build/address/0x04a678103bE57c3d81100fe08e43C94e50adC37B) @@ -9285,6 +9600,7 @@ export const watchLTokenSignalerUpgradedEvent = /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9297,6 +9613,7 @@ export const readPreMining = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"accountsLocks"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9310,6 +9627,7 @@ export const readPreMiningAccountsLocks = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"availableToClaim"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9323,6 +9641,7 @@ export const readPreMiningAvailableToClaim = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"claimPhaseStartTimestamp"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9337,6 +9656,7 @@ export const readPreMiningClaimPhaseStartTimestamp = /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"eligibleRewardsOf"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9350,6 +9670,7 @@ export const readPreMiningEligibleRewardsOf = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"hasClaimPhaseStarted"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9364,6 +9685,7 @@ export const readPreMiningHasClaimPhaseStarted = /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"hasDepositPhaseEnded"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9378,6 +9700,7 @@ export const readPreMiningHasDepositPhaseEnded = /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"hasRecoveryPhaseStarted"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9392,6 +9715,7 @@ export const readPreMiningHasRecoveryPhaseStarted = /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"lToken"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9405,6 +9729,7 @@ export const readPreMiningLToken = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"ldyToken"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9418,6 +9743,7 @@ export const readPreMiningLdyToken = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"lockedHardCap"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9431,6 +9757,7 @@ export const readPreMiningLockedHardCap = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"maxDistributedLDY"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9444,6 +9771,7 @@ export const readPreMiningMaxDistributedLdy = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"maxLockDuration"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9457,6 +9785,7 @@ export const readPreMiningMaxLockDuration = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"maxWeight"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9470,6 +9799,7 @@ export const readPreMiningMaxWeight = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"minLockDuration"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9483,6 +9813,7 @@ export const readPreMiningMinLockDuration = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"owner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9496,6 +9827,7 @@ export const readPreMiningOwner = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"paused"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9509,6 +9841,7 @@ export const readPreMiningPaused = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"pendingOwner"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9522,6 +9855,7 @@ export const readPreMiningPendingOwner = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"totalLocked"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9535,6 +9869,7 @@ export const readPreMiningTotalLocked = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"underlyingToken"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9548,6 +9883,7 @@ export const readPreMiningUnderlyingToken = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"unlockRequests"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9561,6 +9897,7 @@ export const readPreMiningUnlockRequests = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"unlockRequestsCursor"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9575,6 +9912,7 @@ export const readPreMiningUnlockRequestsCursor = /** * Wraps __{@link readContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"vestingDuration"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9588,6 +9926,7 @@ export const readPreMiningVestingDuration = /*#__PURE__*/ createReadContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link preMiningAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9600,6 +9939,7 @@ export const writePreMining = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"acceptOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9613,6 +9953,7 @@ export const writePreMiningAcceptOwnership = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"claimRewards"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9626,6 +9967,7 @@ export const writePreMiningClaimRewards = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"endDepositPhase"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9639,6 +9981,7 @@ export const writePreMiningEndDepositPhase = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"instantUnlock"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9652,6 +9995,7 @@ export const writePreMiningInstantUnlock = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"lock"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9665,6 +10009,7 @@ export const writePreMiningLock = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"pause"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9678,6 +10023,7 @@ export const writePreMiningPause = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"processUnlockRequests"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9692,6 +10038,7 @@ export const writePreMiningProcessUnlockRequests = /** * Wraps __{@link writeContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"recoverERC20"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9705,6 +10052,7 @@ export const writePreMiningRecoverErc20 = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9719,6 +10067,7 @@ export const writePreMiningRenounceOwnership = /** * Wraps __{@link writeContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"requestUnlock"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9732,6 +10081,7 @@ export const writePreMiningRequestUnlock = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"setLDYToken"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9745,6 +10095,7 @@ export const writePreMiningSetLdyToken = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"startClaimPhase"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9758,6 +10109,7 @@ export const writePreMiningStartClaimPhase = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link writeContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"startRecoveryPhase"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9772,6 +10124,7 @@ export const writePreMiningStartRecoveryPhase = /** * Wraps __{@link writeContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9786,6 +10139,7 @@ export const writePreMiningTransferOwnership = /** * Wraps __{@link writeContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"unpause"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9799,6 +10153,7 @@ export const writePreMiningUnpause = /*#__PURE__*/ createWriteContract({ /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link preMiningAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9811,6 +10166,7 @@ export const simulatePreMining = /*#__PURE__*/ createSimulateContract({ /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"acceptOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9825,6 +10181,7 @@ export const simulatePreMiningAcceptOwnership = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"claimRewards"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9839,6 +10196,7 @@ export const simulatePreMiningClaimRewards = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"endDepositPhase"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9853,6 +10211,7 @@ export const simulatePreMiningEndDepositPhase = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"instantUnlock"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9867,6 +10226,7 @@ export const simulatePreMiningInstantUnlock = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"lock"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9880,6 +10240,7 @@ export const simulatePreMiningLock = /*#__PURE__*/ createSimulateContract({ /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"pause"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9893,6 +10254,7 @@ export const simulatePreMiningPause = /*#__PURE__*/ createSimulateContract({ /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"processUnlockRequests"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9907,6 +10269,7 @@ export const simulatePreMiningProcessUnlockRequests = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"recoverERC20"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9921,6 +10284,7 @@ export const simulatePreMiningRecoverErc20 = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"renounceOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9935,6 +10299,7 @@ export const simulatePreMiningRenounceOwnership = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"requestUnlock"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9949,6 +10314,7 @@ export const simulatePreMiningRequestUnlock = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"setLDYToken"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9963,6 +10329,7 @@ export const simulatePreMiningSetLdyToken = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"startClaimPhase"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9977,6 +10344,7 @@ export const simulatePreMiningStartClaimPhase = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"startRecoveryPhase"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -9991,6 +10359,7 @@ export const simulatePreMiningStartRecoveryPhase = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"transferOwnership"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -10005,6 +10374,7 @@ export const simulatePreMiningTransferOwnership = /** * Wraps __{@link simulateContract}__ with `abi` set to __{@link preMiningAbi}__ and `functionName` set to `"unpause"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -10018,6 +10388,7 @@ export const simulatePreMiningUnpause = /*#__PURE__*/ createSimulateContract({ /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link preMiningAbi}__ * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -10030,6 +10401,7 @@ export const watchPreMiningEvent = /*#__PURE__*/ createWatchContractEvent({ /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link preMiningAbi}__ and `eventName` set to `"Lock"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -10043,6 +10415,7 @@ export const watchPreMiningLockEvent = /*#__PURE__*/ createWatchContractEvent({ /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link preMiningAbi}__ and `eventName` set to `"OwnershipTransferStarted"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -10057,6 +10430,7 @@ export const watchPreMiningOwnershipTransferStartedEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link preMiningAbi}__ and `eventName` set to `"OwnershipTransferred"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -10071,6 +10445,7 @@ export const watchPreMiningOwnershipTransferredEvent = /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link preMiningAbi}__ and `eventName` set to `"Paused"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) @@ -10082,6 +10457,7 @@ export const watchPreMiningPausedEvent = /*#__PURE__*/ createWatchContractEvent( /** * Wraps __{@link watchContractEvent}__ with `abi` set to __{@link preMiningAbi}__ and `eventName` set to `"Unpaused"` * + * - [__View Contract on X1 Testnet Ok Link__](https://www.oklink.com/x1-test/address/0x2Bb79F621518BbA45dA5Ec57BC885C4686A60De9) * - * - [__View Contract on Arbitrum One Arbiscan__](https://arbiscan.io/address/0x9d7AEDefE90B880c5a9Bed4FcBd3faD0ea5AA06c) * - [__View Contract on Linea Mainnet Etherscan__](https://lineascan.build/address/0xd54d564606611A3502FE8909bBD3075dbeb77813) diff --git a/src/lib/dapp/chains.ts b/src/lib/dapp/chains.ts index 46a72ed6..95a702c4 100644 --- a/src/lib/dapp/chains.ts +++ b/src/lib/dapp/chains.ts @@ -7,28 +7,29 @@ export const chainsIcons = { 42161: "/assets/chains/arbitrum.svg", 59140: "/assets/chains/linea-goerli.png", 59144: "/assets/chains/linea.png", - 65: "/assets/chains/okxlogo.png", + 195: "/assets/chains/okxlogo.png", } as { [key: number]: string }; + const okcTestnet: Chain = { - id: 65, - name: "OKC Testnet", + id: 195, + name: 'OKC X1 Testnet', nativeCurrency: { - name: "Testnet OKT", - symbol: "OKT", + name: 'Testnet OKB', + symbol: 'OKB', decimals: 18, }, rpcUrls: { default: { - http: ["https://exchaintestrpc.okex.org"], - }, + http: ['https://testrpc.x1.tech'] + } }, blockExplorers: { - default: { name: "OKLink", url: "https://www.oklink.com/okc-test" }, + default: { name: 'OKLink', url: 'https://www.oklink.com/x1-test' }, }, testnet: true, }; -// Figure whether we're in dev or prod environment +/// Figure whether we're in dev or prod environment let chainsEnv: "prod" | "dev" = "prod"; if (process.env.VERCEL_ENV === "preview") chainsEnv = "dev"; if (process.env.NODE_ENV !== "production") chainsEnv = "dev"; diff --git a/tsconfig.json b/tsconfig.json index e9e9d61e..baba7ff8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -42,4 +42,4 @@ ".graphclient/**/*.ts" ], "exclude": ["node_modules"] -} +} \ No newline at end of file