From 75ceab6477a7a83a10235ac8712eddcc8e1adc93 Mon Sep 17 00:00:00 2001 From: Stefan Stefanov Date: Fri, 24 Nov 2023 09:35:14 +0200 Subject: [PATCH] Addressing comments Signed-off-by: Stefan Stefanov --- .../SafeCast.sol/SafeCastTest.dbg.json | 2 +- .../safeCast/SafeCast.sol/SafeCastTest.json | 132 +++++++++--------- contracts/solidity/oz/safeCast/SafeCast.sol | 128 ++++++++--------- test/solidity/oz/safeCast/safeCast.js | 130 ++++++++--------- 4 files changed, 196 insertions(+), 196 deletions(-) diff --git a/artifacts/contracts/solidity/oz/safeCast/SafeCast.sol/SafeCastTest.dbg.json b/artifacts/contracts/solidity/oz/safeCast/SafeCast.sol/SafeCastTest.dbg.json index d6e4c5e74..bb634fd9f 100644 --- a/artifacts/contracts/solidity/oz/safeCast/SafeCast.sol/SafeCastTest.dbg.json +++ b/artifacts/contracts/solidity/oz/safeCast/SafeCast.sol/SafeCastTest.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/47e0e505da8501207f3aa8889fea7b09.json" + "buildInfo": "../../../../../build-info/a916cad494e300c96289be78d9e4f9e0.json" } diff --git a/artifacts/contracts/solidity/oz/safeCast/SafeCast.sol/SafeCastTest.json b/artifacts/contracts/solidity/oz/safeCast/SafeCast.sol/SafeCastTest.json index 56aa11ff8..92a27d466 100644 --- a/artifacts/contracts/solidity/oz/safeCast/SafeCast.sol/SafeCastTest.json +++ b/artifacts/contracts/solidity/oz/safeCast/SafeCast.sol/SafeCastTest.json @@ -65,7 +65,7 @@ "type": "int256" } ], - "name": "testToInt104", + "name": "toInt104", "outputs": [ { "internalType": "int104", @@ -84,7 +84,7 @@ "type": "int256" } ], - "name": "testToInt112", + "name": "toInt112", "outputs": [ { "internalType": "int112", @@ -103,7 +103,7 @@ "type": "int256" } ], - "name": "testToInt120", + "name": "toInt120", "outputs": [ { "internalType": "int120", @@ -122,7 +122,7 @@ "type": "int256" } ], - "name": "testToInt128", + "name": "toInt128", "outputs": [ { "internalType": "int128", @@ -141,7 +141,7 @@ "type": "int256" } ], - "name": "testToInt136", + "name": "toInt136", "outputs": [ { "internalType": "int136", @@ -160,7 +160,7 @@ "type": "int256" } ], - "name": "testToInt144", + "name": "toInt144", "outputs": [ { "internalType": "int144", @@ -179,7 +179,7 @@ "type": "int256" } ], - "name": "testToInt152", + "name": "toInt152", "outputs": [ { "internalType": "int152", @@ -198,7 +198,7 @@ "type": "int256" } ], - "name": "testToInt16", + "name": "toInt16", "outputs": [ { "internalType": "int16", @@ -217,7 +217,7 @@ "type": "int256" } ], - "name": "testToInt160", + "name": "toInt160", "outputs": [ { "internalType": "int160", @@ -236,7 +236,7 @@ "type": "int256" } ], - "name": "testToInt168", + "name": "toInt168", "outputs": [ { "internalType": "int168", @@ -255,7 +255,7 @@ "type": "int256" } ], - "name": "testToInt176", + "name": "toInt176", "outputs": [ { "internalType": "int176", @@ -274,7 +274,7 @@ "type": "int256" } ], - "name": "testToInt184", + "name": "toInt184", "outputs": [ { "internalType": "int184", @@ -293,7 +293,7 @@ "type": "int256" } ], - "name": "testToInt192", + "name": "toInt192", "outputs": [ { "internalType": "int192", @@ -312,7 +312,7 @@ "type": "int256" } ], - "name": "testToInt200", + "name": "toInt200", "outputs": [ { "internalType": "int200", @@ -331,7 +331,7 @@ "type": "int256" } ], - "name": "testToInt208", + "name": "toInt208", "outputs": [ { "internalType": "int208", @@ -350,7 +350,7 @@ "type": "int256" } ], - "name": "testToInt216", + "name": "toInt216", "outputs": [ { "internalType": "int216", @@ -369,7 +369,7 @@ "type": "int256" } ], - "name": "testToInt224", + "name": "toInt224", "outputs": [ { "internalType": "int224", @@ -388,7 +388,7 @@ "type": "int256" } ], - "name": "testToInt232", + "name": "toInt232", "outputs": [ { "internalType": "int232", @@ -407,7 +407,7 @@ "type": "int256" } ], - "name": "testToInt24", + "name": "toInt24", "outputs": [ { "internalType": "int24", @@ -426,7 +426,7 @@ "type": "int256" } ], - "name": "testToInt240", + "name": "toInt240", "outputs": [ { "internalType": "int240", @@ -445,7 +445,7 @@ "type": "int256" } ], - "name": "testToInt248", + "name": "toInt248", "outputs": [ { "internalType": "int248", @@ -464,7 +464,7 @@ "type": "uint256" } ], - "name": "testToInt256", + "name": "toInt256", "outputs": [ { "internalType": "int256", @@ -483,7 +483,7 @@ "type": "int256" } ], - "name": "testToInt32", + "name": "toInt32", "outputs": [ { "internalType": "int32", @@ -502,7 +502,7 @@ "type": "int256" } ], - "name": "testToInt40", + "name": "toInt40", "outputs": [ { "internalType": "int40", @@ -521,7 +521,7 @@ "type": "int256" } ], - "name": "testToInt48", + "name": "toInt48", "outputs": [ { "internalType": "int48", @@ -540,7 +540,7 @@ "type": "int256" } ], - "name": "testToInt56", + "name": "toInt56", "outputs": [ { "internalType": "int56", @@ -559,7 +559,7 @@ "type": "int256" } ], - "name": "testToInt64", + "name": "toInt64", "outputs": [ { "internalType": "int64", @@ -578,7 +578,7 @@ "type": "int256" } ], - "name": "testToInt72", + "name": "toInt72", "outputs": [ { "internalType": "int72", @@ -597,7 +597,7 @@ "type": "int256" } ], - "name": "testToInt8", + "name": "toInt8", "outputs": [ { "internalType": "int8", @@ -616,7 +616,7 @@ "type": "int256" } ], - "name": "testToInt80", + "name": "toInt80", "outputs": [ { "internalType": "int80", @@ -635,7 +635,7 @@ "type": "int256" } ], - "name": "testToInt88", + "name": "toInt88", "outputs": [ { "internalType": "int88", @@ -654,7 +654,7 @@ "type": "int256" } ], - "name": "testToInt96", + "name": "toInt96", "outputs": [ { "internalType": "int96", @@ -673,7 +673,7 @@ "type": "uint256" } ], - "name": "testToUint104", + "name": "toUint104", "outputs": [ { "internalType": "uint104", @@ -692,7 +692,7 @@ "type": "uint256" } ], - "name": "testToUint112", + "name": "toUint112", "outputs": [ { "internalType": "uint112", @@ -711,7 +711,7 @@ "type": "uint256" } ], - "name": "testToUint120", + "name": "toUint120", "outputs": [ { "internalType": "uint120", @@ -730,7 +730,7 @@ "type": "uint256" } ], - "name": "testToUint128", + "name": "toUint128", "outputs": [ { "internalType": "uint128", @@ -749,7 +749,7 @@ "type": "uint256" } ], - "name": "testToUint136", + "name": "toUint136", "outputs": [ { "internalType": "uint136", @@ -768,7 +768,7 @@ "type": "uint256" } ], - "name": "testToUint144", + "name": "toUint144", "outputs": [ { "internalType": "uint144", @@ -787,7 +787,7 @@ "type": "uint256" } ], - "name": "testToUint152", + "name": "toUint152", "outputs": [ { "internalType": "uint152", @@ -806,7 +806,7 @@ "type": "uint256" } ], - "name": "testToUint16", + "name": "toUint16", "outputs": [ { "internalType": "uint16", @@ -825,7 +825,7 @@ "type": "uint256" } ], - "name": "testToUint160", + "name": "toUint160", "outputs": [ { "internalType": "uint160", @@ -844,7 +844,7 @@ "type": "uint256" } ], - "name": "testToUint168", + "name": "toUint168", "outputs": [ { "internalType": "uint168", @@ -863,7 +863,7 @@ "type": "uint256" } ], - "name": "testToUint176", + "name": "toUint176", "outputs": [ { "internalType": "uint176", @@ -882,7 +882,7 @@ "type": "uint256" } ], - "name": "testToUint184", + "name": "toUint184", "outputs": [ { "internalType": "uint184", @@ -901,7 +901,7 @@ "type": "uint256" } ], - "name": "testToUint192", + "name": "toUint192", "outputs": [ { "internalType": "uint192", @@ -920,7 +920,7 @@ "type": "uint256" } ], - "name": "testToUint200", + "name": "toUint200", "outputs": [ { "internalType": "uint200", @@ -939,7 +939,7 @@ "type": "uint256" } ], - "name": "testToUint208", + "name": "toUint208", "outputs": [ { "internalType": "uint208", @@ -958,7 +958,7 @@ "type": "uint256" } ], - "name": "testToUint216", + "name": "toUint216", "outputs": [ { "internalType": "uint216", @@ -977,7 +977,7 @@ "type": "uint256" } ], - "name": "testToUint224", + "name": "toUint224", "outputs": [ { "internalType": "uint224", @@ -996,7 +996,7 @@ "type": "uint256" } ], - "name": "testToUint232", + "name": "toUint232", "outputs": [ { "internalType": "uint232", @@ -1015,7 +1015,7 @@ "type": "uint256" } ], - "name": "testToUint24", + "name": "toUint24", "outputs": [ { "internalType": "uint24", @@ -1034,7 +1034,7 @@ "type": "uint256" } ], - "name": "testToUint240", + "name": "toUint240", "outputs": [ { "internalType": "uint240", @@ -1053,7 +1053,7 @@ "type": "uint256" } ], - "name": "testToUint248", + "name": "toUint248", "outputs": [ { "internalType": "uint248", @@ -1072,7 +1072,7 @@ "type": "int256" } ], - "name": "testToUint256", + "name": "toUint256", "outputs": [ { "internalType": "uint256", @@ -1091,7 +1091,7 @@ "type": "uint256" } ], - "name": "testToUint32", + "name": "toUint32", "outputs": [ { "internalType": "uint32", @@ -1110,7 +1110,7 @@ "type": "uint256" } ], - "name": "testToUint40", + "name": "toUint40", "outputs": [ { "internalType": "uint40", @@ -1129,7 +1129,7 @@ "type": "uint256" } ], - "name": "testToUint48", + "name": "toUint48", "outputs": [ { "internalType": "uint48", @@ -1148,7 +1148,7 @@ "type": "uint256" } ], - "name": "testToUint56", + "name": "toUint56", "outputs": [ { "internalType": "uint56", @@ -1167,7 +1167,7 @@ "type": "uint256" } ], - "name": "testToUint64", + "name": "toUint64", "outputs": [ { "internalType": "uint64", @@ -1186,7 +1186,7 @@ "type": "uint256" } ], - "name": "testToUint72", + "name": "toUint72", "outputs": [ { "internalType": "uint72", @@ -1205,7 +1205,7 @@ "type": "uint256" } ], - "name": "testToUint8", + "name": "toUint8", "outputs": [ { "internalType": "uint8", @@ -1224,7 +1224,7 @@ "type": "uint256" } ], - "name": "testToUint80", + "name": "toUint80", "outputs": [ { "internalType": "uint80", @@ -1243,7 +1243,7 @@ "type": "uint256" } ], - "name": "testToUint88", + "name": "toUint88", "outputs": [ { "internalType": "uint88", @@ -1262,7 +1262,7 @@ "type": "uint256" } ], - "name": "testToUint96", + "name": "toUint96", "outputs": [ { "internalType": "uint96", @@ -1274,8 +1274,8 @@ "type": "function" } ], - "bytecode": "0x60806040526000196000556001600160f81b03600160006101000a8154816001600160f81b0302191690836001600160f81b031602179055506001600160f01b03600260006101000a8154816001600160f01b0302191690836001600160f01b031602179055506001600160e81b03600360006101000a8154816001600160e81b0302191690836001600160e81b031602179055506001600160e01b03600460006101000a8154816001600160e01b0302191690836001600160e01b031602179055506001600160d81b03600560006101000a8154816001600160d81b0302191690836001600160d81b031602179055506001600160d01b03600660006101000a8154816001600160d01b0302191690836001600160d01b031602179055506001600160c81b03600760006101000a8154816001600160c81b0302191690836001600160c81b031602179055506001600160c01b03600860006101000a8154816001600160c01b0302191690836001600160c01b031602179055506001600160b81b03600960006101000a8154816001600160b81b0302191690836001600160b81b031602179055506001600160b01b03600a60006101000a8154816001600160b01b0302191690836001600160b01b031602179055506001600160a81b03600b60006101000a8154816001600160a81b0302191690836001600160a81b031602179055506001600160a01b03600c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055506001600160981b03600d60006101000a8154816001600160981b0302191690836001600160981b031602179055506001600160901b03600e60006101000a8154816001600160901b0302191690836001600160901b031602179055506001600160881b03600f60006101000a8154816001600160881b0302191690836001600160881b031602179055506001600160801b03601060006101000a8154816001600160801b0302191690836001600160801b031602179055506001600160781b036010806101000a8154816001600160781b0302191690836001600160781b031602179055506001600160701b03601160006101000a8154816001600160701b0302191690836001600160701b031602179055506001600160681b036011600e6101000a8154816001600160681b0302191690836001600160681b031602179055506001600160601b03601260006101000a8154816001600160601b0302191690836001600160601b031602179055506001600160581b036012600c6101000a8154816001600160581b0302191690836001600160581b031602179055506001600160501b03601360006101000a8154816001600160501b0302191690836001600160501b031602179055506001600160481b036013600a6101000a8154816001600160481b0302191690836001600160481b031602179055506001600160401b036013806101000a8154816001600160401b0302191690836001600160401b0316021790555066ffffffffffffff601460006101000a81548166ffffffffffffff021916908366ffffffffffffff16021790555065ffffffffffff601460076101000a81548165ffffffffffff021916908365ffffffffffff16021790555064ffffffffff6014600d6101000a81548164ffffffffff021916908364ffffffffff16021790555063ffffffff601460126101000a81548163ffffffff021916908363ffffffff16021790555062ffffff601460166101000a81548162ffffff021916908362ffffff16021790555061ffff601460196101000a81548161ffff021916908361ffff16021790555060ff6014601b6101000a81548160ff021916908360ff1602179055506001600160ff1b036015556001600160f71b03601660006101000a8154816001600160f81b030219169083601e0b6001600160f81b031602179055506001600160ef1b03601760006101000a8154816001600160f01b030219169083601d0b6001600160f01b031602179055506001600160e71b03601860006101000a8154816001600160e81b030219169083601c0b6001600160e81b031602179055506001600160df1b03601960006101000a8154816001600160e01b030219169083601b0b6001600160e01b031602179055506001600160d71b03601a60006101000a8154816001600160d81b030219169083601a0b6001600160d81b031602179055506001600160cf1b03601b60006101000a8154816001600160d01b03021916908360190b6001600160d01b031602179055506001600160c71b03601c60006101000a8154816001600160c81b03021916908360180b6001600160c81b031602179055506001600160bf1b03601d60006101000a8154816001600160c01b03021916908360170b6001600160c01b031602179055506001600160b71b03601e60006101000a8154816001600160b81b03021916908360160b6001600160b81b031602179055506001600160af1b03601f60006101000a8154816001600160b01b03021916908360150b6001600160b01b031602179055506001600160a71b03602060006101000a8154816001600160a81b03021916908360140b6001600160a81b0316021790555060016001609f1b03602160006101000a8154816001600160a01b03021916908360130b6001600160a01b031602179055506001600160971b03602260006101000a8154816001600160981b03021916908360120b6001600160981b0316021790555060016001608f1b03602360006101000a8154816001600160901b03021916908360110b6001600160901b031602179055506001600160871b03602460006101000a8154816001600160881b03021916908360100b6001600160881b0316021790555060016001607f1b03602560006101000a8154816001600160801b030219169083600f0b6001600160801b031602179055506001600160771b03602560106101000a8154816001600160781b030219169083600e0b6001600160781b0316021790555060016001606f1b03602660006101000a8154816001600160701b030219169083600d0b6001600160701b031602179055506001600160671b036026600e6101000a8154816001600160681b030219169083600c0b6001600160681b0316021790555060016001605f1b03602760006101000a8154816001600160601b030219169083600b0b6001600160601b031602179055506001600160571b036027600c6101000a8154816001600160581b030219169083600a0b6001600160581b0316021790555060016001604f1b03602860006101000a8154816001600160501b03021916908360090b6001600160501b031602179055506001600160471b036028600a6101000a8154816001600160481b03021916908360080b6001600160481b0316021790555060016001603f1b03602860136101000a8154816001600160401b03021916908360070b6001600160401b03160217905550667fffffffffffff602960006101000a81548166ffffffffffffff021916908360060b66ffffffffffffff160217905550657fffffffffff602960076101000a81548165ffffffffffff021916908360050b65ffffffffffff160217905550647fffffffff6029600d6101000a81548164ffffffffff021916908360040b64ffffffffff160217905550637fffffff602960126101000a81548163ffffffff021916908360030b63ffffffff160217905550627fffff602960166101000a81548162ffffff021916908360020b62ffffff160217905550617fff602960196101000a81548161ffff021916908360010b61ffff160217905550607f6029601b6101000a81548160ff021916908360000b60ff160217905550348015610b2257600080fd5b506123f680610b326000396000f3fe608060405234801561001057600080fd5b50600436106103d05760003560e01c806384ea7bbe116101ff578063bd418f9e1161011a578063e741ac68116100ad578063f26a96081161007c578063f26a960814610d62578063f739f4ec14610d8d578063fc4c3bc214610db3578063fe17b74014610dd957600080fd5b8063e741ac6814610cdd578063e849822014610d03578063ebf4e4b814610d29578063edb7f5ff14610d4f57600080fd5b8063ce6378e9116100e9578063ce6378e914610c3e578063dce17c8814610c5f578063ddcdff9714610c85578063e19089d114610cab57600080fd5b8063bd418f9e14610b97578063c390836e14610bc7578063c50b2b6b14610bf2578063cd3e2d8514610c1857600080fd5b80639bdd146811610192578063a615065011610161578063a615065014610af6578063a863423014610b21578063b36c27ab14610b47578063bcabc7ee14610b7157600080fd5b80639bdd146814610a435780639bff009a14610a765780639daa27ef14610a9c5780639f75111614610ac257600080fd5b806397641fcd116101ce57806397641fcd146109ac5780639a22d54c146109d25780639a4cc77d146109f85780639b976d9514610a1d57600080fd5b806384ea7bbe1461090e5780638cbf40e1146109395780638e7f4f2f14610960578063968d3e7e1461098657600080fd5b8063507bc286116102ef5780637034d7011161028257806376d9e7331161025157806376d9e7331461086957806382523713146108945780638312696f146108c2578063837c55c7146108e857600080fd5b80637034d701146107c1578063719ecc09146107e7578063742171971461080d5780637432afb61461083857600080fd5b8063564817a1116102be578063564817a114610714578063592e3e221461074157806361f7d7b41461076757806365f6185e1461079657600080fd5b8063507bc28614610672578063534d7316146106985780635368ad84146106c35780635523d807146106ee57600080fd5b80632ff4b10e116103675780633e3af8c8116103365780633e3af8c8146105da5780634751fe5c146106005780634b35628e146106265780634fdaa0721461064c57600080fd5b80632ff4b10e14610529578063327950321461055157806334defa5114610586578063354dbd93146105af57600080fd5b806320661992116103a357806320661992146104875780632930ada2146104b25780632ccae6db146104d85780632d1075be1461050357600080fd5b8063093da75a146103d557806315799c221461040557806316f2417d146104305780631c58457e1461045b575b600080fd5b6103e86103e3366004612356565b610dff565b6040516001600160b81b0390911681526020015b60405180910390f35b610418610413366004612356565b610e28565b6040516001600160c01b0390911681526020016103fc565b61044361043e366004612356565b610e4b565b6040516001600160a01b0390911681526020016103fc565b61046e610469366004612356565b610e6e565b60405167ffffffffffffffff90911681526020016103fc565b61049a610495366004612356565b610e99565b6040516001600160e81b0390911681526020016103fc565b6104c56104c0366004612356565b610ebc565b604051601d9190910b81526020016103fc565b6104eb6104e6366004612356565b610ed9565b6040516001600160a81b0390911681526020016103fc565b610516610511366004612356565b610efc565b60405160169190910b81526020016103fc565b61053c610537366004612356565b610f19565b60405163ffffffff90911681526020016103fc565b61056461055f366004612356565b610f40565b60405170ffffffffffffffffffffffffffffffffff90911681526020016103fc565b610599610594366004612356565b610f6d565b60405164ffffffffff90911681526020016103fc565b6105c26105bd366004612356565b610f95565b6040516001600160f81b0390911681526020016103fc565b6105ed6105e8366004612356565b610fb8565b604051600d9190910b81526020016103fc565b61061361060e366004612356565b610fd5565b60405160109190910b81526020016103fc565b610639610634366004612356565b610ff2565b60405160059190910b81526020016103fc565b61065f61065a366004612356565b61101a565b604051601a9190910b81526020016103fc565b610685610680366004612356565b611037565b60405160159190910b81526020016103fc565b6106ab6106a6366004612356565b611054565b6040516001600160c81b0390911681526020016103fc565b6106d66106d1366004612356565b611077565b6040516001600160901b0390911681526020016103fc565b6107016106fc366004612356565b61109a565b60405160179190910b81526020016103fc565b610727610722366004612356565b6110b7565b60405168ffffffffffffffffff90911681526020016103fc565b61075461074f366004612356565b6110ea565b60405160029190910b81526020016103fc565b61077a610775366004612356565b61110e565b6040516affffffffffffffffffffff90911681526020016103fc565b6107a96107a4366004612356565b61113c565b6040516001600160d81b0390911681526020016103fc565b6107d46107cf366004612356565b61115f565b60405160009190910b81526020016103fc565b6107fa6107f5366004612356565b611182565b604051600f9190910b81526020016103fc565b61082061081b366004612356565b61119f565b6040516001600160f01b0390911681526020016103fc565b61084b610846366004612356565b6111c2565b6040516cffffffffffffffffffffffffff90911681526020016103fc565b61087c610877366004612356565b6111f2565b60405166ffffffffffffff90911681526020016103fc565b6108a76108a2366004612356565b611215565b60405169ffffffffffffffffffff90911681526020016103fc565b6108d56108d0366004612356565b61123b565b604051600c9190910b81526020016103fc565b6108fb6108f6366004612356565b61125f565b60405160019190910b81526020016103fc565b61092161091c366004612356565b611283565b6040516001600160b01b0390911681526020016103fc565b61094c610947366004612356565b6112a6565b60405162ffffff90911681526020016103fc565b61097361096e366004612356565b6112cc565b604051601e9190910b81526020016103fc565b610999610994366004612356565b6112e9565b604051600e9190910b81526020016103fc565b6109bf6109ba366004612356565b61130d565b60405160119190910b81526020016103fc565b6109e56109e0366004612356565b61132a565b604051600a9190910b81526020016103fc565b610a0b610a06366004612356565b61134e565b60405160ff90911681526020016103fc565b610a30610a2b366004612356565b611372565b60405160099190910b81526020016103fc565b610a56610a51366004612356565b61138f565b6040516effffffffffffffffffffffffffffff90911681526020016103fc565b610a89610a84366004612356565b6113c1565b60405160189190910b81526020016103fc565b610aaf610aaa366004612356565b6113de565b60405160079190910b81526020016103fc565b610ad5610ad0366004612356565b611402565b6040516fffffffffffffffffffffffffffffffff90911681526020016103fc565b610b09610b04366004612356565b61142e565b6040516001600160e01b0390911681526020016103fc565b610b34610b2f366004612356565b611451565b604051600b9190910b81526020016103fc565b610b5a610b55366004612356565b61146e565b60405165ffffffffffff90911681526020016103fc565b610b84610b7f366004612356565b61149b565b60405160199190910b81526020016103fc565b610baa610ba5366004612356565b6114b8565b6040516bffffffffffffffffffffffff90911681526020016103fc565b610bda610bd5366004612356565b6114e0565b6040516001600160d01b0390911681526020016103fc565b610c05610c00366004612356565b611503565b604051601b9190910b81526020016103fc565b610c2b610c26366004612356565b611520565b60405160129190910b81526020016103fc565b610c51610c4c366004612356565b61153d565b6040519081526020016103fc565b610c72610c6d366004612356565b611548565b60405160149190910b81526020016103fc565b610c98610c93366004612356565b611565565b60405160039190910b81526020016103fc565b610cbe610cb9366004612356565b611589565b6040516dffffffffffffffffffffffffffff90911681526020016103fc565b610cf0610ceb366004612356565b6115b3565b60405160089190910b81526020016103fc565b610d16610d11366004612356565b6115de565b60405160069190910b81526020016103fc565b610d3c610d37366004612356565b6115fb565b60405160049190910b81526020016103fc565b610c51610d5d366004612356565b61161f565b610d75610d70366004612356565b611637565b6040516001600160981b0390911681526020016103fc565b610da0610d9b366004612356565b61165a565b604051601c9190910b81526020016103fc565b610dc6610dc1366004612356565b611677565b60405161ffff90911681526020016103fc565b610dec610de7366004612356565b61169c565b60405160139190910b81526020016103fc565b600954600090610e2290610e1d9084906001600160b81b0316612385565b6116b9565b92915050565b600854600090610e2290610e469084906001600160c01b0316612385565b6116f6565b600c54600090610e2290610e699084906001600160a01b0316612385565b61172a565b601354600090610e2290610e94908490600160981b900467ffffffffffffffff16612385565b61175e565b600354600090610e2290610eb79084906001600160e81b0316612385565b611795565b601754600090610e2290610ed4908490601d0b612398565b6117c9565b600b54600090610e2290610ef79084906001600160a81b0316612385565b6117fd565b601e54600090610e2290610f1490849060160b612398565b611831565b601454600090610e2290610f3b908490600160901b900463ffffffff16612385565b611860565b600f54600090610e2290610f6890849070ffffffffffffffffffffffffffffffffff16612385565b611891565b601454600090610e2290610f90908490600160681b900464ffffffffff16612385565b6118cf565b600154600090610e2290610fb39084906001600160f81b0316612385565b611901565b602654600090610e2290610fd0908490600d0b612398565b611935565b602454600090610e2290610fed90849060100b612398565b611964565b602954600090610e2290611015908490670100000000000000900460050b612398565b611993565b601a8054600091610e2291611032918591900b612398565b6119c2565b601f54600090610e229061104f90849060150b612398565b6119f1565b600754600090610e22906110729084906001600160c81b0316612385565b611a20565b600e54600090610e22906110959084906001600160901b0316612385565b611a54565b601d54600090610e22906110b290849060170b612398565b611a88565b601354600090610e22906110e59084906a0100000000000000000000900468ffffffffffffffffff16612385565b611ab7565b602954600090610e2290611109908490600160b01b900460020b612398565b611aed565b601254600090610e2290611137908490600160601b90046affffffffffffffffffffff16612385565b611b1c565b600554600090610e229061115a9084906001600160d81b0316612385565b611b54565b602954600090610e229061117d908490600160d81b9004840b612398565b611b88565b602554600090610e229061119a908490600f0b612398565b611bb7565b600254600090610e22906111bd9084906001600160f01b0316612385565b611be6565b601154600090610e22906111ed908490600160701b90046cffffffffffffffffffffffffff16612385565b611c1a565b601454600090610e229061121090849066ffffffffffffff16612385565b611c54565b601354600090610e229061123690849069ffffffffffffffffffff16612385565b611c88565b602654600090610e229061125a908490600160701b9004600c0b612398565b611cbf565b602954600090610e229061127e908490600160c81b900460010b612398565b611cee565b600a54600090610e22906112a19084906001600160b01b0316612385565b611d1d565b601454600090610e22906112c7908490600160b01b900462ffffff16612385565b611d51565b601654600090610e22906112e4908490601e0b612398565b611d81565b602554600090610e2290611308908490600160801b9004600e0b612398565b611db0565b602354600090610e229061132590849060110b612398565b611ddf565b602754600090610e2290611349908490600160601b9004600a0b612398565b611e0e565b601454600090610e229061136d908490600160d81b900460ff16612385565b611e3d565b602854600090610e229061138a90849060090b612398565b611e6b565b601054600090610e22906113bc908490600160801b90046effffffffffffffffffffffffffffff16612385565b611e9a565b601c54600090610e22906113d990849060180b612398565b611ed6565b602854600090610e22906113fd908490600160981b900460070b612398565b611f05565b601054600090610e22906114299084906fffffffffffffffffffffffffffffffff16612385565b611f36565b600454600090610e229061144c9084906001600160e01b0316612385565b611f73565b602754600090610e2290611469908490600b0b612398565b611fa7565b601454600090610e2290611496908490670100000000000000900465ffffffffffff16612385565b611fd6565b601b54600090610e22906114b390849060190b612398565b612009565b601254600090610e22906114db9084906bffffffffffffffffffffffff16612385565b612038565b600654600090610e22906114fe9084906001600160d01b0316612385565b612071565b601954600090610e229061151b908490601b0b612398565b6120a5565b602254600090610e229061153890849060120b612398565b6120d4565b6000610e2282612103565b602054600090610e229061156090849060140b612398565b612129565b602954600090610e2290611584908490600160901b900460030b612398565b612158565b601154600090610e22906115ae9084906dffffffffffffffffffffffffffff16612385565b612187565b602854600090610e22906115d99084906a0100000000000000000000900460080b612398565b6121c2565b602954600090610e22906115f690849060060b612398565b6121f1565b602954600090610e229061161a908490600160681b900460040b612398565b612220565b6000610e22826015546116329190612385565b61224f565b600d54600090610e22906116559084906001600160981b0316612385565b612295565b601854600090610e2290611672908490601c0b612398565b6122c9565b601454600090610e2290611697908490600160c81b900461ffff16612385565b6122f8565b602154600090610e22906116b490849060130b612398565b612327565b60006001600160b81b038211156116f2576040516306dfcc6560e41b815260b86004820152602481018390526044015b60405180910390fd5b5090565b60006001600160c01b038211156116f2576040516306dfcc6560e41b815260c06004820152602481018390526044016116e9565b60006001600160a01b038211156116f2576040516306dfcc6560e41b815260a06004820152602481018390526044016116e9565b600067ffffffffffffffff8211156116f257604080516306dfcc6560e41b81526004810191909152602481018390526044016116e9565b60006001600160e81b038211156116f2576040516306dfcc6560e41b815260e86004820152602481018390526044016116e9565b80601d81900b81146117f85760405163327269a760e01b815260f06004820152602481018390526044016116e9565b919050565b60006001600160a81b038211156116f2576040516306dfcc6560e41b815260a86004820152602481018390526044016116e9565b80601681900b81146117f85760405163327269a760e01b815260b86004820152602481018390526044016116e9565b600063ffffffff8211156116f2576040516306dfcc6560e41b815260206004820152602481018390526044016116e9565b600070ffffffffffffffffffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260886004820152602481018390526044016116e9565b600064ffffffffff8211156116f2576040516306dfcc6560e41b815260286004820152602481018390526044016116e9565b60006001600160f81b038211156116f2576040516306dfcc6560e41b815260f86004820152602481018390526044016116e9565b80600d81900b81146117f85760405163327269a760e01b815260706004820152602481018390526044016116e9565b80601081900b81146117f85760405163327269a760e01b815260886004820152602481018390526044016116e9565b80600581900b81146117f85760405163327269a760e01b815260306004820152602481018390526044016116e9565b80601a81900b81146117f85760405163327269a760e01b815260d86004820152602481018390526044016116e9565b80601581900b81146117f85760405163327269a760e01b815260b06004820152602481018390526044016116e9565b60006001600160c81b038211156116f2576040516306dfcc6560e41b815260c86004820152602481018390526044016116e9565b60006001600160901b038211156116f2576040516306dfcc6560e41b815260906004820152602481018390526044016116e9565b80601781900b81146117f85760405163327269a760e01b815260c06004820152602481018390526044016116e9565b600068ffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260486004820152602481018390526044016116e9565b80600281900b81146117f85760405163327269a760e01b815260186004820152602481018390526044016116e9565b60006affffffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260586004820152602481018390526044016116e9565b60006001600160d81b038211156116f2576040516306dfcc6560e41b815260d86004820152602481018390526044016116e9565b80600081900b81146117f85760405163327269a760e01b815260086004820152602481018390526044016116e9565b80600f81900b81146117f85760405163327269a760e01b815260806004820152602481018390526044016116e9565b60006001600160f01b038211156116f2576040516306dfcc6560e41b815260f06004820152602481018390526044016116e9565b60006cffffffffffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260686004820152602481018390526044016116e9565b600066ffffffffffffff8211156116f2576040516306dfcc6560e41b815260386004820152602481018390526044016116e9565b600069ffffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260506004820152602481018390526044016116e9565b80600c81900b81146117f85760405163327269a760e01b815260686004820152602481018390526044016116e9565b80600181900b81146117f85760405163327269a760e01b815260106004820152602481018390526044016116e9565b60006001600160b01b038211156116f2576040516306dfcc6560e41b815260b06004820152602481018390526044016116e9565b600062ffffff8211156116f2576040516306dfcc6560e41b815260186004820152602481018390526044016116e9565b80601e81900b81146117f85760405163327269a760e01b815260f86004820152602481018390526044016116e9565b80600e81900b81146117f85760405163327269a760e01b815260786004820152602481018390526044016116e9565b80601181900b81146117f85760405163327269a760e01b815260906004820152602481018390526044016116e9565b80600a81900b81146117f85760405163327269a760e01b815260586004820152602481018390526044016116e9565b600060ff8211156116f2576040516306dfcc6560e41b815260086004820152602481018390526044016116e9565b80600981900b81146117f85760405163327269a760e01b815260506004820152602481018390526044016116e9565b60006effffffffffffffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260786004820152602481018390526044016116e9565b80601881900b81146117f85760405163327269a760e01b815260c86004820152602481018390526044016116e9565b80600781900b81146117f8576040805163327269a760e01b81526004810191909152602481018390526044016116e9565b60006fffffffffffffffffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260806004820152602481018390526044016116e9565b60006001600160e01b038211156116f2576040516306dfcc6560e41b815260e06004820152602481018390526044016116e9565b80600b81900b81146117f85760405163327269a760e01b815260606004820152602481018390526044016116e9565b600065ffffffffffff8211156116f2576040516306dfcc6560e41b815260306004820152602481018390526044016116e9565b80601981900b81146117f85760405163327269a760e01b815260d06004820152602481018390526044016116e9565b60006bffffffffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260606004820152602481018390526044016116e9565b60006001600160d01b038211156116f2576040516306dfcc6560e41b815260d06004820152602481018390526044016116e9565b80601b81900b81146117f85760405163327269a760e01b815260e06004820152602481018390526044016116e9565b80601281900b81146117f85760405163327269a760e01b815260986004820152602481018390526044016116e9565b6000808212156116f257604051635467221960e11b8152600481018390526024016116e9565b80601481900b81146117f85760405163327269a760e01b815260a86004820152602481018390526044016116e9565b80600381900b81146117f85760405163327269a760e01b815260206004820152602481018390526044016116e9565b60006dffffffffffffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260706004820152602481018390526044016116e9565b80600881900b81146117f85760405163327269a760e01b815260486004820152602481018390526044016116e9565b80600681900b81146117f85760405163327269a760e01b815260386004820152602481018390526044016116e9565b80600481900b81146117f85760405163327269a760e01b815260286004820152602481018390526044016116e9565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156116f25760405163123baf0360e11b8152600481018390526024016116e9565b60006001600160981b038211156116f2576040516306dfcc6560e41b815260986004820152602481018390526044016116e9565b80601c81900b81146117f85760405163327269a760e01b815260e86004820152602481018390526044016116e9565b600061ffff8211156116f2576040516306dfcc6560e41b815260106004820152602481018390526044016116e9565b80601381900b81146117f85760405163327269a760e01b815260a06004820152602481018390526044016116e9565b60006020828403121561236857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e2257610e2261236f565b80820182811260008312801582168215821617156123b8576123b861236f565b50509291505056fea2646970667358221220306e048390644922cc81d71a6879bdd3dd59b4dc60894700e0b0e4627182352864736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103d05760003560e01c806384ea7bbe116101ff578063bd418f9e1161011a578063e741ac68116100ad578063f26a96081161007c578063f26a960814610d62578063f739f4ec14610d8d578063fc4c3bc214610db3578063fe17b74014610dd957600080fd5b8063e741ac6814610cdd578063e849822014610d03578063ebf4e4b814610d29578063edb7f5ff14610d4f57600080fd5b8063ce6378e9116100e9578063ce6378e914610c3e578063dce17c8814610c5f578063ddcdff9714610c85578063e19089d114610cab57600080fd5b8063bd418f9e14610b97578063c390836e14610bc7578063c50b2b6b14610bf2578063cd3e2d8514610c1857600080fd5b80639bdd146811610192578063a615065011610161578063a615065014610af6578063a863423014610b21578063b36c27ab14610b47578063bcabc7ee14610b7157600080fd5b80639bdd146814610a435780639bff009a14610a765780639daa27ef14610a9c5780639f75111614610ac257600080fd5b806397641fcd116101ce57806397641fcd146109ac5780639a22d54c146109d25780639a4cc77d146109f85780639b976d9514610a1d57600080fd5b806384ea7bbe1461090e5780638cbf40e1146109395780638e7f4f2f14610960578063968d3e7e1461098657600080fd5b8063507bc286116102ef5780637034d7011161028257806376d9e7331161025157806376d9e7331461086957806382523713146108945780638312696f146108c2578063837c55c7146108e857600080fd5b80637034d701146107c1578063719ecc09146107e7578063742171971461080d5780637432afb61461083857600080fd5b8063564817a1116102be578063564817a114610714578063592e3e221461074157806361f7d7b41461076757806365f6185e1461079657600080fd5b8063507bc28614610672578063534d7316146106985780635368ad84146106c35780635523d807146106ee57600080fd5b80632ff4b10e116103675780633e3af8c8116103365780633e3af8c8146105da5780634751fe5c146106005780634b35628e146106265780634fdaa0721461064c57600080fd5b80632ff4b10e14610529578063327950321461055157806334defa5114610586578063354dbd93146105af57600080fd5b806320661992116103a357806320661992146104875780632930ada2146104b25780632ccae6db146104d85780632d1075be1461050357600080fd5b8063093da75a146103d557806315799c221461040557806316f2417d146104305780631c58457e1461045b575b600080fd5b6103e86103e3366004612356565b610dff565b6040516001600160b81b0390911681526020015b60405180910390f35b610418610413366004612356565b610e28565b6040516001600160c01b0390911681526020016103fc565b61044361043e366004612356565b610e4b565b6040516001600160a01b0390911681526020016103fc565b61046e610469366004612356565b610e6e565b60405167ffffffffffffffff90911681526020016103fc565b61049a610495366004612356565b610e99565b6040516001600160e81b0390911681526020016103fc565b6104c56104c0366004612356565b610ebc565b604051601d9190910b81526020016103fc565b6104eb6104e6366004612356565b610ed9565b6040516001600160a81b0390911681526020016103fc565b610516610511366004612356565b610efc565b60405160169190910b81526020016103fc565b61053c610537366004612356565b610f19565b60405163ffffffff90911681526020016103fc565b61056461055f366004612356565b610f40565b60405170ffffffffffffffffffffffffffffffffff90911681526020016103fc565b610599610594366004612356565b610f6d565b60405164ffffffffff90911681526020016103fc565b6105c26105bd366004612356565b610f95565b6040516001600160f81b0390911681526020016103fc565b6105ed6105e8366004612356565b610fb8565b604051600d9190910b81526020016103fc565b61061361060e366004612356565b610fd5565b60405160109190910b81526020016103fc565b610639610634366004612356565b610ff2565b60405160059190910b81526020016103fc565b61065f61065a366004612356565b61101a565b604051601a9190910b81526020016103fc565b610685610680366004612356565b611037565b60405160159190910b81526020016103fc565b6106ab6106a6366004612356565b611054565b6040516001600160c81b0390911681526020016103fc565b6106d66106d1366004612356565b611077565b6040516001600160901b0390911681526020016103fc565b6107016106fc366004612356565b61109a565b60405160179190910b81526020016103fc565b610727610722366004612356565b6110b7565b60405168ffffffffffffffffff90911681526020016103fc565b61075461074f366004612356565b6110ea565b60405160029190910b81526020016103fc565b61077a610775366004612356565b61110e565b6040516affffffffffffffffffffff90911681526020016103fc565b6107a96107a4366004612356565b61113c565b6040516001600160d81b0390911681526020016103fc565b6107d46107cf366004612356565b61115f565b60405160009190910b81526020016103fc565b6107fa6107f5366004612356565b611182565b604051600f9190910b81526020016103fc565b61082061081b366004612356565b61119f565b6040516001600160f01b0390911681526020016103fc565b61084b610846366004612356565b6111c2565b6040516cffffffffffffffffffffffffff90911681526020016103fc565b61087c610877366004612356565b6111f2565b60405166ffffffffffffff90911681526020016103fc565b6108a76108a2366004612356565b611215565b60405169ffffffffffffffffffff90911681526020016103fc565b6108d56108d0366004612356565b61123b565b604051600c9190910b81526020016103fc565b6108fb6108f6366004612356565b61125f565b60405160019190910b81526020016103fc565b61092161091c366004612356565b611283565b6040516001600160b01b0390911681526020016103fc565b61094c610947366004612356565b6112a6565b60405162ffffff90911681526020016103fc565b61097361096e366004612356565b6112cc565b604051601e9190910b81526020016103fc565b610999610994366004612356565b6112e9565b604051600e9190910b81526020016103fc565b6109bf6109ba366004612356565b61130d565b60405160119190910b81526020016103fc565b6109e56109e0366004612356565b61132a565b604051600a9190910b81526020016103fc565b610a0b610a06366004612356565b61134e565b60405160ff90911681526020016103fc565b610a30610a2b366004612356565b611372565b60405160099190910b81526020016103fc565b610a56610a51366004612356565b61138f565b6040516effffffffffffffffffffffffffffff90911681526020016103fc565b610a89610a84366004612356565b6113c1565b60405160189190910b81526020016103fc565b610aaf610aaa366004612356565b6113de565b60405160079190910b81526020016103fc565b610ad5610ad0366004612356565b611402565b6040516fffffffffffffffffffffffffffffffff90911681526020016103fc565b610b09610b04366004612356565b61142e565b6040516001600160e01b0390911681526020016103fc565b610b34610b2f366004612356565b611451565b604051600b9190910b81526020016103fc565b610b5a610b55366004612356565b61146e565b60405165ffffffffffff90911681526020016103fc565b610b84610b7f366004612356565b61149b565b60405160199190910b81526020016103fc565b610baa610ba5366004612356565b6114b8565b6040516bffffffffffffffffffffffff90911681526020016103fc565b610bda610bd5366004612356565b6114e0565b6040516001600160d01b0390911681526020016103fc565b610c05610c00366004612356565b611503565b604051601b9190910b81526020016103fc565b610c2b610c26366004612356565b611520565b60405160129190910b81526020016103fc565b610c51610c4c366004612356565b61153d565b6040519081526020016103fc565b610c72610c6d366004612356565b611548565b60405160149190910b81526020016103fc565b610c98610c93366004612356565b611565565b60405160039190910b81526020016103fc565b610cbe610cb9366004612356565b611589565b6040516dffffffffffffffffffffffffffff90911681526020016103fc565b610cf0610ceb366004612356565b6115b3565b60405160089190910b81526020016103fc565b610d16610d11366004612356565b6115de565b60405160069190910b81526020016103fc565b610d3c610d37366004612356565b6115fb565b60405160049190910b81526020016103fc565b610c51610d5d366004612356565b61161f565b610d75610d70366004612356565b611637565b6040516001600160981b0390911681526020016103fc565b610da0610d9b366004612356565b61165a565b604051601c9190910b81526020016103fc565b610dc6610dc1366004612356565b611677565b60405161ffff90911681526020016103fc565b610dec610de7366004612356565b61169c565b60405160139190910b81526020016103fc565b600954600090610e2290610e1d9084906001600160b81b0316612385565b6116b9565b92915050565b600854600090610e2290610e469084906001600160c01b0316612385565b6116f6565b600c54600090610e2290610e699084906001600160a01b0316612385565b61172a565b601354600090610e2290610e94908490600160981b900467ffffffffffffffff16612385565b61175e565b600354600090610e2290610eb79084906001600160e81b0316612385565b611795565b601754600090610e2290610ed4908490601d0b612398565b6117c9565b600b54600090610e2290610ef79084906001600160a81b0316612385565b6117fd565b601e54600090610e2290610f1490849060160b612398565b611831565b601454600090610e2290610f3b908490600160901b900463ffffffff16612385565b611860565b600f54600090610e2290610f6890849070ffffffffffffffffffffffffffffffffff16612385565b611891565b601454600090610e2290610f90908490600160681b900464ffffffffff16612385565b6118cf565b600154600090610e2290610fb39084906001600160f81b0316612385565b611901565b602654600090610e2290610fd0908490600d0b612398565b611935565b602454600090610e2290610fed90849060100b612398565b611964565b602954600090610e2290611015908490670100000000000000900460050b612398565b611993565b601a8054600091610e2291611032918591900b612398565b6119c2565b601f54600090610e229061104f90849060150b612398565b6119f1565b600754600090610e22906110729084906001600160c81b0316612385565b611a20565b600e54600090610e22906110959084906001600160901b0316612385565b611a54565b601d54600090610e22906110b290849060170b612398565b611a88565b601354600090610e22906110e59084906a0100000000000000000000900468ffffffffffffffffff16612385565b611ab7565b602954600090610e2290611109908490600160b01b900460020b612398565b611aed565b601254600090610e2290611137908490600160601b90046affffffffffffffffffffff16612385565b611b1c565b600554600090610e229061115a9084906001600160d81b0316612385565b611b54565b602954600090610e229061117d908490600160d81b9004840b612398565b611b88565b602554600090610e229061119a908490600f0b612398565b611bb7565b600254600090610e22906111bd9084906001600160f01b0316612385565b611be6565b601154600090610e22906111ed908490600160701b90046cffffffffffffffffffffffffff16612385565b611c1a565b601454600090610e229061121090849066ffffffffffffff16612385565b611c54565b601354600090610e229061123690849069ffffffffffffffffffff16612385565b611c88565b602654600090610e229061125a908490600160701b9004600c0b612398565b611cbf565b602954600090610e229061127e908490600160c81b900460010b612398565b611cee565b600a54600090610e22906112a19084906001600160b01b0316612385565b611d1d565b601454600090610e22906112c7908490600160b01b900462ffffff16612385565b611d51565b601654600090610e22906112e4908490601e0b612398565b611d81565b602554600090610e2290611308908490600160801b9004600e0b612398565b611db0565b602354600090610e229061132590849060110b612398565b611ddf565b602754600090610e2290611349908490600160601b9004600a0b612398565b611e0e565b601454600090610e229061136d908490600160d81b900460ff16612385565b611e3d565b602854600090610e229061138a90849060090b612398565b611e6b565b601054600090610e22906113bc908490600160801b90046effffffffffffffffffffffffffffff16612385565b611e9a565b601c54600090610e22906113d990849060180b612398565b611ed6565b602854600090610e22906113fd908490600160981b900460070b612398565b611f05565b601054600090610e22906114299084906fffffffffffffffffffffffffffffffff16612385565b611f36565b600454600090610e229061144c9084906001600160e01b0316612385565b611f73565b602754600090610e2290611469908490600b0b612398565b611fa7565b601454600090610e2290611496908490670100000000000000900465ffffffffffff16612385565b611fd6565b601b54600090610e22906114b390849060190b612398565b612009565b601254600090610e22906114db9084906bffffffffffffffffffffffff16612385565b612038565b600654600090610e22906114fe9084906001600160d01b0316612385565b612071565b601954600090610e229061151b908490601b0b612398565b6120a5565b602254600090610e229061153890849060120b612398565b6120d4565b6000610e2282612103565b602054600090610e229061156090849060140b612398565b612129565b602954600090610e2290611584908490600160901b900460030b612398565b612158565b601154600090610e22906115ae9084906dffffffffffffffffffffffffffff16612385565b612187565b602854600090610e22906115d99084906a0100000000000000000000900460080b612398565b6121c2565b602954600090610e22906115f690849060060b612398565b6121f1565b602954600090610e229061161a908490600160681b900460040b612398565b612220565b6000610e22826015546116329190612385565b61224f565b600d54600090610e22906116559084906001600160981b0316612385565b612295565b601854600090610e2290611672908490601c0b612398565b6122c9565b601454600090610e2290611697908490600160c81b900461ffff16612385565b6122f8565b602154600090610e22906116b490849060130b612398565b612327565b60006001600160b81b038211156116f2576040516306dfcc6560e41b815260b86004820152602481018390526044015b60405180910390fd5b5090565b60006001600160c01b038211156116f2576040516306dfcc6560e41b815260c06004820152602481018390526044016116e9565b60006001600160a01b038211156116f2576040516306dfcc6560e41b815260a06004820152602481018390526044016116e9565b600067ffffffffffffffff8211156116f257604080516306dfcc6560e41b81526004810191909152602481018390526044016116e9565b60006001600160e81b038211156116f2576040516306dfcc6560e41b815260e86004820152602481018390526044016116e9565b80601d81900b81146117f85760405163327269a760e01b815260f06004820152602481018390526044016116e9565b919050565b60006001600160a81b038211156116f2576040516306dfcc6560e41b815260a86004820152602481018390526044016116e9565b80601681900b81146117f85760405163327269a760e01b815260b86004820152602481018390526044016116e9565b600063ffffffff8211156116f2576040516306dfcc6560e41b815260206004820152602481018390526044016116e9565b600070ffffffffffffffffffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260886004820152602481018390526044016116e9565b600064ffffffffff8211156116f2576040516306dfcc6560e41b815260286004820152602481018390526044016116e9565b60006001600160f81b038211156116f2576040516306dfcc6560e41b815260f86004820152602481018390526044016116e9565b80600d81900b81146117f85760405163327269a760e01b815260706004820152602481018390526044016116e9565b80601081900b81146117f85760405163327269a760e01b815260886004820152602481018390526044016116e9565b80600581900b81146117f85760405163327269a760e01b815260306004820152602481018390526044016116e9565b80601a81900b81146117f85760405163327269a760e01b815260d86004820152602481018390526044016116e9565b80601581900b81146117f85760405163327269a760e01b815260b06004820152602481018390526044016116e9565b60006001600160c81b038211156116f2576040516306dfcc6560e41b815260c86004820152602481018390526044016116e9565b60006001600160901b038211156116f2576040516306dfcc6560e41b815260906004820152602481018390526044016116e9565b80601781900b81146117f85760405163327269a760e01b815260c06004820152602481018390526044016116e9565b600068ffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260486004820152602481018390526044016116e9565b80600281900b81146117f85760405163327269a760e01b815260186004820152602481018390526044016116e9565b60006affffffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260586004820152602481018390526044016116e9565b60006001600160d81b038211156116f2576040516306dfcc6560e41b815260d86004820152602481018390526044016116e9565b80600081900b81146117f85760405163327269a760e01b815260086004820152602481018390526044016116e9565b80600f81900b81146117f85760405163327269a760e01b815260806004820152602481018390526044016116e9565b60006001600160f01b038211156116f2576040516306dfcc6560e41b815260f06004820152602481018390526044016116e9565b60006cffffffffffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260686004820152602481018390526044016116e9565b600066ffffffffffffff8211156116f2576040516306dfcc6560e41b815260386004820152602481018390526044016116e9565b600069ffffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260506004820152602481018390526044016116e9565b80600c81900b81146117f85760405163327269a760e01b815260686004820152602481018390526044016116e9565b80600181900b81146117f85760405163327269a760e01b815260106004820152602481018390526044016116e9565b60006001600160b01b038211156116f2576040516306dfcc6560e41b815260b06004820152602481018390526044016116e9565b600062ffffff8211156116f2576040516306dfcc6560e41b815260186004820152602481018390526044016116e9565b80601e81900b81146117f85760405163327269a760e01b815260f86004820152602481018390526044016116e9565b80600e81900b81146117f85760405163327269a760e01b815260786004820152602481018390526044016116e9565b80601181900b81146117f85760405163327269a760e01b815260906004820152602481018390526044016116e9565b80600a81900b81146117f85760405163327269a760e01b815260586004820152602481018390526044016116e9565b600060ff8211156116f2576040516306dfcc6560e41b815260086004820152602481018390526044016116e9565b80600981900b81146117f85760405163327269a760e01b815260506004820152602481018390526044016116e9565b60006effffffffffffffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260786004820152602481018390526044016116e9565b80601881900b81146117f85760405163327269a760e01b815260c86004820152602481018390526044016116e9565b80600781900b81146117f8576040805163327269a760e01b81526004810191909152602481018390526044016116e9565b60006fffffffffffffffffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260806004820152602481018390526044016116e9565b60006001600160e01b038211156116f2576040516306dfcc6560e41b815260e06004820152602481018390526044016116e9565b80600b81900b81146117f85760405163327269a760e01b815260606004820152602481018390526044016116e9565b600065ffffffffffff8211156116f2576040516306dfcc6560e41b815260306004820152602481018390526044016116e9565b80601981900b81146117f85760405163327269a760e01b815260d06004820152602481018390526044016116e9565b60006bffffffffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260606004820152602481018390526044016116e9565b60006001600160d01b038211156116f2576040516306dfcc6560e41b815260d06004820152602481018390526044016116e9565b80601b81900b81146117f85760405163327269a760e01b815260e06004820152602481018390526044016116e9565b80601281900b81146117f85760405163327269a760e01b815260986004820152602481018390526044016116e9565b6000808212156116f257604051635467221960e11b8152600481018390526024016116e9565b80601481900b81146117f85760405163327269a760e01b815260a86004820152602481018390526044016116e9565b80600381900b81146117f85760405163327269a760e01b815260206004820152602481018390526044016116e9565b60006dffffffffffffffffffffffffffff8211156116f2576040516306dfcc6560e41b815260706004820152602481018390526044016116e9565b80600881900b81146117f85760405163327269a760e01b815260486004820152602481018390526044016116e9565b80600681900b81146117f85760405163327269a760e01b815260386004820152602481018390526044016116e9565b80600481900b81146117f85760405163327269a760e01b815260286004820152602481018390526044016116e9565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156116f25760405163123baf0360e11b8152600481018390526024016116e9565b60006001600160981b038211156116f2576040516306dfcc6560e41b815260986004820152602481018390526044016116e9565b80601c81900b81146117f85760405163327269a760e01b815260e86004820152602481018390526044016116e9565b600061ffff8211156116f2576040516306dfcc6560e41b815260106004820152602481018390526044016116e9565b80601381900b81146117f85760405163327269a760e01b815260a06004820152602481018390526044016116e9565b60006020828403121561236857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e2257610e2261236f565b80820182811260008312801582168215821617156123b8576123b861236f565b50509291505056fea2646970667358221220306e048390644922cc81d71a6879bdd3dd59b4dc60894700e0b0e4627182352864736f6c63430008140033", + "bytecode": "0x60806040526000196000556001600160f81b03600160006101000a8154816001600160f81b0302191690836001600160f81b031602179055506001600160f01b03600260006101000a8154816001600160f01b0302191690836001600160f01b031602179055506001600160e81b03600360006101000a8154816001600160e81b0302191690836001600160e81b031602179055506001600160e01b03600460006101000a8154816001600160e01b0302191690836001600160e01b031602179055506001600160d81b03600560006101000a8154816001600160d81b0302191690836001600160d81b031602179055506001600160d01b03600660006101000a8154816001600160d01b0302191690836001600160d01b031602179055506001600160c81b03600760006101000a8154816001600160c81b0302191690836001600160c81b031602179055506001600160c01b03600860006101000a8154816001600160c01b0302191690836001600160c01b031602179055506001600160b81b03600960006101000a8154816001600160b81b0302191690836001600160b81b031602179055506001600160b01b03600a60006101000a8154816001600160b01b0302191690836001600160b01b031602179055506001600160a81b03600b60006101000a8154816001600160a81b0302191690836001600160a81b031602179055506001600160a01b03600c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055506001600160981b03600d60006101000a8154816001600160981b0302191690836001600160981b031602179055506001600160901b03600e60006101000a8154816001600160901b0302191690836001600160901b031602179055506001600160881b03600f60006101000a8154816001600160881b0302191690836001600160881b031602179055506001600160801b03601060006101000a8154816001600160801b0302191690836001600160801b031602179055506001600160781b036010806101000a8154816001600160781b0302191690836001600160781b031602179055506001600160701b03601160006101000a8154816001600160701b0302191690836001600160701b031602179055506001600160681b036011600e6101000a8154816001600160681b0302191690836001600160681b031602179055506001600160601b03601260006101000a8154816001600160601b0302191690836001600160601b031602179055506001600160581b036012600c6101000a8154816001600160581b0302191690836001600160581b031602179055506001600160501b03601360006101000a8154816001600160501b0302191690836001600160501b031602179055506001600160481b036013600a6101000a8154816001600160481b0302191690836001600160481b031602179055506001600160401b036013806101000a8154816001600160401b0302191690836001600160401b0316021790555066ffffffffffffff601460006101000a81548166ffffffffffffff021916908366ffffffffffffff16021790555065ffffffffffff601460076101000a81548165ffffffffffff021916908365ffffffffffff16021790555064ffffffffff6014600d6101000a81548164ffffffffff021916908364ffffffffff16021790555063ffffffff601460126101000a81548163ffffffff021916908363ffffffff16021790555062ffffff601460166101000a81548162ffffff021916908362ffffff16021790555061ffff601460196101000a81548161ffff021916908361ffff16021790555060ff6014601b6101000a81548160ff021916908360ff1602179055506001600160ff1b036015556001600160f71b03601660006101000a8154816001600160f81b030219169083601e0b6001600160f81b031602179055506001600160ef1b03601760006101000a8154816001600160f01b030219169083601d0b6001600160f01b031602179055506001600160e71b03601860006101000a8154816001600160e81b030219169083601c0b6001600160e81b031602179055506001600160df1b03601960006101000a8154816001600160e01b030219169083601b0b6001600160e01b031602179055506001600160d71b03601a60006101000a8154816001600160d81b030219169083601a0b6001600160d81b031602179055506001600160cf1b03601b60006101000a8154816001600160d01b03021916908360190b6001600160d01b031602179055506001600160c71b03601c60006101000a8154816001600160c81b03021916908360180b6001600160c81b031602179055506001600160bf1b03601d60006101000a8154816001600160c01b03021916908360170b6001600160c01b031602179055506001600160b71b03601e60006101000a8154816001600160b81b03021916908360160b6001600160b81b031602179055506001600160af1b03601f60006101000a8154816001600160b01b03021916908360150b6001600160b01b031602179055506001600160a71b03602060006101000a8154816001600160a81b03021916908360140b6001600160a81b0316021790555060016001609f1b03602160006101000a8154816001600160a01b03021916908360130b6001600160a01b031602179055506001600160971b03602260006101000a8154816001600160981b03021916908360120b6001600160981b0316021790555060016001608f1b03602360006101000a8154816001600160901b03021916908360110b6001600160901b031602179055506001600160871b03602460006101000a8154816001600160881b03021916908360100b6001600160881b0316021790555060016001607f1b03602560006101000a8154816001600160801b030219169083600f0b6001600160801b031602179055506001600160771b03602560106101000a8154816001600160781b030219169083600e0b6001600160781b0316021790555060016001606f1b03602660006101000a8154816001600160701b030219169083600d0b6001600160701b031602179055506001600160671b036026600e6101000a8154816001600160681b030219169083600c0b6001600160681b0316021790555060016001605f1b03602760006101000a8154816001600160601b030219169083600b0b6001600160601b031602179055506001600160571b036027600c6101000a8154816001600160581b030219169083600a0b6001600160581b0316021790555060016001604f1b03602860006101000a8154816001600160501b03021916908360090b6001600160501b031602179055506001600160471b036028600a6101000a8154816001600160481b03021916908360080b6001600160481b0316021790555060016001603f1b03602860136101000a8154816001600160401b03021916908360070b6001600160401b03160217905550667fffffffffffff602960006101000a81548166ffffffffffffff021916908360060b66ffffffffffffff160217905550657fffffffffff602960076101000a81548165ffffffffffff021916908360050b65ffffffffffff160217905550647fffffffff6029600d6101000a81548164ffffffffff021916908360040b64ffffffffff160217905550637fffffff602960126101000a81548163ffffffff021916908360030b63ffffffff160217905550627fffff602960166101000a81548162ffffff021916908360020b62ffffff160217905550617fff602960196101000a81548161ffff021916908360010b61ffff160217905550607f6029601b6101000a81548160ff021916908360000b60ff160217905550348015610b2257600080fd5b506123f680610b326000396000f3fe608060405234801561001057600080fd5b50600436106103d05760003560e01c8063809fdd33116101ff578063c81932551161011a578063e5feca77116100ad578063eaeff4e51161007c578063eaeff4e514610d77578063f136dc0214610d9d578063fb7f3c7914610dc3578063fdcf791b14610dec57600080fd5b8063e5feca7714610cdf578063e6a6f6f814610d05578063e87167c314610d2b578063ea4b667414610d5157600080fd5b8063dd2a0316116100e9578063dd2a031614610c47578063dfbe873b14610c6d578063dfef6beb14610c8e578063e46ea12014610cb957600080fd5b8063c819325514610ba5578063cbff595f14610bcd578063cf65b4d314610bfb578063d6bd32aa14610c2157600080fd5b80639c6f59be11610192578063b936bfb311610161578063b936bfb314610afe578063bb33fe0814610b29578063c3cd16b514610b54578063c4b4298c14610b7a57600080fd5b80639c6f59be14610a53578063ad4b458a14610a79578063b012db6f14610aae578063b0a9408714610ad857600080fd5b80638c48fc22116101ce5780638c48fc22146109b55780639374068f146109e057806395cb3ec614610a06578063971bcc2214610a2d57600080fd5b8063809fdd33146108ff578063821bedfa14610933578063839838381461095957806385bb6ae11461098a57600080fd5b80633b703090116102ef5780635badd405116102825780636d6d9e4b116102515780636d6d9e4b14610854578063720ad6741461087a578063785de9bf146108a55780637ef90ce0146108d057600080fd5b80635badd405146107b75780635bb79860146107dd57806368048346146108085780636c5048531461082e57600080fd5b806353b916f1116102be57806353b916f11461071557806354c23feb1461073b578063564121c71461076657806358d421eb1461079157600080fd5b80633b703090146106675780633fd726721461069257806341d2aa64146106bd57806343710f46146106ef57600080fd5b80631cf887fc116103675780632665fad0116103365780632665fad0146105c25780632c81868d146105ee578063316fcbbd1461061457806338d8e45a1461064157600080fd5b80631cf887fc146105135780631d1131e2146105435780631e07d036146105695780631e4e4bad1461058f57600080fd5b80630cc4681e116103a35780630cc4681e146104775780630d4a7bdb1461049c57806311e867ff146104c757806318a359ec146104ed57600080fd5b806301b49217146103d557806305752e511461040057806305b131011461042657806307f841be14610451575b600080fd5b6103e86103e3366004612356565b610dff565b604051601e9190910b81526020015b60405180910390f35b61041361040e366004612356565b610e22565b604051601c9190910b81526020016103f7565b610439610434366004612356565b610e3f565b6040516001600160b01b0390911681526020016103f7565b61046461045f366004612356565b610e62565b60405160179190910b81526020016103f7565b61048a610485366004612356565b610e7f565b60405160ff90911681526020016103f7565b6104af6104aa366004612356565b610ea3565b6040516001600160e81b0390911681526020016103f7565b6104da6104d5366004612356565b610ec6565b60405160189190910b81526020016103f7565b6105006104fb366004612356565b610ee3565b60405160059190910b81526020016103f7565b610526610521366004612356565b610f0b565b6040516bffffffffffffffffffffffff90911681526020016103f7565b610556610551366004612356565b610f33565b604051600b9190910b81526020016103f7565b61057c610577366004612356565b610f50565b604051600c9190910b81526020016103f7565b6105a261059d366004612356565b610f74565b6040516effffffffffffffffffffffffffffff90911681526020016103f7565b6105d56105d0366004612356565b610fa6565b60405167ffffffffffffffff90911681526020016103f7565b6106016105fc366004612356565b610fd1565b60405160099190910b81526020016103f7565b610627610622366004612356565b610fee565b60405168ffffffffffffffffff90911681526020016103f7565b61065461064f366004612356565b611021565b604051601b9190910b81526020016103f7565b61067a610675366004612356565b61103e565b6040516001600160f01b0390911681526020016103f7565b6106a56106a0366004612356565b611061565b6040516001600160f81b0390911681526020016103f7565b6106d06106cb366004612356565b611084565b6040516dffffffffffffffffffffffffffff90911681526020016103f7565b6107026106fd366004612356565b6110ae565b60405160069190910b81526020016103f7565b610728610723366004612356565b6110cb565b604051601d9190910b81526020016103f7565b61074e610749366004612356565b6110e8565b6040516001600160a81b0390911681526020016103f7565b610779610774366004612356565b61110b565b6040516001600160b81b0390911681526020016103f7565b6107a461079f366004612356565b61112e565b604051600d9190910b81526020016103f7565b6107ca6107c5366004612356565b61114b565b60405160129190910b81526020016103f7565b6107f06107eb366004612356565b611168565b6040516001600160e01b0390911681526020016103f7565b61081b610816366004612356565b61118b565b60405160139190910b81526020016103f7565b61084161083c366004612356565b6111a8565b60405160169190910b81526020016103f7565b610867610862366004612356565b6111c5565b60405160119190910b81526020016103f7565b61088d610888366004612356565b6111e2565b6040516001600160c81b0390911681526020016103f7565b6108b86108b3366004612356565b611205565b6040516001600160c01b0390911681526020016103f7565b6108e36108de366004612356565b611228565b6040516affffffffffffffffffffff90911681526020016103f7565b61091261090d366004612356565b611256565b6040516fffffffffffffffffffffffffffffffff90911681526020016103f7565b610946610941366004612356565b611282565b60405160159190910b81526020016103f7565b61096c610967366004612356565b61129f565b6040516cffffffffffffffffffffffffff90911681526020016103f7565b61099d610998366004612356565b6112cf565b6040516001600160d81b0390911681526020016103f7565b6109c86109c3366004612356565b6112f2565b6040516001600160981b0390911681526020016103f7565b6109f36109ee366004612356565b611315565b60405161ffff90911681526020016103f7565b610a19610a14366004612356565b61133a565b60405162ffffff90911681526020016103f7565b610a40610a3b366004612356565b611360565b604051600a9190910b81526020016103f7565b610a66610a61366004612356565b611384565b60405160039190910b81526020016103f7565b610a8c610a87366004612356565b6113a8565b60405170ffffffffffffffffffffffffffffffffff90911681526020016103f7565b610ac1610abc366004612356565b6113d5565b60405165ffffffffffff90911681526020016103f7565b610aeb610ae6366004612356565b611402565b60405160109190910b81526020016103f7565b610b11610b0c366004612356565b61141f565b6040516001600160901b0390911681526020016103f7565b610b3c610b37366004612356565b611442565b6040516001600160d01b0390911681526020016103f7565b610b67610b62366004612356565b611465565b60405160049190910b81526020016103f7565b610b8d610b88366004612356565b611489565b60405166ffffffffffffff90911681526020016103f7565b610bb8610bb3366004612356565b6114ac565b60405163ffffffff90911681526020016103f7565b610be0610bdb366004612356565b6114d3565b60405169ffffffffffffffffffff90911681526020016103f7565b610c0e610c09366004612356565b6114f9565b60405160019190910b81526020016103f7565b610c34610c2f366004612356565b61151d565b60405160079190910b81526020016103f7565b610c5a610c55366004612356565b611541565b604051600f9190910b81526020016103f7565b610c80610c7b366004612356565b61155e565b6040519081526020016103f7565b610ca1610c9c366004612356565b611576565b6040516001600160a01b0390911681526020016103f7565b610ccc610cc7366004612356565b611599565b60405160089190910b81526020016103f7565b610cf2610ced366004612356565b6115c4565b60405160029190910b81526020016103f7565b610d18610d13366004612356565b6115e8565b60405160149190910b81526020016103f7565b610d3e610d39366004612356565b611605565b604051601a9190910b81526020016103f7565b610d64610d5f366004612356565b611622565b604051600e9190910b81526020016103f7565b610d8a610d85366004612356565b611646565b60405160199190910b81526020016103f7565b610db0610dab366004612356565b611663565b60405160009190910b81526020016103f7565b610dd6610dd1366004612356565b611686565b60405164ffffffffff90911681526020016103f7565b610c80610dfa366004612356565b6116ae565b601654600090610e1c90610e17908490601e0b612385565b6116b9565b92915050565b601854600090610e1c90610e3a908490601c0b612385565b6116f2565b600a54600090610e1c90610e5d9084906001600160b01b03166123ad565b611721565b601d54600090610e1c90610e7a90849060170b612385565b611759565b601454600090610e1c90610e9e908490600160d81b900460ff166123ad565b611788565b600354600090610e1c90610ec19084906001600160e81b03166123ad565b6117b6565b601c54600090610e1c90610ede90849060180b612385565b6117ea565b602954600090610e1c90610f06908490670100000000000000900460050b612385565b611819565b601254600090610e1c90610f2e9084906bffffffffffffffffffffffff166123ad565b611848565b602754600090610e1c90610f4b908490600b0b612385565b611881565b602654600090610e1c90610f6f908490600160701b9004600c0b612385565b6118b0565b601054600090610e1c90610fa1908490600160801b90046effffffffffffffffffffffffffffff166123ad565b6118df565b601354600090610e1c90610fcc908490600160981b900467ffffffffffffffff166123ad565b61191b565b602854600090610e1c90610fe990849060090b612385565b611952565b601354600090610e1c9061101c9084906a0100000000000000000000900468ffffffffffffffffff166123ad565b611981565b601954600090610e1c90611039908490601b0b612385565b6119b7565b600254600090610e1c9061105c9084906001600160f01b03166123ad565b6119e6565b600154600090610e1c9061107f9084906001600160f81b03166123ad565b611a1a565b601154600090610e1c906110a99084906dffffffffffffffffffffffffffff166123ad565b611a4e565b602954600090610e1c906110c690849060060b612385565b611a89565b601754600090610e1c906110e3908490601d0b612385565b611ab8565b600b54600090610e1c906111069084906001600160a81b03166123ad565b611ae7565b600954600090610e1c906111299084906001600160b81b03166123ad565b611b1b565b602654600090610e1c90611146908490600d0b612385565b611b4f565b602254600090610e1c9061116390849060120b612385565b611b7e565b600454600090610e1c906111869084906001600160e01b03166123ad565b611bad565b602154600090610e1c906111a390849060130b612385565b611be1565b601e54600090610e1c906111c090849060160b612385565b611c10565b602354600090610e1c906111dd90849060110b612385565b611c3f565b600754600090610e1c906112009084906001600160c81b03166123ad565b611c6e565b600854600090610e1c906112239084906001600160c01b03166123ad565b611ca2565b601254600090610e1c90611251908490600160601b90046affffffffffffffffffffff166123ad565b611cd6565b601054600090610e1c9061127d9084906fffffffffffffffffffffffffffffffff166123ad565b611d0e565b601f54600090610e1c9061129a90849060150b612385565b611d4b565b601154600090610e1c906112ca908490600160701b90046cffffffffffffffffffffffffff166123ad565b611d7a565b600554600090610e1c906112ed9084906001600160d81b03166123ad565b611db4565b600d54600090610e1c906113109084906001600160981b03166123ad565b611de8565b601454600090610e1c90611335908490600160c81b900461ffff166123ad565b611e1c565b601454600090610e1c9061135b908490600160b01b900462ffffff166123ad565b611e4b565b602754600090610e1c9061137f908490600160601b9004600a0b612385565b611e7b565b602954600090610e1c906113a3908490600160901b900460030b612385565b611eaa565b600f54600090610e1c906113d090849070ffffffffffffffffffffffffffffffffff166123ad565b611ed9565b601454600090610e1c906113fd908490670100000000000000900465ffffffffffff166123ad565b611f17565b602454600090610e1c9061141a90849060100b612385565b611f4a565b600e54600090610e1c9061143d9084906001600160901b03166123ad565b611f79565b600654600090610e1c906114609084906001600160d01b03166123ad565b611fad565b602954600090610e1c90611484908490600160681b900460040b612385565b611fe1565b601454600090610e1c906114a790849066ffffffffffffff166123ad565b612010565b601454600090610e1c906114ce908490600160901b900463ffffffff166123ad565b612044565b601354600090610e1c906114f490849069ffffffffffffffffffff166123ad565b612075565b602954600090610e1c90611518908490600160c81b900460010b612385565b6120ac565b602854600090610e1c9061153c908490600160981b900460070b612385565b6120db565b602554600090610e1c90611559908490600f0b612385565b61210c565b6000610e1c8260155461157191906123ad565b61213b565b600c54600090610e1c906115949084906001600160a01b03166123ad565b612181565b602854600090610e1c906115bf9084906a0100000000000000000000900460080b612385565b6121b5565b602954600090610e1c906115e3908490600160b01b900460020b612385565b6121e4565b602054600090610e1c9061160090849060140b612385565b612213565b601a8054600091610e1c9161161d918591900b612385565b612242565b602554600090610e1c90611641908490600160801b9004600e0b612385565b612271565b601b54600090610e1c9061165e90849060190b612385565b6122a0565b602954600090610e1c90611681908490600160d81b9004840b612385565b6122cf565b601454600090610e1c906116a9908490600160681b900464ffffffffff166123ad565b6122fe565b6000610e1c82612330565b80601e81900b81146116ed5760405163327269a760e01b815260f86004820152602481018390526044015b60405180910390fd5b919050565b80601c81900b81146116ed5760405163327269a760e01b815260e86004820152602481018390526044016116e4565b60006001600160b01b03821115611755576040516306dfcc6560e41b815260b06004820152602481018390526044016116e4565b5090565b80601781900b81146116ed5760405163327269a760e01b815260c06004820152602481018390526044016116e4565b600060ff821115611755576040516306dfcc6560e41b815260086004820152602481018390526044016116e4565b60006001600160e81b03821115611755576040516306dfcc6560e41b815260e86004820152602481018390526044016116e4565b80601881900b81146116ed5760405163327269a760e01b815260c86004820152602481018390526044016116e4565b80600581900b81146116ed5760405163327269a760e01b815260306004820152602481018390526044016116e4565b60006bffffffffffffffffffffffff821115611755576040516306dfcc6560e41b815260606004820152602481018390526044016116e4565b80600b81900b81146116ed5760405163327269a760e01b815260606004820152602481018390526044016116e4565b80600c81900b81146116ed5760405163327269a760e01b815260686004820152602481018390526044016116e4565b60006effffffffffffffffffffffffffffff821115611755576040516306dfcc6560e41b815260786004820152602481018390526044016116e4565b600067ffffffffffffffff82111561175557604080516306dfcc6560e41b81526004810191909152602481018390526044016116e4565b80600981900b81146116ed5760405163327269a760e01b815260506004820152602481018390526044016116e4565b600068ffffffffffffffffff821115611755576040516306dfcc6560e41b815260486004820152602481018390526044016116e4565b80601b81900b81146116ed5760405163327269a760e01b815260e06004820152602481018390526044016116e4565b60006001600160f01b03821115611755576040516306dfcc6560e41b815260f06004820152602481018390526044016116e4565b60006001600160f81b03821115611755576040516306dfcc6560e41b815260f86004820152602481018390526044016116e4565b60006dffffffffffffffffffffffffffff821115611755576040516306dfcc6560e41b815260706004820152602481018390526044016116e4565b80600681900b81146116ed5760405163327269a760e01b815260386004820152602481018390526044016116e4565b80601d81900b81146116ed5760405163327269a760e01b815260f06004820152602481018390526044016116e4565b60006001600160a81b03821115611755576040516306dfcc6560e41b815260a86004820152602481018390526044016116e4565b60006001600160b81b03821115611755576040516306dfcc6560e41b815260b86004820152602481018390526044016116e4565b80600d81900b81146116ed5760405163327269a760e01b815260706004820152602481018390526044016116e4565b80601281900b81146116ed5760405163327269a760e01b815260986004820152602481018390526044016116e4565b60006001600160e01b03821115611755576040516306dfcc6560e41b815260e06004820152602481018390526044016116e4565b80601381900b81146116ed5760405163327269a760e01b815260a06004820152602481018390526044016116e4565b80601681900b81146116ed5760405163327269a760e01b815260b86004820152602481018390526044016116e4565b80601181900b81146116ed5760405163327269a760e01b815260906004820152602481018390526044016116e4565b60006001600160c81b03821115611755576040516306dfcc6560e41b815260c86004820152602481018390526044016116e4565b60006001600160c01b03821115611755576040516306dfcc6560e41b815260c06004820152602481018390526044016116e4565b60006affffffffffffffffffffff821115611755576040516306dfcc6560e41b815260586004820152602481018390526044016116e4565b60006fffffffffffffffffffffffffffffffff821115611755576040516306dfcc6560e41b815260806004820152602481018390526044016116e4565b80601581900b81146116ed5760405163327269a760e01b815260b06004820152602481018390526044016116e4565b60006cffffffffffffffffffffffffff821115611755576040516306dfcc6560e41b815260686004820152602481018390526044016116e4565b60006001600160d81b03821115611755576040516306dfcc6560e41b815260d86004820152602481018390526044016116e4565b60006001600160981b03821115611755576040516306dfcc6560e41b815260986004820152602481018390526044016116e4565b600061ffff821115611755576040516306dfcc6560e41b815260106004820152602481018390526044016116e4565b600062ffffff821115611755576040516306dfcc6560e41b815260186004820152602481018390526044016116e4565b80600a81900b81146116ed5760405163327269a760e01b815260586004820152602481018390526044016116e4565b80600381900b81146116ed5760405163327269a760e01b815260206004820152602481018390526044016116e4565b600070ffffffffffffffffffffffffffffffffff821115611755576040516306dfcc6560e41b815260886004820152602481018390526044016116e4565b600065ffffffffffff821115611755576040516306dfcc6560e41b815260306004820152602481018390526044016116e4565b80601081900b81146116ed5760405163327269a760e01b815260886004820152602481018390526044016116e4565b60006001600160901b03821115611755576040516306dfcc6560e41b815260906004820152602481018390526044016116e4565b60006001600160d01b03821115611755576040516306dfcc6560e41b815260d06004820152602481018390526044016116e4565b80600481900b81146116ed5760405163327269a760e01b815260286004820152602481018390526044016116e4565b600066ffffffffffffff821115611755576040516306dfcc6560e41b815260386004820152602481018390526044016116e4565b600063ffffffff821115611755576040516306dfcc6560e41b815260206004820152602481018390526044016116e4565b600069ffffffffffffffffffff821115611755576040516306dfcc6560e41b815260506004820152602481018390526044016116e4565b80600181900b81146116ed5760405163327269a760e01b815260106004820152602481018390526044016116e4565b80600781900b81146116ed576040805163327269a760e01b81526004810191909152602481018390526044016116e4565b80600f81900b81146116ed5760405163327269a760e01b815260806004820152602481018390526044016116e4565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156117555760405163123baf0360e11b8152600481018390526024016116e4565b60006001600160a01b03821115611755576040516306dfcc6560e41b815260a06004820152602481018390526044016116e4565b80600881900b81146116ed5760405163327269a760e01b815260486004820152602481018390526044016116e4565b80600281900b81146116ed5760405163327269a760e01b815260186004820152602481018390526044016116e4565b80601481900b81146116ed5760405163327269a760e01b815260a86004820152602481018390526044016116e4565b80601a81900b81146116ed5760405163327269a760e01b815260d86004820152602481018390526044016116e4565b80600e81900b81146116ed5760405163327269a760e01b815260786004820152602481018390526044016116e4565b80601981900b81146116ed5760405163327269a760e01b815260d06004820152602481018390526044016116e4565b80600081900b81146116ed5760405163327269a760e01b815260086004820152602481018390526044016116e4565b600064ffffffffff821115611755576040516306dfcc6560e41b815260286004820152602481018390526044016116e4565b60008082121561175557604051635467221960e11b8152600481018390526024016116e4565b60006020828403121561236857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b80820182811260008312801582168215821617156123a5576123a561236f565b505092915050565b80820180821115610e1c57610e1c61236f56fea2646970667358221220e55335ef3b650dfc79a32929305cb6ce0723d9e4877832fc1c1f431c4c9a7fab64736f6c63430008140033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103d05760003560e01c8063809fdd33116101ff578063c81932551161011a578063e5feca77116100ad578063eaeff4e51161007c578063eaeff4e514610d77578063f136dc0214610d9d578063fb7f3c7914610dc3578063fdcf791b14610dec57600080fd5b8063e5feca7714610cdf578063e6a6f6f814610d05578063e87167c314610d2b578063ea4b667414610d5157600080fd5b8063dd2a0316116100e9578063dd2a031614610c47578063dfbe873b14610c6d578063dfef6beb14610c8e578063e46ea12014610cb957600080fd5b8063c819325514610ba5578063cbff595f14610bcd578063cf65b4d314610bfb578063d6bd32aa14610c2157600080fd5b80639c6f59be11610192578063b936bfb311610161578063b936bfb314610afe578063bb33fe0814610b29578063c3cd16b514610b54578063c4b4298c14610b7a57600080fd5b80639c6f59be14610a53578063ad4b458a14610a79578063b012db6f14610aae578063b0a9408714610ad857600080fd5b80638c48fc22116101ce5780638c48fc22146109b55780639374068f146109e057806395cb3ec614610a06578063971bcc2214610a2d57600080fd5b8063809fdd33146108ff578063821bedfa14610933578063839838381461095957806385bb6ae11461098a57600080fd5b80633b703090116102ef5780635badd405116102825780636d6d9e4b116102515780636d6d9e4b14610854578063720ad6741461087a578063785de9bf146108a55780637ef90ce0146108d057600080fd5b80635badd405146107b75780635bb79860146107dd57806368048346146108085780636c5048531461082e57600080fd5b806353b916f1116102be57806353b916f11461071557806354c23feb1461073b578063564121c71461076657806358d421eb1461079157600080fd5b80633b703090146106675780633fd726721461069257806341d2aa64146106bd57806343710f46146106ef57600080fd5b80631cf887fc116103675780632665fad0116103365780632665fad0146105c25780632c81868d146105ee578063316fcbbd1461061457806338d8e45a1461064157600080fd5b80631cf887fc146105135780631d1131e2146105435780631e07d036146105695780631e4e4bad1461058f57600080fd5b80630cc4681e116103a35780630cc4681e146104775780630d4a7bdb1461049c57806311e867ff146104c757806318a359ec146104ed57600080fd5b806301b49217146103d557806305752e511461040057806305b131011461042657806307f841be14610451575b600080fd5b6103e86103e3366004612356565b610dff565b604051601e9190910b81526020015b60405180910390f35b61041361040e366004612356565b610e22565b604051601c9190910b81526020016103f7565b610439610434366004612356565b610e3f565b6040516001600160b01b0390911681526020016103f7565b61046461045f366004612356565b610e62565b60405160179190910b81526020016103f7565b61048a610485366004612356565b610e7f565b60405160ff90911681526020016103f7565b6104af6104aa366004612356565b610ea3565b6040516001600160e81b0390911681526020016103f7565b6104da6104d5366004612356565b610ec6565b60405160189190910b81526020016103f7565b6105006104fb366004612356565b610ee3565b60405160059190910b81526020016103f7565b610526610521366004612356565b610f0b565b6040516bffffffffffffffffffffffff90911681526020016103f7565b610556610551366004612356565b610f33565b604051600b9190910b81526020016103f7565b61057c610577366004612356565b610f50565b604051600c9190910b81526020016103f7565b6105a261059d366004612356565b610f74565b6040516effffffffffffffffffffffffffffff90911681526020016103f7565b6105d56105d0366004612356565b610fa6565b60405167ffffffffffffffff90911681526020016103f7565b6106016105fc366004612356565b610fd1565b60405160099190910b81526020016103f7565b610627610622366004612356565b610fee565b60405168ffffffffffffffffff90911681526020016103f7565b61065461064f366004612356565b611021565b604051601b9190910b81526020016103f7565b61067a610675366004612356565b61103e565b6040516001600160f01b0390911681526020016103f7565b6106a56106a0366004612356565b611061565b6040516001600160f81b0390911681526020016103f7565b6106d06106cb366004612356565b611084565b6040516dffffffffffffffffffffffffffff90911681526020016103f7565b6107026106fd366004612356565b6110ae565b60405160069190910b81526020016103f7565b610728610723366004612356565b6110cb565b604051601d9190910b81526020016103f7565b61074e610749366004612356565b6110e8565b6040516001600160a81b0390911681526020016103f7565b610779610774366004612356565b61110b565b6040516001600160b81b0390911681526020016103f7565b6107a461079f366004612356565b61112e565b604051600d9190910b81526020016103f7565b6107ca6107c5366004612356565b61114b565b60405160129190910b81526020016103f7565b6107f06107eb366004612356565b611168565b6040516001600160e01b0390911681526020016103f7565b61081b610816366004612356565b61118b565b60405160139190910b81526020016103f7565b61084161083c366004612356565b6111a8565b60405160169190910b81526020016103f7565b610867610862366004612356565b6111c5565b60405160119190910b81526020016103f7565b61088d610888366004612356565b6111e2565b6040516001600160c81b0390911681526020016103f7565b6108b86108b3366004612356565b611205565b6040516001600160c01b0390911681526020016103f7565b6108e36108de366004612356565b611228565b6040516affffffffffffffffffffff90911681526020016103f7565b61091261090d366004612356565b611256565b6040516fffffffffffffffffffffffffffffffff90911681526020016103f7565b610946610941366004612356565b611282565b60405160159190910b81526020016103f7565b61096c610967366004612356565b61129f565b6040516cffffffffffffffffffffffffff90911681526020016103f7565b61099d610998366004612356565b6112cf565b6040516001600160d81b0390911681526020016103f7565b6109c86109c3366004612356565b6112f2565b6040516001600160981b0390911681526020016103f7565b6109f36109ee366004612356565b611315565b60405161ffff90911681526020016103f7565b610a19610a14366004612356565b61133a565b60405162ffffff90911681526020016103f7565b610a40610a3b366004612356565b611360565b604051600a9190910b81526020016103f7565b610a66610a61366004612356565b611384565b60405160039190910b81526020016103f7565b610a8c610a87366004612356565b6113a8565b60405170ffffffffffffffffffffffffffffffffff90911681526020016103f7565b610ac1610abc366004612356565b6113d5565b60405165ffffffffffff90911681526020016103f7565b610aeb610ae6366004612356565b611402565b60405160109190910b81526020016103f7565b610b11610b0c366004612356565b61141f565b6040516001600160901b0390911681526020016103f7565b610b3c610b37366004612356565b611442565b6040516001600160d01b0390911681526020016103f7565b610b67610b62366004612356565b611465565b60405160049190910b81526020016103f7565b610b8d610b88366004612356565b611489565b60405166ffffffffffffff90911681526020016103f7565b610bb8610bb3366004612356565b6114ac565b60405163ffffffff90911681526020016103f7565b610be0610bdb366004612356565b6114d3565b60405169ffffffffffffffffffff90911681526020016103f7565b610c0e610c09366004612356565b6114f9565b60405160019190910b81526020016103f7565b610c34610c2f366004612356565b61151d565b60405160079190910b81526020016103f7565b610c5a610c55366004612356565b611541565b604051600f9190910b81526020016103f7565b610c80610c7b366004612356565b61155e565b6040519081526020016103f7565b610ca1610c9c366004612356565b611576565b6040516001600160a01b0390911681526020016103f7565b610ccc610cc7366004612356565b611599565b60405160089190910b81526020016103f7565b610cf2610ced366004612356565b6115c4565b60405160029190910b81526020016103f7565b610d18610d13366004612356565b6115e8565b60405160149190910b81526020016103f7565b610d3e610d39366004612356565b611605565b604051601a9190910b81526020016103f7565b610d64610d5f366004612356565b611622565b604051600e9190910b81526020016103f7565b610d8a610d85366004612356565b611646565b60405160199190910b81526020016103f7565b610db0610dab366004612356565b611663565b60405160009190910b81526020016103f7565b610dd6610dd1366004612356565b611686565b60405164ffffffffff90911681526020016103f7565b610c80610dfa366004612356565b6116ae565b601654600090610e1c90610e17908490601e0b612385565b6116b9565b92915050565b601854600090610e1c90610e3a908490601c0b612385565b6116f2565b600a54600090610e1c90610e5d9084906001600160b01b03166123ad565b611721565b601d54600090610e1c90610e7a90849060170b612385565b611759565b601454600090610e1c90610e9e908490600160d81b900460ff166123ad565b611788565b600354600090610e1c90610ec19084906001600160e81b03166123ad565b6117b6565b601c54600090610e1c90610ede90849060180b612385565b6117ea565b602954600090610e1c90610f06908490670100000000000000900460050b612385565b611819565b601254600090610e1c90610f2e9084906bffffffffffffffffffffffff166123ad565b611848565b602754600090610e1c90610f4b908490600b0b612385565b611881565b602654600090610e1c90610f6f908490600160701b9004600c0b612385565b6118b0565b601054600090610e1c90610fa1908490600160801b90046effffffffffffffffffffffffffffff166123ad565b6118df565b601354600090610e1c90610fcc908490600160981b900467ffffffffffffffff166123ad565b61191b565b602854600090610e1c90610fe990849060090b612385565b611952565b601354600090610e1c9061101c9084906a0100000000000000000000900468ffffffffffffffffff166123ad565b611981565b601954600090610e1c90611039908490601b0b612385565b6119b7565b600254600090610e1c9061105c9084906001600160f01b03166123ad565b6119e6565b600154600090610e1c9061107f9084906001600160f81b03166123ad565b611a1a565b601154600090610e1c906110a99084906dffffffffffffffffffffffffffff166123ad565b611a4e565b602954600090610e1c906110c690849060060b612385565b611a89565b601754600090610e1c906110e3908490601d0b612385565b611ab8565b600b54600090610e1c906111069084906001600160a81b03166123ad565b611ae7565b600954600090610e1c906111299084906001600160b81b03166123ad565b611b1b565b602654600090610e1c90611146908490600d0b612385565b611b4f565b602254600090610e1c9061116390849060120b612385565b611b7e565b600454600090610e1c906111869084906001600160e01b03166123ad565b611bad565b602154600090610e1c906111a390849060130b612385565b611be1565b601e54600090610e1c906111c090849060160b612385565b611c10565b602354600090610e1c906111dd90849060110b612385565b611c3f565b600754600090610e1c906112009084906001600160c81b03166123ad565b611c6e565b600854600090610e1c906112239084906001600160c01b03166123ad565b611ca2565b601254600090610e1c90611251908490600160601b90046affffffffffffffffffffff166123ad565b611cd6565b601054600090610e1c9061127d9084906fffffffffffffffffffffffffffffffff166123ad565b611d0e565b601f54600090610e1c9061129a90849060150b612385565b611d4b565b601154600090610e1c906112ca908490600160701b90046cffffffffffffffffffffffffff166123ad565b611d7a565b600554600090610e1c906112ed9084906001600160d81b03166123ad565b611db4565b600d54600090610e1c906113109084906001600160981b03166123ad565b611de8565b601454600090610e1c90611335908490600160c81b900461ffff166123ad565b611e1c565b601454600090610e1c9061135b908490600160b01b900462ffffff166123ad565b611e4b565b602754600090610e1c9061137f908490600160601b9004600a0b612385565b611e7b565b602954600090610e1c906113a3908490600160901b900460030b612385565b611eaa565b600f54600090610e1c906113d090849070ffffffffffffffffffffffffffffffffff166123ad565b611ed9565b601454600090610e1c906113fd908490670100000000000000900465ffffffffffff166123ad565b611f17565b602454600090610e1c9061141a90849060100b612385565b611f4a565b600e54600090610e1c9061143d9084906001600160901b03166123ad565b611f79565b600654600090610e1c906114609084906001600160d01b03166123ad565b611fad565b602954600090610e1c90611484908490600160681b900460040b612385565b611fe1565b601454600090610e1c906114a790849066ffffffffffffff166123ad565b612010565b601454600090610e1c906114ce908490600160901b900463ffffffff166123ad565b612044565b601354600090610e1c906114f490849069ffffffffffffffffffff166123ad565b612075565b602954600090610e1c90611518908490600160c81b900460010b612385565b6120ac565b602854600090610e1c9061153c908490600160981b900460070b612385565b6120db565b602554600090610e1c90611559908490600f0b612385565b61210c565b6000610e1c8260155461157191906123ad565b61213b565b600c54600090610e1c906115949084906001600160a01b03166123ad565b612181565b602854600090610e1c906115bf9084906a0100000000000000000000900460080b612385565b6121b5565b602954600090610e1c906115e3908490600160b01b900460020b612385565b6121e4565b602054600090610e1c9061160090849060140b612385565b612213565b601a8054600091610e1c9161161d918591900b612385565b612242565b602554600090610e1c90611641908490600160801b9004600e0b612385565b612271565b601b54600090610e1c9061165e90849060190b612385565b6122a0565b602954600090610e1c90611681908490600160d81b9004840b612385565b6122cf565b601454600090610e1c906116a9908490600160681b900464ffffffffff166123ad565b6122fe565b6000610e1c82612330565b80601e81900b81146116ed5760405163327269a760e01b815260f86004820152602481018390526044015b60405180910390fd5b919050565b80601c81900b81146116ed5760405163327269a760e01b815260e86004820152602481018390526044016116e4565b60006001600160b01b03821115611755576040516306dfcc6560e41b815260b06004820152602481018390526044016116e4565b5090565b80601781900b81146116ed5760405163327269a760e01b815260c06004820152602481018390526044016116e4565b600060ff821115611755576040516306dfcc6560e41b815260086004820152602481018390526044016116e4565b60006001600160e81b03821115611755576040516306dfcc6560e41b815260e86004820152602481018390526044016116e4565b80601881900b81146116ed5760405163327269a760e01b815260c86004820152602481018390526044016116e4565b80600581900b81146116ed5760405163327269a760e01b815260306004820152602481018390526044016116e4565b60006bffffffffffffffffffffffff821115611755576040516306dfcc6560e41b815260606004820152602481018390526044016116e4565b80600b81900b81146116ed5760405163327269a760e01b815260606004820152602481018390526044016116e4565b80600c81900b81146116ed5760405163327269a760e01b815260686004820152602481018390526044016116e4565b60006effffffffffffffffffffffffffffff821115611755576040516306dfcc6560e41b815260786004820152602481018390526044016116e4565b600067ffffffffffffffff82111561175557604080516306dfcc6560e41b81526004810191909152602481018390526044016116e4565b80600981900b81146116ed5760405163327269a760e01b815260506004820152602481018390526044016116e4565b600068ffffffffffffffffff821115611755576040516306dfcc6560e41b815260486004820152602481018390526044016116e4565b80601b81900b81146116ed5760405163327269a760e01b815260e06004820152602481018390526044016116e4565b60006001600160f01b03821115611755576040516306dfcc6560e41b815260f06004820152602481018390526044016116e4565b60006001600160f81b03821115611755576040516306dfcc6560e41b815260f86004820152602481018390526044016116e4565b60006dffffffffffffffffffffffffffff821115611755576040516306dfcc6560e41b815260706004820152602481018390526044016116e4565b80600681900b81146116ed5760405163327269a760e01b815260386004820152602481018390526044016116e4565b80601d81900b81146116ed5760405163327269a760e01b815260f06004820152602481018390526044016116e4565b60006001600160a81b03821115611755576040516306dfcc6560e41b815260a86004820152602481018390526044016116e4565b60006001600160b81b03821115611755576040516306dfcc6560e41b815260b86004820152602481018390526044016116e4565b80600d81900b81146116ed5760405163327269a760e01b815260706004820152602481018390526044016116e4565b80601281900b81146116ed5760405163327269a760e01b815260986004820152602481018390526044016116e4565b60006001600160e01b03821115611755576040516306dfcc6560e41b815260e06004820152602481018390526044016116e4565b80601381900b81146116ed5760405163327269a760e01b815260a06004820152602481018390526044016116e4565b80601681900b81146116ed5760405163327269a760e01b815260b86004820152602481018390526044016116e4565b80601181900b81146116ed5760405163327269a760e01b815260906004820152602481018390526044016116e4565b60006001600160c81b03821115611755576040516306dfcc6560e41b815260c86004820152602481018390526044016116e4565b60006001600160c01b03821115611755576040516306dfcc6560e41b815260c06004820152602481018390526044016116e4565b60006affffffffffffffffffffff821115611755576040516306dfcc6560e41b815260586004820152602481018390526044016116e4565b60006fffffffffffffffffffffffffffffffff821115611755576040516306dfcc6560e41b815260806004820152602481018390526044016116e4565b80601581900b81146116ed5760405163327269a760e01b815260b06004820152602481018390526044016116e4565b60006cffffffffffffffffffffffffff821115611755576040516306dfcc6560e41b815260686004820152602481018390526044016116e4565b60006001600160d81b03821115611755576040516306dfcc6560e41b815260d86004820152602481018390526044016116e4565b60006001600160981b03821115611755576040516306dfcc6560e41b815260986004820152602481018390526044016116e4565b600061ffff821115611755576040516306dfcc6560e41b815260106004820152602481018390526044016116e4565b600062ffffff821115611755576040516306dfcc6560e41b815260186004820152602481018390526044016116e4565b80600a81900b81146116ed5760405163327269a760e01b815260586004820152602481018390526044016116e4565b80600381900b81146116ed5760405163327269a760e01b815260206004820152602481018390526044016116e4565b600070ffffffffffffffffffffffffffffffffff821115611755576040516306dfcc6560e41b815260886004820152602481018390526044016116e4565b600065ffffffffffff821115611755576040516306dfcc6560e41b815260306004820152602481018390526044016116e4565b80601081900b81146116ed5760405163327269a760e01b815260886004820152602481018390526044016116e4565b60006001600160901b03821115611755576040516306dfcc6560e41b815260906004820152602481018390526044016116e4565b60006001600160d01b03821115611755576040516306dfcc6560e41b815260d06004820152602481018390526044016116e4565b80600481900b81146116ed5760405163327269a760e01b815260286004820152602481018390526044016116e4565b600066ffffffffffffff821115611755576040516306dfcc6560e41b815260386004820152602481018390526044016116e4565b600063ffffffff821115611755576040516306dfcc6560e41b815260206004820152602481018390526044016116e4565b600069ffffffffffffffffffff821115611755576040516306dfcc6560e41b815260506004820152602481018390526044016116e4565b80600181900b81146116ed5760405163327269a760e01b815260106004820152602481018390526044016116e4565b80600781900b81146116ed576040805163327269a760e01b81526004810191909152602481018390526044016116e4565b80600f81900b81146116ed5760405163327269a760e01b815260806004820152602481018390526044016116e4565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156117555760405163123baf0360e11b8152600481018390526024016116e4565b60006001600160a01b03821115611755576040516306dfcc6560e41b815260a06004820152602481018390526044016116e4565b80600881900b81146116ed5760405163327269a760e01b815260486004820152602481018390526044016116e4565b80600281900b81146116ed5760405163327269a760e01b815260186004820152602481018390526044016116e4565b80601481900b81146116ed5760405163327269a760e01b815260a86004820152602481018390526044016116e4565b80601a81900b81146116ed5760405163327269a760e01b815260d86004820152602481018390526044016116e4565b80600e81900b81146116ed5760405163327269a760e01b815260786004820152602481018390526044016116e4565b80601981900b81146116ed5760405163327269a760e01b815260d06004820152602481018390526044016116e4565b80600081900b81146116ed5760405163327269a760e01b815260086004820152602481018390526044016116e4565b600064ffffffffff821115611755576040516306dfcc6560e41b815260286004820152602481018390526044016116e4565b60008082121561175557604051635467221960e11b8152600481018390526024016116e4565b60006020828403121561236857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b80820182811260008312801582168215821617156123a5576123a561236f565b505092915050565b80820180821115610e1c57610e1c61236f56fea2646970667358221220e55335ef3b650dfc79a32929305cb6ce0723d9e4877832fc1c1f431c4c9a7fab64736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/contracts/solidity/oz/safeCast/SafeCast.sol b/contracts/solidity/oz/safeCast/SafeCast.sol index 0fdaabd14..67cf4f7bb 100644 --- a/contracts/solidity/oz/safeCast/SafeCast.sol +++ b/contracts/solidity/oz/safeCast/SafeCast.sol @@ -70,259 +70,259 @@ contract SafeCastTest { int16 maxInt16 = type(int16).max; int8 maxInt8 = type(int8).max; - function testToUint256(int256 number) public pure returns (uint256) { + function toUint256(int256 number) public pure returns (uint256) { return SafeCast.toUint256(number); } - function testToUint248(uint256 number) public view returns (uint248) { + function toUint248(uint256 number) public view returns (uint248) { return SafeCast.toUint248(maxUint248 + number); } - function testToUint240(uint256 number) public view returns (uint240) { + function toUint240(uint256 number) public view returns (uint240) { return SafeCast.toUint240(maxUint240 + number); } - function testToUint232(uint256 number) public view returns (uint232) { + function toUint232(uint256 number) public view returns (uint232) { return SafeCast.toUint232(maxUint232 + number); } - function testToUint224(uint256 number) public view returns (uint224) { + function toUint224(uint256 number) public view returns (uint224) { return SafeCast.toUint224(maxUint224 + number); } - function testToUint216(uint256 number) public view returns (uint216) { + function toUint216(uint256 number) public view returns (uint216) { return SafeCast.toUint216(maxUint216 + number); } - function testToUint208(uint256 number) public view returns (uint208) { + function toUint208(uint256 number) public view returns (uint208) { return SafeCast.toUint208(maxUint208 + number); } - function testToUint200(uint256 number) public view returns (uint200) { + function toUint200(uint256 number) public view returns (uint200) { return SafeCast.toUint200(maxUint200 + number); } - function testToUint192(uint256 number) public view returns (uint192) { + function toUint192(uint256 number) public view returns (uint192) { return SafeCast.toUint192(maxUint192 + number); } - function testToUint184(uint256 number) public view returns (uint184) { + function toUint184(uint256 number) public view returns (uint184) { return SafeCast.toUint184(maxUint184 + number); } - function testToUint176(uint256 number) public view returns (uint176) { + function toUint176(uint256 number) public view returns (uint176) { return SafeCast.toUint176(maxUint176 + number); } - function testToUint168(uint256 number) public view returns (uint168) { + function toUint168(uint256 number) public view returns (uint168) { return SafeCast.toUint168(maxUint168 + number); } - function testToUint160(uint256 number) public view returns (uint160) { + function toUint160(uint256 number) public view returns (uint160) { return SafeCast.toUint160(maxUint160 + number); } - function testToUint152(uint256 number) public view returns (uint152) { + function toUint152(uint256 number) public view returns (uint152) { return SafeCast.toUint152(maxUint152 + number); } - function testToUint144(uint256 number) public view returns (uint144) { + function toUint144(uint256 number) public view returns (uint144) { return SafeCast.toUint144(maxUint144 + number); } - function testToUint136(uint256 number) public view returns (uint136) { + function toUint136(uint256 number) public view returns (uint136) { return SafeCast.toUint136(maxUint136 + number); } - function testToUint128(uint256 number) public view returns (uint128) { + function toUint128(uint256 number) public view returns (uint128) { return SafeCast.toUint128(maxUint128 + number); } - function testToUint120(uint256 number) public view returns (uint120) { + function toUint120(uint256 number) public view returns (uint120) { return SafeCast.toUint120(maxUint120 + number); } - function testToUint112(uint256 number) public view returns (uint112) { + function toUint112(uint256 number) public view returns (uint112) { return SafeCast.toUint112(maxUint112 + number); } - function testToUint104(uint256 number) public view returns (uint104) { + function toUint104(uint256 number) public view returns (uint104) { return SafeCast.toUint104(maxUint104 + number); } - function testToUint96(uint256 number) public view returns (uint96) { + function toUint96(uint256 number) public view returns (uint96) { return SafeCast.toUint96(maxUint96 + number); } - function testToUint88(uint256 number) public view returns (uint88) { + function toUint88(uint256 number) public view returns (uint88) { return SafeCast.toUint88(maxUint88 + number); } - function testToUint80(uint256 number) public view returns (uint80) { + function toUint80(uint256 number) public view returns (uint80) { return SafeCast.toUint80(maxUint80 + number); } - function testToUint72(uint256 number) public view returns (uint72) { + function toUint72(uint256 number) public view returns (uint72) { return SafeCast.toUint72(maxUint72 + number); } - function testToUint64(uint256 number) public view returns (uint64) { + function toUint64(uint256 number) public view returns (uint64) { return SafeCast.toUint64(maxUint64 + number); } - function testToUint56(uint256 number) public view returns (uint56) { + function toUint56(uint256 number) public view returns (uint56) { return SafeCast.toUint56(maxUint56 + number); } - function testToUint48(uint256 number) public view returns (uint48) { + function toUint48(uint256 number) public view returns (uint48) { return SafeCast.toUint48(maxUint48 + number); } - function testToUint40(uint256 number) public view returns (uint40) { + function toUint40(uint256 number) public view returns (uint40) { return SafeCast.toUint40(maxUint40 + number); } - function testToUint32(uint256 number) public view returns (uint32) { + function toUint32(uint256 number) public view returns (uint32) { return SafeCast.toUint32(maxUint32 + number); } - function testToUint24(uint256 number) public view returns (uint24) { + function toUint24(uint256 number) public view returns (uint24) { return SafeCast.toUint24(maxUint24 + number); } - function testToUint16(uint256 number) public view returns (uint16) { + function toUint16(uint256 number) public view returns (uint16) { return SafeCast.toUint16(maxUint16 + number); } - function testToUint8(uint256 number) public view returns (uint8) { + function toUint8(uint256 number) public view returns (uint8) { return SafeCast.toUint8(maxUint8 + number); } - function testToInt248(int256 number) public view returns (int248) { + function toInt248(int256 number) public view returns (int248) { return SafeCast.toInt248(maxInt248 + number); } - function testToInt240(int256 number) public view returns (int240) { + function toInt240(int256 number) public view returns (int240) { return SafeCast.toInt240(maxInt240 + number); } - function testToInt232(int256 number) public view returns (int232) { + function toInt232(int256 number) public view returns (int232) { return SafeCast.toInt232(maxInt232 + number); } - function testToInt224(int256 number) public view returns (int224) { + function toInt224(int256 number) public view returns (int224) { return SafeCast.toInt224(maxInt224 + number); } - function testToInt216(int256 number) public view returns (int216) { + function toInt216(int256 number) public view returns (int216) { return SafeCast.toInt216(maxInt216 + number); } - function testToInt208(int256 number) public view returns (int208) { + function toInt208(int256 number) public view returns (int208) { return SafeCast.toInt208(maxInt208 + number); } - function testToInt200(int256 number) public view returns (int200) { + function toInt200(int256 number) public view returns (int200) { return SafeCast.toInt200(maxInt200 + number); } - function testToInt192(int256 number) public view returns (int192) { + function toInt192(int256 number) public view returns (int192) { return SafeCast.toInt192(maxInt192 + number); } - function testToInt184(int256 number) public view returns (int184) { + function toInt184(int256 number) public view returns (int184) { return SafeCast.toInt184(maxInt184 + number); } - function testToInt176(int256 number) public view returns (int176) { + function toInt176(int256 number) public view returns (int176) { return SafeCast.toInt176(maxInt176 + number); } - function testToInt168(int256 number) public view returns (int168) { + function toInt168(int256 number) public view returns (int168) { return SafeCast.toInt168(maxInt168 + number); } - function testToInt160(int256 number) public view returns (int160) { + function toInt160(int256 number) public view returns (int160) { return SafeCast.toInt160(maxInt160 + number); } - function testToInt152(int256 number) public view returns (int152) { + function toInt152(int256 number) public view returns (int152) { return SafeCast.toInt152(maxInt152 + number); } - function testToInt144(int256 number) public view returns (int144) { + function toInt144(int256 number) public view returns (int144) { return SafeCast.toInt144(maxInt144 + number); } - function testToInt136(int256 number) public view returns (int136) { + function toInt136(int256 number) public view returns (int136) { return SafeCast.toInt136(maxInt136 + number); } - function testToInt128(int256 number) public view returns (int128) { + function toInt128(int256 number) public view returns (int128) { return SafeCast.toInt128(maxInt128 + number); } - function testToInt120(int256 number) public view returns (int120) { + function toInt120(int256 number) public view returns (int120) { return SafeCast.toInt120(maxInt120 + number); } - function testToInt112(int256 number) public view returns (int112) { + function toInt112(int256 number) public view returns (int112) { return SafeCast.toInt112(maxInt112 + number); } - function testToInt104(int256 number) public view returns (int104) { + function toInt104(int256 number) public view returns (int104) { return SafeCast.toInt104(maxInt104 + number); } - function testToInt96(int256 number) public view returns (int96) { + function toInt96(int256 number) public view returns (int96) { return SafeCast.toInt96(maxInt96 + number); } - function testToInt88(int256 number) public view returns (int88) { + function toInt88(int256 number) public view returns (int88) { return SafeCast.toInt88(maxInt88 + number); } - function testToInt80(int256 number) public view returns (int80) { + function toInt80(int256 number) public view returns (int80) { return SafeCast.toInt80(maxInt80 + number); } - function testToInt72(int256 number) public view returns (int72) { + function toInt72(int256 number) public view returns (int72) { return SafeCast.toInt72(maxInt72 + number); } - function testToInt64(int256 number) public view returns (int64) { + function toInt64(int256 number) public view returns (int64) { return SafeCast.toInt64(maxInt64 + number); } - function testToInt56(int256 number) public view returns (int56) { + function toInt56(int256 number) public view returns (int56) { return SafeCast.toInt56(maxInt56 + number); } - function testToInt48(int256 number) public view returns (int48) { + function toInt48(int256 number) public view returns (int48) { return SafeCast.toInt48(maxInt48 + number); } - function testToInt40(int256 number) public view returns (int40) { + function toInt40(int256 number) public view returns (int40) { return SafeCast.toInt40(maxInt40 + number); } - function testToInt32(int256 number) public view returns (int32) { + function toInt32(int256 number) public view returns (int32) { return SafeCast.toInt32(maxInt32 + number); } - function testToInt24(int256 number) public view returns (int24) { + function toInt24(int256 number) public view returns (int24) { return SafeCast.toInt24(maxInt24 + number); } - function testToInt16(int256 number) public view returns (int16) { + function toInt16(int256 number) public view returns (int16) { return SafeCast.toInt16(maxInt16 + number); } - function testToInt8(int256 number) public view returns (int8) { + function toInt8(int256 number) public view returns (int8) { return SafeCast.toInt8(maxInt8 + number); } - function testToInt256(uint256 number) public view returns (int256) { + function toInt256(uint256 number) public view returns (int256) { return SafeCast.toInt256(uint256(maxInt256) + number); } } diff --git a/test/solidity/oz/safeCast/safeCast.js b/test/solidity/oz/safeCast/safeCast.js index b59bd4266..26399da84 100644 --- a/test/solidity/oz/safeCast/safeCast.js +++ b/test/solidity/oz/safeCast/safeCast.js @@ -30,70 +30,70 @@ describe('@OZSafeCast Tests', function () { const SAFE_CATS_OVERLOW_INT_TO_UINT = 'SafeCastOverflowedIntToUint' const conversions = [ - { func: 'testToUint256', error: SAFE_CATS_OVERLOW_INT_TO_UINT }, - { func: 'testToUint248', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint240', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint232', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint224', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint216', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint208', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint200', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint192', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint184', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint176', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint168', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint160', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint152', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint144', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint136', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint128', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint120', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint112', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint104', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint96', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint88', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint80', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint72', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint64', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint56', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint48', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint40', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint32', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint24', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint16', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToUint8', error: SAFE_CAST_OVERLOW_UINT }, - { func: 'testToInt256', error: SAFE_CATS_OVERLOW_UINT_TO_INT }, - { func: 'testToInt248', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt240', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt232', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt224', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt216', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt208', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt200', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt192', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt184', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt176', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt168', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt160', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt152', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt144', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt136', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt128', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt120', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt112', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt104', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt96', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt88', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt80', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt72', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt64', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt56', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt48', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt40', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt32', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt24', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt16', error: SAFE_CAST_OVERLOW_INT }, - { func: 'testToInt8', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toUint256', error: SAFE_CATS_OVERLOW_INT_TO_UINT }, + { func: 'toUint248', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint240', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint232', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint224', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint216', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint208', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint200', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint192', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint184', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint176', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint168', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint160', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint152', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint144', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint136', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint128', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint120', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint112', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint104', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint96', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint88', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint80', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint72', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint64', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint56', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint48', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint40', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint32', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint24', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint16', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toUint8', error: SAFE_CAST_OVERLOW_UINT }, + { func: 'toInt256', error: SAFE_CATS_OVERLOW_UINT_TO_INT }, + { func: 'toInt248', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt240', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt232', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt224', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt216', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt208', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt200', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt192', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt184', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt176', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt168', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt160', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt152', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt144', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt136', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt128', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt120', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt112', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt104', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt96', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt88', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt80', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt72', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt64', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt56', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt48', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt40', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt32', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt24', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt16', error: SAFE_CAST_OVERLOW_INT }, + { func: 'toInt8', error: SAFE_CAST_OVERLOW_INT }, ]; before(async function () { @@ -114,7 +114,7 @@ describe('@OZSafeCast Tests', function () { it(`should return correct value and revert for: "${func}"`, async function () { const res = await contract[func](0) expect(res).to.exist - const revertVal = func === 'testToUint256' ? -1 : 1 + const revertVal = func === 'toUint256' ? -1 : 1 await expect(contract[func](revertVal)).to.eventually.be.rejected.and.have.property( 'errorName',