{
  "_format": "hh-sol-artifact-1",
  "contractName": "QuoterV2",
  "sourceName": "contracts/lens/QuoterV2.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_WETH9",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "WETH9",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int256",
          "name": "amount0Delta",
          "type": "int256"
        },
        {
          "internalType": "int256",
          "name": "amount1Delta",
          "type": "int256"
        },
        {
          "internalType": "bytes",
          "name": "path",
          "type": "bytes"
        }
      ],
      "name": "moraswapV3SwapCallback",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "poolDeployer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "path",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        }
      ],
      "name": "quoteExactInput",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint160[]",
          "name": "sqrtPriceX96AfterList",
          "type": "uint160[]"
        },
        {
          "internalType": "uint32[]",
          "name": "initializedTicksCrossedList",
          "type": "uint32[]"
        },
        {
          "internalType": "uint256",
          "name": "gasEstimate",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            }
          ],
          "internalType": "struct IQuoterV2.QuoteExactInputSingleParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "quoteExactInputSingle",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint160",
          "name": "sqrtPriceX96After",
          "type": "uint160"
        },
        {
          "internalType": "uint32",
          "name": "initializedTicksCrossed",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "gasEstimate",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "path",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "name": "quoteExactOutput",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint160[]",
          "name": "sqrtPriceX96AfterList",
          "type": "uint160[]"
        },
        {
          "internalType": "uint32[]",
          "name": "initializedTicksCrossedList",
          "type": "uint32[]"
        },
        {
          "internalType": "uint256",
          "name": "gasEstimate",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            }
          ],
          "internalType": "struct IQuoterV2.QuoteExactOutputSingleParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "quoteExactOutputSingle",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint160",
          "name": "sqrtPriceX96After",
          "type": "uint160"
        },
        {
          "internalType": "uint32",
          "name": "initializedTicksCrossed",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "gasEstimate",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60e06040523480156200001157600080fd5b5060405162001ceb38038062001ceb8339810160408190526200003491620000f9565b6001600160601b0319606083811b821660805282901b1660a0526040805163188c824d60e11b81529051839183916001600160a01b03841691633119049a916004808301926020929190829003018186803b1580156200009357600080fd5b505afa158015620000a8573d6000803e3d6000fd5b505050506040513d6020811015620000bf57600080fd5b505160601b6001600160601b03191660c052506200013092505050565b80516001600160a01b0381168114620000f457600080fd5b919050565b600080604083850312156200010c578182fd5b6200011783620000dc565b91506200012760208401620000dc565b90509250929050565b60805160601c60a05160601c60c05160601c611b7b62000170600039806102f3528061086e5280610a2652508061031752508061050e5250611b7b6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c45a01551161005b578063c45a0155146100f9578063c6a5026a14610101578063cdca175314610114578063fb929db21461012757610088565b80632f80bb1d1461008d5780633119049a146100b95780634aa4a4fc146100ce578063bd21704a146100d6575b600080fd5b6100a061009b3660046116e0565b61013c565b6040516100b094939291906119f2565b60405180910390f35b6100c16102f1565b6040516100b0919061195b565b6100c1610315565b6100e96100e43660046117fe565b610339565b6040516100b09493929190611a8d565b6100c161050c565b6100e961010f3660046117fe565b610530565b6100a06101223660046116e0565b6106a6565b61013a610135366004611746565b61083d565b005b6000606080600061014c866109b8565b67ffffffffffffffff8111801561016257600080fd5b5060405190808252806020026020018201604052801561018c578160200160208202803683370190505b509250610198866109b8565b67ffffffffffffffff811180156101ae57600080fd5b506040519080825280602002602001820160405280156101d8578160200160208202803683370190505b50915060005b60008060006101ec8a6109c9565b9250925092506000806000806102486040518060a00160405280886001600160a01b03168152602001896001600160a01b031681526020018f81526020018762ffffff16815260200160006001600160a01b0316815250610339565b9350935093509350828b898151811061025d57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818a898151811061028a57fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926102b78e6109fa565b156102cc576102c58e610a02565b9d506102dc565b8c9b5050505050505050506102e8565b505050505050506101de565b92959194509250565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6020810151815160608301516000928392839283926001600160a01b038082169084161092849261036a9290610a1f565b905086608001516001600160a01b03166000141561038b5760408701516000555b60005a9050816001600160a01b031663128acb0830856103ae8c60400151610a5d565b6000038c608001516001600160a01b03166000146103d0578c608001516103f6565b876103ef5773fffd8963efd1fc6a506488495d951d5263988d256103f6565b6401000276a45b8d602001518e606001518f6000015160405160200161041793929190611920565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161044695949392919061196f565b6040805180830381600087803b15801561045f57600080fd5b505af192505050801561048f575060408051601f3d908101601f1916820190925261048c91810190611723565b60015b6104ff573d8080156104bd576040519150601f19603f3d011682016040523d82523d6000602084013e6104c2565b606091505b505a8203945088608001516001600160a01b0316600014156104e357600080555b6104ee818487610a73565b975097509750975050505050610505565b50505050505b9193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b6020810151815160608301516000928392839283926001600160a01b03808216908416109284926105619290610a1f565b905060005a9050816001600160a01b031663128acb0830856105868c60400151610a5d565b60808d01516001600160a01b0316156105a3578c608001516105c9565b876105c25773fffd8963efd1fc6a506488495d951d5263988d256105c9565b6401000276a45b8d600001518e606001518f602001516040516020016105ea93929190611920565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161061995949392919061196f565b6040805180830381600087803b15801561063257600080fd5b505af1925050508015610662575060408051601f3d908101601f1916820190925261065f91810190611723565b60015b6104ff573d808015610690576040519150601f19603f3d011682016040523d82523d6000602084013e610695565b606091505b505a820394506104ee818487610a73565b600060608060006106b6866109b8565b67ffffffffffffffff811180156106cc57600080fd5b506040519080825280602002602001820160405280156106f6578160200160208202803683370190505b509250610702866109b8565b67ffffffffffffffff8111801561071857600080fd5b50604051908082528060200260200182016040528015610742578160200160208202803683370190505b50915060005b60008060006107568a6109c9565b9250925092506000806000806107b26040518060a00160405280896001600160a01b03168152602001886001600160a01b031681526020018f81526020018762ffffff16815260200160006001600160a01b0316815250610530565b9350935093509350828b89815181106107c757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818a89815181106107f457fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926108218e6109fa565b156102cc5761082f8e610a02565b9d5050505050505050610748565b600083138061084c5750600082135b61085557600080fd5b6000806000610863846109c9565b9250925092506108957f0000000000000000000000000000000000000000000000000000000000000000848484610b2d565b5060008060008089136108c157856001600160a01b0316856001600160a01b031610888a6000036108dc565b846001600160a01b0316866001600160a01b03161089896000035b92509250925060006108ef878787610a1f565b9050600080826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561092d57600080fd5b505afa158015610941573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109659190611820565b505050505091509150851561098b57604051848152826020820152816040820152606081fd5b600054156109a15760005484146109a157600080fd5b604051858152826020820152816040820152606081fd5b80516017601319909101045b919050565b600080806109d78482610b4c565b92506109e4846014610bfc565b90506109f1846017610b4c565b91509193909250565b516042111590565b8051606090610a1990839060179060161901610ca3565b92915050565b6000610a557f0000000000000000000000000000000000000000000000000000000000000000610a50868686610df4565b610e4a565b949350505050565b6000600160ff1b8210610a6f57600080fd5b5090565b600080600080600080876001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aed9190611820565b50939650610b0294508d9350610f2e92505050565b91975095509050610b1d6001600160a01b0389168383610fbb565b9350869250505093509350935093565b6000610b4385610b3e868686610df4565b611544565b95945050505050565b600081826014011015610b9b576040805162461bcd60e51b8152602060048201526012602482015271746f416464726573735f6f766572666c6f7760701b604482015290519081900360640190fd5b8160140183511015610bec576040805162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b604482015290519081900360640190fd5b500160200151600160601b900490565b600081826003011015610c4a576040805162461bcd60e51b8152602060048201526011602482015270746f55696e7432345f6f766572666c6f7760781b604482015290519081900360640190fd5b8160030183511015610c9a576040805162461bcd60e51b8152602060048201526014602482015273746f55696e7432345f6f75744f66426f756e647360601b604482015290519081900360640190fd5b50016003015190565b60608182601f011015610cee576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015610d36576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015610d82576040805162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015290519081900360640190fd5b606082158015610da15760405191506000825260208201604052610deb565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610dda578051835260209283019201610dc2565b5050858452601f01601f1916604052505b50949350505050565b610dfc6115af565b826001600160a01b0316846001600160a01b03161115610e1a579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600081602001516001600160a01b031682600001516001600160a01b031610610e7257600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301206001600160f81b031960a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f892c854f3add4ce5e1512b197fbeaa1302d919b4bcdce8fcd62c9cb9f892581160d5808301919091528251808303909101815260f5909101909152805191012090565b60008060008351606014610f9a57604484511015610f675760405162461bcd60e51b8152600401610f5e906119c8565b60405180910390fd5b60048401935083806020019051810190610f819190611794565b60405162461bcd60e51b8152600401610f5e91906119b5565b83806020019051810190610fae91906118b7565b9250925092509193909250565b60008060008060008060008060088b6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561100257600080fd5b505afa158015611016573d6000803e3d6000fd5b505050506040513d602081101561102c57600080fd5b5051600290810b908c900b8161103e57fe5b0560020b901d905060006101008c6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561108457600080fd5b505afa158015611098573d6000803e3d6000fd5b505050506040513d60208110156110ae57600080fd5b5051600290810b908d900b816110c057fe5b0560020b816110cb57fe5b079050600060088d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561110b57600080fd5b505afa15801561111f573d6000803e3d6000fd5b505050506040513d602081101561113557600080fd5b5051600290810b908d900b8161114757fe5b0560020b901d905060006101008e6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561118d57600080fd5b505afa1580156111a1573d6000803e3d6000fd5b505050506040513d60208110156111b757600080fd5b5051600290810b908e900b816111c957fe5b0560020b816111d457fe5b07905060008160ff166001901b8f6001600160a01b0316635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561122857600080fd5b505afa15801561123c573d6000803e3d6000fd5b505050506040513d602081101561125257600080fd5b5051161180156112d857508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561129657600080fd5b505afa1580156112aa573d6000803e3d6000fd5b505050506040513d60208110156112c057600080fd5b5051600290810b908d900b816112d257fe5b0760020b155b80156112e957508b60020b8d60020b135b945060008360ff166001901b8f6001600160a01b0316635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561133c57600080fd5b505afa158015611350573d6000803e3d6000fd5b505050506040513d602081101561136657600080fd5b5051161180156113ec57508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113aa57600080fd5b505afa1580156113be573d6000803e3d6000fd5b505050506040513d60208110156113d457600080fd5b5051600290810b908e900b816113e657fe5b0760020b155b80156113fd57508b60020b8d60020b125b95508160010b8460010b128061142957508160010b8460010b14801561142957508060ff168360ff1611155b1561143f5783995082975081985080965061144c565b8199508097508398508296505b505060001960ff87161b9150505b8560010b8760010b1361151c578560010b8760010b14156114815760001960ff858103161c165b6000818c6001600160a01b0316635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b1580156114cb57600080fd5b505afa1580156114df573d6000803e3d6000fd5b505050506040513d60208110156114f557600080fd5b505116905061150381611594565b61ffff169890980197505060019095019460001961145a565b8115611529576001880397505b8215611536576001880397505b505050505050509392505050565b60006115508383610e4a565b9050336001600160a01b03821614610a19576040805162461bcd60e51b8152602060048201526002602482015261564360f01b604482015290519081900360640190fd5b6000805b8215610a1957600019830190921691600101611598565b604080516060810182526000808252602082018190529181019190915290565b600082601f8301126115df578081fd5b81356115f26115ed82611adb565b611ab7565b818152846020838601011115611606578283fd5b816020850160208301379081016020019190915292915050565b8051600281900b81146109c457600080fd5b600060a08284031215611643578081fd5b60405160a0810181811067ffffffffffffffff8211171561166057fe5b604052905080823561167181611b2d565b8152602083013561168181611b2d565b602082015260408381013590820152606083013562ffffff811681146116a657600080fd5b60608201526116b7608084016116c3565b60808201525092915050565b80356109c481611b2d565b805161ffff811681146109c457600080fd5b600080604083850312156116f2578182fd5b823567ffffffffffffffff811115611708578283fd5b611714858286016115cf565b95602094909401359450505050565b60008060408385031215611735578182fd5b505080516020909101519092909150565b60008060006060848603121561175a578081fd5b8335925060208401359150604084013567ffffffffffffffff81111561177e578182fd5b61178a868287016115cf565b9150509250925092565b6000602082840312156117a5578081fd5b815167ffffffffffffffff8111156117bb578182fd5b8201601f810184136117cb578182fd5b80516117d96115ed82611adb565b8181528560208385010111156117ed578384fd5b610b43826020830160208601611afd565b600060a0828403121561180f578081fd5b6118198383611632565b9392505050565b600080600080600080600060e0888a03121561183a578283fd5b875161184581611b2d565b965061185360208901611620565b9550611861604089016116ce565b945061186f606089016116ce565b935061187d608089016116ce565b925060a088015160ff81168114611892578283fd5b60c089015190925080151581146118a7578182fd5b8091505092959891949750929550565b6000806000606084860312156118cb578081fd5b8351925060208401516118dd81611b2d565b91506118eb60408501611620565b90509250925092565b6000815180845261190c816020860160208601611afd565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b6001600160e81b0319166014820152921b166017820152602b0190565b6001600160a01b0391909116815260200190565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a0608082018190526000906119aa908301846118f4565b979650505050505050565b60006020825261181960208301846118f4565b60208082526010908201526f2ab732bc3832b1ba32b21032b93937b960811b604082015260600190565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015611a3b5784516001600160a01b031683529383019391830191600101611a16565b505084810360408601528651808252908201925081870190845b81811015611a7757825163ffffffff1685529383019391830191600101611a55565b5050505060609290920192909252949350505050565b9384526001600160a01b0392909216602084015263ffffffff166040830152606082015260800190565b60405181810167ffffffffffffffff81118282101715611ad357fe5b604052919050565b600067ffffffffffffffff821115611aef57fe5b50601f01601f191660200190565b60005b83811015611b18578181015183820152602001611b00565b83811115611b27576000848401525b50505050565b6001600160a01b0381168114611b4257600080fd5b5056fea2646970667358221220b68d732e0a98a782e1e910ff0868d2510b5069bdfd1230260583a9440a3eae3864736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063c45a01551161005b578063c45a0155146100f9578063c6a5026a14610101578063cdca175314610114578063fb929db21461012757610088565b80632f80bb1d1461008d5780633119049a146100b95780634aa4a4fc146100ce578063bd21704a146100d6575b600080fd5b6100a061009b3660046116e0565b61013c565b6040516100b094939291906119f2565b60405180910390f35b6100c16102f1565b6040516100b0919061195b565b6100c1610315565b6100e96100e43660046117fe565b610339565b6040516100b09493929190611a8d565b6100c161050c565b6100e961010f3660046117fe565b610530565b6100a06101223660046116e0565b6106a6565b61013a610135366004611746565b61083d565b005b6000606080600061014c866109b8565b67ffffffffffffffff8111801561016257600080fd5b5060405190808252806020026020018201604052801561018c578160200160208202803683370190505b509250610198866109b8565b67ffffffffffffffff811180156101ae57600080fd5b506040519080825280602002602001820160405280156101d8578160200160208202803683370190505b50915060005b60008060006101ec8a6109c9565b9250925092506000806000806102486040518060a00160405280886001600160a01b03168152602001896001600160a01b031681526020018f81526020018762ffffff16815260200160006001600160a01b0316815250610339565b9350935093509350828b898151811061025d57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818a898151811061028a57fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926102b78e6109fa565b156102cc576102c58e610a02565b9d506102dc565b8c9b5050505050505050506102e8565b505050505050506101de565b92959194509250565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6020810151815160608301516000928392839283926001600160a01b038082169084161092849261036a9290610a1f565b905086608001516001600160a01b03166000141561038b5760408701516000555b60005a9050816001600160a01b031663128acb0830856103ae8c60400151610a5d565b6000038c608001516001600160a01b03166000146103d0578c608001516103f6565b876103ef5773fffd8963efd1fc6a506488495d951d5263988d256103f6565b6401000276a45b8d602001518e606001518f6000015160405160200161041793929190611920565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161044695949392919061196f565b6040805180830381600087803b15801561045f57600080fd5b505af192505050801561048f575060408051601f3d908101601f1916820190925261048c91810190611723565b60015b6104ff573d8080156104bd576040519150601f19603f3d011682016040523d82523d6000602084013e6104c2565b606091505b505a8203945088608001516001600160a01b0316600014156104e357600080555b6104ee818487610a73565b975097509750975050505050610505565b50505050505b9193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b6020810151815160608301516000928392839283926001600160a01b03808216908416109284926105619290610a1f565b905060005a9050816001600160a01b031663128acb0830856105868c60400151610a5d565b60808d01516001600160a01b0316156105a3578c608001516105c9565b876105c25773fffd8963efd1fc6a506488495d951d5263988d256105c9565b6401000276a45b8d600001518e606001518f602001516040516020016105ea93929190611920565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161061995949392919061196f565b6040805180830381600087803b15801561063257600080fd5b505af1925050508015610662575060408051601f3d908101601f1916820190925261065f91810190611723565b60015b6104ff573d808015610690576040519150601f19603f3d011682016040523d82523d6000602084013e610695565b606091505b505a820394506104ee818487610a73565b600060608060006106b6866109b8565b67ffffffffffffffff811180156106cc57600080fd5b506040519080825280602002602001820160405280156106f6578160200160208202803683370190505b509250610702866109b8565b67ffffffffffffffff8111801561071857600080fd5b50604051908082528060200260200182016040528015610742578160200160208202803683370190505b50915060005b60008060006107568a6109c9565b9250925092506000806000806107b26040518060a00160405280896001600160a01b03168152602001886001600160a01b031681526020018f81526020018762ffffff16815260200160006001600160a01b0316815250610530565b9350935093509350828b89815181106107c757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818a89815181106107f457fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926108218e6109fa565b156102cc5761082f8e610a02565b9d5050505050505050610748565b600083138061084c5750600082135b61085557600080fd5b6000806000610863846109c9565b9250925092506108957f0000000000000000000000000000000000000000000000000000000000000000848484610b2d565b5060008060008089136108c157856001600160a01b0316856001600160a01b031610888a6000036108dc565b846001600160a01b0316866001600160a01b03161089896000035b92509250925060006108ef878787610a1f565b9050600080826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561092d57600080fd5b505afa158015610941573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109659190611820565b505050505091509150851561098b57604051848152826020820152816040820152606081fd5b600054156109a15760005484146109a157600080fd5b604051858152826020820152816040820152606081fd5b80516017601319909101045b919050565b600080806109d78482610b4c565b92506109e4846014610bfc565b90506109f1846017610b4c565b91509193909250565b516042111590565b8051606090610a1990839060179060161901610ca3565b92915050565b6000610a557f0000000000000000000000000000000000000000000000000000000000000000610a50868686610df4565b610e4a565b949350505050565b6000600160ff1b8210610a6f57600080fd5b5090565b600080600080600080876001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aed9190611820565b50939650610b0294508d9350610f2e92505050565b91975095509050610b1d6001600160a01b0389168383610fbb565b9350869250505093509350935093565b6000610b4385610b3e868686610df4565b611544565b95945050505050565b600081826014011015610b9b576040805162461bcd60e51b8152602060048201526012602482015271746f416464726573735f6f766572666c6f7760701b604482015290519081900360640190fd5b8160140183511015610bec576040805162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b604482015290519081900360640190fd5b500160200151600160601b900490565b600081826003011015610c4a576040805162461bcd60e51b8152602060048201526011602482015270746f55696e7432345f6f766572666c6f7760781b604482015290519081900360640190fd5b8160030183511015610c9a576040805162461bcd60e51b8152602060048201526014602482015273746f55696e7432345f6f75744f66426f756e647360601b604482015290519081900360640190fd5b50016003015190565b60608182601f011015610cee576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015610d36576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015610d82576040805162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015290519081900360640190fd5b606082158015610da15760405191506000825260208201604052610deb565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610dda578051835260209283019201610dc2565b5050858452601f01601f1916604052505b50949350505050565b610dfc6115af565b826001600160a01b0316846001600160a01b03161115610e1a579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600081602001516001600160a01b031682600001516001600160a01b031610610e7257600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301206001600160f81b031960a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f892c854f3add4ce5e1512b197fbeaa1302d919b4bcdce8fcd62c9cb9f892581160d5808301919091528251808303909101815260f5909101909152805191012090565b60008060008351606014610f9a57604484511015610f675760405162461bcd60e51b8152600401610f5e906119c8565b60405180910390fd5b60048401935083806020019051810190610f819190611794565b60405162461bcd60e51b8152600401610f5e91906119b5565b83806020019051810190610fae91906118b7565b9250925092509193909250565b60008060008060008060008060088b6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561100257600080fd5b505afa158015611016573d6000803e3d6000fd5b505050506040513d602081101561102c57600080fd5b5051600290810b908c900b8161103e57fe5b0560020b901d905060006101008c6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561108457600080fd5b505afa158015611098573d6000803e3d6000fd5b505050506040513d60208110156110ae57600080fd5b5051600290810b908d900b816110c057fe5b0560020b816110cb57fe5b079050600060088d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561110b57600080fd5b505afa15801561111f573d6000803e3d6000fd5b505050506040513d602081101561113557600080fd5b5051600290810b908d900b8161114757fe5b0560020b901d905060006101008e6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561118d57600080fd5b505afa1580156111a1573d6000803e3d6000fd5b505050506040513d60208110156111b757600080fd5b5051600290810b908e900b816111c957fe5b0560020b816111d457fe5b07905060008160ff166001901b8f6001600160a01b0316635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561122857600080fd5b505afa15801561123c573d6000803e3d6000fd5b505050506040513d602081101561125257600080fd5b5051161180156112d857508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561129657600080fd5b505afa1580156112aa573d6000803e3d6000fd5b505050506040513d60208110156112c057600080fd5b5051600290810b908d900b816112d257fe5b0760020b155b80156112e957508b60020b8d60020b135b945060008360ff166001901b8f6001600160a01b0316635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561133c57600080fd5b505afa158015611350573d6000803e3d6000fd5b505050506040513d602081101561136657600080fd5b5051161180156113ec57508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113aa57600080fd5b505afa1580156113be573d6000803e3d6000fd5b505050506040513d60208110156113d457600080fd5b5051600290810b908e900b816113e657fe5b0760020b155b80156113fd57508b60020b8d60020b125b95508160010b8460010b128061142957508160010b8460010b14801561142957508060ff168360ff1611155b1561143f5783995082975081985080965061144c565b8199508097508398508296505b505060001960ff87161b9150505b8560010b8760010b1361151c578560010b8760010b14156114815760001960ff858103161c165b6000818c6001600160a01b0316635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b1580156114cb57600080fd5b505afa1580156114df573d6000803e3d6000fd5b505050506040513d60208110156114f557600080fd5b505116905061150381611594565b61ffff169890980197505060019095019460001961145a565b8115611529576001880397505b8215611536576001880397505b505050505050509392505050565b60006115508383610e4a565b9050336001600160a01b03821614610a19576040805162461bcd60e51b8152602060048201526002602482015261564360f01b604482015290519081900360640190fd5b6000805b8215610a1957600019830190921691600101611598565b604080516060810182526000808252602082018190529181019190915290565b600082601f8301126115df578081fd5b81356115f26115ed82611adb565b611ab7565b818152846020838601011115611606578283fd5b816020850160208301379081016020019190915292915050565b8051600281900b81146109c457600080fd5b600060a08284031215611643578081fd5b60405160a0810181811067ffffffffffffffff8211171561166057fe5b604052905080823561167181611b2d565b8152602083013561168181611b2d565b602082015260408381013590820152606083013562ffffff811681146116a657600080fd5b60608201526116b7608084016116c3565b60808201525092915050565b80356109c481611b2d565b805161ffff811681146109c457600080fd5b600080604083850312156116f2578182fd5b823567ffffffffffffffff811115611708578283fd5b611714858286016115cf565b95602094909401359450505050565b60008060408385031215611735578182fd5b505080516020909101519092909150565b60008060006060848603121561175a578081fd5b8335925060208401359150604084013567ffffffffffffffff81111561177e578182fd5b61178a868287016115cf565b9150509250925092565b6000602082840312156117a5578081fd5b815167ffffffffffffffff8111156117bb578182fd5b8201601f810184136117cb578182fd5b80516117d96115ed82611adb565b8181528560208385010111156117ed578384fd5b610b43826020830160208601611afd565b600060a0828403121561180f578081fd5b6118198383611632565b9392505050565b600080600080600080600060e0888a03121561183a578283fd5b875161184581611b2d565b965061185360208901611620565b9550611861604089016116ce565b945061186f606089016116ce565b935061187d608089016116ce565b925060a088015160ff81168114611892578283fd5b60c089015190925080151581146118a7578182fd5b8091505092959891949750929550565b6000806000606084860312156118cb578081fd5b8351925060208401516118dd81611b2d565b91506118eb60408501611620565b90509250925092565b6000815180845261190c816020860160208601611afd565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b6001600160e81b0319166014820152921b166017820152602b0190565b6001600160a01b0391909116815260200190565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a0608082018190526000906119aa908301846118f4565b979650505050505050565b60006020825261181960208301846118f4565b60208082526010908201526f2ab732bc3832b1ba32b21032b93937b960811b604082015260600190565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015611a3b5784516001600160a01b031683529383019391830191600101611a16565b505084810360408601528651808252908201925081870190845b81811015611a7757825163ffffffff1685529383019391830191600101611a55565b5050505060609290920192909252949350505050565b9384526001600160a01b0392909216602084015263ffffffff166040830152606082015260800190565b60405181810167ffffffffffffffff81118282101715611ad357fe5b604052919050565b600067ffffffffffffffff821115611aef57fe5b50601f01601f191660200190565b60005b83811015611b18578181015183820152602001611b00565b83811115611b27576000848401525b50505050565b6001600160a01b0381168114611b4257600080fd5b5056fea2646970667358221220b68d732e0a98a782e1e910ff0868d2510b5069bdfd1230260583a9440a3eae3864736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
