@coti-io/coti-contracts 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.sol +112 -0
  2. package/contracts/mocks/utils/mpc/ShiftTestsContract.sol +126 -0
  3. package/contracts/token/PrivateERC721/extensions/IPrivateERC721URIStorage.sol +15 -0
  4. package/contracts/token/PrivateERC721/extensions/PrivateERC721URIStorage.sol +27 -1
  5. package/contracts/utils/mpc/MpcCore.sol +40 -0
  6. package/contracts/utils/mpc/MpcInterface.sol +2 -0
  7. package/package.json +1 -1
  8. package/test/onboard/AccountOnboard.test.ts +2 -2
  9. package/test/utils/accounts.ts +2 -2
  10. package/test/utils/mpc/Precompile.test.ts +8 -0
  11. package/typechain-types/@openzeppelin/contracts/interfaces/index.ts +0 -2
  12. package/typechain-types/contracts/GasTest.ts +91 -0
  13. package/typechain-types/contracts/mocks/utils/mpc/index.ts +1 -0
  14. package/typechain-types/contracts/token/PrivateERC721/extensions/IPrivateERC721URIStorage.ts +100 -0
  15. package/typechain-types/contracts/token/PrivateERC721/extensions/index.ts +1 -0
  16. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +38 -0
  17. package/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts +0 -1
  18. package/typechain-types/factories/contracts/GasTest__factory.ts +75 -0
  19. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +1 -1
  20. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
  21. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +1 -1
  22. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +1 -1
  23. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
  24. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +1 -1
  25. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
  26. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
  27. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
  28. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +1 -1
  29. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  30. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  31. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
  32. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
  33. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +1 -1
  34. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +1 -1
  35. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +1 -1
  36. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +1 -1
  37. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +1 -1
  38. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +1 -1
  39. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +1 -0
  40. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +1 -1
  41. package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +1 -1
  42. package/typechain-types/factories/contracts/token/PrivateERC721/extensions/IPrivateERC721URIStorage__factory.ts +55 -0
  43. package/typechain-types/factories/contracts/token/PrivateERC721/extensions/index.ts +1 -0
  44. package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +1 -1
  45. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +58 -0
  46. package/typechain-types/hardhat.d.ts +36 -54
  47. package/typechain-types/index.ts +6 -6
  48. package/contracts/onboard/README.md +0 -65
@@ -332,7 +332,7 @@ const _abi = [
332
332
  ] as const;
333
333
 
334
334
  const _bytecode =
335
- "0x608060405234801561001057600080fd5b5061282d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80637d2e0f48116100765780638b6e7a8c1161005b5780638b6e7a8c1461014f578063acb3816914610162578063ebb571fd1461017557600080fd5b80637d2e0f481461013157806380f937bc1461013c57600080fd5b80632e544aa0116100a75780632e544aa0146100fa5780632e5950eb1461010d578063791175491461011e57600080fd5b806308c90f0d146100c357806329875348146100ea575b600080fd5b6100d66100d13660046124c3565b61018a565b604051901515815260200160405180910390f35b600054610100900460ff166100d6565b6100d6610108366004612547565b610818565b60005462010000900460ff166100d6565b6100d661012c3660046124c3565b6108f6565b60005460ff166100d6565b6100d661014a3660046125ca565b610f6f565b6100d661015d3660046124c3565b611014565b6100d6610170366004612675565b61168e565b61018861018336600461270c565b6116fd565b005b60006101d460405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6101f860405180606001604052806000815260200160008152602001600081525090565b61022a6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b61026a6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6102758488886116fd565b600061029161028c86600001518760200151611784565b61184a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821515179055604086015160608701519192506102d3916118db565b8452845160608601516102e691906118f0565b84602001818152505061030185604001518660200151611906565b6040850152600061031185610818565b90508115158115151461036b5760405162461bcd60e51b815260206004820152601660248201527f6774546573743a2063617374203136206661696c65640000000000000000000060448201526064015b60405180910390fd5b61037d86608001518760a0015161191c565b8452855160a08701516103909190611931565b8460200181815250506103ab86608001518760200151611947565b8460400181815250506103c686604001518760a0015161195d565b8460600181815250506103e186608001518760600151611973565b608085015260006103f18561168e565b9050801515831515146104465760405162461bcd60e51b815260206004820152601660248201527f6774546573743a2063617374203332206661696c6564000000000000000000006044820152606401610362565b6104588760c001518860e00151611989565b8452865160e088015161046b919061199e565b8460200181815250506104868760c0015188602001516119b4565b8460400181815250506104a187604001518860e001516119ca565b8460600181815250506104bc8760c0015188606001516119e0565b8460800181815250506104d787608001518860e001516119f6565b8460a00181815250506104f28760c001518860a00151611a0c565b60c0850152600061050285610f6f565b9050801515841515146105575760405162461bcd60e51b815260206004820152601660248201527f6774546573743a2063617374203634206661696c6564000000000000000000006044820152606401610362565b61056861028c8c8a60200151611a22565b151584151514801561058d575061058661028c89600001518c611aa4565b1515841515145b6105ff5760405162461bcd60e51b815260206004820152602660248201527f6774546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610362565b61061361028c8c60ff168a60600151611b27565b151584151514801561063b575061063461028c89604001518c60ff16611bab565b1515841515145b6106ad5760405162461bcd60e51b815260206004820152602760248201527f6774546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b6106c161028c8c60ff168a60a00151611c2e565b15158415151480156106e957506106e261028c89608001518c60ff16611cb4565b1515841515145b61075b5760405162461bcd60e51b815260206004820152602760248201527f6774546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b61076f61028c8c60ff168a60e00151611d3a565b1515841515148015610797575061079061028c8960c001518c60ff16611dc4565b1515841515145b6108095760405162461bcd60e51b815260206004820152602760248201527f6774546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b50919998505050505050505050565b600080610828836000015161184a565b9050610837836020015161184a565b15158115151480156108585750610851836040015161184a565b1515811515145b6108f05760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a401610362565b92915050565b600061094060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61096460405180606001604052806000815260200160008152602001600081525090565b6109966040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6109d66040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6109e18488886116fd565b60006109f861028c86600001518760200151611e4e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008315150217905560408601516060870151919250610a3e91611e63565b845284516060860151610a519190611e78565b846020018181525050610a6c85604001518660200151611e8e565b60408501526000610a7c85610818565b905081151581151514610ad15760405162461bcd60e51b815260206004820152601660248201527f6c65546573743a2063617374203136206661696c6564000000000000000000006044820152606401610362565b610ae386608001518760a00151611ea4565b8452855160a0870151610af69190611eb9565b846020018181525050610b1186608001518760200151611ecf565b846040018181525050610b2c86604001518760a00151611ee5565b846060018181525050610b4786608001518760600151611efb565b60808501526000610b578561168e565b905080151583151514610bac5760405162461bcd60e51b815260206004820152601660248201527f6c65546573743a2063617374203332206661696c6564000000000000000000006044820152606401610362565b610bbe8760c001518860e00151611f11565b8452865160e0880151610bd19190611f26565b846020018181525050610bec8760c001518860200151611f3c565b846040018181525050610c0787604001518860e00151611f52565b846060018181525050610c228760c001518860600151611f68565b846080018181525050610c3d87608001518860e00151611f7e565b8460a0018181525050610c588760c001518860a00151611f94565b60c08501526000610c6885610f6f565b905080151584151514610cbd5760405162461bcd60e51b815260206004820152601660248201527f6c65546573743a2063617374203634206661696c6564000000000000000000006044820152606401610362565b610cce61028c8c8a60200151611faa565b1515841515148015610cf35750610cec61028c89600001518c611fbf565b1515841515145b610d655760405162461bcd60e51b815260206004820152602660248201527f6c65546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610362565b610d7961028c8c60ff168a60600151611fd5565b1515841515148015610da15750610d9a61028c89604001518c60ff16611feb565b1515841515145b610e135760405162461bcd60e51b815260206004820152602760248201527f6c65546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b610e2761028c8c60ff168a60a00151612000565b1515841515148015610e4f5750610e4861028c89608001518c60ff16612016565b1515841515145b610ec15760405162461bcd60e51b815260206004820152602760248201527f6c65546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b610ed561028c8c60ff168a60e0015161202c565b1515841515148015610efd5750610ef661028c8960c001518c60ff16612042565b1515841515145b6108095760405162461bcd60e51b815260206004820152602760248201527f6c65546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b600080610f7f836000015161184a565b9050610f8e836020015161184a565b1515811515148015610faf5750610fa8836040015161184a565b1515811515145b8015610fca5750610fc3836080015161184a565b1515811515145b8015610fe55750610fde836060015161184a565b1515811515145b80156110005750610ff98360c0015161184a565b1515811515145b801561085857506108518360a0015161184a565b600061105e60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61108260405180606001604052806000815260200160008152602001600081525090565b6110b46040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6110f46040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6110ff8488886116fd565b600061111661028c86600001518760200151612058565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000831515021790556040860151606087015191925061115d9161206d565b8452845160608601516111709190612082565b84602001818152505061118b85604001518660200151612098565b6040850152600061119b85610818565b9050811515811515146111f05760405162461bcd60e51b815260206004820152601760248201527f6c6574546573743a2063617374203136206661696c65640000000000000000006044820152606401610362565b61120286608001518760a001516120ae565b8452855160a087015161121591906120c3565b846020018181525050611230866080015187602001516120d9565b84604001818152505061124b86604001518760a001516120ef565b84606001818152505061126686608001518760600151612105565b608085015260006112768561168e565b9050801515831515146112cb5760405162461bcd60e51b815260206004820152601760248201527f6c6574546573743a2063617374203332206661696c65640000000000000000006044820152606401610362565b6112dd8760c001518860e0015161211b565b8452865160e08801516112f09190612130565b84602001818152505061130b8760c001518860200151612146565b84604001818152505061132687604001518860e0015161215c565b8460600181815250506113418760c001518860600151612172565b84608001818152505061135c87608001518860e00151612188565b8460a00181815250506113778760c001518860a0015161219e565b60c0850152600061138785610f6f565b9050801515841515146113dc5760405162461bcd60e51b815260206004820152601760248201527f6c6574546573743a2063617374203634206661696c65640000000000000000006044820152606401610362565b6113ed61028c8c8a602001516121b4565b1515841515148015611412575061140b61028c89600001518c6121c9565b1515841515145b6114845760405162461bcd60e51b815260206004820152602760248201527f6c6574546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b61149861028c8c60ff168a606001516121df565b15158415151480156114c057506114b961028c89604001518c60ff166121f5565b1515841515145b6115325760405162461bcd60e51b815260206004820152602860248201527f6c6574546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c65640000000000000000000000000000000000000000000000006064820152608401610362565b61154661028c8c60ff168a60a0015161220a565b151584151514801561156e575061156761028c89608001518c60ff16612220565b1515841515145b6115e05760405162461bcd60e51b815260206004820152602860248201527f6c6574546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c65640000000000000000000000000000000000000000000000006064820152608401610362565b6115f461028c8c60ff168a60e00151612236565b151584151514801561161c575061161561028c8960c001518c60ff1661224c565b1515841515145b6108095760405162461bcd60e51b815260206004820152602860248201527f6c6574546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c65640000000000000000000000000000000000000000000000006064820152608401610362565b60008061169e836000015161184a565b90506116ad836020015161184a565b15158115151480156116ce57506116c7836040015161184a565b1515811515145b80156116e957506116e2836080015161184a565b1515811515145b80156108585750610851836060015161184a565b61170682612262565b835261171181612262565b602084015261172260ff831661230a565b604084015261173360ff821661230a565b606084015261174460ff8316612374565b608084015261175560ff8216612374565b60a084015261176660ff83166123e0565b60c084015261177760ff82166123e0565b60e0909301929092525050565b60006064636d82e45e61179960018085612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af115801561181f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184391906127af565b9392505050565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af11580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d291906127af565b15159392505050565b60006064636d82e45e61179960028085612450565b60006064636d82e45e6117996001600285612450565b60006064636d82e45e6117996002600185612450565b60006064636d82e45e61179960038085612450565b60006064636d82e45e6117996001600385612450565b60006064636d82e45e6117996003600185612450565b60006064636d82e45e6117996002600385612450565b60006064636d82e45e6117996003600285612450565b60006064636d82e45e61179960048085612450565b60006064636d82e45e6117996001600485612450565b60006064636d82e45e6117996004600185612450565b60006064636d82e45e6117996002600485612450565b60006064636d82e45e6117996004600285612450565b60006064636d82e45e6117996003600485612450565b60006064636d82e45e6117996004600385612450565b60006064636d82e45e611a3760018080612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff8616602482015260448101859052606401611800565b60006064636d82e45e611aba6001806002612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff85166044820152606401611800565b60006064636d82e45e611b3d6002806001612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff8616602482015260448101859052606401611800565b60006064636d82e45e611bc060028080612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff85166044820152606401611800565b60006064636d82e45e611c446003806001612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff8616602482015260448101859052606401611800565b60006064636d82e45e611cca6003806002612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff85166044820152606401611800565b60006064636d82e45e611d506004806001612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff8616602482015260448101859052606401611800565b60006064636d82e45e611dda6004806002612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff85166044820152606401611800565b6000606463145fca2c61179960018085612450565b6000606463145fca2c61179960028085612450565b6000606463145fca2c6117996001600285612450565b6000606463145fca2c6117996002600185612450565b6000606463145fca2c61179960038085612450565b6000606463145fca2c6117996001600385612450565b6000606463145fca2c6117996003600185612450565b6000606463145fca2c6117996002600385612450565b6000606463145fca2c6117996003600285612450565b6000606463145fca2c61179960048085612450565b6000606463145fca2c6117996001600485612450565b6000606463145fca2c6117996004600185612450565b6000606463145fca2c6117996002600485612450565b6000606463145fca2c6117996004600285612450565b6000606463145fca2c6117996003600485612450565b6000606463145fca2c6117996004600385612450565b6000606463145fca2c611a3760018080612450565b6000606463145fca2c611aba6001806002612450565b6000606463145fca2c611b3d6002806001612450565b6000606463145fca2c611bc060028080612450565b6000606463145fca2c611c446003806001612450565b6000606463145fca2c611cca6003806002612450565b6000606463145fca2c611d506004806001612450565b6000606463145fca2c611dda6004806002612450565b6000606463dd14869361179960018085612450565b6000606463dd14869361179960028085612450565b6000606463dd1486936117996001600285612450565b6000606463dd1486936117996002600185612450565b6000606463dd14869361179960038085612450565b6000606463dd1486936117996001600385612450565b6000606463dd1486936117996003600185612450565b6000606463dd1486936117996002600385612450565b6000606463dd1486936117996003600285612450565b6000606463dd14869361179960048085612450565b6000606463dd1486936117996001600485612450565b6000606463dd1486936117996004600185612450565b6000606463dd1486936117996002600485612450565b6000606463dd1486936117996004600285612450565b6000606463dd1486936117996003600485612450565b6000606463dd1486936117996004600385612450565b6000606463dd148693611a3760018080612450565b6000606463dd148693611aba6001806002612450565b6000606463dd148693611b3d6002806001612450565b6000606463dd148693611bc060028080612450565b6000606463dd148693611c446003806001612450565b6000606463dd148693611cca6003806002612450565b6000606463dd148693611d506004806001612450565b6000606463dd148693611dda6004806002612450565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b60906044015b6020604051808303816000875af11580156122e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f091906127af565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b60906044016122c7565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b60906044016122c7565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b60906044016122c7565b6000816002811115612464576124646127c8565b60ff16600884600481111561247b5761247b6127c8565b61ffff16901b61ffff166010866004811115612499576124996127c8565b62ffffff16901b171760e81b949350505050565b803560ff811681146124be57600080fd5b919050565b600080604083850312156124d657600080fd5b6124df836124ad565b91506124ed602084016124ad565b90509250929050565b604051610100810167ffffffffffffffff81118282101715612541577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b60006060828403121561255957600080fd5b6040516060810181811067ffffffffffffffff821117156125a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b600060e082840312156125dc57600080fd5b60405160e0810181811067ffffffffffffffff82111715612626577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b600060a0828403121561268757600080fd5b60405160a0810181811067ffffffffffffffff821117156126d1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600080600083850361014081121561272357600080fd5b6101008082121561273357600080fd5b61273b6124f6565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301528194506127958187016124ad565b935050506127a661012085016124ad565b90509250925092565b6000602082840312156127c157600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220b4a1ad6be9b02e029ed993eaeda7a38c500ad12c7ba3d12cc29adee633fbfef664736f6c63430008130033";
335
+ "0x608060405234801561001057600080fd5b5061282d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80637d2e0f48116100765780638b6e7a8c1161005b5780638b6e7a8c1461014f578063acb3816914610162578063ebb571fd1461017557600080fd5b80637d2e0f481461013157806380f937bc1461013c57600080fd5b80632e544aa0116100a75780632e544aa0146100fa5780632e5950eb1461010d578063791175491461011e57600080fd5b806308c90f0d146100c357806329875348146100ea575b600080fd5b6100d66100d13660046124c3565b61018a565b604051901515815260200160405180910390f35b600054610100900460ff166100d6565b6100d6610108366004612547565b610818565b60005462010000900460ff166100d6565b6100d661012c3660046124c3565b6108f6565b60005460ff166100d6565b6100d661014a3660046125ca565b610f6f565b6100d661015d3660046124c3565b611014565b6100d6610170366004612675565b61168e565b61018861018336600461270c565b6116fd565b005b60006101d460405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6101f860405180606001604052806000815260200160008152602001600081525090565b61022a6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b61026a6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6102758488886116fd565b600061029161028c86600001518760200151611784565b61184a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821515179055604086015160608701519192506102d3916118db565b8452845160608601516102e691906118f0565b84602001818152505061030185604001518660200151611906565b6040850152600061031185610818565b90508115158115151461036b5760405162461bcd60e51b815260206004820152601660248201527f6774546573743a2063617374203136206661696c65640000000000000000000060448201526064015b60405180910390fd5b61037d86608001518760a0015161191c565b8452855160a08701516103909190611931565b8460200181815250506103ab86608001518760200151611947565b8460400181815250506103c686604001518760a0015161195d565b8460600181815250506103e186608001518760600151611973565b608085015260006103f18561168e565b9050801515831515146104465760405162461bcd60e51b815260206004820152601660248201527f6774546573743a2063617374203332206661696c6564000000000000000000006044820152606401610362565b6104588760c001518860e00151611989565b8452865160e088015161046b919061199e565b8460200181815250506104868760c0015188602001516119b4565b8460400181815250506104a187604001518860e001516119ca565b8460600181815250506104bc8760c0015188606001516119e0565b8460800181815250506104d787608001518860e001516119f6565b8460a00181815250506104f28760c001518860a00151611a0c565b60c0850152600061050285610f6f565b9050801515841515146105575760405162461bcd60e51b815260206004820152601660248201527f6774546573743a2063617374203634206661696c6564000000000000000000006044820152606401610362565b61056861028c8c8a60200151611a22565b151584151514801561058d575061058661028c89600001518c611aa4565b1515841515145b6105ff5760405162461bcd60e51b815260206004820152602660248201527f6774546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610362565b61061361028c8c60ff168a60600151611b27565b151584151514801561063b575061063461028c89604001518c60ff16611bab565b1515841515145b6106ad5760405162461bcd60e51b815260206004820152602760248201527f6774546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b6106c161028c8c60ff168a60a00151611c2e565b15158415151480156106e957506106e261028c89608001518c60ff16611cb4565b1515841515145b61075b5760405162461bcd60e51b815260206004820152602760248201527f6774546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b61076f61028c8c60ff168a60e00151611d3a565b1515841515148015610797575061079061028c8960c001518c60ff16611dc4565b1515841515145b6108095760405162461bcd60e51b815260206004820152602760248201527f6774546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b50919998505050505050505050565b600080610828836000015161184a565b9050610837836020015161184a565b15158115151480156108585750610851836040015161184a565b1515811515145b6108f05760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a401610362565b92915050565b600061094060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61096460405180606001604052806000815260200160008152602001600081525090565b6109966040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6109d66040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6109e18488886116fd565b60006109f861028c86600001518760200151611e4e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008315150217905560408601516060870151919250610a3e91611e63565b845284516060860151610a519190611e78565b846020018181525050610a6c85604001518660200151611e8e565b60408501526000610a7c85610818565b905081151581151514610ad15760405162461bcd60e51b815260206004820152601660248201527f6c65546573743a2063617374203136206661696c6564000000000000000000006044820152606401610362565b610ae386608001518760a00151611ea4565b8452855160a0870151610af69190611eb9565b846020018181525050610b1186608001518760200151611ecf565b846040018181525050610b2c86604001518760a00151611ee5565b846060018181525050610b4786608001518760600151611efb565b60808501526000610b578561168e565b905080151583151514610bac5760405162461bcd60e51b815260206004820152601660248201527f6c65546573743a2063617374203332206661696c6564000000000000000000006044820152606401610362565b610bbe8760c001518860e00151611f11565b8452865160e0880151610bd19190611f26565b846020018181525050610bec8760c001518860200151611f3c565b846040018181525050610c0787604001518860e00151611f52565b846060018181525050610c228760c001518860600151611f68565b846080018181525050610c3d87608001518860e00151611f7e565b8460a0018181525050610c588760c001518860a00151611f94565b60c08501526000610c6885610f6f565b905080151584151514610cbd5760405162461bcd60e51b815260206004820152601660248201527f6c65546573743a2063617374203634206661696c6564000000000000000000006044820152606401610362565b610cce61028c8c8a60200151611faa565b1515841515148015610cf35750610cec61028c89600001518c611fbf565b1515841515145b610d655760405162461bcd60e51b815260206004820152602660248201527f6c65546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610362565b610d7961028c8c60ff168a60600151611fd5565b1515841515148015610da15750610d9a61028c89604001518c60ff16611feb565b1515841515145b610e135760405162461bcd60e51b815260206004820152602760248201527f6c65546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b610e2761028c8c60ff168a60a00151612000565b1515841515148015610e4f5750610e4861028c89608001518c60ff16612016565b1515841515145b610ec15760405162461bcd60e51b815260206004820152602760248201527f6c65546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b610ed561028c8c60ff168a60e0015161202c565b1515841515148015610efd5750610ef661028c8960c001518c60ff16612042565b1515841515145b6108095760405162461bcd60e51b815260206004820152602760248201527f6c65546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b600080610f7f836000015161184a565b9050610f8e836020015161184a565b1515811515148015610faf5750610fa8836040015161184a565b1515811515145b8015610fca5750610fc3836080015161184a565b1515811515145b8015610fe55750610fde836060015161184a565b1515811515145b80156110005750610ff98360c0015161184a565b1515811515145b801561085857506108518360a0015161184a565b600061105e60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61108260405180606001604052806000815260200160008152602001600081525090565b6110b46040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6110f46040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6110ff8488886116fd565b600061111661028c86600001518760200151612058565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000831515021790556040860151606087015191925061115d9161206d565b8452845160608601516111709190612082565b84602001818152505061118b85604001518660200151612098565b6040850152600061119b85610818565b9050811515811515146111f05760405162461bcd60e51b815260206004820152601760248201527f6c6574546573743a2063617374203136206661696c65640000000000000000006044820152606401610362565b61120286608001518760a001516120ae565b8452855160a087015161121591906120c3565b846020018181525050611230866080015187602001516120d9565b84604001818152505061124b86604001518760a001516120ef565b84606001818152505061126686608001518760600151612105565b608085015260006112768561168e565b9050801515831515146112cb5760405162461bcd60e51b815260206004820152601760248201527f6c6574546573743a2063617374203332206661696c65640000000000000000006044820152606401610362565b6112dd8760c001518860e0015161211b565b8452865160e08801516112f09190612130565b84602001818152505061130b8760c001518860200151612146565b84604001818152505061132687604001518860e0015161215c565b8460600181815250506113418760c001518860600151612172565b84608001818152505061135c87608001518860e00151612188565b8460a00181815250506113778760c001518860a0015161219e565b60c0850152600061138785610f6f565b9050801515841515146113dc5760405162461bcd60e51b815260206004820152601760248201527f6c6574546573743a2063617374203634206661696c65640000000000000000006044820152606401610362565b6113ed61028c8c8a602001516121b4565b1515841515148015611412575061140b61028c89600001518c6121c9565b1515841515145b6114845760405162461bcd60e51b815260206004820152602760248201527f6c6574546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b61149861028c8c60ff168a606001516121df565b15158415151480156114c057506114b961028c89604001518c60ff166121f5565b1515841515145b6115325760405162461bcd60e51b815260206004820152602860248201527f6c6574546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c65640000000000000000000000000000000000000000000000006064820152608401610362565b61154661028c8c60ff168a60a0015161220a565b151584151514801561156e575061156761028c89608001518c60ff16612220565b1515841515145b6115e05760405162461bcd60e51b815260206004820152602860248201527f6c6574546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c65640000000000000000000000000000000000000000000000006064820152608401610362565b6115f461028c8c60ff168a60e00151612236565b151584151514801561161c575061161561028c8960c001518c60ff1661224c565b1515841515145b6108095760405162461bcd60e51b815260206004820152602860248201527f6c6574546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c65640000000000000000000000000000000000000000000000006064820152608401610362565b60008061169e836000015161184a565b90506116ad836020015161184a565b15158115151480156116ce57506116c7836040015161184a565b1515811515145b80156116e957506116e2836080015161184a565b1515811515145b80156108585750610851836060015161184a565b61170682612262565b835261171181612262565b602084015261172260ff831661230a565b604084015261173360ff821661230a565b606084015261174460ff8316612374565b608084015261175560ff8216612374565b60a084015261176660ff83166123e0565b60c084015261177760ff82166123e0565b60e0909301929092525050565b60006064636d82e45e61179960018085612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af115801561181f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184391906127af565b9392505050565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af11580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d291906127af565b15159392505050565b60006064636d82e45e61179960028085612450565b60006064636d82e45e6117996001600285612450565b60006064636d82e45e6117996002600185612450565b60006064636d82e45e61179960038085612450565b60006064636d82e45e6117996001600385612450565b60006064636d82e45e6117996003600185612450565b60006064636d82e45e6117996002600385612450565b60006064636d82e45e6117996003600285612450565b60006064636d82e45e61179960048085612450565b60006064636d82e45e6117996001600485612450565b60006064636d82e45e6117996004600185612450565b60006064636d82e45e6117996002600485612450565b60006064636d82e45e6117996004600285612450565b60006064636d82e45e6117996003600485612450565b60006064636d82e45e6117996004600385612450565b60006064636d82e45e611a3760018080612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff8616602482015260448101859052606401611800565b60006064636d82e45e611aba6001806002612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff85166044820152606401611800565b60006064636d82e45e611b3d6002806001612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff8616602482015260448101859052606401611800565b60006064636d82e45e611bc060028080612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff85166044820152606401611800565b60006064636d82e45e611c446003806001612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff8616602482015260448101859052606401611800565b60006064636d82e45e611cca6003806002612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff85166044820152606401611800565b60006064636d82e45e611d506004806001612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff8616602482015260448101859052606401611800565b60006064636d82e45e611dda6004806002612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff85166044820152606401611800565b6000606463145fca2c61179960018085612450565b6000606463145fca2c61179960028085612450565b6000606463145fca2c6117996001600285612450565b6000606463145fca2c6117996002600185612450565b6000606463145fca2c61179960038085612450565b6000606463145fca2c6117996001600385612450565b6000606463145fca2c6117996003600185612450565b6000606463145fca2c6117996002600385612450565b6000606463145fca2c6117996003600285612450565b6000606463145fca2c61179960048085612450565b6000606463145fca2c6117996001600485612450565b6000606463145fca2c6117996004600185612450565b6000606463145fca2c6117996002600485612450565b6000606463145fca2c6117996004600285612450565b6000606463145fca2c6117996003600485612450565b6000606463145fca2c6117996004600385612450565b6000606463145fca2c611a3760018080612450565b6000606463145fca2c611aba6001806002612450565b6000606463145fca2c611b3d6002806001612450565b6000606463145fca2c611bc060028080612450565b6000606463145fca2c611c446003806001612450565b6000606463145fca2c611cca6003806002612450565b6000606463145fca2c611d506004806001612450565b6000606463145fca2c611dda6004806002612450565b6000606463dd14869361179960018085612450565b6000606463dd14869361179960028085612450565b6000606463dd1486936117996001600285612450565b6000606463dd1486936117996002600185612450565b6000606463dd14869361179960038085612450565b6000606463dd1486936117996001600385612450565b6000606463dd1486936117996003600185612450565b6000606463dd1486936117996002600385612450565b6000606463dd1486936117996003600285612450565b6000606463dd14869361179960048085612450565b6000606463dd1486936117996001600485612450565b6000606463dd1486936117996004600185612450565b6000606463dd1486936117996002600485612450565b6000606463dd1486936117996004600285612450565b6000606463dd1486936117996003600485612450565b6000606463dd1486936117996004600385612450565b6000606463dd148693611a3760018080612450565b6000606463dd148693611aba6001806002612450565b6000606463dd148693611b3d6002806001612450565b6000606463dd148693611bc060028080612450565b6000606463dd148693611c446003806001612450565b6000606463dd148693611cca6003806002612450565b6000606463dd148693611d506004806001612450565b6000606463dd148693611dda6004806002612450565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b60906044015b6020604051808303816000875af11580156122e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f091906127af565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b60906044016122c7565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b60906044016122c7565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b60906044016122c7565b6000816002811115612464576124646127c8565b60ff16600884600481111561247b5761247b6127c8565b61ffff16901b61ffff166010866004811115612499576124996127c8565b62ffffff16901b171760e81b949350505050565b803560ff811681146124be57600080fd5b919050565b600080604083850312156124d657600080fd5b6124df836124ad565b91506124ed602084016124ad565b90509250929050565b604051610100810167ffffffffffffffff81118282101715612541577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b60006060828403121561255957600080fd5b6040516060810181811067ffffffffffffffff821117156125a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b600060e082840312156125dc57600080fd5b60405160e0810181811067ffffffffffffffff82111715612626577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b600060a0828403121561268757600080fd5b60405160a0810181811067ffffffffffffffff821117156126d1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600080600083850361014081121561272357600080fd5b6101008082121561273357600080fd5b61273b6124f6565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301528194506127958187016124ad565b935050506127a661012085016124ad565b90509250925092565b6000602082840312156127c157600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220087cd92e434ff2aa59e2d3775048ef76f83cdb8fb111e5e5d84fcb56df26fcf964736f6c63430008130033";
336
336
 
