{
  "_format": "hh-sol-artifact-1",
  "contractName": "TRC2771ForwarderUpgradeable",
  "sourceName": "contracts/metatx/TRC2771ForwarderUpgradeable.sol",
  "abi": [
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "currentNonce",
          "type": "uint256"
        }
      ],
      "name": "InvalidAccountNonce",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint48",
          "name": "deadline",
          "type": "uint48"
        }
      ],
      "name": "TRC2771ForwarderExpiredRequest",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        }
      ],
      "name": "TRC2771ForwarderInvalidSigner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "requestedValue",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "msgValue",
          "type": "uint256"
        }
      ],
      "name": "TRC2771ForwarderMismatchedValue",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TRC2771ForwarderNoRefundReceiver",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "forwarder",
          "type": "address"
        }
      ],
      "name": "TRC2771UntrustfulTarget",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "EIP712DomainChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "signer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        }
      ],
      "name": "ExecutedForwardRequest",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "eip712Domain",
      "outputs": [
        {
          "internalType": "bytes1",
          "name": "fields",
          "type": "bytes1"
        },
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "version",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "verifyingContract",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "salt",
          "type": "bytes32"
        },
        {
          "internalType": "uint256[]",
          "name": "extensions",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "gas",
              "type": "uint256"
            },
            {
              "internalType": "uint48",
              "name": "deadline",
              "type": "uint48"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "signature",
              "type": "bytes"
            }
          ],
          "internalType": "struct TRC2771ForwarderUpgradeable.ForwardRequestData",
          "name": "request",
          "type": "tuple"
        }
      ],
      "name": "execute",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "gas",
              "type": "uint256"
            },
            {
              "internalType": "uint48",
              "name": "deadline",
              "type": "uint48"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "signature",
              "type": "bytes"
            }
          ],
          "internalType": "struct TRC2771ForwarderUpgradeable.ForwardRequestData[]",
          "name": "requests",
          "type": "tuple[]"
        },
        {
          "internalType": "address payable",
          "name": "refundReceiver",
          "type": "address"
        }
      ],
      "name": "executeBatch",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "gas",
              "type": "uint256"
            },
            {
              "internalType": "uint48",
              "name": "deadline",
              "type": "uint48"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "signature",
              "type": "bytes"
            }
          ],
          "internalType": "struct TRC2771ForwarderUpgradeable.ForwardRequestData",
          "name": "request",
          "type": "tuple"
        }
      ],
      "name": "verify",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60808060405234601d57d3601d57d2601d5761125690816100228239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806319d8d38c14610a5b5780637ecebe00146109ff57806384b0196e14610939578063ccf96b4a146106c9578063df905caf146104d65763f62d18881461005b575f80fd5b346104d257d36104d257d26104d25760203660031901126104d25760043567ffffffffffffffff81116104d257366023820112156104d2576100a7903690602481600401359101610b21565b5f805160206111f38339815191525460ff8160401c16159067ffffffffffffffff8116801590816104ca575b60011490816104c0575b1590816104b7575b506104a85767ffffffffffffffff1981166001175f805160206111f3833981519152558161047c575b50610117611086565b60405190610126604083610aff565b60018252603160f81b602083015261013c611086565b825167ffffffffffffffff8111610363576101645f8051602061119383398151915254610e5b565b601f8111610408575b506020601f821160011461038257819293945f92610377575b50508160011b915f199060031b1c1916175f80516020611193833981519152555b815167ffffffffffffffff8111610363576101cf5f8051602061117383398151915254610e5b565b601f81116102f4575b50602092601f821160011461027b57928192935f92610270575b50508160011b915f199060031b1c1916175f80516020611173833981519152555b61021957005b68ff0000000000000000195f805160206111f383398151915254165f805160206111f3833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b015190505f806101f2565b601f198216935f805160206111738339815191525f52805f20915f5b8681106102dc57508360019596106102c4575b505050811b015f8051602061117383398151915255610213565b01515f1960f88460031b161c191690555f80806102aa565b91926020600181928685015181550194019201610297565b5f805160206111738339815191525f527f20b737b7a43b3c80ca64b3415510b67c9b5137c63b95401ac9f45d4aafbb60bc601f830160051c81019160208410610359575b601f0160051c01905b81811061034e57506101d8565b5f8155600101610341565b9091508190610338565b634e487b7160e01b5f52604160045260245ffd5b015190505f80610186565b601f198216905f805160206111938339815191525f525f805160206111d3833981519152915f5b8181106103f0575095836001959697106103d8575b505050811b015f80516020611193833981519152556101a7565b01515f1960f88460031b161c191690555f80806103be565b9192602060018192868b0151815501940192016103a9565b5f805160206111938339815191525f52601f820160051c5f805160206111d3833981519152019060208310610467575b601f0160051c5f805160206111d383398151915201905b81811061045c575061016d565b5f815560010161044f565b5f805160206111d38339815191529150610438565b68ffffffffffffffffff191668010000000000000001175f805160206111f3833981519152555f61010e565b63f92ee8a960e01b5f5260045ffd5b9050155f6100e5565b303b1591506100dd565b8391506100d3565b5f80fd5b6104df36610aa7565b6040810135908134036106b2575f916104f782610be5565b929190821561068257811561065c57801561062e5782610626575b508161061e575b50610538575b5050501561052957005b63d6bda27560e01b5f5260045ffd5b9091925060018060a01b031690815f525f805160206111b38339815191526020525f80604081209283549360018501905560608601359561057b60208201610bbe565b9161059b6105d36014602061059360a0870187610ffc565b949096610bbe565b9360405194818692848401998a378201906bffffffffffffffffffffffff199060601b16838201520301600b19810184520182610aff565b519288f192603f5a91041161061c5760407f842fb24a83793558587a3dab2be7674da4a51d09c5542d6dd354e5d0ea70813c9181519081528415156020820152a281808061051f565bfe5b905085610519565b915086610512565b8361063887610bbe565b63e62e12c760e01b5f9081526001600160a01b039283166004529116602452604490fd5b65ffffffffffff61066f60808801610bd2565b633b573c9b60e01b5f521660045260245ffd5b61068e60208701610bbe565b63b2da0b4160e01b5f9081526001600160a01b039190911660045230602452604490fd5b50635155dbcf60e01b5f526004523460245260445ffd5b60403660031901126104d25760043567ffffffffffffffff81116104d257366023820112156104d257806004013567ffffffffffffffff81116104d2576024820191602436918360051b0101116104d2576024356001600160a81b03811681036104d2576001600160a01b0316905f908215908290819086905b8083106107905750505034810361077a57508161075c57005b61076b576107699161102f565b005b630f3b84d960e31b5f5260045ffd5b635155dbcf60e01b5f526004523460245260445ffd5b9091926107ac9060406107a4868587610b67565b013590610b9d565b926107b8818385610b67565b5f90866107c482610be5565b936108ff575b826108f7575b50816108ef575b5061080b575b5050156107ef575b6001019190610743565b9461080360019160406107a4898688610b67565b9590506107e5565b90915060018060a01b0316805f525f805160206111b383398151915260205260405f208054906001820190555f80606085013594604061084d60208301610bbe565b61085a60a0840184610ffc565b6108a46014602061086d88979597610bbe565b938551948186928484019a8b378201906bffffffffffffffffffffffff199060601b16838201520301600b19810184520182610aff565b519301359088f192603f5a91041161061c5760407f842fb24a83793558587a3dab2be7674da4a51d09c5542d6dd354e5d0ea70813c9181519081528415156020820152a288806107dd565b90508b6107d7565b91508c6107d0565b821561092d57811561091a57806107ca578361063886610bbe565b65ffffffffffff61066f60808701610bd2565b61068e60208601610bbe565b346104d257d36104d257d26104d2575f3660031901126104d25761099d61095e610e93565b610966610f4f565b60206109ab604051926109798385610aff565b5f84525f368137604051958695600f60f81b875260e08588015260e0870190610adb565b908582036040870152610adb565b63ffffffff461660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b8281106109e857505050500390f35b8351855286955093810193928101926001016109d9565b346104d257d36104d257d26104d25760203660031901126104d2576004356001600160a81b03811681036104d2576001600160a01b03165f9081525f805160206111b38339815191526020908152604090912054604051908152f35b346104d257d36104d257d26104d2576020610a7d610a7836610aa7565b610be5565b509082610a9f575b5081610a97575b506040519015158152f35b905082610a8c565b915083610a85565b60206003198201126104d2576004359067ffffffffffffffff82116104d25760e09082900360031901126104d25760040190565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90601f8019910116810190811067ffffffffffffffff82111761036357604052565b92919267ffffffffffffffff82116103635760405191610b4b601f8201601f191660200184610aff565b8294818452818301116104d2578281602093845f960137010152565b9190811015610b895760051b8101359060de19813603018212156104d2570190565b634e487b7160e01b5f52603260045260245ffd5b91908201809211610baa57565b634e487b7160e01b5f52601160045260245ffd5b356001600160a81b03811681036104d25790565b3565ffffffffffff811681036104d25790565b90610bef82610bbe565b6020830191610d8c6042610c0285610bbe565b93610c35610c0f88610bbe565b6001600160a01b03165f9081525f805160206111b3833981519152602052604090205490565b94608088019565ffffffffffff610c4b88610bd2565b610c62610c5b60a08d018d610ffc565b3691610b21565b60208151910120926040519460208601967f7f96328b83274ebc7c1cf4f7a3abda602b51a78b7fa1d86a2ce353d75e587cac885260018060a01b0316604087015260018060a01b0316606086015260408c0135608086015260608c013560a086015260c08501521660e08301526101008201526101008152610ce661012082610aff565b519020610cf1610e93565b60208151910120610d00610f4f565b602081519101206040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84526040830152606082015263ffffffff461660808201523060a082015260a08152610d5e60c082610aff565b519020906040519161190160f01b83526002830152602282015220610d8660c0870187610ffc565b916110b1565b506004819492941015610e47575f610da76020921596610bbe565b6040518381019063572b6c0560e01b825230602482015260248152610dcd604482610aff565b51915afa903d5f519083610e3b575b5082610e2f575b50610ded90610bd2565b9484610e07575b509365ffffffffffff4291161015929190565b9093506001600160a01b0390610e1c90610bbe565b166001600160a01b03831614925f610df4565b15159150610ded610de3565b6020111592505f610ddc565b634e487b7160e01b5f52602160045260245ffd5b90600182811c92168015610e89575b6020831014610e7557565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610e6a565b604051905f825f805160206111938339815191525491610eb283610e5b565b8083529260018116908115610f305750600114610ed8575b610ed692500383610aff565b565b505f805160206111938339815191525f90815290915f805160206111d38339815191525b818310610f14575050906020610ed692820101610eca565b6020919350806001915483858901015201910190918492610efc565b60209250610ed694915060ff191682840152151560051b820101610eca565b604051905f825f805160206111738339815191525491610f6e83610e5b565b8083529260018116908115610f305750600114610f9157610ed692500383610aff565b505f805160206111738339815191525f90815290917f20b737b7a43b3c80ca64b3415510b67c9b5137c63b95401ac9f45d4aafbb60bc5b818310610fe0575050906020610ed692820101610eca565b6020919350806001915483858901015201910190918492610fc8565b903590601e19813603018212156104d2570180359067ffffffffffffffff82116104d2576020019181360383136104d257565b81471061106f575f80809381938260405161104b602082610aff565b526001600160a01b03165af11561105e57565b3d15610529576040513d5f823e3d90fd5b504763cf47918160e01b5f5260045260245260445ffd5b60ff5f805160206111f38339815191525460401c16156110a257565b631afcd79f60e31b5f5260045ffd5b90604183036110db576110d49250602081013591604082359201355f1a906110e5565b9192909190565b50505f9160029190565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611167579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561115c575f516001600160a01b0381161561115257905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f916003919056fe6d897d3df437b68bba92563d2efa8f325a3f31b060df06ba17e6107d49201a016d897d3df437b68bba92563d2efa8f325a3f31b060df06ba17e6107d49201a005ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0056d8d3f579e51e8bfd59ef7cec29a09ea40c95b5d105c139ef1cd36fa4179818f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a36474726f6e5822122028769182c33099808b13050b39c742cba04fdf32afb70d5b7d6e2c173943323c6c6578706572696d656e74616cf564736f6c634300081a0041",
  "deployedBytecode": "0x60806040526004361015610011575f80fd5b5f3560e01c806319d8d38c14610a5b5780637ecebe00146109ff57806384b0196e14610939578063ccf96b4a146106c9578063df905caf146104d65763f62d18881461005b575f80fd5b346104d257d36104d257d26104d25760203660031901126104d25760043567ffffffffffffffff81116104d257366023820112156104d2576100a7903690602481600401359101610b21565b5f805160206111f38339815191525460ff8160401c16159067ffffffffffffffff8116801590816104ca575b60011490816104c0575b1590816104b7575b506104a85767ffffffffffffffff1981166001175f805160206111f3833981519152558161047c575b50610117611086565b60405190610126604083610aff565b60018252603160f81b602083015261013c611086565b825167ffffffffffffffff8111610363576101645f8051602061119383398151915254610e5b565b601f8111610408575b506020601f821160011461038257819293945f92610377575b50508160011b915f199060031b1c1916175f80516020611193833981519152555b815167ffffffffffffffff8111610363576101cf5f8051602061117383398151915254610e5b565b601f81116102f4575b50602092601f821160011461027b57928192935f92610270575b50508160011b915f199060031b1c1916175f80516020611173833981519152555b61021957005b68ff0000000000000000195f805160206111f383398151915254165f805160206111f3833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b015190505f806101f2565b601f198216935f805160206111738339815191525f52805f20915f5b8681106102dc57508360019596106102c4575b505050811b015f8051602061117383398151915255610213565b01515f1960f88460031b161c191690555f80806102aa565b91926020600181928685015181550194019201610297565b5f805160206111738339815191525f527f20b737b7a43b3c80ca64b3415510b67c9b5137c63b95401ac9f45d4aafbb60bc601f830160051c81019160208410610359575b601f0160051c01905b81811061034e57506101d8565b5f8155600101610341565b9091508190610338565b634e487b7160e01b5f52604160045260245ffd5b015190505f80610186565b601f198216905f805160206111938339815191525f525f805160206111d3833981519152915f5b8181106103f0575095836001959697106103d8575b505050811b015f80516020611193833981519152556101a7565b01515f1960f88460031b161c191690555f80806103be565b9192602060018192868b0151815501940192016103a9565b5f805160206111938339815191525f52601f820160051c5f805160206111d3833981519152019060208310610467575b601f0160051c5f805160206111d383398151915201905b81811061045c575061016d565b5f815560010161044f565b5f805160206111d38339815191529150610438565b68ffffffffffffffffff191668010000000000000001175f805160206111f3833981519152555f61010e565b63f92ee8a960e01b5f5260045ffd5b9050155f6100e5565b303b1591506100dd565b8391506100d3565b5f80fd5b6104df36610aa7565b6040810135908134036106b2575f916104f782610be5565b929190821561068257811561065c57801561062e5782610626575b508161061e575b50610538575b5050501561052957005b63d6bda27560e01b5f5260045ffd5b9091925060018060a01b031690815f525f805160206111b38339815191526020525f80604081209283549360018501905560608601359561057b60208201610bbe565b9161059b6105d36014602061059360a0870187610ffc565b949096610bbe565b9360405194818692848401998a378201906bffffffffffffffffffffffff199060601b16838201520301600b19810184520182610aff565b519288f192603f5a91041161061c5760407f842fb24a83793558587a3dab2be7674da4a51d09c5542d6dd354e5d0ea70813c9181519081528415156020820152a281808061051f565bfe5b905085610519565b915086610512565b8361063887610bbe565b63e62e12c760e01b5f9081526001600160a01b039283166004529116602452604490fd5b65ffffffffffff61066f60808801610bd2565b633b573c9b60e01b5f521660045260245ffd5b61068e60208701610bbe565b63b2da0b4160e01b5f9081526001600160a01b039190911660045230602452604490fd5b50635155dbcf60e01b5f526004523460245260445ffd5b60403660031901126104d25760043567ffffffffffffffff81116104d257366023820112156104d257806004013567ffffffffffffffff81116104d2576024820191602436918360051b0101116104d2576024356001600160a81b03811681036104d2576001600160a01b0316905f908215908290819086905b8083106107905750505034810361077a57508161075c57005b61076b576107699161102f565b005b630f3b84d960e31b5f5260045ffd5b635155dbcf60e01b5f526004523460245260445ffd5b9091926107ac9060406107a4868587610b67565b013590610b9d565b926107b8818385610b67565b5f90866107c482610be5565b936108ff575b826108f7575b50816108ef575b5061080b575b5050156107ef575b6001019190610743565b9461080360019160406107a4898688610b67565b9590506107e5565b90915060018060a01b0316805f525f805160206111b383398151915260205260405f208054906001820190555f80606085013594604061084d60208301610bbe565b61085a60a0840184610ffc565b6108a46014602061086d88979597610bbe565b938551948186928484019a8b378201906bffffffffffffffffffffffff199060601b16838201520301600b19810184520182610aff565b519301359088f192603f5a91041161061c5760407f842fb24a83793558587a3dab2be7674da4a51d09c5542d6dd354e5d0ea70813c9181519081528415156020820152a288806107dd565b90508b6107d7565b91508c6107d0565b821561092d57811561091a57806107ca578361063886610bbe565b65ffffffffffff61066f60808701610bd2565b61068e60208601610bbe565b346104d257d36104d257d26104d2575f3660031901126104d25761099d61095e610e93565b610966610f4f565b60206109ab604051926109798385610aff565b5f84525f368137604051958695600f60f81b875260e08588015260e0870190610adb565b908582036040870152610adb565b63ffffffff461660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b8281106109e857505050500390f35b8351855286955093810193928101926001016109d9565b346104d257d36104d257d26104d25760203660031901126104d2576004356001600160a81b03811681036104d2576001600160a01b03165f9081525f805160206111b38339815191526020908152604090912054604051908152f35b346104d257d36104d257d26104d2576020610a7d610a7836610aa7565b610be5565b509082610a9f575b5081610a97575b506040519015158152f35b905082610a8c565b915083610a85565b60206003198201126104d2576004359067ffffffffffffffff82116104d25760e09082900360031901126104d25760040190565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90601f8019910116810190811067ffffffffffffffff82111761036357604052565b92919267ffffffffffffffff82116103635760405191610b4b601f8201601f191660200184610aff565b8294818452818301116104d2578281602093845f960137010152565b9190811015610b895760051b8101359060de19813603018212156104d2570190565b634e487b7160e01b5f52603260045260245ffd5b91908201809211610baa57565b634e487b7160e01b5f52601160045260245ffd5b356001600160a81b03811681036104d25790565b3565ffffffffffff811681036104d25790565b90610bef82610bbe565b6020830191610d8c6042610c0285610bbe565b93610c35610c0f88610bbe565b6001600160a01b03165f9081525f805160206111b3833981519152602052604090205490565b94608088019565ffffffffffff610c4b88610bd2565b610c62610c5b60a08d018d610ffc565b3691610b21565b60208151910120926040519460208601967f7f96328b83274ebc7c1cf4f7a3abda602b51a78b7fa1d86a2ce353d75e587cac885260018060a01b0316604087015260018060a01b0316606086015260408c0135608086015260608c013560a086015260c08501521660e08301526101008201526101008152610ce661012082610aff565b519020610cf1610e93565b60208151910120610d00610f4f565b602081519101206040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84526040830152606082015263ffffffff461660808201523060a082015260a08152610d5e60c082610aff565b519020906040519161190160f01b83526002830152602282015220610d8660c0870187610ffc565b916110b1565b506004819492941015610e47575f610da76020921596610bbe565b6040518381019063572b6c0560e01b825230602482015260248152610dcd604482610aff565b51915afa903d5f519083610e3b575b5082610e2f575b50610ded90610bd2565b9484610e07575b509365ffffffffffff4291161015929190565b9093506001600160a01b0390610e1c90610bbe565b166001600160a01b03831614925f610df4565b15159150610ded610de3565b6020111592505f610ddc565b634e487b7160e01b5f52602160045260245ffd5b90600182811c92168015610e89575b6020831014610e7557565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610e6a565b604051905f825f805160206111938339815191525491610eb283610e5b565b8083529260018116908115610f305750600114610ed8575b610ed692500383610aff565b565b505f805160206111938339815191525f90815290915f805160206111d38339815191525b818310610f14575050906020610ed692820101610eca565b6020919350806001915483858901015201910190918492610efc565b60209250610ed694915060ff191682840152151560051b820101610eca565b604051905f825f805160206111738339815191525491610f6e83610e5b565b8083529260018116908115610f305750600114610f9157610ed692500383610aff565b505f805160206111738339815191525f90815290917f20b737b7a43b3c80ca64b3415510b67c9b5137c63b95401ac9f45d4aafbb60bc5b818310610fe0575050906020610ed692820101610eca565b6020919350806001915483858901015201910190918492610fc8565b903590601e19813603018212156104d2570180359067ffffffffffffffff82116104d2576020019181360383136104d257565b81471061106f575f80809381938260405161104b602082610aff565b526001600160a01b03165af11561105e57565b3d15610529576040513d5f823e3d90fd5b504763cf47918160e01b5f5260045260245260445ffd5b60ff5f805160206111f38339815191525460401c16156110a257565b631afcd79f60e31b5f5260045ffd5b90604183036110db576110d49250602081013591604082359201355f1a906110e5565b9192909190565b50505f9160029190565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611167579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561115c575f516001600160a01b0381161561115257905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f916003919056fe6d897d3df437b68bba92563d2efa8f325a3f31b060df06ba17e6107d49201a016d897d3df437b68bba92563d2efa8f325a3f31b060df06ba17e6107d49201a005ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0056d8d3f579e51e8bfd59ef7cec29a09ea40c95b5d105c139ef1cd36fa4179818f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a36474726f6e5822122028769182c33099808b13050b39c742cba04fdf32afb70d5b7d6e2c173943323c6c6578706572696d656e74616cf564736f6c634300081a0041",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
