{
  "_format": "hh-sol-artifact-1",
  "contractName": "BoltzSmartWallet",
  "sourceName": "contracts/smartwallet/BoltzSmartWallet.sol",
  "abi": [
    {
      "inputs": [],
      "name": "DATA_VERSION_HASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "directExecute",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "ret",
          "type": "bytes"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "domainSeparator",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "suffixData",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "relayHub",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenContract",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "gas",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenGas",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "validUntilTime",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct IForwarder.ForwardRequest",
          "name": "req",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "feesReceiver",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "sig",
          "type": "bytes"
        }
      ],
      "name": "execute",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "ret",
          "type": "bytes"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getOwner",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "owner",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "feesReceiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenGas",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isInitialized",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nonce",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "factory",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "swTemplate",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "destinationContract",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "recover",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "ret",
          "type": "bytes"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "suffixData",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "relayHub",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenContract",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "gas",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenGas",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "validUntilTime",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct IForwarder.ForwardRequest",
          "name": "req",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "sig",
          "type": "bytes"
        }
      ],
      "name": "verify",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061001a3361001f565b610088565b6000816040516020016100329190610070565b60408051601f1981840301815291905280516020909101207fa7b53796fd2d99cb1f5ae019b54f9e024446c3d12b483f733ccc62ed04eb126a555050565b60609190911b6001600160601b031916815260140190565b611956806100976000396000f3fe6080604052600436106100b55760003560e01c8063893d20e811610069578063b3104ef61161004e578063b3104ef61461018c578063c07adbdc146101a1578063f698da25146101c1576100bc565b8063893d20e814610155578063affed0e014610177576100bc565b8063392e53cd1161009a578063392e53cd1461010d5780633b54ccc31461012f57806375a6dad714610142576100bc565b806306105d29146100c1578063244f53b5146100e3576100bc565b366100bc57005b600080fd5b3480156100cd57600080fd5b506100e16100dc366004611289565b6101d6565b005b6100f66100f1366004611193565b61021d565b604051610104929190611510565b60405180910390f35b34801561011957600080fd5b50610122610315565b6040516101049190611505565b6100f661013d366004611055565b610335565b6100f6610150366004611206565b61049c565b34801561016157600080fd5b5061016a6107ac565b604051610104919061154c565b34801561018357600080fd5b5061016a6107d1565b34801561019857600080fd5b5061016a6107d7565b3480156101ad57600080fd5b506100e16101bc3660046110e7565b6107fb565b3480156101cd57600080fd5b5061016a610a8c565b610217848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a9292505050565b50505050565b600060603360405160200161023291906112f6565b604051602081830303815290604052805190602001206102506107ac565b146102765760405162461bcd60e51b815260040161026d90611880565b60405180910390fd5b846001600160a01b03163485856040516102919291906113bf565b60006040518083038185875af1925050503d80600081146102ce576040519150601f19603f3d011682016040523d82523d6000602084013e6102d3565b606091505b509092509050471561030d5760405133904780156108fc02916000818181858888f1935050505015801561030b573d6000803e3d6000fd5b505b935093915050565b6000806103206107ac565b141561032e57506000610332565b5060015b90565b60006060600060ff60f81b898b338960405160200161035693929190611313565b604051602081830303815290604052805190602001208a60405160200161037d91906113eb565b604051602081830303815290604052805190602001206040516020016103a69493929190611341565b60408051601f19818403018152919052805160209091012090506001600160a01b03811630146103e85760405162461bcd60e51b815260040161026d906115d6565b6001600160a01b0387161561045b57866001600160a01b03163486866040516104129291906113bf565b60006040518083038185875af1925050503d806000811461044f576040519150601f19603f3d011682016040523d82523d6000602084013e610454565b606091505b5090935091505b471561048f5760405133904780156108fc02916000818181858888f1935050505015801561048d573d6000803e3d6000fd5b505b5097509795505050505050565b6000606085600001516001600160a01b0316336001600160a01b0316146104d55760405162461bcd60e51b815260040161026d9061167b565b610516878786868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a9292505050565b610120860151158061052c575042866101200151115b6105485760405162461bcd60e51b815260040161026d9061172b565b60008054600101905560408087015160a088015160808901516101408a015193516001600160a01b039093169391929091610582916113cf565b600060405180830381858888f193505050503d80600081146105c0576040519150601f19603f3d011682016040523d82523d6000602084013e6105c5565b606091505b5060e088015191935091501561075f57606086810151600091906001600160a01b031661065c57866001600160a01b03168860e001518961010001519060405161060e90610332565b600060405180830381858888f193505050503d806000811461064c576040519150601f19603f3d011682016040523d82523d6000602084013e610651565b606091505b50909250905061071b565b87606001516001600160a01b0316886101000151888a60e001516040516024016106879291906114ec565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052516106d191906113cf565b60006040518083038160008787f1925050503d806000811461070f576040519150601f19603f3d011682016040523d82523d6000602084013e610714565b606091505b5090925090505b81801561074057508051158061074057508080602001905181019061074091906111e6565b61075c5760405162461bcd60e51b815260040161026d906117a4565b50505b47156107a25760208601516040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156107a0573d6000803e3d6000fd5b505b9550959350505050565b7fa7b53796fd2d99cb1f5ae019b54f9e024446c3d12b483f733ccc62ed04eb126a5490565b60005481565b7fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a581565b60006108056107ac565b146108225760405162461bcd60e51b815260040161026d90611849565b61082b89610b7e565b600060606001600160a01b038616156108cc57856001600160a01b03168585856040516108599291906113bf565b60006040518083038185875af1925050503d8060008114610896576040519150601f19603f3d011682016040523d82523d6000602084013e61089b565b606091505b509092509050816108cc5780516108c45760405162461bcd60e51b815260040161026d906116f4565b805160208201fd5b8715610a3a576001600160a01b038a1661094757886001600160a01b03168888906040516108f990610332565b600060405180830381858888f193505050503d8060008114610937576040519150601f19603f3d011682016040523d82523d6000602084013e61093c565b606091505b5090925090506109f9565b896001600160a01b0316878a8a6040516024016109659291906114ec565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052516109af91906113cf565b60006040518083038160008787f1925050503d80600081146109ed576040519150601f19603f3d011682016040523d82523d6000602084013e6109f2565b606091505b5090925090505b818015610a1e575080511580610a1e575080806020019051810190610a1e91906111e6565b610a3a5760405162461bcd60e51b815260040161026d90611812565b610a42610bcf565b4715610a7f576040516001600160a01b038c16904780156108fc02916000818181858888f19350505050158015610a7d573d6000803e3d6000fd5b505b5050505050505050505050565b60015481565b602080830151604051610aa592016112f6565b60405160208183030381529060405280519060200120610ac36107ac565b14610ae05760405162461bcd60e51b815260040161026d90611880565b8160c0015160005414610b055760405162461bcd60e51b815260040161026d90611644565b610b5d610b5382600154610b198787610c6c565b8051602091820120604051610b2f939201611454565b60405160208183030381529060405280519060200120610d1990919063ffffffff16565b8360200151610d64565b610b795760405162461bcd60e51b815260040161026d906117db565b505050565b600081604051602001610b9191906112f6565b60408051601f1981840301815291905280516020909101207fa7b53796fd2d99cb1f5ae019b54f9e024446c3d12b483f733ccc62ed04eb126a555050565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7fd41b7f69f4d7734774d21b5548d74704ad02f9f1545db63927a1d58479c576c87fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a5610c3a610dbf565b30604051602001610c4f959493929190611555565b60408051601f198184030181529190528051602090910120600155565b8051602080830151604080850151606086810151608088015160a089015160c08a015160e08b01516101008c01516101208d01516101408e01518051908d01209951979c7fdbc4f1d96529fadae86244f9c7b2dc871009d2ad633f32fb7833efcc2c0d53709c610ce19c919b919a990161148a565b60408051601f1981840301815290829052610d0192918690602001611392565b60405160208183030381529060405290505b92915050565b60008151604114610d3c5760405162461bcd60e51b815260040161026d9061160d565b60208201516040830151606084015160001a610d5a86828585610dc3565b9695505050505050565b6000816001600160a01b0316836001600160a01b0316148015610da4575073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b03841614155b8015610db857506001600160a01b03831615155b9392505050565b4690565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610e055760405162461bcd60e51b815260040161026d906116b2565b8360ff16601b1480610e1a57508360ff16601c145b610e365760405162461bcd60e51b815260040161026d90611762565b600060018686868660405160008152602001604052604051610e5b9493929190611581565b6020604051602081039080840390855afa158015610e7d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610eb05760405162461bcd60e51b815260040161026d9061159f565b95945050505050565b80356001600160a01b0381168114610d1357600080fd5b60008083601f840112610ee1578182fd5b50813567ffffffffffffffff811115610ef8578182fd5b602083019150836020828501011115610f1057600080fd5b9250929050565b600082601f830112610f27578081fd5b813567ffffffffffffffff811115610f3d578182fd5b610f50601f8201601f19166020016118b5565b9150808252836020828501011115610f6757600080fd5b8060208401602084013760009082016020015292915050565b6000610160808385031215610f93578182fd5b610f9c816118b5565b915050610fa98383610eb9565b8152610fb88360208401610eb9565b6020820152610fca8360408401610eb9565b6040820152610fdc8360608401610eb9565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff81111561103d57600080fd5b61104985828601610f17565b82840152505092915050565b600080600080600080600060c0888a03121561106f578283fd5b6110798989610eb9565b96506110888960208a01610eb9565b95506110978960408a01610eb9565b94506110a68960608a01610eb9565b93506080880135925060a088013567ffffffffffffffff8111156110c8578283fd5b6110d48a828b01610ed0565b989b979a50959850939692959293505050565b60008060008060008060008060006101008a8c031215611105578182fd5b893561111081611908565b985060208a013561112081611908565b975060408a013561113081611908565b965060608a0135955060808a0135945060a08a013561114e81611908565b935060c08a0135925060e08a013567ffffffffffffffff811115611170578283fd5b61117c8c828d01610ed0565b915080935050809150509295985092959850929598565b6000806000604084860312156111a7578283fd5b83356111b281611908565b9250602084013567ffffffffffffffff8111156111cd578283fd5b6111d986828701610ed0565b9497909650939450505050565b6000602082840312156111f7578081fd5b81518015158114610db8578182fd5b60008060008060006080868803121561121d578081fd5b85359450602086013567ffffffffffffffff8082111561123b578283fd5b61124789838a01610f80565b95506112568960408a01610eb9565b9450606088013591508082111561126b578283fd5b5061127888828901610ed0565b969995985093965092949392505050565b6000806000806060858703121561129e578384fd5b84359350602085013567ffffffffffffffff808211156112bc578485fd5b6112c888838901610f80565b945060408701359150808211156112dd578384fd5b506112ea87828801610ed0565b95989497509550505050565b60609190911b6bffffffffffffffffffffffff1916815260140190565b6bffffffffffffffffffffffff19606094851b811682529290931b9091166014830152602882015260480190565b7fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b600084825283516113aa8160208501602088016118dc565b60209201918201929092526040019392505050565b6000828483379101908152919050565b600082516113e18184602087016118dc565b9190910192915050565b7f602d3d8160093d39f3363d3d373d3d3d3d363d73000000000000000000000000815260609190911b6bffffffffffffffffffffffff191660148201527f5af43d923d90803e602b57fd5bf3000000000000000000000000000000000000602882015260360190565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b6001600160a01b039b8c168152998b1660208b0152978a1660408a0152959098166060880152608087019390935260a086019190915260c085015260e08401526101008301939093526101208201929092526101408101919091526101600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b600083151582526040602083015282518060408401526115378160608501602087016118dc565b601f01601f1916919091016060019392505050565b90815260200190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b93845260ff9290921660208401526040830152606082015260800190565b60208082526018908201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604082015260600190565b60208082526011908201527f496e76616c6964207265636f7665726572000000000000000000000000000000604082015260600190565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b6020808252600e908201527f6e6f6e6365206d69736d61746368000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f496e76616c69642063616c6c6572000000000000000000000000000000000000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b60208082526011908201527f556e61626c6520746f2065786563757465000000000000000000000000000000604082015260600190565b60208082526013908201527f53573a2072657175657374206578706972656400000000000000000000000000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b60208082526017908201527f556e61626c6520746f2070617920666f722072656c6179000000000000000000604082015260600190565b60208082526012908201527f5369676e6174757265206d69736d617463680000000000000000000000000000604082015260600190565b6020808252601c908201527f556e61626c6520746f2070617920666f72206465706c6f796d656e7400000000604082015260600190565b60208082526013908201527f416c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6020808252818101527f4e6f7420746865206f776e6572206f662074686520536d61727457616c6c6574604082015260600190565b60405181810167ffffffffffffffff811182821017156118d457600080fd5b604052919050565b60005b838110156118f75781810151838201526020016118df565b838111156102175750506000910152565b6001600160a01b038116811461191d57600080fd5b5056fea2646970667358221220b711a9abd241b61418e52f38d12b3f9eff5f4b5454dbd50177d609f6ba84a2d164736f6c634300060c0033",
  "deployedBytecode": "0x6080604052600436106100b55760003560e01c8063893d20e811610069578063b3104ef61161004e578063b3104ef61461018c578063c07adbdc146101a1578063f698da25146101c1576100bc565b8063893d20e814610155578063affed0e014610177576100bc565b8063392e53cd1161009a578063392e53cd1461010d5780633b54ccc31461012f57806375a6dad714610142576100bc565b806306105d29146100c1578063244f53b5146100e3576100bc565b366100bc57005b600080fd5b3480156100cd57600080fd5b506100e16100dc366004611289565b6101d6565b005b6100f66100f1366004611193565b61021d565b604051610104929190611510565b60405180910390f35b34801561011957600080fd5b50610122610315565b6040516101049190611505565b6100f661013d366004611055565b610335565b6100f6610150366004611206565b61049c565b34801561016157600080fd5b5061016a6107ac565b604051610104919061154c565b34801561018357600080fd5b5061016a6107d1565b34801561019857600080fd5b5061016a6107d7565b3480156101ad57600080fd5b506100e16101bc3660046110e7565b6107fb565b3480156101cd57600080fd5b5061016a610a8c565b610217848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a9292505050565b50505050565b600060603360405160200161023291906112f6565b604051602081830303815290604052805190602001206102506107ac565b146102765760405162461bcd60e51b815260040161026d90611880565b60405180910390fd5b846001600160a01b03163485856040516102919291906113bf565b60006040518083038185875af1925050503d80600081146102ce576040519150601f19603f3d011682016040523d82523d6000602084013e6102d3565b606091505b509092509050471561030d5760405133904780156108fc02916000818181858888f1935050505015801561030b573d6000803e3d6000fd5b505b935093915050565b6000806103206107ac565b141561032e57506000610332565b5060015b90565b60006060600060ff60f81b898b338960405160200161035693929190611313565b604051602081830303815290604052805190602001208a60405160200161037d91906113eb565b604051602081830303815290604052805190602001206040516020016103a69493929190611341565b60408051601f19818403018152919052805160209091012090506001600160a01b03811630146103e85760405162461bcd60e51b815260040161026d906115d6565b6001600160a01b0387161561045b57866001600160a01b03163486866040516104129291906113bf565b60006040518083038185875af1925050503d806000811461044f576040519150601f19603f3d011682016040523d82523d6000602084013e610454565b606091505b5090935091505b471561048f5760405133904780156108fc02916000818181858888f1935050505015801561048d573d6000803e3d6000fd5b505b5097509795505050505050565b6000606085600001516001600160a01b0316336001600160a01b0316146104d55760405162461bcd60e51b815260040161026d9061167b565b610516878786868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a9292505050565b610120860151158061052c575042866101200151115b6105485760405162461bcd60e51b815260040161026d9061172b565b60008054600101905560408087015160a088015160808901516101408a015193516001600160a01b039093169391929091610582916113cf565b600060405180830381858888f193505050503d80600081146105c0576040519150601f19603f3d011682016040523d82523d6000602084013e6105c5565b606091505b5060e088015191935091501561075f57606086810151600091906001600160a01b031661065c57866001600160a01b03168860e001518961010001519060405161060e90610332565b600060405180830381858888f193505050503d806000811461064c576040519150601f19603f3d011682016040523d82523d6000602084013e610651565b606091505b50909250905061071b565b87606001516001600160a01b0316886101000151888a60e001516040516024016106879291906114ec565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052516106d191906113cf565b60006040518083038160008787f1925050503d806000811461070f576040519150601f19603f3d011682016040523d82523d6000602084013e610714565b606091505b5090925090505b81801561074057508051158061074057508080602001905181019061074091906111e6565b61075c5760405162461bcd60e51b815260040161026d906117a4565b50505b47156107a25760208601516040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156107a0573d6000803e3d6000fd5b505b9550959350505050565b7fa7b53796fd2d99cb1f5ae019b54f9e024446c3d12b483f733ccc62ed04eb126a5490565b60005481565b7fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a581565b60006108056107ac565b146108225760405162461bcd60e51b815260040161026d90611849565b61082b89610b7e565b600060606001600160a01b038616156108cc57856001600160a01b03168585856040516108599291906113bf565b60006040518083038185875af1925050503d8060008114610896576040519150601f19603f3d011682016040523d82523d6000602084013e61089b565b606091505b509092509050816108cc5780516108c45760405162461bcd60e51b815260040161026d906116f4565b805160208201fd5b8715610a3a576001600160a01b038a1661094757886001600160a01b03168888906040516108f990610332565b600060405180830381858888f193505050503d8060008114610937576040519150601f19603f3d011682016040523d82523d6000602084013e61093c565b606091505b5090925090506109f9565b896001600160a01b0316878a8a6040516024016109659291906114ec565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052516109af91906113cf565b60006040518083038160008787f1925050503d80600081146109ed576040519150601f19603f3d011682016040523d82523d6000602084013e6109f2565b606091505b5090925090505b818015610a1e575080511580610a1e575080806020019051810190610a1e91906111e6565b610a3a5760405162461bcd60e51b815260040161026d90611812565b610a42610bcf565b4715610a7f576040516001600160a01b038c16904780156108fc02916000818181858888f19350505050158015610a7d573d6000803e3d6000fd5b505b5050505050505050505050565b60015481565b602080830151604051610aa592016112f6565b60405160208183030381529060405280519060200120610ac36107ac565b14610ae05760405162461bcd60e51b815260040161026d90611880565b8160c0015160005414610b055760405162461bcd60e51b815260040161026d90611644565b610b5d610b5382600154610b198787610c6c565b8051602091820120604051610b2f939201611454565b60405160208183030381529060405280519060200120610d1990919063ffffffff16565b8360200151610d64565b610b795760405162461bcd60e51b815260040161026d906117db565b505050565b600081604051602001610b9191906112f6565b60408051601f1981840301815291905280516020909101207fa7b53796fd2d99cb1f5ae019b54f9e024446c3d12b483f733ccc62ed04eb126a555050565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7fd41b7f69f4d7734774d21b5548d74704ad02f9f1545db63927a1d58479c576c87fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a5610c3a610dbf565b30604051602001610c4f959493929190611555565b60408051601f198184030181529190528051602090910120600155565b8051602080830151604080850151606086810151608088015160a089015160c08a015160e08b01516101008c01516101208d01516101408e01518051908d01209951979c7fdbc4f1d96529fadae86244f9c7b2dc871009d2ad633f32fb7833efcc2c0d53709c610ce19c919b919a990161148a565b60408051601f1981840301815290829052610d0192918690602001611392565b60405160208183030381529060405290505b92915050565b60008151604114610d3c5760405162461bcd60e51b815260040161026d9061160d565b60208201516040830151606084015160001a610d5a86828585610dc3565b9695505050505050565b6000816001600160a01b0316836001600160a01b0316148015610da4575073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b03841614155b8015610db857506001600160a01b03831615155b9392505050565b4690565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610e055760405162461bcd60e51b815260040161026d906116b2565b8360ff16601b1480610e1a57508360ff16601c145b610e365760405162461bcd60e51b815260040161026d90611762565b600060018686868660405160008152602001604052604051610e5b9493929190611581565b6020604051602081039080840390855afa158015610e7d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610eb05760405162461bcd60e51b815260040161026d9061159f565b95945050505050565b80356001600160a01b0381168114610d1357600080fd5b60008083601f840112610ee1578182fd5b50813567ffffffffffffffff811115610ef8578182fd5b602083019150836020828501011115610f1057600080fd5b9250929050565b600082601f830112610f27578081fd5b813567ffffffffffffffff811115610f3d578182fd5b610f50601f8201601f19166020016118b5565b9150808252836020828501011115610f6757600080fd5b8060208401602084013760009082016020015292915050565b6000610160808385031215610f93578182fd5b610f9c816118b5565b915050610fa98383610eb9565b8152610fb88360208401610eb9565b6020820152610fca8360408401610eb9565b6040820152610fdc8360608401610eb9565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff81111561103d57600080fd5b61104985828601610f17565b82840152505092915050565b600080600080600080600060c0888a03121561106f578283fd5b6110798989610eb9565b96506110888960208a01610eb9565b95506110978960408a01610eb9565b94506110a68960608a01610eb9565b93506080880135925060a088013567ffffffffffffffff8111156110c8578283fd5b6110d48a828b01610ed0565b989b979a50959850939692959293505050565b60008060008060008060008060006101008a8c031215611105578182fd5b893561111081611908565b985060208a013561112081611908565b975060408a013561113081611908565b965060608a0135955060808a0135945060a08a013561114e81611908565b935060c08a0135925060e08a013567ffffffffffffffff811115611170578283fd5b61117c8c828d01610ed0565b915080935050809150509295985092959850929598565b6000806000604084860312156111a7578283fd5b83356111b281611908565b9250602084013567ffffffffffffffff8111156111cd578283fd5b6111d986828701610ed0565b9497909650939450505050565b6000602082840312156111f7578081fd5b81518015158114610db8578182fd5b60008060008060006080868803121561121d578081fd5b85359450602086013567ffffffffffffffff8082111561123b578283fd5b61124789838a01610f80565b95506112568960408a01610eb9565b9450606088013591508082111561126b578283fd5b5061127888828901610ed0565b969995985093965092949392505050565b6000806000806060858703121561129e578384fd5b84359350602085013567ffffffffffffffff808211156112bc578485fd5b6112c888838901610f80565b945060408701359150808211156112dd578384fd5b506112ea87828801610ed0565b95989497509550505050565b60609190911b6bffffffffffffffffffffffff1916815260140190565b6bffffffffffffffffffffffff19606094851b811682529290931b9091166014830152602882015260480190565b7fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b600084825283516113aa8160208501602088016118dc565b60209201918201929092526040019392505050565b6000828483379101908152919050565b600082516113e18184602087016118dc565b9190910192915050565b7f602d3d8160093d39f3363d3d373d3d3d3d363d73000000000000000000000000815260609190911b6bffffffffffffffffffffffff191660148201527f5af43d923d90803e602b57fd5bf3000000000000000000000000000000000000602882015260360190565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b6001600160a01b039b8c168152998b1660208b0152978a1660408a0152959098166060880152608087019390935260a086019190915260c085015260e08401526101008301939093526101208201929092526101408101919091526101600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b600083151582526040602083015282518060408401526115378160608501602087016118dc565b601f01601f1916919091016060019392505050565b90815260200190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b93845260ff9290921660208401526040830152606082015260800190565b60208082526018908201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604082015260600190565b60208082526011908201527f496e76616c6964207265636f7665726572000000000000000000000000000000604082015260600190565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b6020808252600e908201527f6e6f6e6365206d69736d61746368000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f496e76616c69642063616c6c6572000000000000000000000000000000000000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b60208082526011908201527f556e61626c6520746f2065786563757465000000000000000000000000000000604082015260600190565b60208082526013908201527f53573a2072657175657374206578706972656400000000000000000000000000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b60208082526017908201527f556e61626c6520746f2070617920666f722072656c6179000000000000000000604082015260600190565b60208082526012908201527f5369676e6174757265206d69736d617463680000000000000000000000000000604082015260600190565b6020808252601c908201527f556e61626c6520746f2070617920666f72206465706c6f796d656e7400000000604082015260600190565b60208082526013908201527f416c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6020808252818101527f4e6f7420746865206f776e6572206f662074686520536d61727457616c6c6574604082015260600190565b60405181810167ffffffffffffffff811182821017156118d457600080fd5b604052919050565b60005b838110156118f75781810151838201526020016118df565b838111156102175750506000910152565b6001600160a01b038116811461191d57600080fd5b5056fea2646970667358221220b711a9abd241b61418e52f38d12b3f9eff5f4b5454dbd50177d609f6ba84a2d164736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