337
337
  type Comparison1TestsContractConstructorParams =
338
338
  | [signer?: Signer]
@@ -342,7 +342,7 @@ const _abi = [
342
342
  ] as const;
343
343
 
344
344
  const _bytecode =
345
- "0x608060405234801561001057600080fd5b5061294b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806370eb37ee116100765780639a0c13d81161005b5780639a0c13d814610155578063acb3816914610160578063bc3aa1ed1461017357600080fd5b806370eb37ee1461012f57806380f937bc1461014257600080fd5b80632e544aa0116100a75780632e544aa0146100f65780632fd37f4b146101095780636b04608f1461011a57600080fd5b80630d980bf0146100c35780631988e322146100e3575b600080fd5b600054610100900460ff165b604051901515815260200160405180910390f35b6100cf6100f13660046125c9565b610186565b6100cf61010436600461264d565b610828565b60005462010000900460ff166100cf565b61012d6101283660046126d0565b610906565b005b6100cf61013d3660046125c9565b6109bb565b6100cf61015036600461278b565b611055565b60005460ff166100cf565b6100cf61016e366004612836565b6110fa565b6100cf6101813660046125c9565b611169565b60006101de604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61020260405180606001604052806000815260200160008152602001600081525090565b6102346040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6102746040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61027f848888610906565b600061029b61029686604001518760600151611807565b6118cd565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000083151502179055608086015160a08701519192506102e29161195e565b8452604085015160a08601516102f89190611973565b6020850152608085015160608601516103119190611989565b6040850152600061032185610828565b90508115158115151461037b5760405162461bcd60e51b815260206004820152601660248201527f6765546573743a2063617374203136206661696c65640000000000000000000060448201526064015b60405180910390fd5b61038d8660c001518760e0015161199f565b8452604086015160e08701516103a391906119b4565b602085015260c086015160608701516103bc91906119ca565b6040850152608086015160e08701516103d591906119e0565b606085015260c086015160a08701516103ee91906119f6565b608085015260006103fe856110fa565b9050801515831515146104535760405162461bcd60e51b815260206004820152601660248201527f6765546573743a2063617374203332206661696c6564000000000000000000006044820152606401610372565b610467876101000151886101200151611a0c565b8452604087015161012088015161047e9190611a21565b602085015261010087015160608801516104989190611a37565b604085015260808701516101208801516104b29190611a4d565b606085015261010087015160a08801516104cc9190611a63565b608085015260c08701516101208801516104e69190611a79565b60a085015261010087015160e08801516105009190611a8f565b60c0850152600061051085611055565b9050801515841515146105655760405162461bcd60e51b815260206004820152601660248201527f6765546573743a2063617374203634206661696c6564000000000000000000006044820152606401610372565b6105766102968c8a60600151611aa5565b151584151514801561059b575061059461029689604001518c611b27565b1515841515145b61060d5760405162461bcd60e51b815260206004820152602660248201527f6765546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610372565b6106216102968c60ff168a60a00151611baa565b1515841515148015610649575061064261029689608001518c60ff16611c2e565b1515841515145b6106bb5760405162461bcd60e51b815260206004820152602760248201527f6765546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b6106cf6102968c60ff168a60e00151611cb1565b15158415151480156106f757506106f06102968960c001518c60ff16611d37565b1515841515145b6107695760405162461bcd60e51b815260206004820152602760248201527f6765546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b61077e6102968c60ff168a6101200151611dbd565b15158415151480156107a757506107a06102968961010001518c60ff16611e47565b1515841515145b6108195760405162461bcd60e51b815260206004820152602760248201527f6765546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b50919998505050505050505050565b60008061083883600001516118cd565b905061084783602001516118cd565b1515811515148015610868575061086183604001516118cd565b1515811515145b6109005760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a401610372565b92915050565b6109178160ff168360ff1611611ed1565b835261092a60ff80841690831611611ed1565b602084015261093882611f30565b604084015261094681611f30565b606084015261095760ff8316611fd8565b608084015261096860ff8216611fd8565b60a084015261097960ff8316612042565b60c084015261098a60ff8216612042565b60e084015261099b60ff83166120ae565b6101008401526109ad60ff82166120ae565b610120909301929092525050565b6000610a13604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610a3760405180606001604052806000815260200160008152602001600081525090565b610a696040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b610aa96040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610ab4848888610906565b610ac96102968560000151866020015161211e565b506000610ae161029686604001518760600151612132565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821515179055608086015160a0870151919250610b2391612147565b8452604085015160a0860151610b39919061215c565b602085015260808501516060860151610b529190612172565b60408501526000610b6285610828565b905081151581151514610bb75760405162461bcd60e51b815260206004820152601660248201527f6571546573743a2063617374203136206661696c6564000000000000000000006044820152606401610372565b610bc98660c001518760e00151612188565b8452604086015160e0870151610bdf919061219d565b602085015260c08601516060870151610bf891906121b3565b6040850152608086015160e0870151610c1191906121c9565b606085015260c086015160a0870151610c2a91906121df565b60808501526000610c3a856110fa565b905080151583151514610c8f5760405162461bcd60e51b815260206004820152601660248201527f6571546573743a2063617374203332206661696c6564000000000000000000006044820152606401610372565b610ca38761010001518861012001516121f5565b84526040870151610120880151610cba919061220a565b60208501526101008701516060880151610cd49190612220565b60408501526080870151610120880151610cee9190612236565b606085015261010087015160a0880151610d08919061224c565b608085015260c0870151610120880151610d229190612262565b60a085015261010087015160e0880151610d3c9190612278565b60c08501526000610d4c85611055565b905080151584151514610da15760405162461bcd60e51b815260206004820152601660248201527f6571546573743a2063617374203634206661696c6564000000000000000000006044820152606401610372565b610db26102968c8a6060015161228e565b1515841515148015610dd75750610dd061029689604001518c6122a3565b1515841515145b610e495760405162461bcd60e51b815260206004820152602660248201527f6571546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610372565b610e5d6102968c60ff168a60a001516122b9565b1515841515148015610e855750610e7e61029689608001518c60ff166122cf565b1515841515145b610ef75760405162461bcd60e51b815260206004820152602760248201527f6571546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b610f0b6102968c60ff168a60e001516122e4565b1515841515148015610f335750610f2c6102968960c001518c60ff166122fa565b1515841515145b610fa55760405162461bcd60e51b815260206004820152602760248201527f6571546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b610fba6102968c60ff168a6101200151612310565b1515841515148015610fe35750610fdc6102968961010001518c60ff16612326565b1515841515145b6108195760405162461bcd60e51b815260206004820152602760248201527f6571546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b60008061106583600001516118cd565b905061107483602001516118cd565b1515811515148015611095575061108e83604001516118cd565b1515811515145b80156110b057506110a983608001516118cd565b1515811515145b80156110cb57506110c483606001516118cd565b1515811515145b80156110e657506110df8360c001516118cd565b1515811515145b801561086857506108618360a001516118cd565b60008061110a83600001516118cd565b905061111983602001516118cd565b151581151514801561113a575061113383604001516118cd565b1515811515145b8015611155575061114e83608001516118cd565b1515811515145b8015610868575061086183606001516118cd565b60006111c1604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6111e560405180606001604052806000815260200160008152602001600081525090565b6112176040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6112576040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b611262848888610906565b6112776102968560000151866020015161233c565b50600061128f61029686604001518760600151612350565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010083151502179055608086015160a08701519192506112d591612365565b8452604085015160a08601516112eb919061237a565b6020850152608085015160608601516113049190612390565b6040850152600061131485610828565b9050811515811515146113695760405162461bcd60e51b815260206004820152601660248201527f6e65546573743a2063617374203136206661696c6564000000000000000000006044820152606401610372565b61137b8660c001518760e001516123a6565b8452604086015160e087015161139191906123bb565b602085015260c086015160608701516113aa91906123d1565b6040850152608086015160e08701516113c391906123e7565b606085015260c086015160a08701516113dc91906123fd565b608085015260006113ec856110fa565b9050801515831515146114415760405162461bcd60e51b815260206004820152601660248201527f6e65546573743a2063617374203332206661696c6564000000000000000000006044820152606401610372565b611455876101000151886101200151612413565b8452604087015161012088015161146c9190612428565b60208501526101008701516060880151611486919061243e565b604085015260808701516101208801516114a09190612454565b606085015261010087015160a08801516114ba919061246a565b608085015260c08701516101208801516114d49190612480565b60a085015261010087015160e08801516114ee9190612496565b60c085015260006114fe85611055565b9050801515841515146115535760405162461bcd60e51b815260206004820152601660248201527f6e65546573743a2063617374203634206661696c6564000000000000000000006044820152606401610372565b6115646102968c8a606001516124ac565b1515841515148015611589575061158261029689604001518c6124c1565b1515841515145b6115fb5760405162461bcd60e51b815260206004820152602660248201527f6e65546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610372565b61160f6102968c60ff168a60a001516124d7565b1515841515148015611637575061163061029689608001518c60ff166124ed565b1515841515145b6116a95760405162461bcd60e51b815260206004820152602760248201527f6e65546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b6116bd6102968c60ff168a60e00151612502565b15158415151480156116e557506116de6102968960c001518c60ff16612518565b1515841515145b6117575760405162461bcd60e51b815260206004820152602760248201527f6e65546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b61176c6102968c60ff168a610120015161252e565b1515841515148015611795575061178e6102968961010001518c60ff16612544565b1515841515145b6108195760405162461bcd60e51b815260206004820152602760248201527f6e65546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b6000606463813b207461181c60018085612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af11580156118a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c691906128cd565b9392505050565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015611931573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195591906128cd565b15159392505050565b6000606463813b207461181c60028085612556565b6000606463813b207461181c6001600285612556565b6000606463813b207461181c6002600185612556565b6000606463813b207461181c60038085612556565b6000606463813b207461181c6001600385612556565b6000606463813b207461181c6003600185612556565b6000606463813b207461181c6002600385612556565b6000606463813b207461181c6003600285612556565b6000606463813b207461181c60048085612556565b6000606463813b207461181c6001600485612556565b6000606463813b207461181c6004600185612556565b6000606463813b207461181c6002600485612556565b6000606463813b207461181c6004600285612556565b6000606463813b207461181c6003600485612556565b6000606463813b207461181c6004600385612556565b6000606463813b2074611aba60018080612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff8616602482015260448101859052606401611883565b6000606463813b2074611b3d6001806002612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff85166044820152606401611883565b6000606463813b2074611bc06002806001612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff8616602482015260448101859052606401611883565b6000606463813b2074611c4360028080612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff85166044820152606401611883565b6000606463813b2074611cc76003806001612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff8616602482015260448101859052606401611883565b6000606463813b2074611d4d6003806002612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff85166044820152606401611883565b6000606463813b2074611dd36004806001612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff8616602482015260448101859052606401611883565b6000606463813b2074611e5d6004806002612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff85166044820152606401611883565b60008082611ee0576000611ee3565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b6090604401611883565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b60906044015b6020604051808303816000875af1158015611fb4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090091906128cd565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401611f95565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401611f95565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401611f95565b60006064637c12a1eb61181c838080612556565b60006064637c12a1eb61181c60018085612556565b60006064637c12a1eb61181c60028085612556565b60006064637c12a1eb61181c6001600285612556565b60006064637c12a1eb61181c6002600185612556565b60006064637c12a1eb61181c60038085612556565b60006064637c12a1eb61181c6001600385612556565b60006064637c12a1eb61181c6003600185612556565b60006064637c12a1eb61181c6002600385612556565b60006064637c12a1eb61181c6003600285612556565b60006064637c12a1eb61181c60048085612556565b60006064637c12a1eb61181c6001600485612556565b60006064637c12a1eb61181c6004600185612556565b60006064637c12a1eb61181c6002600485612556565b60006064637c12a1eb61181c6004600285612556565b60006064637c12a1eb61181c6003600485612556565b60006064637c12a1eb61181c6004600385612556565b60006064637c12a1eb611aba60018080612556565b60006064637c12a1eb611b3d6001806002612556565b60006064637c12a1eb611bc06002806001612556565b60006064637c12a1eb611c4360028080612556565b60006064637c12a1eb611cc76003806001612556565b60006064637c12a1eb611d4d6003806002612556565b60006064637c12a1eb611dd36004806001612556565b60006064637c12a1eb611e5d6004806002612556565b600060646342094c5661181c838080612556565b600060646342094c5661181c60018085612556565b600060646342094c5661181c60028085612556565b600060646342094c5661181c6001600285612556565b600060646342094c5661181c6002600185612556565b600060646342094c5661181c60038085612556565b600060646342094c5661181c6001600385612556565b600060646342094c5661181c6003600185612556565b600060646342094c5661181c6002600385612556565b600060646342094c5661181c6003600285612556565b600060646342094c5661181c60048085612556565b600060646342094c5661181c6001600485612556565b600060646342094c5661181c6004600185612556565b600060646342094c5661181c6002600485612556565b600060646342094c5661181c6004600285612556565b600060646342094c5661181c6003600485612556565b600060646342094c5661181c6004600385612556565b600060646342094c56611aba60018080612556565b600060646342094c56611b3d6001806002612556565b600060646342094c56611bc06002806001612556565b600060646342094c56611c4360028080612556565b600060646342094c56611cc76003806001612556565b600060646342094c56611d4d6003806002612556565b600060646342094c56611dd36004806001612556565b600060646342094c56611e5d60048060025b600081600281111561256a5761256a6128e6565b60ff166008846004811115612581576125816128e6565b61ffff16901b61ffff16601086600481111561259f5761259f6128e6565b62ffffff16901b171760e81b949350505050565b803560ff811681146125c457600080fd5b919050565b600080604083850312156125dc57600080fd5b6125e5836125b3565b91506125f3602084016125b3565b90509250929050565b604051610140810167ffffffffffffffff81118282101715612647577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b60006060828403121561265f57600080fd5b6040516060810181811067ffffffffffffffff821117156126a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b60008060008385036101808112156126e757600080fd5b610140808212156126f757600080fd5b6126ff6125fc565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301526101008087013581840152506101208087013581840152508194506127718187016125b3565b9350505061278261016085016125b3565b90509250925092565b600060e0828403121561279d57600080fd5b60405160e0810181811067ffffffffffffffff821117156127e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b600060a0828403121561284857600080fd5b60405160a0810181811067ffffffffffffffff82111715612892577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b6000602082840312156128df57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212205b27d694eb31718c9d21b7c0258b82cbdb6b61e9f3155591ad1a09866ff2ee4e64736f6c63430008130033";
345
+ "0x608060405234801561001057600080fd5b5061294b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806370eb37ee116100765780639a0c13d81161005b5780639a0c13d814610155578063acb3816914610160578063bc3aa1ed1461017357600080fd5b806370eb37ee1461012f57806380f937bc1461014257600080fd5b80632e544aa0116100a75780632e544aa0146100f65780632fd37f4b146101095780636b04608f1461011a57600080fd5b80630d980bf0146100c35780631988e322146100e3575b600080fd5b600054610100900460ff165b604051901515815260200160405180910390f35b6100cf6100f13660046125c9565b610186565b6100cf61010436600461264d565b610828565b60005462010000900460ff166100cf565b61012d6101283660046126d0565b610906565b005b6100cf61013d3660046125c9565b6109bb565b6100cf61015036600461278b565b611055565b60005460ff166100cf565b6100cf61016e366004612836565b6110fa565b6100cf6101813660046125c9565b611169565b60006101de604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61020260405180606001604052806000815260200160008152602001600081525090565b6102346040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6102746040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61027f848888610906565b600061029b61029686604001518760600151611807565b6118cd565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000083151502179055608086015160a08701519192506102e29161195e565b8452604085015160a08601516102f89190611973565b6020850152608085015160608601516103119190611989565b6040850152600061032185610828565b90508115158115151461037b5760405162461bcd60e51b815260206004820152601660248201527f6765546573743a2063617374203136206661696c65640000000000000000000060448201526064015b60405180910390fd5b61038d8660c001518760e0015161199f565b8452604086015160e08701516103a391906119b4565b602085015260c086015160608701516103bc91906119ca565b6040850152608086015160e08701516103d591906119e0565b606085015260c086015160a08701516103ee91906119f6565b608085015260006103fe856110fa565b9050801515831515146104535760405162461bcd60e51b815260206004820152601660248201527f6765546573743a2063617374203332206661696c6564000000000000000000006044820152606401610372565b610467876101000151886101200151611a0c565b8452604087015161012088015161047e9190611a21565b602085015261010087015160608801516104989190611a37565b604085015260808701516101208801516104b29190611a4d565b606085015261010087015160a08801516104cc9190611a63565b608085015260c08701516101208801516104e69190611a79565b60a085015261010087015160e08801516105009190611a8f565b60c0850152600061051085611055565b9050801515841515146105655760405162461bcd60e51b815260206004820152601660248201527f6765546573743a2063617374203634206661696c6564000000000000000000006044820152606401610372565b6105766102968c8a60600151611aa5565b151584151514801561059b575061059461029689604001518c611b27565b1515841515145b61060d5760405162461bcd60e51b815260206004820152602660248201527f6765546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610372565b6106216102968c60ff168a60a00151611baa565b1515841515148015610649575061064261029689608001518c60ff16611c2e565b1515841515145b6106bb5760405162461bcd60e51b815260206004820152602760248201527f6765546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b6106cf6102968c60ff168a60e00151611cb1565b15158415151480156106f757506106f06102968960c001518c60ff16611d37565b1515841515145b6107695760405162461bcd60e51b815260206004820152602760248201527f6765546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b61077e6102968c60ff168a6101200151611dbd565b15158415151480156107a757506107a06102968961010001518c60ff16611e47565b1515841515145b6108195760405162461bcd60e51b815260206004820152602760248201527f6765546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b50919998505050505050505050565b60008061083883600001516118cd565b905061084783602001516118cd565b1515811515148015610868575061086183604001516118cd565b1515811515145b6109005760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a401610372565b92915050565b6109178160ff168360ff1611611ed1565b835261092a60ff80841690831611611ed1565b602084015261093882611f30565b604084015261094681611f30565b606084015261095760ff8316611fd8565b608084015261096860ff8216611fd8565b60a084015261097960ff8316612042565b60c084015261098a60ff8216612042565b60e084015261099b60ff83166120ae565b6101008401526109ad60ff82166120ae565b610120909301929092525050565b6000610a13604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610a3760405180606001604052806000815260200160008152602001600081525090565b610a696040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b610aa96040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610ab4848888610906565b610ac96102968560000151866020015161211e565b506000610ae161029686604001518760600151612132565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821515179055608086015160a0870151919250610b2391612147565b8452604085015160a0860151610b39919061215c565b602085015260808501516060860151610b529190612172565b60408501526000610b6285610828565b905081151581151514610bb75760405162461bcd60e51b815260206004820152601660248201527f6571546573743a2063617374203136206661696c6564000000000000000000006044820152606401610372565b610bc98660c001518760e00151612188565b8452604086015160e0870151610bdf919061219d565b602085015260c08601516060870151610bf891906121b3565b6040850152608086015160e0870151610c1191906121c9565b606085015260c086015160a0870151610c2a91906121df565b60808501526000610c3a856110fa565b905080151583151514610c8f5760405162461bcd60e51b815260206004820152601660248201527f6571546573743a2063617374203332206661696c6564000000000000000000006044820152606401610372565b610ca38761010001518861012001516121f5565b84526040870151610120880151610cba919061220a565b60208501526101008701516060880151610cd49190612220565b60408501526080870151610120880151610cee9190612236565b606085015261010087015160a0880151610d08919061224c565b608085015260c0870151610120880151610d229190612262565b60a085015261010087015160e0880151610d3c9190612278565b60c08501526000610d4c85611055565b905080151584151514610da15760405162461bcd60e51b815260206004820152601660248201527f6571546573743a2063617374203634206661696c6564000000000000000000006044820152606401610372565b610db26102968c8a6060015161228e565b1515841515148015610dd75750610dd061029689604001518c6122a3565b1515841515145b610e495760405162461bcd60e51b815260206004820152602660248201527f6571546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610372565b610e5d6102968c60ff168a60a001516122b9565b1515841515148015610e855750610e7e61029689608001518c60ff166122cf565b1515841515145b610ef75760405162461bcd60e51b815260206004820152602760248201527f6571546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b610f0b6102968c60ff168a60e001516122e4565b1515841515148015610f335750610f2c6102968960c001518c60ff166122fa565b1515841515145b610fa55760405162461bcd60e51b815260206004820152602760248201527f6571546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b610fba6102968c60ff168a6101200151612310565b1515841515148015610fe35750610fdc6102968961010001518c60ff16612326565b1515841515145b6108195760405162461bcd60e51b815260206004820152602760248201527f6571546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b60008061106583600001516118cd565b905061107483602001516118cd565b1515811515148015611095575061108e83604001516118cd565b1515811515145b80156110b057506110a983608001516118cd565b1515811515145b80156110cb57506110c483606001516118cd565b1515811515145b80156110e657506110df8360c001516118cd565b1515811515145b801561086857506108618360a001516118cd565b60008061110a83600001516118cd565b905061111983602001516118cd565b151581151514801561113a575061113383604001516118cd565b1515811515145b8015611155575061114e83608001516118cd565b1515811515145b8015610868575061086183606001516118cd565b60006111c1604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6111e560405180606001604052806000815260200160008152602001600081525090565b6112176040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6112576040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b611262848888610906565b6112776102968560000151866020015161233c565b50600061128f61029686604001518760600151612350565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010083151502179055608086015160a08701519192506112d591612365565b8452604085015160a08601516112eb919061237a565b6020850152608085015160608601516113049190612390565b6040850152600061131485610828565b9050811515811515146113695760405162461bcd60e51b815260206004820152601660248201527f6e65546573743a2063617374203136206661696c6564000000000000000000006044820152606401610372565b61137b8660c001518760e001516123a6565b8452604086015160e087015161139191906123bb565b602085015260c086015160608701516113aa91906123d1565b6040850152608086015160e08701516113c391906123e7565b606085015260c086015160a08701516113dc91906123fd565b608085015260006113ec856110fa565b9050801515831515146114415760405162461bcd60e51b815260206004820152601660248201527f6e65546573743a2063617374203332206661696c6564000000000000000000006044820152606401610372565b611455876101000151886101200151612413565b8452604087015161012088015161146c9190612428565b60208501526101008701516060880151611486919061243e565b604085015260808701516101208801516114a09190612454565b606085015261010087015160a08801516114ba919061246a565b608085015260c08701516101208801516114d49190612480565b60a085015261010087015160e08801516114ee9190612496565b60c085015260006114fe85611055565b9050801515841515146115535760405162461bcd60e51b815260206004820152601660248201527f6e65546573743a2063617374203634206661696c6564000000000000000000006044820152606401610372565b6115646102968c8a606001516124ac565b1515841515148015611589575061158261029689604001518c6124c1565b1515841515145b6115fb5760405162461bcd60e51b815260206004820152602660248201527f6e65546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610372565b61160f6102968c60ff168a60a001516124d7565b1515841515148015611637575061163061029689608001518c60ff166124ed565b1515841515145b6116a95760405162461bcd60e51b815260206004820152602760248201527f6e65546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b6116bd6102968c60ff168a60e00151612502565b15158415151480156116e557506116de6102968960c001518c60ff16612518565b1515841515145b6117575760405162461bcd60e51b815260206004820152602760248201527f6e65546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b61176c6102968c60ff168a610120015161252e565b1515841515148015611795575061178e6102968961010001518c60ff16612544565b1515841515145b6108195760405162461bcd60e51b815260206004820152602760248201527f6e65546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b6000606463813b207461181c60018085612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af11580156118a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c691906128cd565b9392505050565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015611931573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195591906128cd565b15159392505050565b6000606463813b207461181c60028085612556565b6000606463813b207461181c6001600285612556565b6000606463813b207461181c6002600185612556565b6000606463813b207461181c60038085612556565b6000606463813b207461181c6001600385612556565b6000606463813b207461181c6003600185612556565b6000606463813b207461181c6002600385612556565b6000606463813b207461181c6003600285612556565b6000606463813b207461181c60048085612556565b6000606463813b207461181c6001600485612556565b6000606463813b207461181c6004600185612556565b6000606463813b207461181c6002600485612556565b6000606463813b207461181c6004600285612556565b6000606463813b207461181c6003600485612556565b6000606463813b207461181c6004600385612556565b6000606463813b2074611aba60018080612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff8616602482015260448101859052606401611883565b6000606463813b2074611b3d6001806002612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff85166044820152606401611883565b6000606463813b2074611bc06002806001612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff8616602482015260448101859052606401611883565b6000606463813b2074611c4360028080612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff85166044820152606401611883565b6000606463813b2074611cc76003806001612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff8616602482015260448101859052606401611883565b6000606463813b2074611d4d6003806002612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff85166044820152606401611883565b6000606463813b2074611dd36004806001612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff8616602482015260448101859052606401611883565b6000606463813b2074611e5d6004806002612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff85166044820152606401611883565b60008082611ee0576000611ee3565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b6090604401611883565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b60906044015b6020604051808303816000875af1158015611fb4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090091906128cd565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401611f95565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401611f95565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401611f95565b60006064637c12a1eb61181c838080612556565b60006064637c12a1eb61181c60018085612556565b60006064637c12a1eb61181c60028085612556565b60006064637c12a1eb61181c6001600285612556565b60006064637c12a1eb61181c6002600185612556565b60006064637c12a1eb61181c60038085612556565b60006064637c12a1eb61181c6001600385612556565b60006064637c12a1eb61181c6003600185612556565b60006064637c12a1eb61181c6002600385612556565b60006064637c12a1eb61181c6003600285612556565b60006064637c12a1eb61181c60048085612556565b60006064637c12a1eb61181c6001600485612556565b60006064637c12a1eb61181c6004600185612556565b60006064637c12a1eb61181c6002600485612556565b60006064637c12a1eb61181c6004600285612556565b60006064637c12a1eb61181c6003600485612556565b60006064637c12a1eb61181c6004600385612556565b60006064637c12a1eb611aba60018080612556565b60006064637c12a1eb611b3d6001806002612556565b60006064637c12a1eb611bc06002806001612556565b60006064637c12a1eb611c4360028080612556565b60006064637c12a1eb611cc76003806001612556565b60006064637c12a1eb611d4d6003806002612556565b60006064637c12a1eb611dd36004806001612556565b60006064637c12a1eb611e5d6004806002612556565b600060646342094c5661181c838080612556565b600060646342094c5661181c60018085612556565b600060646342094c5661181c60028085612556565b600060646342094c5661181c6001600285612556565b600060646342094c5661181c6002600185612556565b600060646342094c5661181c60038085612556565b600060646342094c5661181c6001600385612556565b600060646342094c5661181c6003600185612556565b600060646342094c5661181c6002600385612556565b600060646342094c5661181c6003600285612556565b600060646342094c5661181c60048085612556565b600060646342094c5661181c6001600485612556565b600060646342094c5661181c6004600185612556565b600060646342094c5661181c6002600485612556565b600060646342094c5661181c6004600285612556565b600060646342094c5661181c6003600485612556565b600060646342094c5661181c6004600385612556565b600060646342094c56611aba60018080612556565b600060646342094c56611b3d6001806002612556565b600060646342094c56611bc06002806001612556565b600060646342094c56611c4360028080612556565b600060646342094c56611cc76003806001612556565b600060646342094c56611d4d6003806002612556565b600060646342094c56611dd36004806001612556565b600060646342094c56611e5d60048060025b600081600281111561256a5761256a6128e6565b60ff166008846004811115612581576125816128e6565b61ffff16901b61ffff16601086600481111561259f5761259f6128e6565b62ffffff16901b171760e81b949350505050565b803560ff811681146125c457600080fd5b919050565b600080604083850312156125dc57600080fd5b6125e5836125b3565b91506125f3602084016125b3565b90509250929050565b604051610140810167ffffffffffffffff81118282101715612647577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b60006060828403121561265f57600080fd5b6040516060810181811067ffffffffffffffff821117156126a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b60008060008385036101808112156126e757600080fd5b610140808212156126f757600080fd5b6126ff6125fc565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301526101008087013581840152506101208087013581840152508194506127718187016125b3565b9350505061278261016085016125b3565b90509250925092565b600060e0828403121561279d57600080fd5b60405160e0810181811067ffffffffffffffff821117156127e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b600060a0828403121561284857600080fd5b60405160a0810181811067ffffffffffffffff82111715612892577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b6000602082840312156128df57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220023a2c4bedb5aead76b11780961b1a5bdfada6d39e8fe1b6c8ab2c044eb7930964736f6c63430008130033";
346
346
 
347
347
  type Comparison2TestsContractConstructorParams =
348
348
  | [signer?: Signer]
@@ -295,7 +295,7 @@ const _abi = [
295
295
  ] as const;
296
296
 
297
297
  const _bytecode =
298
- "0x608060405234801561001057600080fd5b50612172806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063d4c1db711161005b578063d4c1db7114610125578063dad85e0a14610135578063e23a217614610148578063ebb571fd1461015b57600080fd5b80632e544aa01461008d5780634ea83705146100b857806380f937bc146100d1578063acb38169146100fd575b600080fd5b6100a061009b366004611e43565b610170565b60405161ffff90911681526020015b60405180910390f35b60005460ff165b60405160ff90911681526020016100af565b6100e46100df366004611ec6565b61025b565b60405167ffffffffffffffff90911681526020016100af565b61011061010b366004611f71565b6103fe565b60405163ffffffff90911681526020016100af565b600054610100900460ff166100bf565b6100bf61014336600461201e565b61052b565b6100bf61015636600461201e565b610c11565b61016e610169366004612051565b61124f565b005b60008061018083600001516112d6565b905061018f83602001516112d6565b61ffff168161ffff161480156101b857506101ad83604001516112d6565b61ffff168161ffff16145b6102555760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b92915050565b60008061026b8360000151611373565b905061027a8360200151611373565b67ffffffffffffffff168167ffffffffffffffff161480156102bb57506102a48360400151611373565b67ffffffffffffffff168167ffffffffffffffff16145b80156102e657506102cf8360800151611373565b67ffffffffffffffff168167ffffffffffffffff16145b801561031157506102fa8360600151611373565b67ffffffffffffffff168167ffffffffffffffff16145b801561033c57506103258360c00151611373565b67ffffffffffffffff168167ffffffffffffffff16145b80156101b857506103508360a00151611373565b67ffffffffffffffff168167ffffffffffffffff16146102555760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a40161024c565b60008061040e8360000151611383565b905061041d8360200151611383565b63ffffffff168163ffffffff1614801561044e575061043f8360400151611383565b63ffffffff168163ffffffff16145b801561047157506104628360800151611383565b63ffffffff168163ffffffff16145b80156101b857506104858360600151611383565b63ffffffff168163ffffffff16146102555760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a40161024c565b600061057560405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61059960405180606001604052806000815260200160008152602001600081525090565b6105cb6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b61060b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61061684888861124f565b600061063261062d86600001518760200151611393565b611459565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556040860151606087015191925061067591611469565b845284516060860151610688919061147e565b8460200181815250506106a385604001518660200151611494565b604085015260006106b385610170565b90508160ff168161ffff161461070b5760405162461bcd60e51b815260206004820152601760248201527f6d696e546573743a2063617374203136206661696c6564000000000000000000604482015260640161024c565b61071d86608001518760a001516114aa565b8452855160a087015161073091906114bf565b84602001818152505061074b866080015187602001516114d5565b84604001818152505061076686604001518760a001516114eb565b84606001818152505061078186608001518760600151611501565b60808501526000610791856103fe565b90508063ffffffff168360ff16146107eb5760405162461bcd60e51b815260206004820152601760248201527f6d696e546573743a2063617374203332206661696c6564000000000000000000604482015260640161024c565b6107fd8760c001518860e00151611517565b8452865160e0880151610810919061152c565b84602001818152505061082b8760c001518860200151611542565b84604001818152505061084687604001518860e00151611558565b8460600181815250506108618760c00151886060015161156e565b84608001818152505061087c87608001518860e00151611584565b8460a00181815250506108978760c001518860a0015161159a565b60c085015260006108a78561025b565b90508067ffffffffffffffff168460ff16146109055760405162461bcd60e51b815260206004820152601760248201527f6d696e546573743a2063617374203634206661696c6564000000000000000000604482015260640161024c565b61091661062d8c8a602001516115b0565b60ff168460ff1614801561093f575061093661062d89600001518c611632565b60ff168460ff16145b6109b15760405162461bcd60e51b815260206004820152602760248201527f6d696e546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c656400000000000000000000000000000000000000000000000000606482015260840161024c565b6109ca6109c58c60ff168a606001516116b5565b6112d6565b61ffff168361ffff161480156109fa57506109ef6109c589604001518c60ff16611739565b61ffff168361ffff16145b610a6c5760405162461bcd60e51b815260206004820152602860248201527f6d696e546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c6564000000000000000000000000000000000000000000000000606482015260840161024c565b610a85610a808c60ff168a60a001516117bc565b611383565b63ffffffff168263ffffffff16148015610abd5750610aae610a8089608001518c60ff16611842565b63ffffffff168263ffffffff16145b610b2f5760405162461bcd60e51b815260206004820152602860248201527f6d696e546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c6564000000000000000000000000000000000000000000000000606482015260840161024c565b610b48610b438c60ff168a60e001516118c8565b611373565b67ffffffffffffffff168167ffffffffffffffff16148015610b905750610b79610b438960c001518c60ff16611952565b67ffffffffffffffff168167ffffffffffffffff16145b610c025760405162461bcd60e51b815260206004820152602860248201527f6d696e546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c6564000000000000000000000000000000000000000000000000606482015260840161024c565b50919998505050505050505050565b6000610c5b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610c7f60405180606001604052806000815260200160008152602001600081525090565b610cb16040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b610cf16040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610cfc84888861124f565b6000610d1361062d866000015187602001516119dc565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010060ff84160217905560408601516060870151919250610d5a916119f1565b845284516060860151610d6d9190611a06565b846020018181525050610d8885604001518660200151611a1c565b60408501526000610d9885610170565b90508160ff168161ffff1614610df05760405162461bcd60e51b815260206004820152601760248201527f6d6178546573743a2063617374203136206661696c6564000000000000000000604482015260640161024c565b610e0286608001518760a00151611a32565b8452855160a0870151610e159190611a47565b846020018181525050610e3086608001518760200151611a5d565b846040018181525050610e4b86604001518760a00151611a73565b846060018181525050610e6686608001518760600151611a89565b60808501526000610e76856103fe565b90508063ffffffff168360ff1614610ed05760405162461bcd60e51b815260206004820152601760248201527f6d6178546573743a2063617374203332206661696c6564000000000000000000604482015260640161024c565b610ee28760c001518860e00151611a9f565b8452865160e0880151610ef59190611ab4565b846020018181525050610f108760c001518860200151611aca565b846040018181525050610f2b87604001518860e00151611ae0565b846060018181525050610f468760c001518860600151611af6565b846080018181525050610f6187608001518860e00151611b0c565b8460a0018181525050610f7c8760c001518860a00151611b22565b60c08501526000610f8c8561025b565b90508067ffffffffffffffff168460ff1614610fea5760405162461bcd60e51b815260206004820152601760248201527f6d6178546573743a2063617374203634206661696c6564000000000000000000604482015260640161024c565b610ffb61062d8c8a60200151611b38565b60ff168460ff16148015611024575061101b61062d89600001518c611b4d565b60ff168460ff16145b6110965760405162461bcd60e51b815260206004820152602760248201527f6d696e546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c656400000000000000000000000000000000000000000000000000606482015260840161024c565b6110aa6109c58c60ff168a60600151611b63565b61ffff168361ffff161480156110da57506110cf6109c589604001518c60ff16611b79565b61ffff168361ffff16145b61114c5760405162461bcd60e51b815260206004820152602860248201527f6d696e546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c6564000000000000000000000000000000000000000000000000606482015260840161024c565b611160610a808c60ff168a60a00151611b8e565b63ffffffff168263ffffffff161480156111985750611189610a8089608001518c60ff16611ba4565b63ffffffff168263ffffffff16145b61120a5760405162461bcd60e51b815260206004820152602860248201527f6d696e546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c6564000000000000000000000000000000000000000000000000606482015260840161024c565b61121e610b438c60ff168a60e00151611bba565b67ffffffffffffffff168167ffffffffffffffff16148015610b905750610b79610b438960c001518c60ff16611bd0565b61125882611be6565b835261126381611be6565b602084015261127460ff8316611c4f565b604084015261128560ff8216611c4f565b606084015261129660ff8316611cb9565b60808401526112a760ff8216611cb9565b60a08401526112b860ff8316611d25565b60c08401526112c960ff8216611d25565b60e0909301929092525050565b60006064630cfed56160025b60f81b846040518363ffffffff1660e01b81526004016113309291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af115801561134f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102559190612123565b60006064630cfed56160046112e2565b60006064630cfed56160036112e2565b600060646369ca08746113a860018085611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af115801561142e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114529190612123565b9392505050565b60006064630cfed56160016112e2565b600060646369ca08746113a860028085611d95565b600060646369ca08746113a86001600285611d95565b600060646369ca08746113a86002600185611d95565b600060646369ca08746113a860038085611d95565b600060646369ca08746113a86001600385611d95565b600060646369ca08746113a86003600185611d95565b600060646369ca08746113a86002600385611d95565b600060646369ca08746113a86003600285611d95565b600060646369ca08746113a860048085611d95565b600060646369ca08746113a86001600485611d95565b600060646369ca08746113a86004600185611d95565b600060646369ca08746113a86002600485611d95565b600060646369ca08746113a86004600285611d95565b600060646369ca08746113a86003600485611d95565b600060646369ca08746113a86004600385611d95565b600060646369ca08746115c560018080611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff861660248201526044810185905260640161140f565b600060646369ca08746116486001806002611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff8516604482015260640161140f565b600060646369ca08746116cb6002806001611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff861660248201526044810185905260640161140f565b600060646369ca087461174e60028080611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff8516604482015260640161140f565b600060646369ca08746117d26003806001611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff861660248201526044810185905260640161140f565b600060646369ca08746118586003806002611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff8516604482015260640161140f565b600060646369ca08746118de6004806001611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff861660248201526044810185905260640161140f565b600060646369ca08746119686004806002611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff8516604482015260640161140f565b60006064639bda07826113a860018085611d95565b60006064639bda07826113a860028085611d95565b60006064639bda07826113a86001600285611d95565b60006064639bda07826113a86002600185611d95565b60006064639bda07826113a860038085611d95565b60006064639bda07826113a86001600385611d95565b60006064639bda07826113a86003600185611d95565b60006064639bda07826113a86002600385611d95565b60006064639bda07826113a86003600285611d95565b60006064639bda07826113a860048085611d95565b60006064639bda07826113a86001600485611d95565b60006064639bda07826113a86004600185611d95565b60006064639bda07826113a86002600485611d95565b60006064639bda07826113a86004600285611d95565b60006064639bda07826113a86003600485611d95565b60006064639bda07826113a86004600385611d95565b60006064639bda07826115c560018080611d95565b60006064639bda07826116486001806002611d95565b60006064639bda07826116cb6002806001611d95565b60006064639bda078261174e60028080611d95565b60006064639bda07826117d26003806001611d95565b60006064639bda07826118586003806002611d95565b60006064639bda07826118de6004806001611d95565b60006064639bda07826119686004806002611d95565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b6090604401611330565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401611330565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401611330565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401611330565b6000816002811115611da957611da96120f4565b60ff166008846004811115611dc057611dc06120f4565b61ffff16901b61ffff166010866004811115611dde57611dde6120f4565b62ffffff16901b171760e81b949350505050565b604051610100810167ffffffffffffffff81118282101715611e3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b600060608284031215611e5557600080fd5b6040516060810181811067ffffffffffffffff82111715611e9f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b600060e08284031215611ed857600080fd5b60405160e0810181811067ffffffffffffffff82111715611f22577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b600060a08284031215611f8357600080fd5b60405160a0810181811067ffffffffffffffff82111715611fcd577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b803560ff8116811461201957600080fd5b919050565b6000806040838503121561203157600080fd5b61203a83612008565b915061204860208401612008565b90509250929050565b600080600083850361014081121561206857600080fd5b6101008082121561207857600080fd5b612080611df2565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301528194506120da818701612008565b935050506120eb6101208501612008565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561213557600080fd5b505191905056fea26469706673582212206d2e881a573855eefdcd7ae2038d1c0cd847977ec97045f0c833d0e865d0b7ff64736f6c63430008130033";
298
+ "0x608060405234801561001057600080fd5b50612172806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063d4c1db711161005b578063d4c1db7114610125578063dad85e0a14610135578063e23a217614610148578063ebb571fd1461015b57600080fd5b80632e544aa01461008d5780634ea83705146100b857806380f937bc146100d1578063acb38169146100fd575b600080fd5b6100a061009b366004611e43565b610170565b60405161ffff90911681526020015b60405180910390f35b60005460ff165b60405160ff90911681526020016100af565b6100e46100df366004611ec6565b61025b565b60405167ffffffffffffffff90911681526020016100af565b61011061010b366004611f71565b6103fe565b60405163ffffffff90911681526020016100af565b600054610100900460ff166100bf565b6100bf61014336600461201e565b61052b565b6100bf61015636600461201e565b610c11565b61016e610169366004612051565b61124f565b005b60008061018083600001516112d6565b905061018f83602001516112d6565b61ffff168161ffff161480156101b857506101ad83604001516112d6565b61ffff168161ffff16145b6102555760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b92915050565b60008061026b8360000151611373565b905061027a8360200151611373565b67ffffffffffffffff168167ffffffffffffffff161480156102bb57506102a48360400151611373565b67ffffffffffffffff168167ffffffffffffffff16145b80156102e657506102cf8360800151611373565b67ffffffffffffffff168167ffffffffffffffff16145b801561031157506102fa8360600151611373565b67ffffffffffffffff168167ffffffffffffffff16145b801561033c57506103258360c00151611373565b67ffffffffffffffff168167ffffffffffffffff16145b80156101b857506103508360a00151611373565b67ffffffffffffffff168167ffffffffffffffff16146102555760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a40161024c565b60008061040e8360000151611383565b905061041d8360200151611383565b63ffffffff168163ffffffff1614801561044e575061043f8360400151611383565b63ffffffff168163ffffffff16145b801561047157506104628360800151611383565b63ffffffff168163ffffffff16145b80156101b857506104858360600151611383565b63ffffffff168163ffffffff16146102555760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a40161024c565b600061057560405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61059960405180606001604052806000815260200160008152602001600081525090565b6105cb6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b61060b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61061684888861124f565b600061063261062d86600001518760200151611393565b611459565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556040860151606087015191925061067591611469565b845284516060860151610688919061147e565b8460200181815250506106a385604001518660200151611494565b604085015260006106b385610170565b90508160ff168161ffff161461070b5760405162461bcd60e51b815260206004820152601760248201527f6d696e546573743a2063617374203136206661696c6564000000000000000000604482015260640161024c565b61071d86608001518760a001516114aa565b8452855160a087015161073091906114bf565b84602001818152505061074b866080015187602001516114d5565b84604001818152505061076686604001518760a001516114eb565b84606001818152505061078186608001518760600151611501565b60808501526000610791856103fe565b90508063ffffffff168360ff16146107eb5760405162461bcd60e51b815260206004820152601760248201527f6d696e546573743a2063617374203332206661696c6564000000000000000000604482015260640161024c565b6107fd8760c001518860e00151611517565b8452865160e0880151610810919061152c565b84602001818152505061082b8760c001518860200151611542565b84604001818152505061084687604001518860e00151611558565b8460600181815250506108618760c00151886060015161156e565b84608001818152505061087c87608001518860e00151611584565b8460a00181815250506108978760c001518860a0015161159a565b60c085015260006108a78561025b565b90508067ffffffffffffffff168460ff16146109055760405162461bcd60e51b815260206004820152601760248201527f6d696e546573743a2063617374203634206661696c6564000000000000000000604482015260640161024c565b61091661062d8c8a602001516115b0565b60ff168460ff1614801561093f575061093661062d89600001518c611632565b60ff168460ff16145b6109b15760405162461bcd60e51b815260206004820152602760248201527f6d696e546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c656400000000000000000000000000000000000000000000000000606482015260840161024c565b6109ca6109c58c60ff168a606001516116b5565b6112d6565b61ffff168361ffff161480156109fa57506109ef6109c589604001518c60ff16611739565b61ffff168361ffff16145b610a6c5760405162461bcd60e51b815260206004820152602860248201527f6d696e546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c6564000000000000000000000000000000000000000000000000606482015260840161024c565b610a85610a808c60ff168a60a001516117bc565b611383565b63ffffffff168263ffffffff16148015610abd5750610aae610a8089608001518c60ff16611842565b63ffffffff168263ffffffff16145b610b2f5760405162461bcd60e51b815260206004820152602860248201527f6d696e546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c6564000000000000000000000000000000000000000000000000606482015260840161024c565b610b48610b438c60ff168a60e001516118c8565b611373565b67ffffffffffffffff168167ffffffffffffffff16148015610b905750610b79610b438960c001518c60ff16611952565b67ffffffffffffffff168167ffffffffffffffff16145b610c025760405162461bcd60e51b815260206004820152602860248201527f6d696e546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c6564000000000000000000000000000000000000000000000000606482015260840161024c565b50919998505050505050505050565b6000610c5b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610c7f60405180606001604052806000815260200160008152602001600081525090565b610cb16040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b610cf16040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610cfc84888861124f565b6000610d1361062d866000015187602001516119dc565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010060ff84160217905560408601516060870151919250610d5a916119f1565b845284516060860151610d6d9190611a06565b846020018181525050610d8885604001518660200151611a1c565b60408501526000610d9885610170565b90508160ff168161ffff1614610df05760405162461bcd60e51b815260206004820152601760248201527f6d6178546573743a2063617374203136206661696c6564000000000000000000604482015260640161024c565b610e0286608001518760a00151611a32565b8452855160a0870151610e159190611a47565b846020018181525050610e3086608001518760200151611a5d565b846040018181525050610e4b86604001518760a00151611a73565b846060018181525050610e6686608001518760600151611a89565b60808501526000610e76856103fe565b90508063ffffffff168360ff1614610ed05760405162461bcd60e51b815260206004820152601760248201527f6d6178546573743a2063617374203332206661696c6564000000000000000000604482015260640161024c565b610ee28760c001518860e00151611a9f565b8452865160e0880151610ef59190611ab4565b846020018181525050610f108760c001518860200151611aca565b846040018181525050610f2b87604001518860e00151611ae0565b846060018181525050610f468760c001518860600151611af6565b846080018181525050610f6187608001518860e00151611b0c565b8460a0018181525050610f7c8760c001518860a00151611b22565b60c08501526000610f8c8561025b565b90508067ffffffffffffffff168460ff1614610fea5760405162461bcd60e51b815260206004820152601760248201527f6d6178546573743a2063617374203634206661696c6564000000000000000000604482015260640161024c565b610ffb61062d8c8a60200151611b38565b60ff168460ff16148015611024575061101b61062d89600001518c611b4d565b60ff168460ff16145b6110965760405162461bcd60e51b815260206004820152602760248201527f6d696e546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c656400000000000000000000000000000000000000000000000000606482015260840161024c565b6110aa6109c58c60ff168a60600151611b63565b61ffff168361ffff161480156110da57506110cf6109c589604001518c60ff16611b79565b61ffff168361ffff16145b61114c5760405162461bcd60e51b815260206004820152602860248201527f6d696e546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c6564000000000000000000000000000000000000000000000000606482015260840161024c565b611160610a808c60ff168a60a00151611b8e565b63ffffffff168263ffffffff161480156111985750611189610a8089608001518c60ff16611ba4565b63ffffffff168263ffffffff16145b61120a5760405162461bcd60e51b815260206004820152602860248201527f6d696e546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c6564000000000000000000000000000000000000000000000000606482015260840161024c565b61121e610b438c60ff168a60e00151611bba565b67ffffffffffffffff168167ffffffffffffffff16148015610b905750610b79610b438960c001518c60ff16611bd0565b61125882611be6565b835261126381611be6565b602084015261127460ff8316611c4f565b604084015261128560ff8216611c4f565b606084015261129660ff8316611cb9565b60808401526112a760ff8216611cb9565b60a08401526112b860ff8316611d25565b60c08401526112c960ff8216611d25565b60e0909301929092525050565b60006064630cfed56160025b60f81b846040518363ffffffff1660e01b81526004016113309291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af115801561134f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102559190612123565b60006064630cfed56160046112e2565b60006064630cfed56160036112e2565b600060646369ca08746113a860018085611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af115801561142e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114529190612123565b9392505050565b60006064630cfed56160016112e2565b600060646369ca08746113a860028085611d95565b600060646369ca08746113a86001600285611d95565b600060646369ca08746113a86002600185611d95565b600060646369ca08746113a860038085611d95565b600060646369ca08746113a86001600385611d95565b600060646369ca08746113a86003600185611d95565b600060646369ca08746113a86002600385611d95565b600060646369ca08746113a86003600285611d95565b600060646369ca08746113a860048085611d95565b600060646369ca08746113a86001600485611d95565b600060646369ca08746113a86004600185611d95565b600060646369ca08746113a86002600485611d95565b600060646369ca08746113a86004600285611d95565b600060646369ca08746113a86003600485611d95565b600060646369ca08746113a86004600385611d95565b600060646369ca08746115c560018080611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff861660248201526044810185905260640161140f565b600060646369ca08746116486001806002611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff8516604482015260640161140f565b600060646369ca08746116cb6002806001611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff861660248201526044810185905260640161140f565b600060646369ca087461174e60028080611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff8516604482015260640161140f565b600060646369ca08746117d26003806001611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff861660248201526044810185905260640161140f565b600060646369ca08746118586003806002611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff8516604482015260640161140f565b600060646369ca08746118de6004806001611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff861660248201526044810185905260640161140f565b600060646369ca08746119686004806002611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff8516604482015260640161140f565b60006064639bda07826113a860018085611d95565b60006064639bda07826113a860028085611d95565b60006064639bda07826113a86001600285611d95565b60006064639bda07826113a86002600185611d95565b60006064639bda07826113a860038085611d95565b60006064639bda07826113a86001600385611d95565b60006064639bda07826113a86003600185611d95565b60006064639bda07826113a86002600385611d95565b60006064639bda07826113a86003600285611d95565b60006064639bda07826113a860048085611d95565b60006064639bda07826113a86001600485611d95565b60006064639bda07826113a86004600185611d95565b60006064639bda07826113a86002600485611d95565b60006064639bda07826113a86004600285611d95565b60006064639bda07826113a86003600485611d95565b60006064639bda07826113a86004600385611d95565b60006064639bda07826115c560018080611d95565b60006064639bda07826116486001806002611d95565b60006064639bda07826116cb6002806001611d95565b60006064639bda078261174e60028080611d95565b60006064639bda07826117d26003806001611d95565b60006064639bda07826118586003806002611d95565b60006064639bda07826118de6004806001611d95565b60006064639bda07826119686004806002611d95565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b6090604401611330565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401611330565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401611330565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401611330565b6000816002811115611da957611da96120f4565b60ff166008846004811115611dc057611dc06120f4565b61ffff16901b61ffff166010866004811115611dde57611dde6120f4565b62ffffff16901b171760e81b949350505050565b604051610100810167ffffffffffffffff81118282101715611e3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b600060608284031215611e5557600080fd5b6040516060810181811067ffffffffffffffff82111715611e9f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b600060e08284031215611ed857600080fd5b60405160e0810181811067ffffffffffffffff82111715611f22577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b600060a08284031215611f8357600080fd5b60405160a0810181811067ffffffffffffffff82111715611fcd577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b803560ff8116811461201957600080fd5b919050565b6000806040838503121561203157600080fd5b61203a83612008565b915061204860208401612008565b90509250929050565b600080600083850361014081121561206857600080fd5b6101008082121561207857600080fd5b612080611df2565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301528194506120da818701612008565b935050506120eb6101208501612008565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561213557600080fd5b505191905056fea2646970667358221220b0bb60f8becf44d8165b2a7ce03d8b966a8c22e085331bd006c700309b02c8b264736f6c63430008130033";
299
299
 
300
300
  type MinMaxTestsContractConstructorParams =
301
301
  | [signer?: Signer]
@@ -246,7 +246,7 @@ const _abi = [
246
246
  ] as const;
247
247
 
248
248
  const _bytecode =
249
- "0x6080604052600080546001600160801b031916905534801561002057600080fd5b50611a48806100306000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80639266057811610076578063d3d8aff41161005b578063d3d8aff414610284578063dbc221d0146102a2578063dfbba08f146102b557600080fd5b8063926605781461025d578063aacc5a171461027257600080fd5b806334c7c817116100a757806334c7c81714610202578063598f9579146102295780635adb57781461025557600080fd5b8063103bdb87146100c3578063276b8288146101dd575b600080fd5b6000546040805160ff70010000000000000000000000000000000084048116151582527101000000000000000000000000000000000084048116151560208301527201000000000000000000000000000000000000840481161515928201929092527301000000000000000000000000000000000000008304821615156060820152740100000000000000000000000000000000000000008304821615156080820152750100000000000000000000000000000000000000000083048216151560a082015276010000000000000000000000000000000000000000000083048216151560c08201527701000000000000000000000000000000000000000000000090920416151560e0820152610100015b60405180910390f35b6101f06101eb366004611675565b6102c8565b60405160ff90911681526020016101d4565b6000547801000000000000000000000000000000000000000000000000900460ff166101f0565b61023c610237366004611723565b610731565b60405167ffffffffffffffff90911681526020016101d4565b61023c610744565b61027061026b36600461174e565b610756565b005b60005467ffffffffffffffff1661023c565b60005468010000000000000000900467ffffffffffffffff1661023c565b6102706102b03660046117d8565b610a39565b61023c6102c336600461186c565b610b11565b60006102e7604051806040016040528060008152602001606081525090565b878152604080516020601f860181900481028201810190925284815290859085908190840183828082843760009201829052506020808701959095526040805180820190915290815260609481019490945250610342915050565b878152604080516020601f87018190048102820181019092528581529086908690819084018382808284376000920182905250602080870195909552604080518082019091529081526060948101949094525061039d915050565b878152604080516020601f8801819004810282018101909252868152908790879081908401838280828437600092018290525060208087019590955260408051808201909152908152606094810194909452506103f8915050565b878152604080516020601f8901819004810282018101909252878152908890889081908401838280828437600092019190915250505050602082015261044561044085610ef5565b610f89565b6000805460ff929092167801000000000000000000000000000000000000000000000000027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff9092169190911781556104a56104a085610fe3565b610ff3565b6000549091507801000000000000000000000000000000000000000000000000900460ff1661ffff821614610561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f76616c696461746543697068657274657874546573743a2076616c696461746560448201527f4369706865727465787420776974682031362062697473206661696c6564000060648201526084015b60405180910390fd5b600061057461056f85611003565b611013565b6000549091507801000000000000000000000000000000000000000000000000900460ff1663ffffffff82161461062d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f76616c696461746543697068657274657874546573743a2076616c696461746560448201527f4369706865727465787420776974682033322062697473206661696c656400006064820152608401610558565b600061064061063b85611023565b611033565b6000549091507801000000000000000000000000000000000000000000000000900460ff1667ffffffffffffffff8216146106fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f76616c696461746543697068657274657874546573743a2076616c696461746560448201527f4369706865727465787420776974682036342062697473206661696c656400006064820152608401610558565b50506000547801000000000000000000000000000000000000000000000000900460ff169c9b505050505050505050505050565b600061073e600183610b11565b92915050565b6000610751600080610b11565b905090565b600061076184611043565b9050600061076e84611043565b9050600061077b84611043565b905061078f61078a84846110e7565b611180565b60008054911515700100000000000000000000000000000000027fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff9092169190911790556107e061078a8484611211565b6000805491151571010000000000000000000000000000000000027fffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff90921691909117905561083261078a8484611225565b600080549115157201000000000000000000000000000000000000027fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff90921691909117905561088461078a84611239565b60008054911515730100000000000000000000000000000000000000027fffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff9092169190911790556108d861078a8484611248565b6000805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90921691909117905561092d61078a848461125c565b600080549115157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90921691909117905561098461078a828585611270565b60008054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff9092169190911781556109d78461133c565b90506109e561078a8261134b565b6000805491151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90921691909117905550505050505050565b60005b82811015610b0b57600160ff83161b8482600a8110610a5d57610a5d61189f565b602002015167ffffffffffffffff1610610af9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f72616e646f6d546573743a2072616e646f6d206661696c65642c206f7574206f60448201527f6620626f756e64730000000000000000000000000000000000000000000000006064820152608401610558565b80610b03816118ce565b915050610a3c565b50505050565b6000600a610b1d611656565b84610b715760005b82811015610b6657610b3861078a61135a565b8282600a8110610b4a57610b4a61189f565b9115156020909202015280610b5e816118ce565b915050610b25565b50610b7181836113ef565b610b79611656565b85610b8357600a92505b60005b83811015610c145786610bcc57610b9e6104406114d4565b60ff168282600a8110610bb357610bb361189f565b67ffffffffffffffff9092166020929092020152610c02565b610bd8610440876114e4565b60ff168282600a8110610bed57610bed61189f565b67ffffffffffffffff90921660209290920201525b80610c0c816118ce565b915050610b86565b508515610c2657610c26818487610a39565b610c308184611541565b85610c3a57600392505b60005b83811015610ccd5786610c8457610c556104a0611599565b61ffff168282600a8110610c6b57610c6b61189f565b67ffffffffffffffff9092166020929092020152610cbb565b610c906104a0876115a9565b61ffff168282600a8110610ca657610ca661189f565b67ffffffffffffffff90921660209290920201525b80610cc5816118ce565b915050610c3d565b508515610cdf57610cdf818487610a39565b610ce98184611541565b85610cf357600392505b60005b83811015610d8a5786610d3f57610d0e61056f6115b9565b63ffffffff168282600a8110610d2657610d2661189f565b67ffffffffffffffff9092166020929092020152610d78565b610d4b61056f876115c9565b63ffffffff168282600a8110610d6357610d6361189f565b67ffffffffffffffff90921660209290920201525b80610d82816118ce565b915050610cf6565b508515610d9c57610d9c818487610a39565b610da68184611541565b85610db057600292505b60005b83811015610e3b5786610df657610dcb61063b6115d9565b8282600a8110610ddd57610ddd61189f565b67ffffffffffffffff9092166020929092020152610e29565b610e0261063b876115e9565b8282600a8110610e1457610e1461189f565b67ffffffffffffffff90921660209290920201525b80610e33816118ce565b915050610db3565b508515610e9957610e4d818487610a39565b80516000805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055610ed4565b8051600080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9092169190911790555b610ede8184611541565b505060005467ffffffffffffffff16949350505050565b6000606463e4f36e1060015b845160208601516040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152610f469360f81b92919060040161195c565b6020604051808303816000875af1158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073e91906119f9565b60006064630cfed56160015b60f81b846040518363ffffffff1660e01b8152600401610f469291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6000606463e4f36e106002610f01565b60006064630cfed5616002610f95565b6000606463e4f36e106003610f01565b60006064630cfed5616003610f95565b6000606463e4f36e106004610f01565b60006064630cfed5616004610f95565b60008082611052576000611055565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b60906044016020604051808303816000875af11580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e091906119f9565b9392505050565b6000606463fe9c73d16110fb8380806115f9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064016020604051808303816000875af11580156110bc573d6000803e3d6000fd5b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af11580156111e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120891906119f9565b15159392505050565b6000606463fb7da35f6110fb8380806115f9565b60006064636f962e2c6110fb8380806115f9565b60006064631d79e49a82610f95565b60006064637c12a1eb6110fb8380806115f9565b600060646342094c566110fb8380806115f9565b600060646320cc408d6112848380806115f9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905260448101869052606481018590526084016020604051808303816000875af1158015611310573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133491906119f9565b949350505050565b6000606463c50c9c0282610f95565b6000606463d2c135e582610f95565b6000606463134eb890825b60f81b6040518263ffffffff1660e01b81526004016113ac91907fff0000000000000000000000000000000000000000000000000000000000000091909116815260200190565b6020604051808303816000875af11580156113cb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075191906119f9565b6001805b8281101561143f578381600a811061140d5761140d61189f565b602002015184519015159015150361142d5781611429816118ce565b9250505b80611437816118ce565b9150506113f3565b508181036114cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f72616e646f6d546573743a2072616e646f6d206661696c65642c20616c6c207660448201527f616c75657320617265207468652073616d6500000000000000000000000000006064820152608401610558565b505050565b6000606463134eb8906001611365565b6000606463072d17fc60015b60f81b846040518363ffffffff1660e01b8152600401610f469291907fff0000000000000000000000000000000000000000000000000000000000000092909216825260ff16602082015260400190565b6001805b8281101561143f578381600a811061155f5761155f61189f565b6020020151845167ffffffffffffffff9182169116036115875781611583816118ce565b9250505b80611591816118ce565b915050611545565b6000606463134eb8906002611365565b6000606463072d17fc60026114f0565b6000606463134eb8906003611365565b6000606463072d17fc60036114f0565b6000606463134eb8906004611365565b6000606463072d17fc60046114f0565b600081600281111561160d5761160d61192d565b60ff1660088460048111156116245761162461192d565b61ffff16901b61ffff1660108660048111156116425761164261192d565b62ffffff16901b171760e81b949350505050565b604051806101400160405280600a906020820280368337509192915050565b60008060008060008060a0878903121561168e57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff808211156116c257600080fd5b818901915089601f8301126116d657600080fd5b8135818111156116e557600080fd5b8a60208285010111156116f757600080fd5b6020830194508093505050509295509295509295565b803560ff8116811461171e57600080fd5b919050565b60006020828403121561173557600080fd5b6110e08261170d565b8035801515811461171e57600080fd5b60008060006060848603121561176357600080fd5b61176c8461173e565b925061177a6020850161173e565b91506117886040850161173e565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803567ffffffffffffffff8116811461171e57600080fd5b600080600061018084860312156117ee57600080fd5b84601f8501126117fd57600080fd5b60405161014080820182811067ffffffffffffffff8211171561182257611822611791565b6040528501818782111561183557600080fd5b865b8281101561185657611848816117c0565b825260209182019101611837565b509194503592506117889050610160850161170d565b6000806040838503121561187f57600080fd5b6118888361173e565b91506118966020840161170d565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611926577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7fff000000000000000000000000000000000000000000000000000000000000008416815260006020848184015260606040840152835180606085015260005b818110156119b85785810183015185820160800152820161199c565b5060006080828601015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010192505050949350505050565b600060208284031215611a0b57600080fd5b505191905056fea26469706673582212202c5b5cf35d4be2d2b23f17baf6a204b56b26af6aa66942775bbd1c35a495489464736f6c63430008130033";
249
+ "0x6080604052600080546001600160801b031916905534801561002057600080fd5b50611a48806100306000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80639266057811610076578063d3d8aff41161005b578063d3d8aff414610284578063dbc221d0146102a2578063dfbba08f146102b557600080fd5b8063926605781461025d578063aacc5a171461027257600080fd5b806334c7c817116100a757806334c7c81714610202578063598f9579146102295780635adb57781461025557600080fd5b8063103bdb87146100c3578063276b8288146101dd575b600080fd5b6000546040805160ff70010000000000000000000000000000000084048116151582527101000000000000000000000000000000000084048116151560208301527201000000000000000000000000000000000000840481161515928201929092527301000000000000000000000000000000000000008304821615156060820152740100000000000000000000000000000000000000008304821615156080820152750100000000000000000000000000000000000000000083048216151560a082015276010000000000000000000000000000000000000000000083048216151560c08201527701000000000000000000000000000000000000000000000090920416151560e0820152610100015b60405180910390f35b6101f06101eb366004611675565b6102c8565b60405160ff90911681526020016101d4565b6000547801000000000000000000000000000000000000000000000000900460ff166101f0565b61023c610237366004611723565b610731565b60405167ffffffffffffffff90911681526020016101d4565b61023c610744565b61027061026b36600461174e565b610756565b005b60005467ffffffffffffffff1661023c565b60005468010000000000000000900467ffffffffffffffff1661023c565b6102706102b03660046117d8565b610a39565b61023c6102c336600461186c565b610b11565b60006102e7604051806040016040528060008152602001606081525090565b878152604080516020601f860181900481028201810190925284815290859085908190840183828082843760009201829052506020808701959095526040805180820190915290815260609481019490945250610342915050565b878152604080516020601f87018190048102820181019092528581529086908690819084018382808284376000920182905250602080870195909552604080518082019091529081526060948101949094525061039d915050565b878152604080516020601f8801819004810282018101909252868152908790879081908401838280828437600092018290525060208087019590955260408051808201909152908152606094810194909452506103f8915050565b878152604080516020601f8901819004810282018101909252878152908890889081908401838280828437600092019190915250505050602082015261044561044085610ef5565b610f89565b6000805460ff929092167801000000000000000000000000000000000000000000000000027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff9092169190911781556104a56104a085610fe3565b610ff3565b6000549091507801000000000000000000000000000000000000000000000000900460ff1661ffff821614610561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f76616c696461746543697068657274657874546573743a2076616c696461746560448201527f4369706865727465787420776974682031362062697473206661696c6564000060648201526084015b60405180910390fd5b600061057461056f85611003565b611013565b6000549091507801000000000000000000000000000000000000000000000000900460ff1663ffffffff82161461062d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f76616c696461746543697068657274657874546573743a2076616c696461746560448201527f4369706865727465787420776974682033322062697473206661696c656400006064820152608401610558565b600061064061063b85611023565b611033565b6000549091507801000000000000000000000000000000000000000000000000900460ff1667ffffffffffffffff8216146106fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f76616c696461746543697068657274657874546573743a2076616c696461746560448201527f4369706865727465787420776974682036342062697473206661696c656400006064820152608401610558565b50506000547801000000000000000000000000000000000000000000000000900460ff169c9b505050505050505050505050565b600061073e600183610b11565b92915050565b6000610751600080610b11565b905090565b600061076184611043565b9050600061076e84611043565b9050600061077b84611043565b905061078f61078a84846110e7565b611180565b60008054911515700100000000000000000000000000000000027fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff9092169190911790556107e061078a8484611211565b6000805491151571010000000000000000000000000000000000027fffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff90921691909117905561083261078a8484611225565b600080549115157201000000000000000000000000000000000000027fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff90921691909117905561088461078a84611239565b60008054911515730100000000000000000000000000000000000000027fffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff9092169190911790556108d861078a8484611248565b6000805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90921691909117905561092d61078a848461125c565b600080549115157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90921691909117905561098461078a828585611270565b60008054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff9092169190911781556109d78461133c565b90506109e561078a8261134b565b6000805491151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90921691909117905550505050505050565b60005b82811015610b0b57600160ff83161b8482600a8110610a5d57610a5d61189f565b602002015167ffffffffffffffff1610610af9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f72616e646f6d546573743a2072616e646f6d206661696c65642c206f7574206f60448201527f6620626f756e64730000000000000000000000000000000000000000000000006064820152608401610558565b80610b03816118ce565b915050610a3c565b50505050565b6000600a610b1d611656565b84610b715760005b82811015610b6657610b3861078a61135a565b8282600a8110610b4a57610b4a61189f565b9115156020909202015280610b5e816118ce565b915050610b25565b50610b7181836113ef565b610b79611656565b85610b8357600a92505b60005b83811015610c145786610bcc57610b9e6104406114d4565b60ff168282600a8110610bb357610bb361189f565b67ffffffffffffffff9092166020929092020152610c02565b610bd8610440876114e4565b60ff168282600a8110610bed57610bed61189f565b67ffffffffffffffff90921660209290920201525b80610c0c816118ce565b915050610b86565b508515610c2657610c26818487610a39565b610c308184611541565b85610c3a57600392505b60005b83811015610ccd5786610c8457610c556104a0611599565b61ffff168282600a8110610c6b57610c6b61189f565b67ffffffffffffffff9092166020929092020152610cbb565b610c906104a0876115a9565b61ffff168282600a8110610ca657610ca661189f565b67ffffffffffffffff90921660209290920201525b80610cc5816118ce565b915050610c3d565b508515610cdf57610cdf818487610a39565b610ce98184611541565b85610cf357600392505b60005b83811015610d8a5786610d3f57610d0e61056f6115b9565b63ffffffff168282600a8110610d2657610d2661189f565b67ffffffffffffffff9092166020929092020152610d78565b610d4b61056f876115c9565b63ffffffff168282600a8110610d6357610d6361189f565b67ffffffffffffffff90921660209290920201525b80610d82816118ce565b915050610cf6565b508515610d9c57610d9c818487610a39565b610da68184611541565b85610db057600292505b60005b83811015610e3b5786610df657610dcb61063b6115d9565b8282600a8110610ddd57610ddd61189f565b67ffffffffffffffff9092166020929092020152610e29565b610e0261063b876115e9565b8282600a8110610e1457610e1461189f565b67ffffffffffffffff90921660209290920201525b80610e33816118ce565b915050610db3565b508515610e9957610e4d818487610a39565b80516000805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055610ed4565b8051600080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9092169190911790555b610ede8184611541565b505060005467ffffffffffffffff16949350505050565b6000606463e4f36e1060015b845160208601516040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152610f469360f81b92919060040161195c565b6020604051808303816000875af1158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073e91906119f9565b60006064630cfed56160015b60f81b846040518363ffffffff1660e01b8152600401610f469291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6000606463e4f36e106002610f01565b60006064630cfed5616002610f95565b6000606463e4f36e106003610f01565b60006064630cfed5616003610f95565b6000606463e4f36e106004610f01565b60006064630cfed5616004610f95565b60008082611052576000611055565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b60906044016020604051808303816000875af11580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e091906119f9565b9392505050565b6000606463fe9c73d16110fb8380806115f9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064016020604051808303816000875af11580156110bc573d6000803e3d6000fd5b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af11580156111e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120891906119f9565b15159392505050565b6000606463fb7da35f6110fb8380806115f9565b60006064636f962e2c6110fb8380806115f9565b60006064631d79e49a82610f95565b60006064637c12a1eb6110fb8380806115f9565b600060646342094c566110fb8380806115f9565b600060646320cc408d6112848380806115f9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905260448101869052606481018590526084016020604051808303816000875af1158015611310573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133491906119f9565b949350505050565b6000606463c50c9c0282610f95565b6000606463d2c135e582610f95565b6000606463134eb890825b60f81b6040518263ffffffff1660e01b81526004016113ac91907fff0000000000000000000000000000000000000000000000000000000000000091909116815260200190565b6020604051808303816000875af11580156113cb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075191906119f9565b6001805b8281101561143f578381600a811061140d5761140d61189f565b602002015184519015159015150361142d5781611429816118ce565b9250505b80611437816118ce565b9150506113f3565b508181036114cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f72616e646f6d546573743a2072616e646f6d206661696c65642c20616c6c207660448201527f616c75657320617265207468652073616d6500000000000000000000000000006064820152608401610558565b505050565b6000606463134eb8906001611365565b6000606463072d17fc60015b60f81b846040518363ffffffff1660e01b8152600401610f469291907fff0000000000000000000000000000000000000000000000000000000000000092909216825260ff16602082015260400190565b6001805b8281101561143f578381600a811061155f5761155f61189f565b6020020151845167ffffffffffffffff9182169116036115875781611583816118ce565b9250505b80611591816118ce565b915050611545565b6000606463134eb8906002611365565b6000606463072d17fc60026114f0565b6000606463134eb8906003611365565b6000606463072d17fc60036114f0565b6000606463134eb8906004611365565b6000606463072d17fc60046114f0565b600081600281111561160d5761160d61192d565b60ff1660088460048111156116245761162461192d565b61ffff16901b61ffff1660108660048111156116425761164261192d565b62ffffff16901b171760e81b949350505050565b604051806101400160405280600a906020820280368337509192915050565b60008060008060008060a0878903121561168e57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff808211156116c257600080fd5b818901915089601f8301126116d657600080fd5b8135818111156116e557600080fd5b8a60208285010111156116f757600080fd5b6020830194508093505050509295509295509295565b803560ff8116811461171e57600080fd5b919050565b60006020828403121561173557600080fd5b6110e08261170d565b8035801515811461171e57600080fd5b60008060006060848603121561176357600080fd5b61176c8461173e565b925061177a6020850161173e565b91506117886040850161173e565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803567ffffffffffffffff8116811461171e57600080fd5b600080600061018084860312156117ee57600080fd5b84601f8501126117fd57600080fd5b60405161014080820182811067ffffffffffffffff8211171561182257611822611791565b6040528501818782111561183557600080fd5b865b8281101561185657611848816117c0565b825260209182019101611837565b509194503592506117889050610160850161170d565b6000806040838503121561187f57600080fd5b6118888361173e565b91506118966020840161170d565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611926577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7fff000000000000000000000000000000000000000000000000000000000000008416815260006020848184015260606040840152835180606085015260005b818110156119b85785810183015185820160800152820161199c565b5060006080828601015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010192505050949350505050565b600060208284031215611a0b57600080fd5b505191905056fea26469706673582212207d49553ea3b67e219ae484a4db0fb047adc866e3e044640a8ddd106a45a9259e64736f6c63430008130033";
250
250
 
251
251
  type Miscellaneous1TestsContractConstructorParams =
252
252
  | [signer?: Signer]
@@ -369,7 +369,7 @@ const _abi = [
369
369
  ] as const;
370
370
 
371
371
  const _bytecode =
372
- "0x608060405234801561001057600080fd5b506131bc806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806392bba35611610081578063acb381691161005b578063acb38169146101c7578063d74e55e7146101ef578063ebb571fd1461020057600080fd5b806392bba3561461018f578063a103e4c0146101a1578063a609476a146101b457600080fd5b8063690ec3d9116100b2578063690ec3d91461012d5780636c74e7141461015057806380f937bc1461016357600080fd5b80632684f863146100d95780632e544aa0146100f75780632e5dda1e1461011d575b600080fd5b60005460ff165b60405160ff90911681526020015b60405180910390f35b61010a610105366004612e28565b610215565b60405161ffff90911681526020016100ee565b600054610100900460ff166100e0565b61014061013b366004612ec0565b610300565b60405190151581526020016100ee565b6100e061015e366004612eec565b610367565b610176610171366004612f2f565b610a65565b60405167ffffffffffffffff90911681526020016100ee565b6000546301000000900460ff16610140565b6100e06101af366004612fda565b610c08565b6100e06101c2366004612fda565b6112c8565b6101da6101d536600461300d565b611975565b60405163ffffffff90911681526020016100ee565b60005462010000900460ff166100e0565b61021361020e3660046130a4565b611aa2565b005b6000806102258360000151611b29565b90506102348360200151611b29565b61ffff168161ffff1614801561025d57506102528360400151611b29565b61ffff168161ffff16145b6102fa5760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b92915050565b60008061030c83611bc6565b9050600061031982611c6b565b905061032481611c7a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1663010000009215158302179081905560ff91900416949350505050565b60006103b160405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6103d560405180606001604052806000815260200160008152602001600081525090565b6104076040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6104476040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610452848888611aa2565b600061045d89611bc6565b9050600061047c6104778388600001518960200151611d0b565b611dd9565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000060ff841602179055604087015160608801519192506104c791849190611de9565b8552855160608701516104db918491611dfe565b8560200181815250506104f78287604001518860200151611e14565b6040860152600061050786610215565b90508160ff168161ffff161461055f5760405162461bcd60e51b815260206004820152601760248201527f6d7578546573743a2063617374203136206661696c656400000000000000000060448201526064016102f1565b6105728388608001518960a00151611e2a565b8552865160a0880151610586918591611e3f565b8560200181815250506105a28388608001518960200151611e55565b8560400181815250506105be8388604001518960a00151611e6b565b8560600181815250506105da8388608001518960600151611e81565b608086015260006105ea86611975565b90508063ffffffff168360ff16146106445760405162461bcd60e51b815260206004820152601760248201527f6d7578546573743a2063617374203332206661696c656400000000000000000060448201526064016102f1565b610657848960c001518a60e00151611e97565b8552875160e089015161066b918691611eac565b856020018181525050610687848960c001518a60200151611ec2565b8560400181815250506106a38489604001518a60e00151611ed8565b8560600181815250506106bf848960c001518a60600151611eee565b8560800181815250506106db8489608001518a60e00151611f04565b8560a00181815250506106f7848960c001518a60a00151611f1a565b60c0860152600061070786610a65565b90508067ffffffffffffffff168460ff16146107655760405162461bcd60e51b815260206004820152601760248201527f6d7578546573743a2063617374203634206661696c656400000000000000000060448201526064016102f1565b610777610477868e8c60200151611f30565b60ff168460ff161480156107a15750610798610477868b600001518e611fb9565b60ff168460ff16145b6108135760405162461bcd60e51b815260206004820152602760248201527f6d7578546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c65640000000000000000000000000000000000000000000000000060648201526084016102f1565b61082d610828868e60ff168c60600151612043565b611b29565b61ffff168460ff1614801561085c5750610852610828868b604001518e60ff166120ce565b61ffff168460ff16145b6108ce5760405162461bcd60e51b815260206004820152602860248201527f6d7578546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b6108e86108e3868e60ff168c60a00151612158565b6121e5565b63ffffffff168460ff1614801561091b575061090f6108e3868b608001518e60ff166121f5565b63ffffffff168460ff16145b61098d5760405162461bcd60e51b815260206004820152602860248201527f6d7578546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b6109a76109a2868e60ff168c60e00151612282565b612313565b67ffffffffffffffff168460ff161480156109e257506109d26109a2868b60c001518e60ff16612323565b67ffffffffffffffff168460ff16145b610a545760405162461bcd60e51b815260206004820152602860248201527f6d7578546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b50919b9a5050505050505050505050565b600080610a758360000151612313565b9050610a848360200151612313565b67ffffffffffffffff168167ffffffffffffffff16148015610ac55750610aae8360400151612313565b67ffffffffffffffff168167ffffffffffffffff16145b8015610af05750610ad98360800151612313565b67ffffffffffffffff168167ffffffffffffffff16145b8015610b1b5750610b048360600151612313565b67ffffffffffffffff168167ffffffffffffffff16145b8015610b465750610b2f8360c00151612313565b67ffffffffffffffff168167ffffffffffffffff16145b801561025d5750610b5a8360a00151612313565b67ffffffffffffffff168167ffffffffffffffff16146102fa5760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a4016102f1565b6000610c5260405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610c7660405180606001604052806000815260200160008152602001600081525090565b610ca86040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b610ce86040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610cf3848888611aa2565b6000610d0a610477866000015187602001516123b4565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010060ff84160217905560408601516060870151919250610d519161244e565b845284516060860151610d649190612463565b846020018181525050610d7f85604001518660200151612479565b60408501526000610d8f85610215565b90508160ff168161ffff1614610de75760405162461bcd60e51b815260206004820152601760248201527f72656d546573743a2063617374203136206661696c656400000000000000000060448201526064016102f1565b610df986608001518760a0015161248f565b8452855160a0870151610e0c91906124a4565b846020018181525050610e27866080015187602001516124ba565b846040018181525050610e4286604001518760a001516124d0565b846060018181525050610e5d866080015187606001516124e6565b60808501526000610e6d85611975565b90508063ffffffff168360ff1614610ec75760405162461bcd60e51b815260206004820152601760248201527f72656d546573743a2063617374203332206661696c656400000000000000000060448201526064016102f1565b610ed98760c001518860e001516124fc565b8452865160e0880151610eec9190612511565b846020018181525050610f078760c001518860200151612527565b846040018181525050610f2287604001518860e0015161253d565b846060018181525050610f3d8760c001518860600151612553565b846080018181525050610f5887608001518860e00151612569565b8460a0018181525050610f738760c001518860a0015161257f565b60c08501526000610f8385610a65565b90508067ffffffffffffffff168460ff1614610fe15760405162461bcd60e51b815260206004820152601760248201527f72656d546573743a2063617374203634206661696c656400000000000000000060448201526064016102f1565b610ff26104778c8a60200151612595565b60ff168460ff1614801561101b575061101261047789600001518c612617565b60ff168460ff16145b61108d5760405162461bcd60e51b815260206004820152602760248201527f72656d546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c65640000000000000000000000000000000000000000000000000060648201526084016102f1565b6110a16108288c60ff168a6060015161269a565b61ffff168460ff161480156110cf57506110c561082889604001518c60ff1661271e565b61ffff168460ff16145b6111415760405162461bcd60e51b815260206004820152602860248201527f72656d546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b6111556108e38c60ff168a60a001516127a1565b63ffffffff168460ff16148015611187575061117b6108e389608001518c60ff16612827565b63ffffffff168460ff16145b6111f95760405162461bcd60e51b815260206004820152602860248201527f72656d546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b61120d6109a28c60ff168a60e001516128ad565b67ffffffffffffffff168460ff1614801561124757506112376109a28960c001518c60ff16612937565b67ffffffffffffffff168460ff16145b6112b95760405162461bcd60e51b815260206004820152602860248201527f72656d546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b50919998505050505050505050565b600061131260405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61133660405180606001604052806000815260200160008152602001600081525090565b6113686040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6113a86040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6113b3848888611aa2565b60006113ca610477866000015187602001516129c1565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556040860151606087015191925061140d916129d6565b84528451606086015161142091906129eb565b84602001818152505061143b85604001518660200151612a01565b6040850152600061144b85610215565b90508160ff168161ffff16146114a35760405162461bcd60e51b815260206004820152601760248201527f646976546573743a2063617374203136206661696c656400000000000000000060448201526064016102f1565b6114b586608001518760a00151612a17565b8452855160a08701516114c89190612a2c565b8460200181815250506114e386608001518760200151612a42565b8460400181815250506114fe86604001518760a00151612a58565b84606001818152505061151986608001518760600151612a6e565b6080850152600061152985611975565b90508063ffffffff168360ff16146115835760405162461bcd60e51b815260206004820152601760248201527f646976546573743a2063617374203332206661696c656400000000000000000060448201526064016102f1565b6115958760c001518860e00151612a84565b8452865160e08801516115a89190612a99565b8460200181815250506115c38760c001518860200151612aaf565b8460400181815250506115de87604001518860e00151612ac5565b8460600181815250506115f98760c001518860600151612adb565b84608001818152505061161487608001518860e00151612af1565b8460a001818152505061162f8760c001518860a00151612b07565b60c0850152600061163f85610a65565b90508067ffffffffffffffff168460ff161461169d5760405162461bcd60e51b815260206004820152601760248201527f646976546573743a2063617374203634206661696c656400000000000000000060448201526064016102f1565b6116ae6104778c8a60200151612b1d565b60ff168460ff161480156116d757506116ce61047789600001518c612b32565b60ff168460ff16145b6117495760405162461bcd60e51b815260206004820152602760248201527f646976546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c65640000000000000000000000000000000000000000000000000060648201526084016102f1565b61175d6108288c60ff168a60600151612b48565b61ffff168460ff1614801561178b575061178161082889604001518c60ff16612b5e565b61ffff168460ff16145b6117fd5760405162461bcd60e51b815260206004820152602860248201527f646976546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b6118116108e38c60ff168a60a00151612b73565b63ffffffff168460ff1614801561184357506118376108e389608001518c60ff16612b89565b63ffffffff168460ff16145b6118b55760405162461bcd60e51b815260206004820152602860248201527f646976546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b6118c96109a28c60ff168a60e00151612b9f565b67ffffffffffffffff168460ff1614801561190357506118f36109a28960c001518c60ff16612bb5565b67ffffffffffffffff168460ff16145b6112b95760405162461bcd60e51b815260206004820152602860248201527f646976546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b60008061198583600001516121e5565b905061199483602001516121e5565b63ffffffff168163ffffffff161480156119c557506119b683604001516121e5565b63ffffffff168163ffffffff16145b80156119e857506119d983608001516121e5565b63ffffffff168163ffffffff16145b801561025d57506119fc83606001516121e5565b63ffffffff168163ffffffff16146102fa5760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a4016102f1565b611aab82612bcb565b8352611ab681612bcb565b6020840152611ac760ff8316612c34565b6040840152611ad860ff8216612c34565b6060840152611ae960ff8316612c9e565b6080840152611afa60ff8216612c9e565b60a0840152611b0b60ff8316612d0a565b60c0840152611b1c60ff8216612d0a565b60e0909301929092525050565b60006064630cfed56160025b60f81b846040518363ffffffff1660e01b8152600401611b839291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af1158015611ba2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102fa919061316d565b60008082611bd5576000611bd8565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b60906044015b6020604051808303816000875af1158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c64919061316d565b9392505050565b60006064631d79e49a82611b35565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015611cde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d02919061316d565b15159392505050565b600060646320cc408d611d2060018085612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905260448101869052606481018590526084015b6020604051808303816000875af1158015611dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd1919061316d565b949350505050565b60006064630cfed5616001611b35565b600060646320cc408d611d2060028085612d7a565b600060646320cc408d611d206001600285612d7a565b600060646320cc408d611d206002600185612d7a565b600060646320cc408d611d2060038085612d7a565b600060646320cc408d611d206001600385612d7a565b600060646320cc408d611d206003600185612d7a565b600060646320cc408d611d206002600385612d7a565b600060646320cc408d611d206003600285612d7a565b600060646320cc408d611d2060048085612d7a565b600060646320cc408d611d206001600485612d7a565b600060646320cc408d611d206004600185612d7a565b600060646320cc408d611d206002600485612d7a565b600060646320cc408d611d206004600285612d7a565b600060646320cc408d611d206003600485612d7a565b600060646320cc408d611d206004600385612d7a565b600060646320cc408d611f4560018080612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905260ff8616604482015260648101859052608401611d8e565b600060646320cc408d611fcf6001806002612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff00000000000000000000000000000000000000000000000000000000009091166004820152602481018790526044810186905260ff85166064820152608401611d8e565b600060646320cc408d6120596002806001612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905261ffff8616604482015260648101859052608401611d8e565b600060646320cc408d6120e360028080612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff00000000000000000000000000000000000000000000000000000000009091166004820152602481018790526044810186905261ffff85166064820152608401611d8e565b600060646320cc408d61216e6003806001612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905263ffffffff8616604482015260648101859052608401611d8e565b60006064630cfed5616003611b35565b600060646320cc408d61220b6003806002612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff00000000000000000000000000000000000000000000000000000000009091166004820152602481018790526044810186905263ffffffff85166064820152608401611d8e565b600060646320cc408d6122986004806001612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905267ffffffffffffffff8616604482015260648101859052608401611d8e565b60006064630cfed5616004611b35565b600060646320cc408d6123396004806002612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff00000000000000000000000000000000000000000000000000000000009091166004820152602481018790526044810186905267ffffffffffffffff85166064820152608401611d8e565b600060646386e3b7b96123c960018085612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064016020604051808303816000875af1158015611c40573d6000803e3d6000fd5b600060646386e3b7b96123c960028085612d7a565b600060646386e3b7b96123c96001600285612d7a565b600060646386e3b7b96123c96002600185612d7a565b600060646386e3b7b96123c960038085612d7a565b600060646386e3b7b96123c96001600385612d7a565b600060646386e3b7b96123c96003600185612d7a565b600060646386e3b7b96123c96002600385612d7a565b600060646386e3b7b96123c96003600285612d7a565b600060646386e3b7b96123c960048085612d7a565b600060646386e3b7b96123c96001600485612d7a565b600060646386e3b7b96123c96004600185612d7a565b600060646386e3b7b96123c96002600485612d7a565b600060646386e3b7b96123c96004600285612d7a565b600060646386e3b7b96123c96003600485612d7a565b600060646386e3b7b96123c96004600385612d7a565b600060646386e3b7b96125aa60018080612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff8616602482015260448101859052606401611c21565b600060646386e3b7b961262d6001806002612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff85166044820152606401611c21565b600060646386e3b7b96126b06002806001612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff8616602482015260448101859052606401611c21565b600060646386e3b7b961273360028080612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff85166044820152606401611c21565b600060646386e3b7b96127b76003806001612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff8616602482015260448101859052606401611c21565b600060646386e3b7b961283d6003806002612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff85166044820152606401611c21565b600060646386e3b7b96128c36004806001612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff8616602482015260448101859052606401611c21565b600060646386e3b7b961294d6004806002612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff85166044820152606401611c21565b60006064634e9ba4b56123c960018085612d7a565b60006064634e9ba4b56123c960028085612d7a565b60006064634e9ba4b56123c96001600285612d7a565b60006064634e9ba4b56123c96002600185612d7a565b60006064634e9ba4b56123c960038085612d7a565b60006064634e9ba4b56123c96001600385612d7a565b60006064634e9ba4b56123c96003600185612d7a565b60006064634e9ba4b56123c96002600385612d7a565b60006064634e9ba4b56123c96003600285612d7a565b60006064634e9ba4b56123c960048085612d7a565b60006064634e9ba4b56123c96001600485612d7a565b60006064634e9ba4b56123c96004600185612d7a565b60006064634e9ba4b56123c96002600485612d7a565b60006064634e9ba4b56123c96004600285612d7a565b60006064634e9ba4b56123c96003600485612d7a565b60006064634e9ba4b56123c96004600385612d7a565b60006064634e9ba4b56125aa60018080612d7a565b60006064634e9ba4b561262d6001806002612d7a565b60006064634e9ba4b56126b06002806001612d7a565b60006064634e9ba4b561273360028080612d7a565b60006064634e9ba4b56127b76003806001612d7a565b60006064634e9ba4b561283d6003806002612d7a565b60006064634e9ba4b56128c36004806001612d7a565b60006064634e9ba4b561294d6004806002612d7a565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b6090604401611b83565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401611b83565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401611b83565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401611b83565b6000816002811115612d8e57612d8e61313e565b60ff166008846004811115612da557612da561313e565b61ffff16901b61ffff166010866004811115612dc357612dc361313e565b62ffffff16901b171760e81b949350505050565b604051610100810167ffffffffffffffff81118282101715612e22577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b600060608284031215612e3a57600080fd5b6040516060810181811067ffffffffffffffff82111715612e84577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b80358015158114612ebb57600080fd5b919050565b600060208284031215612ed257600080fd5b611c6482612eab565b803560ff81168114612ebb57600080fd5b600080600060608486031215612f0157600080fd5b612f0a84612eab565b9250612f1860208501612edb565b9150612f2660408501612edb565b90509250925092565b600060e08284031215612f4157600080fd5b60405160e0810181811067ffffffffffffffff82111715612f8b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b60008060408385031215612fed57600080fd5b612ff683612edb565b915061300460208401612edb565b90509250929050565b600060a0828403121561301f57600080fd5b60405160a0810181811067ffffffffffffffff82111715613069577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60008060008385036101408112156130bb57600080fd5b610100808212156130cb57600080fd5b6130d3612dd7565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e083015281945061312d818701612edb565b93505050612f266101208501612edb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561317f57600080fd5b505191905056fea2646970667358221220a0a0e3233a4b2b0afb7623ddac8749ad01259aa9078c9406ef84f6630693e21264736f6c63430008130033";
372
+ "0x608060405234801561001057600080fd5b506131bc806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806392bba35611610081578063acb381691161005b578063acb38169146101c7578063d74e55e7146101ef578063ebb571fd1461020057600080fd5b806392bba3561461018f578063a103e4c0146101a1578063a609476a146101b457600080fd5b8063690ec3d9116100b2578063690ec3d91461012d5780636c74e7141461015057806380f937bc1461016357600080fd5b80632684f863146100d95780632e544aa0146100f75780632e5dda1e1461011d575b600080fd5b60005460ff165b60405160ff90911681526020015b60405180910390f35b61010a610105366004612e28565b610215565b60405161ffff90911681526020016100ee565b600054610100900460ff166100e0565b61014061013b366004612ec0565b610300565b60405190151581526020016100ee565b6100e061015e366004612eec565b610367565b610176610171366004612f2f565b610a65565b60405167ffffffffffffffff90911681526020016100ee565b6000546301000000900460ff16610140565b6100e06101af366004612fda565b610c08565b6100e06101c2366004612fda565b6112c8565b6101da6101d536600461300d565b611975565b60405163ffffffff90911681526020016100ee565b60005462010000900460ff166100e0565b61021361020e3660046130a4565b611aa2565b005b6000806102258360000151611b29565b90506102348360200151611b29565b61ffff168161ffff1614801561025d57506102528360400151611b29565b61ffff168161ffff16145b6102fa5760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b92915050565b60008061030c83611bc6565b9050600061031982611c6b565b905061032481611c7a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1663010000009215158302179081905560ff91900416949350505050565b60006103b160405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6103d560405180606001604052806000815260200160008152602001600081525090565b6104076040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6104476040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610452848888611aa2565b600061045d89611bc6565b9050600061047c6104778388600001518960200151611d0b565b611dd9565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000060ff841602179055604087015160608801519192506104c791849190611de9565b8552855160608701516104db918491611dfe565b8560200181815250506104f78287604001518860200151611e14565b6040860152600061050786610215565b90508160ff168161ffff161461055f5760405162461bcd60e51b815260206004820152601760248201527f6d7578546573743a2063617374203136206661696c656400000000000000000060448201526064016102f1565b6105728388608001518960a00151611e2a565b8552865160a0880151610586918591611e3f565b8560200181815250506105a28388608001518960200151611e55565b8560400181815250506105be8388604001518960a00151611e6b565b8560600181815250506105da8388608001518960600151611e81565b608086015260006105ea86611975565b90508063ffffffff168360ff16146106445760405162461bcd60e51b815260206004820152601760248201527f6d7578546573743a2063617374203332206661696c656400000000000000000060448201526064016102f1565b610657848960c001518a60e00151611e97565b8552875160e089015161066b918691611eac565b856020018181525050610687848960c001518a60200151611ec2565b8560400181815250506106a38489604001518a60e00151611ed8565b8560600181815250506106bf848960c001518a60600151611eee565b8560800181815250506106db8489608001518a60e00151611f04565b8560a00181815250506106f7848960c001518a60a00151611f1a565b60c0860152600061070786610a65565b90508067ffffffffffffffff168460ff16146107655760405162461bcd60e51b815260206004820152601760248201527f6d7578546573743a2063617374203634206661696c656400000000000000000060448201526064016102f1565b610777610477868e8c60200151611f30565b60ff168460ff161480156107a15750610798610477868b600001518e611fb9565b60ff168460ff16145b6108135760405162461bcd60e51b815260206004820152602760248201527f6d7578546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c65640000000000000000000000000000000000000000000000000060648201526084016102f1565b61082d610828868e60ff168c60600151612043565b611b29565b61ffff168460ff1614801561085c5750610852610828868b604001518e60ff166120ce565b61ffff168460ff16145b6108ce5760405162461bcd60e51b815260206004820152602860248201527f6d7578546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b6108e86108e3868e60ff168c60a00151612158565b6121e5565b63ffffffff168460ff1614801561091b575061090f6108e3868b608001518e60ff166121f5565b63ffffffff168460ff16145b61098d5760405162461bcd60e51b815260206004820152602860248201527f6d7578546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b6109a76109a2868e60ff168c60e00151612282565b612313565b67ffffffffffffffff168460ff161480156109e257506109d26109a2868b60c001518e60ff16612323565b67ffffffffffffffff168460ff16145b610a545760405162461bcd60e51b815260206004820152602860248201527f6d7578546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b50919b9a5050505050505050505050565b600080610a758360000151612313565b9050610a848360200151612313565b67ffffffffffffffff168167ffffffffffffffff16148015610ac55750610aae8360400151612313565b67ffffffffffffffff168167ffffffffffffffff16145b8015610af05750610ad98360800151612313565b67ffffffffffffffff168167ffffffffffffffff16145b8015610b1b5750610b048360600151612313565b67ffffffffffffffff168167ffffffffffffffff16145b8015610b465750610b2f8360c00151612313565b67ffffffffffffffff168167ffffffffffffffff16145b801561025d5750610b5a8360a00151612313565b67ffffffffffffffff168167ffffffffffffffff16146102fa5760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a4016102f1565b6000610c5260405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610c7660405180606001604052806000815260200160008152602001600081525090565b610ca86040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b610ce86040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610cf3848888611aa2565b6000610d0a610477866000015187602001516123b4565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010060ff84160217905560408601516060870151919250610d519161244e565b845284516060860151610d649190612463565b846020018181525050610d7f85604001518660200151612479565b60408501526000610d8f85610215565b90508160ff168161ffff1614610de75760405162461bcd60e51b815260206004820152601760248201527f72656d546573743a2063617374203136206661696c656400000000000000000060448201526064016102f1565b610df986608001518760a0015161248f565b8452855160a0870151610e0c91906124a4565b846020018181525050610e27866080015187602001516124ba565b846040018181525050610e4286604001518760a001516124d0565b846060018181525050610e5d866080015187606001516124e6565b60808501526000610e6d85611975565b90508063ffffffff168360ff1614610ec75760405162461bcd60e51b815260206004820152601760248201527f72656d546573743a2063617374203332206661696c656400000000000000000060448201526064016102f1565b610ed98760c001518860e001516124fc565b8452865160e0880151610eec9190612511565b846020018181525050610f078760c001518860200151612527565b846040018181525050610f2287604001518860e0015161253d565b846060018181525050610f3d8760c001518860600151612553565b846080018181525050610f5887608001518860e00151612569565b8460a0018181525050610f738760c001518860a0015161257f565b60c08501526000610f8385610a65565b90508067ffffffffffffffff168460ff1614610fe15760405162461bcd60e51b815260206004820152601760248201527f72656d546573743a2063617374203634206661696c656400000000000000000060448201526064016102f1565b610ff26104778c8a60200151612595565b60ff168460ff1614801561101b575061101261047789600001518c612617565b60ff168460ff16145b61108d5760405162461bcd60e51b815260206004820152602760248201527f72656d546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c65640000000000000000000000000000000000000000000000000060648201526084016102f1565b6110a16108288c60ff168a6060015161269a565b61ffff168460ff161480156110cf57506110c561082889604001518c60ff1661271e565b61ffff168460ff16145b6111415760405162461bcd60e51b815260206004820152602860248201527f72656d546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b6111556108e38c60ff168a60a001516127a1565b63ffffffff168460ff16148015611187575061117b6108e389608001518c60ff16612827565b63ffffffff168460ff16145b6111f95760405162461bcd60e51b815260206004820152602860248201527f72656d546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b61120d6109a28c60ff168a60e001516128ad565b67ffffffffffffffff168460ff1614801561124757506112376109a28960c001518c60ff16612937565b67ffffffffffffffff168460ff16145b6112b95760405162461bcd60e51b815260206004820152602860248201527f72656d546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b50919998505050505050505050565b600061131260405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61133660405180606001604052806000815260200160008152602001600081525090565b6113686040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6113a86040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6113b3848888611aa2565b60006113ca610477866000015187602001516129c1565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556040860151606087015191925061140d916129d6565b84528451606086015161142091906129eb565b84602001818152505061143b85604001518660200151612a01565b6040850152600061144b85610215565b90508160ff168161ffff16146114a35760405162461bcd60e51b815260206004820152601760248201527f646976546573743a2063617374203136206661696c656400000000000000000060448201526064016102f1565b6114b586608001518760a00151612a17565b8452855160a08701516114c89190612a2c565b8460200181815250506114e386608001518760200151612a42565b8460400181815250506114fe86604001518760a00151612a58565b84606001818152505061151986608001518760600151612a6e565b6080850152600061152985611975565b90508063ffffffff168360ff16146115835760405162461bcd60e51b815260206004820152601760248201527f646976546573743a2063617374203332206661696c656400000000000000000060448201526064016102f1565b6115958760c001518860e00151612a84565b8452865160e08801516115a89190612a99565b8460200181815250506115c38760c001518860200151612aaf565b8460400181815250506115de87604001518860e00151612ac5565b8460600181815250506115f98760c001518860600151612adb565b84608001818152505061161487608001518860e00151612af1565b8460a001818152505061162f8760c001518860a00151612b07565b60c0850152600061163f85610a65565b90508067ffffffffffffffff168460ff161461169d5760405162461bcd60e51b815260206004820152601760248201527f646976546573743a2063617374203634206661696c656400000000000000000060448201526064016102f1565b6116ae6104778c8a60200151612b1d565b60ff168460ff161480156116d757506116ce61047789600001518c612b32565b60ff168460ff16145b6117495760405162461bcd60e51b815260206004820152602760248201527f646976546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c65640000000000000000000000000000000000000000000000000060648201526084016102f1565b61175d6108288c60ff168a60600151612b48565b61ffff168460ff1614801561178b575061178161082889604001518c60ff16612b5e565b61ffff168460ff16145b6117fd5760405162461bcd60e51b815260206004820152602860248201527f646976546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b6118116108e38c60ff168a60a00151612b73565b63ffffffff168460ff1614801561184357506118376108e389608001518c60ff16612b89565b63ffffffff168460ff16145b6118b55760405162461bcd60e51b815260206004820152602860248201527f646976546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b6118c96109a28c60ff168a60e00151612b9f565b67ffffffffffffffff168460ff1614801561190357506118f36109a28960c001518c60ff16612bb5565b67ffffffffffffffff168460ff16145b6112b95760405162461bcd60e51b815260206004820152602860248201527f646976546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c656400000000000000000000000000000000000000000000000060648201526084016102f1565b60008061198583600001516121e5565b905061199483602001516121e5565b63ffffffff168163ffffffff161480156119c557506119b683604001516121e5565b63ffffffff168163ffffffff16145b80156119e857506119d983608001516121e5565b63ffffffff168163ffffffff16145b801561025d57506119fc83606001516121e5565b63ffffffff168163ffffffff16146102fa5760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a4016102f1565b611aab82612bcb565b8352611ab681612bcb565b6020840152611ac760ff8316612c34565b6040840152611ad860ff8216612c34565b6060840152611ae960ff8316612c9e565b6080840152611afa60ff8216612c9e565b60a0840152611b0b60ff8316612d0a565b60c0840152611b1c60ff8216612d0a565b60e0909301929092525050565b60006064630cfed56160025b60f81b846040518363ffffffff1660e01b8152600401611b839291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af1158015611ba2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102fa919061316d565b60008082611bd5576000611bd8565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b60906044015b6020604051808303816000875af1158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c64919061316d565b9392505050565b60006064631d79e49a82611b35565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015611cde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d02919061316d565b15159392505050565b600060646320cc408d611d2060018085612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905260448101869052606481018590526084015b6020604051808303816000875af1158015611dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd1919061316d565b949350505050565b60006064630cfed5616001611b35565b600060646320cc408d611d2060028085612d7a565b600060646320cc408d611d206001600285612d7a565b600060646320cc408d611d206002600185612d7a565b600060646320cc408d611d2060038085612d7a565b600060646320cc408d611d206001600385612d7a565b600060646320cc408d611d206003600185612d7a565b600060646320cc408d611d206002600385612d7a565b600060646320cc408d611d206003600285612d7a565b600060646320cc408d611d2060048085612d7a565b600060646320cc408d611d206001600485612d7a565b600060646320cc408d611d206004600185612d7a565b600060646320cc408d611d206002600485612d7a565b600060646320cc408d611d206004600285612d7a565b600060646320cc408d611d206003600485612d7a565b600060646320cc408d611d206004600385612d7a565b600060646320cc408d611f4560018080612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905260ff8616604482015260648101859052608401611d8e565b600060646320cc408d611fcf6001806002612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff00000000000000000000000000000000000000000000000000000000009091166004820152602481018790526044810186905260ff85166064820152608401611d8e565b600060646320cc408d6120596002806001612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905261ffff8616604482015260648101859052608401611d8e565b600060646320cc408d6120e360028080612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff00000000000000000000000000000000000000000000000000000000009091166004820152602481018790526044810186905261ffff85166064820152608401611d8e565b600060646320cc408d61216e6003806001612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905263ffffffff8616604482015260648101859052608401611d8e565b60006064630cfed5616003611b35565b600060646320cc408d61220b6003806002612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff00000000000000000000000000000000000000000000000000000000009091166004820152602481018790526044810186905263ffffffff85166064820152608401611d8e565b600060646320cc408d6122986004806001612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905267ffffffffffffffff8616604482015260648101859052608401611d8e565b60006064630cfed5616004611b35565b600060646320cc408d6123396004806002612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff00000000000000000000000000000000000000000000000000000000009091166004820152602481018790526044810186905267ffffffffffffffff85166064820152608401611d8e565b600060646386e3b7b96123c960018085612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064016020604051808303816000875af1158015611c40573d6000803e3d6000fd5b600060646386e3b7b96123c960028085612d7a565b600060646386e3b7b96123c96001600285612d7a565b600060646386e3b7b96123c96002600185612d7a565b600060646386e3b7b96123c960038085612d7a565b600060646386e3b7b96123c96001600385612d7a565b600060646386e3b7b96123c96003600185612d7a565b600060646386e3b7b96123c96002600385612d7a565b600060646386e3b7b96123c96003600285612d7a565b600060646386e3b7b96123c960048085612d7a565b600060646386e3b7b96123c96001600485612d7a565b600060646386e3b7b96123c96004600185612d7a565b600060646386e3b7b96123c96002600485612d7a565b600060646386e3b7b96123c96004600285612d7a565b600060646386e3b7b96123c96003600485612d7a565b600060646386e3b7b96123c96004600385612d7a565b600060646386e3b7b96125aa60018080612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff8616602482015260448101859052606401611c21565b600060646386e3b7b961262d6001806002612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff85166044820152606401611c21565b600060646386e3b7b96126b06002806001612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff8616602482015260448101859052606401611c21565b600060646386e3b7b961273360028080612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff85166044820152606401611c21565b600060646386e3b7b96127b76003806001612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff8616602482015260448101859052606401611c21565b600060646386e3b7b961283d6003806002612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff85166044820152606401611c21565b600060646386e3b7b96128c36004806001612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff8616602482015260448101859052606401611c21565b600060646386e3b7b961294d6004806002612d7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff85166044820152606401611c21565b60006064634e9ba4b56123c960018085612d7a565b60006064634e9ba4b56123c960028085612d7a565b60006064634e9ba4b56123c96001600285612d7a565b60006064634e9ba4b56123c96002600185612d7a565b60006064634e9ba4b56123c960038085612d7a565b60006064634e9ba4b56123c96001600385612d7a565b60006064634e9ba4b56123c96003600185612d7a565b60006064634e9ba4b56123c96002600385612d7a565b60006064634e9ba4b56123c96003600285612d7a565b60006064634e9ba4b56123c960048085612d7a565b60006064634e9ba4b56123c96001600485612d7a565b60006064634e9ba4b56123c96004600185612d7a565b60006064634e9ba4b56123c96002600485612d7a565b60006064634e9ba4b56123c96004600285612d7a565b60006064634e9ba4b56123c96003600485612d7a565b60006064634e9ba4b56123c96004600385612d7a565b60006064634e9ba4b56125aa60018080612d7a565b60006064634e9ba4b561262d6001806002612d7a565b60006064634e9ba4b56126b06002806001612d7a565b60006064634e9ba4b561273360028080612d7a565b60006064634e9ba4b56127b76003806001612d7a565b60006064634e9ba4b561283d6003806002612d7a565b60006064634e9ba4b56128c36004806001612d7a565b60006064634e9ba4b561294d6004806002612d7a565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b6090604401611b83565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401611b83565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401611b83565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401611b83565b6000816002811115612d8e57612d8e61313e565b60ff166008846004811115612da557612da561313e565b61ffff16901b61ffff166010866004811115612dc357612dc361313e565b62ffffff16901b171760e81b949350505050565b604051610100810167ffffffffffffffff81118282101715612e22577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b600060608284031215612e3a57600080fd5b6040516060810181811067ffffffffffffffff82111715612e84577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b80358015158114612ebb57600080fd5b919050565b600060208284031215612ed257600080fd5b611c6482612eab565b803560ff81168114612ebb57600080fd5b600080600060608486031215612f0157600080fd5b612f0a84612eab565b9250612f1860208501612edb565b9150612f2660408501612edb565b90509250925092565b600060e08284031215612f4157600080fd5b60405160e0810181811067ffffffffffffffff82111715612f8b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b60008060408385031215612fed57600080fd5b612ff683612edb565b915061300460208401612edb565b90509250929050565b600060a0828403121561301f57600080fd5b60405160a0810181811067ffffffffffffffff82111715613069577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60008060008385036101408112156130bb57600080fd5b610100808212156130cb57600080fd5b6130d3612dd7565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e083015281945061312d818701612edb565b93505050612f266101208501612edb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561317f57600080fd5b505191905056fea2646970667358221220b59c52fe3465163cfee609950c8d54f3625476862a5e17375290bc08b492724464736f6c63430008130033";
373
373
 
374
374
  type MiscellaneousTestsContractConstructorParams =
375
375
  | [signer?: Signer]
@@ -230,7 +230,7 @@ const _abi = [
230
230
  ] as const;
231
231
 
232
232
  const _bytecode =
233
- "0x608060405234801561001057600080fd5b50611997806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80635197c7aa11610076578063b30fc30d1161005b578063b30fc30d14610172578063fbe5fe1c14610185578063fbffef771461019857600080fd5b80635197c7aa1461015257806368af56131461015d57600080fd5b80633d36856a116100a75780633d36856a146100fa5780633e99ee8c146101135780634e7b55c31461014a57600080fd5b80630844066e146100c357806320ee9bfb146100d9575b600080fd5b6003546040519081526020015b60405180910390f35b6100ec6100e73660046112ff565b6101ab565b6040516100d09291906113d9565b60095460ff165b60405160ff90911681526020016100d0565b600454600554600654600754600854604080519586526020860194909452928401919091526060830152608082015260a0016100d0565b6100ec610302565b60025460ff16610101565b61017061016b366004611441565b610429565b005b610170610180366004611488565b6104e9565b6101016101933660046114e5565b6106f8565b6101706101a6366004611441565b6107b0565b6060806101ba86868686610863565b60008060016101c98482611637565b506101d690508382611637565b505050600060018180546101e990611595565b80601f016020809104026020016040519081016040528092919081815260200182805461021590611595565b80156102625780601f1061023757610100808354040283529160200191610262565b820191906000526020600020905b81548152906001019060200180831161024557829003601f168201915b5050505050915080805461027590611595565b80601f01602080910402602001604051908101604052809291908181526020018280546102a190611595565b80156102ee5780601f106102c3576101008083540402835291602001916102ee565b820191906000526020600020905b8154815290600101906020018083116102d157829003601f168201915b505050505090509150915094509492505050565b6060806000600181805461031590611595565b80601f016020809104026020016040519081016040528092919081815260200182805461034190611595565b801561038e5780601f106103635761010080835404028352916020019161038e565b820191906000526020600020905b81548152906001019060200180831161037157829003601f168201915b505050505091508080546103a190611595565b80601f01602080910402602001604051908101604052809291908181526020018280546103cd90611595565b801561041a5780601f106103ef5761010080835404028352916020019161041a565b820191906000526020600020905b8154815290600101906020018083116103fd57829003601f168201915b50505050509050915091509091565b600061043a60008460ff1611610bda565b9050600061044784610c7f565b905060006104578560ff16610d2d565b905060006104678660ff16610d97565b905060006104778760ff16610e03565b905060006104858688610e73565b905060006104938689610ea7565b905060006104a1868a610ed0565b905060006104af868b610ef9565b905060006104bd868c610f22565b602095860151600455938501516005555090830151600655820151600755015160085550505050505050565b60ff8416151560006104fa82610bda565b9050600061050787610c7f565b9050600061051487610d2d565b9050600061052187610d97565b905060006105348763ffffffff16610e03565b9050600061054186610f4b565b9050600061055661055183610fa4565b610fb3565b9050600061056387611044565b9050600061057861057383611054565b611064565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8316179055905060006105b288611074565b905060006105c76105c283611084565b611094565b905060006105d4896110a4565b905060006105e96105e4836110b4565b6110c4565b905060006105f68a6110d4565b9050600061060b610606836110e4565b6110f4565b90508f151589151514801561062657508461ffff168760ff16145b801561063a57508263ffffffff168760ff16145b801561065257508067ffffffffffffffff168760ff16145b6106e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4661696c656420746f206f6666626f61726420616e64206f6e626f617264206160448201527f6c6c2076616c7565730000000000000000000000000000000000000000000000606482015260840160405180910390fd5b5050505050505050505050505050505050505050565b6000806107056005610c7f565b90506000610714826005611104565b905061072288888888610863565b60008060016107318482611637565b5061073e90508382611637565b50505061074b81856111a1565b600355600061075982611044565b9050600061076682611054565b905061077181611064565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff9290921691821790559a9950505050505050505050565b60006107c160008460ff1611610bda565b905060006107ce84610c7f565b905060006107de8560ff16610d2d565b905060006107ee8660ff16610d97565b905060006107fe8760ff16610e03565b9050600061080c868861121a565b9050600061081a86896111a1565b90506000610828868a611229565b90506000610836868b611239565b90506000610844868c611249565b6004959095555060059290925560065560075560085550505050505050565b60608060006108728685611780565b67ffffffffffffffff81111561088a5761088a611566565b6040519080825280601f01601f1916602001820160405280156108b4576020820181803683370190505b50905060005b84811015610931578585828181106108d4576108d4611793565b9050013560f81c60f81b8282815181106108f0576108f0611793565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080610929816117c2565b9150506108ba565b5060005b868110156109d35787878281811061094f5761094f611793565b909101357fff00000000000000000000000000000000000000000000000000000000000000169050826109828388611780565b8151811061099257610992611793565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806109cb816117c2565b915050610935565b506040517fa85f0ca200000000000000000000000000000000000000000000000000000000815260009060649063a85f0ca290610a149085906004016117fa565b6000604051808303816000875af1158015610a33573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a79919081019061180d565b604080516101008082526101208201909252919250600091906020820181803683375050604080516101008082526101208201909252929350600092915060208201818036833701905050905060005b8251811015610b4257838181518110610ae457610ae4611793565b602001015160f81c60f81b838281518110610b0157610b01611793565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080610b3a816117c2565b915050610ac9565b5060005b8151811015610bca5783610b5c61010083611780565b81518110610b6c57610b6c611793565b602001015160f81c60f81b828281518110610b8957610b89611793565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080610bc2816117c2565b915050610b46565b5090999098509650505050505050565b60008082610be9576000610bec565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b60906044015b6020604051808303816000875af1158015610c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c789190611907565b9392505050565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b60906044015b6020604051808303816000875af1158015610d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d279190611907565b92915050565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401610ce4565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401610ce4565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401610ce4565b6040805180820190915260008082526020820152610e9083610f4b565b8152610e9c838361121a565b602082015292915050565b6040805180820190915260008082526020820152610ec483611044565b8152610e9c83836111a1565b6040805180820190915260008082526020820152610eed83611074565b8152610e9c8383611229565b6040805180820190915260008082526020820152610f16836110a4565b8152610e9c8383611239565b6040805180820190915260008082526020820152610f3f836110d4565b8152610e9c8383611249565b6000606463c50c9c02825b60f81b846040518363ffffffff1660e01b8152600401610ce49291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6000606463d2c135e582610f56565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015611017573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103b9190611907565b15159392505050565b6000606463c50c9c026001610f56565b6000606463d2c135e56001610f56565b60006064630cfed5616001610f56565b6000606463c50c9c026002610f56565b6000606463d2c135e56002610f56565b60006064630cfed5616002610f56565b6000606463c50c9c026003610f56565b6000606463d2c135e56003610f56565b60006064630cfed5616003610f56565b6000606463c50c9c026004610f56565b6000606463d2c135e56004610f56565b60006064630cfed5616004610f56565b60006064638c5d015061111a6001806002611259565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff851660448201526064016020604051808303816000875af1158015610c54573d6000803e3d6000fd5b60006064633c6f0e6860015b60f81b85856040516020016111ed919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401610c3593929190611920565b60006064633c6f0e68826111ad565b60006064633c6f0e6860026111ad565b60006064633c6f0e6860036111ad565b60006064633c6f0e6860046111ad565b600081600281111561126d5761126d6118d8565b60ff166008846004811115611284576112846118d8565b61ffff16901b61ffff1660108660048111156112a2576112a26118d8565b62ffffff16901b171760e81b949350505050565b60008083601f8401126112c857600080fd5b50813567ffffffffffffffff8111156112e057600080fd5b6020830191508360208285010111156112f857600080fd5b9250929050565b6000806000806040858703121561131557600080fd5b843567ffffffffffffffff8082111561132d57600080fd5b611339888389016112b6565b9096509450602087013591508082111561135257600080fd5b5061135f878288016112b6565b95989497509550505050565b60005b8381101561138657818101518382015260200161136e565b50506000910152565b600081518084526113a781602086016020860161136b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6040815260006113ec604083018561138f565b82810360208401526113fe818561138f565b95945050505050565b803560ff8116811461141857600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461141857600080fd5b6000806040838503121561145457600080fd5b61145d83611407565b915061146b6020840161141d565b90509250929050565b803563ffffffff8116811461141857600080fd5b6000806000806080858703121561149e57600080fd5b6114a785611407565b9350602085013561ffff811681146114be57600080fd5b92506114cc60408601611474565b91506114da60608601611474565b905092959194509250565b6000806000806000606086880312156114fd57600080fd5b853567ffffffffffffffff8082111561151557600080fd5b61152189838a016112b6565b9097509550602088013591508082111561153a57600080fd5b50611547888289016112b6565b909450925061155a90506040870161141d565b90509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c908216806115a957607f821691505b6020821081036115e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561163257600081815260208120601f850160051c8101602086101561160f5750805b601f850160051c820191505b8181101561162e5782815560010161161b565b5050505b505050565b815167ffffffffffffffff81111561165157611651611566565b6116658161165f8454611595565b846115e8565b602080601f8311600181146116b857600084156116825750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561162e565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015611705578886015182559484019460019091019084016116e6565b508582101561174157878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610d2757610d27611751565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036117f3576117f3611751565b5060010190565b602081526000610c78602083018461138f565b60006020828403121561181f57600080fd5b815167ffffffffffffffff8082111561183757600080fd5b818401915084601f83011261184b57600080fd5b81518181111561185d5761185d611566565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156118a3576118a3611566565b816040528281528760208487010111156118bc57600080fd5b6118cd83602083016020880161136b565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561191957600080fd5b5051919050565b7fff00000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006113fe606083018461138f56fea2646970667358221220a45dc876e6e2f269448b4eb68c280ed052cdc2911dcbaafba302add1bceb067264736f6c63430008130033";
233
+ "0x608060405234801561001057600080fd5b50611997806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80635197c7aa11610076578063b30fc30d1161005b578063b30fc30d14610172578063fbe5fe1c14610185578063fbffef771461019857600080fd5b80635197c7aa1461015257806368af56131461015d57600080fd5b80633d36856a116100a75780633d36856a146100fa5780633e99ee8c146101135780634e7b55c31461014a57600080fd5b80630844066e146100c357806320ee9bfb146100d9575b600080fd5b6003546040519081526020015b60405180910390f35b6100ec6100e73660046112ff565b6101ab565b6040516100d09291906113d9565b60095460ff165b60405160ff90911681526020016100d0565b600454600554600654600754600854604080519586526020860194909452928401919091526060830152608082015260a0016100d0565b6100ec610302565b60025460ff16610101565b61017061016b366004611441565b610429565b005b610170610180366004611488565b6104e9565b6101016101933660046114e5565b6106f8565b6101706101a6366004611441565b6107b0565b6060806101ba86868686610863565b60008060016101c98482611637565b506101d690508382611637565b505050600060018180546101e990611595565b80601f016020809104026020016040519081016040528092919081815260200182805461021590611595565b80156102625780601f1061023757610100808354040283529160200191610262565b820191906000526020600020905b81548152906001019060200180831161024557829003601f168201915b5050505050915080805461027590611595565b80601f01602080910402602001604051908101604052809291908181526020018280546102a190611595565b80156102ee5780601f106102c3576101008083540402835291602001916102ee565b820191906000526020600020905b8154815290600101906020018083116102d157829003601f168201915b505050505090509150915094509492505050565b6060806000600181805461031590611595565b80601f016020809104026020016040519081016040528092919081815260200182805461034190611595565b801561038e5780601f106103635761010080835404028352916020019161038e565b820191906000526020600020905b81548152906001019060200180831161037157829003601f168201915b505050505091508080546103a190611595565b80601f01602080910402602001604051908101604052809291908181526020018280546103cd90611595565b801561041a5780601f106103ef5761010080835404028352916020019161041a565b820191906000526020600020905b8154815290600101906020018083116103fd57829003601f168201915b50505050509050915091509091565b600061043a60008460ff1611610bda565b9050600061044784610c7f565b905060006104578560ff16610d2d565b905060006104678660ff16610d97565b905060006104778760ff16610e03565b905060006104858688610e73565b905060006104938689610ea7565b905060006104a1868a610ed0565b905060006104af868b610ef9565b905060006104bd868c610f22565b602095860151600455938501516005555090830151600655820151600755015160085550505050505050565b60ff8416151560006104fa82610bda565b9050600061050787610c7f565b9050600061051487610d2d565b9050600061052187610d97565b905060006105348763ffffffff16610e03565b9050600061054186610f4b565b9050600061055661055183610fa4565b610fb3565b9050600061056387611044565b9050600061057861057383611054565b611064565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8316179055905060006105b288611074565b905060006105c76105c283611084565b611094565b905060006105d4896110a4565b905060006105e96105e4836110b4565b6110c4565b905060006105f68a6110d4565b9050600061060b610606836110e4565b6110f4565b90508f151589151514801561062657508461ffff168760ff16145b801561063a57508263ffffffff168760ff16145b801561065257508067ffffffffffffffff168760ff16145b6106e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4661696c656420746f206f6666626f61726420616e64206f6e626f617264206160448201527f6c6c2076616c7565730000000000000000000000000000000000000000000000606482015260840160405180910390fd5b5050505050505050505050505050505050505050565b6000806107056005610c7f565b90506000610714826005611104565b905061072288888888610863565b60008060016107318482611637565b5061073e90508382611637565b50505061074b81856111a1565b600355600061075982611044565b9050600061076682611054565b905061077181611064565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff9290921691821790559a9950505050505050505050565b60006107c160008460ff1611610bda565b905060006107ce84610c7f565b905060006107de8560ff16610d2d565b905060006107ee8660ff16610d97565b905060006107fe8760ff16610e03565b9050600061080c868861121a565b9050600061081a86896111a1565b90506000610828868a611229565b90506000610836868b611239565b90506000610844868c611249565b6004959095555060059290925560065560075560085550505050505050565b60608060006108728685611780565b67ffffffffffffffff81111561088a5761088a611566565b6040519080825280601f01601f1916602001820160405280156108b4576020820181803683370190505b50905060005b84811015610931578585828181106108d4576108d4611793565b9050013560f81c60f81b8282815181106108f0576108f0611793565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080610929816117c2565b9150506108ba565b5060005b868110156109d35787878281811061094f5761094f611793565b909101357fff00000000000000000000000000000000000000000000000000000000000000169050826109828388611780565b8151811061099257610992611793565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806109cb816117c2565b915050610935565b506040517fa85f0ca200000000000000000000000000000000000000000000000000000000815260009060649063a85f0ca290610a149085906004016117fa565b6000604051808303816000875af1158015610a33573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a79919081019061180d565b604080516101008082526101208201909252919250600091906020820181803683375050604080516101008082526101208201909252929350600092915060208201818036833701905050905060005b8251811015610b4257838181518110610ae457610ae4611793565b602001015160f81c60f81b838281518110610b0157610b01611793565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080610b3a816117c2565b915050610ac9565b5060005b8151811015610bca5783610b5c61010083611780565b81518110610b6c57610b6c611793565b602001015160f81c60f81b828281518110610b8957610b89611793565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080610bc2816117c2565b915050610b46565b5090999098509650505050505050565b60008082610be9576000610bec565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b60906044015b6020604051808303816000875af1158015610c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c789190611907565b9392505050565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b60906044015b6020604051808303816000875af1158015610d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d279190611907565b92915050565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401610ce4565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401610ce4565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401610ce4565b6040805180820190915260008082526020820152610e9083610f4b565b8152610e9c838361121a565b602082015292915050565b6040805180820190915260008082526020820152610ec483611044565b8152610e9c83836111a1565b6040805180820190915260008082526020820152610eed83611074565b8152610e9c8383611229565b6040805180820190915260008082526020820152610f16836110a4565b8152610e9c8383611239565b6040805180820190915260008082526020820152610f3f836110d4565b8152610e9c8383611249565b6000606463c50c9c02825b60f81b846040518363ffffffff1660e01b8152600401610ce49291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6000606463d2c135e582610f56565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015611017573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103b9190611907565b15159392505050565b6000606463c50c9c026001610f56565b6000606463d2c135e56001610f56565b60006064630cfed5616001610f56565b6000606463c50c9c026002610f56565b6000606463d2c135e56002610f56565b60006064630cfed5616002610f56565b6000606463c50c9c026003610f56565b6000606463d2c135e56003610f56565b60006064630cfed5616003610f56565b6000606463c50c9c026004610f56565b6000606463d2c135e56004610f56565b60006064630cfed5616004610f56565b60006064638c5d015061111a6001806002611259565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff851660448201526064016020604051808303816000875af1158015610c54573d6000803e3d6000fd5b60006064633c6f0e6860015b60f81b85856040516020016111ed919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401610c3593929190611920565b60006064633c6f0e68826111ad565b60006064633c6f0e6860026111ad565b60006064633c6f0e6860036111ad565b60006064633c6f0e6860046111ad565b600081600281111561126d5761126d6118d8565b60ff166008846004811115611284576112846118d8565b61ffff16901b61ffff1660108660048111156112a2576112a26118d8565b62ffffff16901b171760e81b949350505050565b60008083601f8401126112c857600080fd5b50813567ffffffffffffffff8111156112e057600080fd5b6020830191508360208285010111156112f857600080fd5b9250929050565b6000806000806040858703121561131557600080fd5b843567ffffffffffffffff8082111561132d57600080fd5b611339888389016112b6565b9096509450602087013591508082111561135257600080fd5b5061135f878288016112b6565b95989497509550505050565b60005b8381101561138657818101518382015260200161136e565b50506000910152565b600081518084526113a781602086016020860161136b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6040815260006113ec604083018561138f565b82810360208401526113fe818561138f565b95945050505050565b803560ff8116811461141857600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461141857600080fd5b6000806040838503121561145457600080fd5b61145d83611407565b915061146b6020840161141d565b90509250929050565b803563ffffffff8116811461141857600080fd5b6000806000806080858703121561149e57600080fd5b6114a785611407565b9350602085013561ffff811681146114be57600080fd5b92506114cc60408601611474565b91506114da60608601611474565b905092959194509250565b6000806000806000606086880312156114fd57600080fd5b853567ffffffffffffffff8082111561151557600080fd5b61152189838a016112b6565b9097509550602088013591508082111561153a57600080fd5b50611547888289016112b6565b909450925061155a90506040870161141d565b90509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c908216806115a957607f821691505b6020821081036115e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561163257600081815260208120601f850160051c8101602086101561160f5750805b601f850160051c820191505b8181101561162e5782815560010161161b565b5050505b505050565b815167ffffffffffffffff81111561165157611651611566565b6116658161165f8454611595565b846115e8565b602080601f8311600181146116b857600084156116825750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561162e565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015611705578886015182559484019460019091019084016116e6565b508582101561174157878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610d2757610d27611751565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036117f3576117f3611751565b5060010190565b602081526000610c78602083018461138f565b60006020828403121561181f57600080fd5b815167ffffffffffffffff8082111561183757600080fd5b818401915084601f83011261184b57600080fd5b81518181111561185d5761185d611566565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156118a3576118a3611566565b816040528281528760208487010111156118bc57600080fd5b6118cd83602083016020880161136b565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561191957600080fd5b5051919050565b7fff00000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006113fe606083018461138f56fea2646970667358221220ebfa578791f614c5d217fcaecef975b0400b3f17ea5b96a79846f69b6d0d973864736f6c63430008130033";
234
234
 
235
235
  type OffboardToUserKeyTestContractConstructorParams =
236
236
  | [signer?: Signer]