{
  "_format": "hh-sol-artifact-1",
  "contractName": "ConcentratedLiquidityPoolFactory",
  "sourceName": "contracts/pool/concentrated/ConcentratedLiquidityPoolFactory.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_masterDeployer",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "InvalidTokenOrder",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UnauthorisedDeployer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroAddress",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "configAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_deployData",
          "type": "bytes"
        }
      ],
      "name": "deployPool",
      "outputs": [
        {
          "internalType": "address",
          "name": "pool",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token0",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token1",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "startIndex",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "count",
          "type": "uint256"
        }
      ],
      "name": "getPools",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "pairPools",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "masterDeployer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "pools",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token0",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token1",
          "type": "address"
        }
      ],
      "name": "poolsCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "count",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234801561001057600080fd5b50604051615eba380380615eba83398101604081905261002f9161006d565b806001600160a01b0381166100575760405163d92e233d60e01b815260040160405180910390fd5b60601b6001600160601b0319166080525061009d565b60006020828403121561007f57600080fd5b81516001600160a01b038116811461009657600080fd5b9392505050565b60805160601c615df16100c96000396000818161015a0152818161039e01526105540152615df16000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c806371a25812116200005657806371a25812146200012e578063cf58879a1462000154578063f6ab6d99146200017c57600080fd5b8063169c4cef146200008057806327c3cae114620000c15780635bc93d6c14620000d8575b600080fd5b62000097620000913660046200097a565b620001b5565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b62000097620000d236600462000a25565b62000208565b6200011f620000e93660046200093c565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825291909152205490565b604051908152602001620000b8565b620001456200013f366004620009c0565b62000413565b604051620000b8919062000afe565b620000977f000000000000000000000000000000000000000000000000000000000000000081565b620000976200018d36600462000a0b565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60006020528260005260406000206020528160005260406000208181548110620001de57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16925083915050565b60008060008060008086806020019051810190620002279190620008c5565b945094509450945094508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611156200026a579293925b6040805173ffffffffffffffffffffffffffffffffffffffff80881660208301528087169282019290925262ffffff8086166060830152918416608082015290821660a082015260c001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815260028084526060840190925298506000919081602001602082028036833701905050905085816000815181106200031a576200031a62000c74565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505084816001815181106200036b576200036b62000c74565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910182015288519089012060405181908a907f000000000000000000000000000000000000000000000000000000000000000090620003c9906200089e565b620003d692919062000b5a565b8190604051809103906000f5905080158015620003f7573d6000803e3d6000fd5b509750620004078883836200053c565b50505050505050919050565b60608167ffffffffffffffff81111562000431576200043162000ca3565b6040519080825280602002602001820160405280156200045b578160200160208202803683370190505b50905060005b82811015620005335773ffffffffffffffffffffffffffffffffffffffff808716600090815260208181526040808320938916835292905220620004a6828662000bee565b81548110620004b957620004b962000c74565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110620004f957620004f962000c74565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152806200052a8162000c09565b91505062000461565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614620005ac576040517f03781a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555b600183510381101562000898578281600101815181106200061e576200061e62000c74565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1683828151811062000651576200065162000c74565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1610620006a7576040517f3f06bf8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015b83518110156200088e57600080858481518110620006ce57620006ce62000c74565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085838151811062000727576200072762000c74565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409091016000908120805460018101825590825291812090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915584518190869084908110620007b657620007b662000c74565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008584815181106200080f576200080f62000c74565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604090910160009081208054600180820183559183529290912090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915501620006ac565b50600101620005f9565b50505050565b6150c38062000cf983390190565b805162ffffff81168114620008c057600080fd5b919050565b600080600080600060a08688031215620008de57600080fd5b8551620008eb8162000cd2565b6020870151909550620008fe8162000cd2565b93506200090e60408701620008ac565b92506060860151620009208162000cd2565b91506200093060808701620008ac565b90509295509295909350565b600080604083850312156200095057600080fd5b82356200095d8162000cd2565b915060208301356200096f8162000cd2565b809150509250929050565b6000806000606084860312156200099057600080fd5b83356200099d8162000cd2565b92506020840135620009af8162000cd2565b929592945050506040919091013590565b60008060008060808587031215620009d757600080fd5b8435620009e48162000cd2565b93506020850135620009f68162000cd2565b93969395505050506040820135916060013590565b60006020828403121562000a1e57600080fd5b5035919050565b60006020828403121562000a3857600080fd5b813567ffffffffffffffff8082111562000a5157600080fd5b818401915084601f83011262000a6657600080fd5b81358181111562000a7b5762000a7b62000ca3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000ac45762000ac462000ca3565b8160405282815287602084870101111562000ade57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6020808252825182820181905260009190848201906040850190845b8181101562000b4e57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162000b1a565b50909695505050505050565b604081526000835180604084015260005b8181101562000b8a576020818701810151606086840101520162000b6b565b8181111562000b9d576000606083860101525b5073ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b6000821982111562000c045762000c0462000c45565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000c3e5762000c3e62000c45565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811462000cf557600080fd5b5056fe6101806040523480156200001257600080fd5b50604051620050c3380380620050c3833981016040819052620000359162000704565b6000806000806000868060200190518101906200005391906200068d565b9398509196509450925090506001600160a01b038516620000875760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038516301415620000b25760405163c1ab6dc160e01b815260040160405180910390fd5b6001600160a01b038416301415620000dd5760405163c1ab6dc160e01b815260040160405180910390fd5b620186a062ffffff84161115620001075760405163da7459b760e01b815260040160405180910390fd5b6001600160601b0319606086811b82166101405285901b16610160526001600160e81b031960e884811b821660a052600780546001600160a01b0386166001600160a01b031990911617905582901b16608052604051636e23d2e160e11b815262ffffff8216600482015273__$ce5bd159ffa25aa093db868fa3464622ad$__9063dc47a5c29060240160206040518083038186803b158015620001aa57600080fd5b505af4158015620001bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e59190620007f5565b60801b6001600160801b03191660c0908152604080519182019052620d89e719808252602082019062000218906200083a565b600290810b825260006020808401829052604080850183905260608086018490526080958601849052620d89e719938490526009835286517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebac8054898601518a8601516001600160801b0316660100000000000002600160301b600160b01b0319918a0b62ffffff90811663010000000265ffffffffffff1990941695909a0b90991693909317179190911695909517909455928501517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebad55928401517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebae5560a0909301517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebaf80546001600160a01b03929092166001600160a01b0319909216919091179055805160c0810190915282815291908201906200037a906200083a565b60020b815260200160006001600160801b03168152602001600081526020016000815260200160006001600160a01b031681525060096000620d89e719620003c2906200083a565b600290810b810b825260208083019390935260409182016000208451815486860151878601516001600160801b0316660100000000000002600160301b600160b01b031991860b62ffffff90811663010000000265ffffffffffff1990941694870b169390931791909117161781556060850151600182015560808501519181019190915560a090930151600390930180546001600160a01b039485166001600160a01b031990911617905560078054621e4ec360a31b62ffffff60a01b199091161790558051634da3182760e01b8152905192891692634da3182792600480840193919291829003018186803b158015620004bd57600080fd5b505afa158015620004d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f8919062000666565b6001600160a01b0316610100816001600160a01b031660601b81525050856001600160a01b0316630c0a0cd26040518163ffffffff1660e01b815260040160206040518083038186803b1580156200054f57600080fd5b505afa15801562000564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058a919062000666565b6001600160a01b031660e0816001600160a01b031660601b81525050856001600160a01b031663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b158015620005e057600080fd5b505afa158015620005f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061b919062000820565b600455505050505060601b6001600160601b031916610120525060016008556200089b565b80516200064d8162000882565b919050565b805162ffffff811681146200064d57600080fd5b6000602082840312156200067957600080fd5b8151620006868162000882565b9392505050565b600080600080600060a08688031215620006a657600080fd5b8551620006b38162000882565b6020870151909550620006c68162000882565b9350620006d66040870162000652565b92506060860151620006e88162000882565b9150620006f86080870162000652565b90509295509295909350565b600080604083850312156200071857600080fd5b82516001600160401b03808211156200073057600080fd5b818501915085601f8301126200074557600080fd5b8151818111156200075a576200075a6200086c565b604051601f8201601f19908116603f011681019083821181831017156200078557620007856200086c565b81604052828152602093508884848701011115620007a257600080fd5b600091505b82821015620007c65784820184015181830185015290830190620007a7565b82821115620007d85760008484830101525b9550620007ea91505085820162000640565b925050509250929050565b6000602082840312156200080857600080fd5b81516001600160801b03811681146200068657600080fd5b6000602082840312156200083357600080fd5b5051919050565b60008160020b627fffff198114156200086357634e487b7160e01b600052601160045260246000fd5b60000392915050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200089857600080fd5b50565b60805160e81c60a05160e81c60c05160801c60e05160601c6101005160601c6101205160601c6101405160601c6101605160601c61467662000a4d6000396000818161059c01528181610e5e01528181610e8701528181610fb6015281816112ba015281816113cb015281816116b60152818161193d01528181611c8c01528181611e86015281816125180152818161312b0152818161381d01526139a101526000818161057401528181610ebe01528181610f5601528181610f7f015281816112510152818161136201528181611648015281816118c101528181611c0501528181611db0015281816123d101528181612fe80152818161371f01526138cd01526000818161054c0152612103015260008181610524015281816133310152818161340e01528181613763015281816138610152818161390a015281816139de0152613c080152600081816104fc01528181612405015261254c01526000818161046e01526136640152600081816104be0152610baa01526000818161049601528181610c4001528181610cce01528181613a1401528181613a7a01528181613ae80152613b4e01526146766000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80639da12096116100ee578063bcdb4dad11610097578063cf78756b11610071578063cf78756b146105db578063f30dba93146105e4578063fb39d628146106bb578063fb5d80b3146106ce57600080fd5b8063bcdb4dad14610457578063c14ad802146105ca578063caa4b46a146105d357600080fd5b8063aaca1b4d116100c8578063aaca1b4d146103ae578063acfe88f81461042f578063af8c09bf146101a857600080fd5b80639da120961461037e578063a69840a814610387578063a8f1f52e146101a857600080fd5b80636289db82116101505780637ba0e2e71161012a5780637ba0e2e7146103165780638c347f9b1461032957806392bc32191461037457600080fd5b80636289db821461029557806367e4ac2c146102b75780636d59d802146102cc57600080fd5b80632a07b6c7116101815780632a07b6c714610262578063499a3c50146101a8578063627dd56a1461028257600080fd5b8063053da1c8146101a85780630902f1ac146101ce5780631a68650214610225575b600080fd5b6101bb6101b6366004613d50565b610700565b6040519081526020015b60405180910390f35b6006546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004165b604080516fffffffffffffffffffffffffffffffff9384168152929091166020830152016101c5565b600054610241906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016101c5565b610275610270366004613d50565b610707565b6040516101c59190614195565b6101bb610290366004613dc2565b61070e565b6102a86102a3366004613f55565b611056565b6040516101c5939291906141a8565b6102bf611626565b6040516101c5919061413b565b6001546040805173ffffffffffffffffffffffffffffffffffffffff831681527401000000000000000000000000000000000000000090920463ffffffff166020830152016101c5565b6101bb610324366004613d50565b611725565b6007546040805173ffffffffffffffffffffffffffffffffffffffff8316815274010000000000000000000000000000000000000000909204600290810b900b6020830152016101c5565b61037c612101565b005b6101bb60025481565b6101bb7f54726964656e743a436f6e63656e7472617465644c697175696469747900000081565b6104016103bc366004613cb0565b600a6020908152600093845260408085208252928452828420905282529020805460018201546002909201546fffffffffffffffffffffffffffffffff909116919083565b604080516fffffffffffffffffffffffffffffffff90941684526020840192909252908201526060016101c5565b61044261043d366004613ecb565b6121a4565b604080519283526020830191909152016101c5565b604080516fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815262ffffff7f0000000000000000000000000000000000000000000000000000000000000000811660208301527f0000000000000000000000000000000000000000000000000000000000000000169181019190915273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660608301527f0000000000000000000000000000000000000000000000000000000000000000811660808301527f0000000000000000000000000000000000000000000000000000000000000000811660a08301527f0000000000000000000000000000000000000000000000000000000000000000811660c08301527f00000000000000000000000000000000000000000000000000000000000000001660e0820152610100016101c5565b6101bb60045481565b6101fc6122bd565b6101bb60035481565b61065a6105f2366004613e91565b60096020526000908152604090208054600182015460028084015460039094015483820b946301000000850490920b93660100000000000090046fffffffffffffffffffffffffffffffff1692919073ffffffffffffffffffffffffffffffffffffffff1686565b60408051600297880b81529590960b60208601526fffffffffffffffffffffffffffffffff909316948401949094526060830152608082019290925273ffffffffffffffffffffffffffffffffffffffff90911660a082015260c0016101c5565b6104426106c9366004613f04565b61257b565b6005546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166101fc565b6000806000fd5b6060600080fd5b60006008546002141561074d576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026008819055506000806000808580602001905181019061076f9190613cfb565b93509350935093506000604051806101200160405280600081526020016000815260200160008152602001866107a7576002546107ab565b6003545b8152602001866107bd576003546107c1565b6002545b815260075473ffffffffffffffffffffffffffffffffffffffff1660208201526000546fffffffffffffffffffffffffffffffff166040820152606081018690526080018661084b57600754740100000000000000000000000000000000000000009004600290810b810b810b60009081526009602052604090205463010000009004900b61086a565b60075474010000000000000000000000000000000000000000900460020b5b60020b9052600154909150429074010000000000000000000000000000000000000000900463ffffffff168082039082148015906108bb57506000546fffffffffffffffffffffffffffffffff1615155b1561097c57600180547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8516021790556000546fffffffffffffffffffffffffffffffff16608082901b8161092e5761092e614571565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000081169390920473ffffffffffffffffffffffffffffffffffffffff928316019091169190911790555b50505b60e081015115610d0d576000610999826101000151612708565b73ffffffffffffffffffffffffffffffffffffffff1690506000808715610ae65760006109d18560c00151858760a001516000612a9b565b9050808560e0015111610aa657600060608660c00151901b90506000610a19828860a001518960e001518a60a00151610a0a91906143c0565b610a149086614320565b612af5565b9050808611158015610a2e57508660a0015181105b610a7957610a60828860e001518960a0015185610a4b91906143ac565b610a559190614320565b808204910615150190565b73ffffffffffffffffffffffffffffffffffffffff1690505b610a8e8760c00151828960a001516000612b51565b60a0880191909152600060e08801529350610ae09050565b610abb8560c00151858760a001516000612b51565b60a0860185905260e086018051919450600193508291610adc90839061445b565b9052505b50610ba4565b6000610afd8560c001518660a00151866000612b51565b9050808560e0015111610b68576000610b2c8660e001516c010000000000000000000000008860c00151612b96565b8660a00151610b3b9190614320565b9050610b528660c001518760a00151836000612a9b565b60a0870191909152600060e08701529250610ba2565b610b7d8560c001518660a00151866000612a9b565b60a0860185905260e086018051919450600193508291610b9e90839061445b565b9052505b505b610be6827f00000000000000000000000000000000000000000000000000000000000000006004548760c0015188602001518e8a604001518b60600151612c67565b60608801526040870152602086019190915298508015610d0557610c646009856101000151600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760c00151886060015189608001518e7f0000000000000000000000000000000000000000000000000000000000000000612d0c565b600290810b900b61010086015260c08501819052610d0557610c8a846101000151612708565b73ffffffffffffffffffffffffffffffffffffffff90811660a086015261010085015160015460c087015160608801516080890151610cf29560099594169291908e7f0000000000000000000000000000000000000000000000000000000000000000612d0c565b600290810b900b61010086015260c08501525b50505061097f565b60a0810151600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055600085610d8057610100820151600290810b810b600090815260096020526040902054900b610d87565b8161010001515b90508060020b600760149054906101000a900460020b60020b14610e3557600780547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000062ffffff600285900b160217905560c0820151600080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9092169190911790555b610e40868689612fdb565b610e53868360600151846040015161321d565b8515610f5157610e857f00000000000000000000000000000000000000000000000000000000000000008886866132ca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062888b604051610f44929190918252602082015260400190565b60405180910390a4611045565b610f7d7f00000000000000000000000000000000000000000000000000000000000000008886866132ca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062888b60405161103c929190918252602082015260400190565b60405180910390a45b505060016008555092949350505050565b6060806000806000806110688b612708565b905060006110758b612708565b60075490915073ffffffffffffffffffffffffffffffffffffffff908116908316811180156110cf57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b1561111857600080546fffffffffffffffffffffffffffffffff8082168e9003167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b61117a8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168e6fffffffffffffffffffffffffffffffff166000613472565b6fffffffffffffffffffffffffffffffff9182169650811694506f7fffffffffffffffffffffffffffffff908c16111592506111e5915050576040517f35278d1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806111fc338d8d6111f78e614494565b6134d0565b6040805160028082526060820190925291985092945090925090816020015b604080518082019091526000808252602082015281526020019060019003908161121b57905050965060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200185815250876000815181106112a2576112a26145a0565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001848152508760018151811061130b5761130b6145a0565b60209081029190910101526040805160028082526060820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161132c57905050955060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200183815250866000815181106113b3576113b36145a0565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001828152508660018151811061141c5761141c6145a0565b60209081029190910101526006805493909101700100000000000000000000000000000000949092016fffffffffffffffffffffffffffffffff80851682900381167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951685178690048116849003169094029092179091556114a2878383896136dc565b6007546040517f3c5474df0000000000000000000000000000000000000000000000000000000081526009600482015260028c810b60248301528b810b60448301526fffffffffffffffffffffffffffffffff8b16606483015274010000000000000000000000000000000000000000909204820b90910b608482015273__$ce5bd159ffa25aa093db868fa3464622ad$__90633c5474df9060a40160206040518083038186803b15801561155657600080fd5b505af415801561156a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158e9190613eae565b6007805460029290920b62ffffff1674010000000000000000000000000000000000000000027fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff909216919091179055604080518381526020810183905233917f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a910160405180910390a25050955095509592505050565b60408051600280825260608083018452926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061167a5761167a6145a0565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106116e8576116e86145a0565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b600060085460021415611764576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600855600061177783850185613fdb565b905060006117888260200151612708565b73ffffffffffffffffffffffffffffffffffffffff16905060006117af8360600151612708565b60075460a085015160808601516040517faec6cbfe0000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff9485166024820181905294909316604484018190526064840192909252608483015291925073__$df040e0a7bda43e0bcaf2b8c2beb7d11e8$__9063aec6cbfe9060a40160206040518083038186803b15801561185a57600080fd5b505af415801561186e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189291906140a2565b94506000806118b0866101000151876020015188606001518a6134d0565b5090925090508115611932576118ee7f00000000000000000000000000000000000000000000000000000000000000008388610100015160006132ca565b600680546fffffffffffffffffffffffffffffffff808216859003167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b80156119a25761196a7f00000000000000000000000000000000000000000000000000000000000000008288610100015160006132ca565b600680546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000808304821685900382160291161790555b505080831080156119b257508181105b156119fa57600080546fffffffffffffffffffffffffffffffff8082168801167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b611a0c84602001518560600151613a0f565b60028054600354600154875160208901516040808b015160608c015160075492517f33440084000000000000000000000000000000000000000000000000000000008152600960048201526024810198909852604488019690965273ffffffffffffffffffffffffffffffffffffffff948516606488015292870b608487015290860b60a486015290850b60c485015291840b60e48401526fffffffffffffffffffffffffffffffff891661010484015274010000000000000000000000000000000000000000909104830b90920b61012482015290821661014482015273__$ce5bd159ffa25aa093db868fa3464622ad$__906333440084906101640160206040518083038186803b158015611b2257600080fd5b505af4158015611b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5a9190613eae565b600760146101000a81548162ffffff021916908360020b62ffffff160217905550600080611b8c8585858a6001613472565b6040805160028082526060820190925292945090925060009190816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611bab57905050905060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018860c0015115158152602001846fffffffffffffffffffffffffffffffff1681525081600081518110611c7457611c746145a0565b602002602001018190525060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018860e0015115158152602001836fffffffffffffffffffffffffffffffff1681525081600181518110611cfb57611cfb6145a0565b60200260200101819052503373ffffffffffffffffffffffffffffffffffffffff1663ced10b4982604051602001611d3391906141de565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401611d5e919061424f565b600060405180830381600087803b158015611d7857600080fd5b505af1158015611d8c573d6000803e3d6000fd5b5050505050816fffffffffffffffffffffffffffffffff16600014611e6957611dd47f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006546fffffffffffffffffffffffffffffffff9081168401161115611e26576040517f840463aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff8082168501167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b6fffffffffffffffffffffffffffffffff811615611f4757611eaa7f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006546fffffffffffffffffffffffffffffffff70010000000000000000000000000000000090910481168301161115611f10576040517fe430204200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216850182160291161790555b600080611f5c886020015189606001516121a4565b6101208a0151919350915073ffffffffffffffffffffffffffffffffffffffff16156120825761010088015161012089015160208a015160608b01516101408c01516040517f6d59ebe100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152600293840b60248201529190920b60448201526fffffffffffffffffffffffffffffffff8d1660648201526084810186905260a4810185905260c4810191909152911690636d59ebe19060e401602060405180830381600087803b15801561204857600080fd5b505af115801561205c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208091906140a2565b505b610100880151604080516fffffffffffffffffffffffffffffffff80881682528616602082015273ffffffffffffffffffffffffffffffffffffffff909216917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a2505060016008555094979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b15801561216757600080fd5b505afa15801561217b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219f91906140a2565b600455565b600754600283810b80820b60009081526009602052604080822086850b850b835290822084546003549396879674010000000000000000000000000000000000000000909104810b95939492939192918791829182918291908a900b1261221857876001015493508760020154925061223c565b6001880154612227908761445b565b9350876002015485612239919061445b565b92505b8b60020b8960020b121561225b5750506001850154600286015461227f565b600187015461226a908761445b565b915086600201548561227c919061445b565b90505b8161228a858861445b565b612294919061445b565b9a50806122a1848761445b565b6122ab919061445b565b99505050505050505050509250929050565b600080600854600214156122fd576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260085560055460016fffffffffffffffffffffffffffffffff909116111561242b57600554612342906001906fffffffffffffffffffffffffffffffff166143fd565b600580547fffffffffffffffffffffffffffffffff000000000000000000000000000000001660011790556006805491935083916000906123969084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555061242b7f0000000000000000000000000000000000000000000000000000000000000000836fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000060006132ca565b60055460017001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115612572576005546124929060019070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166143fd565b600580547001000000000000000000000000000000006fffffffffffffffffffffffffffffffff918216811790925560068054939450849390926010926124dd9286929004166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506125727f0000000000000000000000000000000000000000000000000000000000000000826fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000060006132ca565b60016008559091565b600080600854600214156125bb576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026008556125cd33878760006134d0565b5090925090506125df848383866136dc565b600680548391906000906126069084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080600660108282829054906101000a90046fffffffffffffffffffffffffffffffff1661266991906143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f4a1c185b7b5da020829d63d69222d8602aa53a6b7800a73ee6e3e15a625d863d83836040516126f0929190918252602082015260400190565b60405180910390a26001600855909590945092505050565b60008060008360020b1261271f578260020b61272c565b8260020b61272c90614509565b90506127577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186144d3565b62ffffff16811115612795576040517ff87dc40c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182166127b6577001000000000000000000000000000000006127c8565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156127fc576ffff97272373d413259a46990580e213a0260801c5b600482161561281b576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561283a576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612859576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612878576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612897576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156128b6576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156128d6576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156128f6576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612916576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612936576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612956576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612976576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612996576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156129b6576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156129d7576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156129f7576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612a16576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612a33576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612a7257807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81612a6e57612a6e614571565b0490505b640100000000810615612a86576001612a89565b60005b60ff16602082901c0192505050919050565b60008115612aca57612ac3612ab7606087901b86860386612af5565b85808204910615150190565b9050612aed565b83612adc606087901b86860386612b96565b81612ae957612ae9614571565b0490505b949350505050565b6000612b02848484612b96565b90508180612b1257612b12614571565b83850915612b4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110612b4657600080fd5b6001015b9392505050565b60008115612b7357612ac3858585036c01000000000000000000000000612af5565b612b8d858585036c01000000000000000000000000612b96565b95945050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8587098587029250828110838203039150508060001415612bee5760008411612be357600080fd5b508290049050612b4a565b808411612bfa57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000806000806000612c828d8d62ffffff16620f4240612af5565b9050612c8e818a614320565b9850612c9a818e61445b565b612ca49089614320565b97506000612cb5828d612710612af5565b9050612cc18189614320565b9750612ccd818361445b565b9150612ceb827001000000000000000000000000000000008d612b96565b612cf59088614320565b999e989d50969b5097995095975050505050505050565b600287810b900b6000908152602089905260408120600301548190612d479073ffffffffffffffffffffffffffffffffffffffff168961442e565b60028a810b900b600090815260208c90526040902060030180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790558315612eb9576002612db4848b614338565b612dbe9190614472565b60020b612e0857600289810b900b600090815260208b90526040902054612e0190660100000000000090046fffffffffffffffffffffffffffffffff168861445b565b9650612e47565b600289810b900b600090815260208b90526040902054612e4490660100000000000090046fffffffffffffffffffffffffffffffff1688614320565b96505b600289810b900b600090815260208b90526040902060010154612e6a908661445b565b60028a810b810b600090815260208d90526040902060018101929092550154612e93908761445b565b6002998a0b8a0b600090815260208c905260409020808b01919091555490980b97612fcd565b6002612ec5848b614338565b612ecf9190614472565b60020b612f1957600289810b900b600090815260208b90526040902054612f1290660100000000000090046fffffffffffffffffffffffffffffffff1688614320565b9650612f58565b600289810b900b600090815260208b90526040902054612f5590660100000000000090046fffffffffffffffffffffffffffffffff168861445b565b96505b600289810b810b600090815260208c9052604090200154612f79908661445b565b60028a810b810b600090815260208d9052604090209081019190915560010154612fa3908761445b565b6002998a0b8a0b600090815260208c9052604090206001810191909155546301000000900490980b975b509498969750505050505050565b821561312457600061300c7f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006549091506000906130329085906fffffffffffffffffffffffffffffffff166142ec565b905081816fffffffffffffffffffffffffffffffff161115613080576040517f840463aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff838116919091178083558592916010916130e79185917001000000000000000000000000000000009004166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505050505050565b600061314f7f0000000000000000000000000000000000000000000000000000000000000000613bba565b60065490915060009061318990859070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166142ec565b905081816fffffffffffffffffffffffffffffffff1611156131d7576040517fe430204200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000008483160281811784558693926000926130e792869216176143fd565b821561329e5760038290556005805482919060109061326390849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166142ec565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550505050565b6002829055600580548291906000906132639084906fffffffffffffffffffffffffffffffff166142ec565b80156133b4576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4015b6040805180830381600087803b15801561337557600080fd5b505af1158015613389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ad91906140bb565b505061346c565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301528381166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc906084015b600060405180830381600087803b15801561345357600080fd5b505af1158015613467573d6000803e3d6000fd5b505050505b50505050565b60008084861161348f5761348884888886612b51565b90506134c6565b8685116134a9576134a284888886612a9b565b91506134c6565b6134b584868886612a9b565b91506134c384888786612b51565b90505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a60209081526040808320600287810b810b855290835281842086820b90910b8452909152812081908190818061352489896121a4565b9150915061356683600101548361353b919061445b565b84546fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000612b96565b955061357b83600201548261353b919061445b565b83549095506fffffffffffffffffffffffffffffffff1693506000600f88900b1215613605576135aa87614494565b835484906000906135ce9084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b600087600f0b13156136c1578254879084906000906136379084906fffffffffffffffffffffffffffffffff166142ec565b82546101009290920a6fffffffffffffffffffffffffffffffff81810219909316918316021790915584547f000000000000000000000000000000000000000000000000000000000000000082169116111590506136c1576040517fb03425ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018301919091556002909101559196909550909350915050565b8015613890576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152858116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137de91906140bb565b50506040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152858116604483015260006064830152608482018490527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a40161335c565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301528581166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b15801561394e57600080fd5b505af1158015613962573d6000803e3d6000fd5b50506040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301528781166044830152606482018690527f000000000000000000000000000000000000000000000000000000000000000016925063f18d03cc9150608401613439565b613a397f000000000000000000000000000000000000000000000000000000000000000083614472565b60020b15613a73576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002613a9f7f000000000000000000000000000000000000000000000000000000000000000084614338565b613aa99190614472565b60020b15613ae3576040517ffdf1420200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613b0d7f000000000000000000000000000000000000000000000000000000000000000082614472565b60020b15613b47576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002613b737f000000000000000000000000000000000000000000000000000000000000000083614338565b613b7d9190614472565b60020b613bb6576040517fa9778c6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523060248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b158015613c4c57600080fd5b505afa158015613c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c8491906140a2565b92915050565b8035613c95816145fe565b919050565b8035613c9581614623565b8035613c9581614631565b600080600060608486031215613cc557600080fd5b8335613cd0816145fe565b92506020840135613ce081614631565b91506040840135613cf081614631565b809150509250925092565b60008060008060808587031215613d1157600080fd5b8451613d1c81614623565b602086015160408701519195509350613d34816145fe565b6060860151909250613d4581614623565b939692955090935050565b60008060208385031215613d6357600080fd5b823567ffffffffffffffff80821115613d7b57600080fd5b818501915085601f830112613d8f57600080fd5b813581811115613d9e57600080fd5b866020828501011115613db057600080fd5b60209290920196919550909350505050565b600060208284031215613dd457600080fd5b813567ffffffffffffffff80821115613dec57600080fd5b818401915084601f830112613e0057600080fd5b813581811115613e1257613e126145cf565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715613e5857613e586145cf565b81604052828152876020848701011115613e7157600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208284031215613ea357600080fd5b8135612b4a81614631565b600060208284031215613ec057600080fd5b8151612b4a81614631565b60008060408385031215613ede57600080fd5b8235613ee981614631565b91506020830135613ef981614631565b809150509250929050565b60008060008060808587031215613f1a57600080fd5b8435613f2581614631565b93506020850135613f3581614631565b92506040850135613f45816145fe565b91506060850135613d4581614623565b600080600080600060a08688031215613f6d57600080fd5b8535613f7881614631565b94506020860135613f8881614631565b935060408601356fffffffffffffffffffffffffffffffff81168114613fad57600080fd5b92506060860135613fbd816145fe565b91506080860135613fcd81614623565b809150509295509295909350565b60006101608284031215613fee57600080fd5b613ff66142c2565b613fff83613ca5565b815261400d60208401613ca5565b602082015261401e60408401613ca5565b604082015261402f60608401613ca5565b60608201526080830135608082015260a083013560a082015261405460c08401613c9a565b60c082015261406560e08401613c9a565b60e0820152610100614078818501613c8a565b9082015261012061408a848201613c8a565b90820152610140928301359281019290925250919050565b6000602082840312156140b457600080fd5b5051919050565b600080604083850312156140ce57600080fd5b505080516020909101519092909150565b600081518084526020808501945080840160005b83811015614130578151805173ffffffffffffffffffffffffffffffffffffffff16885283015183880152604090960195908201906001016140f3565b509495945050505050565b6020808252825182820181905260009190848201906040850190845b8181101561418957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101614157565b50909695505050505050565b602081526000612b4a60208301846140df565b6060815260006141bb60608301866140df565b82810360208401526141cd81866140df565b915050826040830152949350505050565b602080825282518282018190526000919060409081850190868401855b82811015614242578151805173ffffffffffffffffffffffffffffffffffffffff1685528681015115158786015285015185850152606090930192908501906001016141fb565b5091979650505050505050565b600060208083528351808285015260005b8181101561427c57858101830151858201604001528201614260565b8181111561428e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b604051610160810167ffffffffffffffff811182821017156142e6576142e66145cf565b60405290565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561431757614317614542565b01949350505050565b6000821982111561433357614333614542565b500190565b60008160020b8360020b8061434f5761434f614571565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000831416156143a3576143a3614542565b90059392505050565b6000826143bb576143bb614571565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143f8576143f8614542565b500290565b60006fffffffffffffffffffffffffffffffff8381169083168181101561442657614426614542565b039392505050565b600073ffffffffffffffffffffffffffffffffffffffff8381169083168181101561442657614426614542565b60008282101561446d5761446d614542565b500390565b60008260020b8061448557614485614571565b808360020b0791505092915050565b600081600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114156144ca576144ca614542565b60000392915050565b60008160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008114156144ca576144ca614542565b60007f800000000000000000000000000000000000000000000000000000000000000082141561453b5761453b614542565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461462057600080fd5b50565b801515811461462057600080fd5b8060020b811461462057600080fdfea2646970667358221220b5f4ddca6d99127e73ff19f59eccaed3901aa2bb1db06cd142170afc64577eb564736f6c63430008070033a2646970667358221220b8f221b9c25254282020f76712f35ba17ca7aa891e61e7c6cb1c4fb41f50f48864736f6c63430008070033",
  "deployedBytecode": "0x60806040523480156200001157600080fd5b50600436106200007b5760003560e01c806371a25812116200005657806371a25812146200012e578063cf58879a1462000154578063f6ab6d99146200017c57600080fd5b8063169c4cef146200008057806327c3cae114620000c15780635bc93d6c14620000d8575b600080fd5b62000097620000913660046200097a565b620001b5565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b62000097620000d236600462000a25565b62000208565b6200011f620000e93660046200093c565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825291909152205490565b604051908152602001620000b8565b620001456200013f366004620009c0565b62000413565b604051620000b8919062000afe565b620000977f000000000000000000000000000000000000000000000000000000000000000081565b620000976200018d36600462000a0b565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60006020528260005260406000206020528160005260406000208181548110620001de57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16925083915050565b60008060008060008086806020019051810190620002279190620008c5565b945094509450945094508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611156200026a579293925b6040805173ffffffffffffffffffffffffffffffffffffffff80881660208301528087169282019290925262ffffff8086166060830152918416608082015290821660a082015260c001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815260028084526060840190925298506000919081602001602082028036833701905050905085816000815181106200031a576200031a62000c74565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505084816001815181106200036b576200036b62000c74565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910182015288519089012060405181908a907f000000000000000000000000000000000000000000000000000000000000000090620003c9906200089e565b620003d692919062000b5a565b8190604051809103906000f5905080158015620003f7573d6000803e3d6000fd5b509750620004078883836200053c565b50505050505050919050565b60608167ffffffffffffffff81111562000431576200043162000ca3565b6040519080825280602002602001820160405280156200045b578160200160208202803683370190505b50905060005b82811015620005335773ffffffffffffffffffffffffffffffffffffffff808716600090815260208181526040808320938916835292905220620004a6828662000bee565b81548110620004b957620004b962000c74565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110620004f957620004f962000c74565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152806200052a8162000c09565b91505062000461565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614620005ac576040517f03781a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555b600183510381101562000898578281600101815181106200061e576200061e62000c74565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1683828151811062000651576200065162000c74565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1610620006a7576040517f3f06bf8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015b83518110156200088e57600080858481518110620006ce57620006ce62000c74565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085838151811062000727576200072762000c74565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409091016000908120805460018101825590825291812090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915584518190869084908110620007b657620007b662000c74565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008584815181106200080f576200080f62000c74565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604090910160009081208054600180820183559183529290912090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915501620006ac565b50600101620005f9565b50505050565b6150c38062000cf983390190565b805162ffffff81168114620008c057600080fd5b919050565b600080600080600060a08688031215620008de57600080fd5b8551620008eb8162000cd2565b6020870151909550620008fe8162000cd2565b93506200090e60408701620008ac565b92506060860151620009208162000cd2565b91506200093060808701620008ac565b90509295509295909350565b600080604083850312156200095057600080fd5b82356200095d8162000cd2565b915060208301356200096f8162000cd2565b809150509250929050565b6000806000606084860312156200099057600080fd5b83356200099d8162000cd2565b92506020840135620009af8162000cd2565b929592945050506040919091013590565b60008060008060808587031215620009d757600080fd5b8435620009e48162000cd2565b93506020850135620009f68162000cd2565b93969395505050506040820135916060013590565b60006020828403121562000a1e57600080fd5b5035919050565b60006020828403121562000a3857600080fd5b813567ffffffffffffffff8082111562000a5157600080fd5b818401915084601f83011262000a6657600080fd5b81358181111562000a7b5762000a7b62000ca3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000ac45762000ac462000ca3565b8160405282815287602084870101111562000ade57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6020808252825182820181905260009190848201906040850190845b8181101562000b4e57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162000b1a565b50909695505050505050565b604081526000835180604084015260005b8181101562000b8a576020818701810151606086840101520162000b6b565b8181111562000b9d576000606083860101525b5073ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b6000821982111562000c045762000c0462000c45565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000c3e5762000c3e62000c45565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811462000cf557600080fd5b5056fe6101806040523480156200001257600080fd5b50604051620050c3380380620050c3833981016040819052620000359162000704565b6000806000806000868060200190518101906200005391906200068d565b9398509196509450925090506001600160a01b038516620000875760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038516301415620000b25760405163c1ab6dc160e01b815260040160405180910390fd5b6001600160a01b038416301415620000dd5760405163c1ab6dc160e01b815260040160405180910390fd5b620186a062ffffff84161115620001075760405163da7459b760e01b815260040160405180910390fd5b6001600160601b0319606086811b82166101405285901b16610160526001600160e81b031960e884811b821660a052600780546001600160a01b0386166001600160a01b031990911617905582901b16608052604051636e23d2e160e11b815262ffffff8216600482015273__$ce5bd159ffa25aa093db868fa3464622ad$__9063dc47a5c29060240160206040518083038186803b158015620001aa57600080fd5b505af4158015620001bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e59190620007f5565b60801b6001600160801b03191660c0908152604080519182019052620d89e719808252602082019062000218906200083a565b600290810b825260006020808401829052604080850183905260608086018490526080958601849052620d89e719938490526009835286517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebac8054898601518a8601516001600160801b0316660100000000000002600160301b600160b01b0319918a0b62ffffff90811663010000000265ffffffffffff1990941695909a0b90991693909317179190911695909517909455928501517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebad55928401517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebae5560a0909301517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebaf80546001600160a01b03929092166001600160a01b0319909216919091179055805160c0810190915282815291908201906200037a906200083a565b60020b815260200160006001600160801b03168152602001600081526020016000815260200160006001600160a01b031681525060096000620d89e719620003c2906200083a565b600290810b810b825260208083019390935260409182016000208451815486860151878601516001600160801b0316660100000000000002600160301b600160b01b031991860b62ffffff90811663010000000265ffffffffffff1990941694870b169390931791909117161781556060850151600182015560808501519181019190915560a090930151600390930180546001600160a01b039485166001600160a01b031990911617905560078054621e4ec360a31b62ffffff60a01b199091161790558051634da3182760e01b8152905192891692634da3182792600480840193919291829003018186803b158015620004bd57600080fd5b505afa158015620004d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f8919062000666565b6001600160a01b0316610100816001600160a01b031660601b81525050856001600160a01b0316630c0a0cd26040518163ffffffff1660e01b815260040160206040518083038186803b1580156200054f57600080fd5b505afa15801562000564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058a919062000666565b6001600160a01b031660e0816001600160a01b031660601b81525050856001600160a01b031663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b158015620005e057600080fd5b505afa158015620005f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061b919062000820565b600455505050505060601b6001600160601b031916610120525060016008556200089b565b80516200064d8162000882565b919050565b805162ffffff811681146200064d57600080fd5b6000602082840312156200067957600080fd5b8151620006868162000882565b9392505050565b600080600080600060a08688031215620006a657600080fd5b8551620006b38162000882565b6020870151909550620006c68162000882565b9350620006d66040870162000652565b92506060860151620006e88162000882565b9150620006f86080870162000652565b90509295509295909350565b600080604083850312156200071857600080fd5b82516001600160401b03808211156200073057600080fd5b818501915085601f8301126200074557600080fd5b8151818111156200075a576200075a6200086c565b604051601f8201601f19908116603f011681019083821181831017156200078557620007856200086c565b81604052828152602093508884848701011115620007a257600080fd5b600091505b82821015620007c65784820184015181830185015290830190620007a7565b82821115620007d85760008484830101525b9550620007ea91505085820162000640565b925050509250929050565b6000602082840312156200080857600080fd5b81516001600160801b03811681146200068657600080fd5b6000602082840312156200083357600080fd5b5051919050565b60008160020b627fffff198114156200086357634e487b7160e01b600052601160045260246000fd5b60000392915050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200089857600080fd5b50565b60805160e81c60a05160e81c60c05160801c60e05160601c6101005160601c6101205160601c6101405160601c6101605160601c61467662000a4d6000396000818161059c01528181610e5e01528181610e8701528181610fb6015281816112ba015281816113cb015281816116b60152818161193d01528181611c8c01528181611e86015281816125180152818161312b0152818161381d01526139a101526000818161057401528181610ebe01528181610f5601528181610f7f015281816112510152818161136201528181611648015281816118c101528181611c0501528181611db0015281816123d101528181612fe80152818161371f01526138cd01526000818161054c0152612103015260008181610524015281816133310152818161340e01528181613763015281816138610152818161390a015281816139de0152613c080152600081816104fc01528181612405015261254c01526000818161046e01526136640152600081816104be0152610baa01526000818161049601528181610c4001528181610cce01528181613a1401528181613a7a01528181613ae80152613b4e01526146766000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80639da12096116100ee578063bcdb4dad11610097578063cf78756b11610071578063cf78756b146105db578063f30dba93146105e4578063fb39d628146106bb578063fb5d80b3146106ce57600080fd5b8063bcdb4dad14610457578063c14ad802146105ca578063caa4b46a146105d357600080fd5b8063aaca1b4d116100c8578063aaca1b4d146103ae578063acfe88f81461042f578063af8c09bf146101a857600080fd5b80639da120961461037e578063a69840a814610387578063a8f1f52e146101a857600080fd5b80636289db82116101505780637ba0e2e71161012a5780637ba0e2e7146103165780638c347f9b1461032957806392bc32191461037457600080fd5b80636289db821461029557806367e4ac2c146102b75780636d59d802146102cc57600080fd5b80632a07b6c7116101815780632a07b6c714610262578063499a3c50146101a8578063627dd56a1461028257600080fd5b8063053da1c8146101a85780630902f1ac146101ce5780631a68650214610225575b600080fd5b6101bb6101b6366004613d50565b610700565b6040519081526020015b60405180910390f35b6006546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004165b604080516fffffffffffffffffffffffffffffffff9384168152929091166020830152016101c5565b600054610241906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016101c5565b610275610270366004613d50565b610707565b6040516101c59190614195565b6101bb610290366004613dc2565b61070e565b6102a86102a3366004613f55565b611056565b6040516101c5939291906141a8565b6102bf611626565b6040516101c5919061413b565b6001546040805173ffffffffffffffffffffffffffffffffffffffff831681527401000000000000000000000000000000000000000090920463ffffffff166020830152016101c5565b6101bb610324366004613d50565b611725565b6007546040805173ffffffffffffffffffffffffffffffffffffffff8316815274010000000000000000000000000000000000000000909204600290810b900b6020830152016101c5565b61037c612101565b005b6101bb60025481565b6101bb7f54726964656e743a436f6e63656e7472617465644c697175696469747900000081565b6104016103bc366004613cb0565b600a6020908152600093845260408085208252928452828420905282529020805460018201546002909201546fffffffffffffffffffffffffffffffff909116919083565b604080516fffffffffffffffffffffffffffffffff90941684526020840192909252908201526060016101c5565b61044261043d366004613ecb565b6121a4565b604080519283526020830191909152016101c5565b604080516fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815262ffffff7f0000000000000000000000000000000000000000000000000000000000000000811660208301527f0000000000000000000000000000000000000000000000000000000000000000169181019190915273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660608301527f0000000000000000000000000000000000000000000000000000000000000000811660808301527f0000000000000000000000000000000000000000000000000000000000000000811660a08301527f0000000000000000000000000000000000000000000000000000000000000000811660c08301527f00000000000000000000000000000000000000000000000000000000000000001660e0820152610100016101c5565b6101bb60045481565b6101fc6122bd565b6101bb60035481565b61065a6105f2366004613e91565b60096020526000908152604090208054600182015460028084015460039094015483820b946301000000850490920b93660100000000000090046fffffffffffffffffffffffffffffffff1692919073ffffffffffffffffffffffffffffffffffffffff1686565b60408051600297880b81529590960b60208601526fffffffffffffffffffffffffffffffff909316948401949094526060830152608082019290925273ffffffffffffffffffffffffffffffffffffffff90911660a082015260c0016101c5565b6104426106c9366004613f04565b61257b565b6005546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166101fc565b6000806000fd5b6060600080fd5b60006008546002141561074d576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026008819055506000806000808580602001905181019061076f9190613cfb565b93509350935093506000604051806101200160405280600081526020016000815260200160008152602001866107a7576002546107ab565b6003545b8152602001866107bd576003546107c1565b6002545b815260075473ffffffffffffffffffffffffffffffffffffffff1660208201526000546fffffffffffffffffffffffffffffffff166040820152606081018690526080018661084b57600754740100000000000000000000000000000000000000009004600290810b810b810b60009081526009602052604090205463010000009004900b61086a565b60075474010000000000000000000000000000000000000000900460020b5b60020b9052600154909150429074010000000000000000000000000000000000000000900463ffffffff168082039082148015906108bb57506000546fffffffffffffffffffffffffffffffff1615155b1561097c57600180547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8516021790556000546fffffffffffffffffffffffffffffffff16608082901b8161092e5761092e614571565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000081169390920473ffffffffffffffffffffffffffffffffffffffff928316019091169190911790555b50505b60e081015115610d0d576000610999826101000151612708565b73ffffffffffffffffffffffffffffffffffffffff1690506000808715610ae65760006109d18560c00151858760a001516000612a9b565b9050808560e0015111610aa657600060608660c00151901b90506000610a19828860a001518960e001518a60a00151610a0a91906143c0565b610a149086614320565b612af5565b9050808611158015610a2e57508660a0015181105b610a7957610a60828860e001518960a0015185610a4b91906143ac565b610a559190614320565b808204910615150190565b73ffffffffffffffffffffffffffffffffffffffff1690505b610a8e8760c00151828960a001516000612b51565b60a0880191909152600060e08801529350610ae09050565b610abb8560c00151858760a001516000612b51565b60a0860185905260e086018051919450600193508291610adc90839061445b565b9052505b50610ba4565b6000610afd8560c001518660a00151866000612b51565b9050808560e0015111610b68576000610b2c8660e001516c010000000000000000000000008860c00151612b96565b8660a00151610b3b9190614320565b9050610b528660c001518760a00151836000612a9b565b60a0870191909152600060e08701529250610ba2565b610b7d8560c001518660a00151866000612a9b565b60a0860185905260e086018051919450600193508291610b9e90839061445b565b9052505b505b610be6827f00000000000000000000000000000000000000000000000000000000000000006004548760c0015188602001518e8a604001518b60600151612c67565b60608801526040870152602086019190915298508015610d0557610c646009856101000151600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760c00151886060015189608001518e7f0000000000000000000000000000000000000000000000000000000000000000612d0c565b600290810b900b61010086015260c08501819052610d0557610c8a846101000151612708565b73ffffffffffffffffffffffffffffffffffffffff90811660a086015261010085015160015460c087015160608801516080890151610cf29560099594169291908e7f0000000000000000000000000000000000000000000000000000000000000000612d0c565b600290810b900b61010086015260c08501525b50505061097f565b60a0810151600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055600085610d8057610100820151600290810b810b600090815260096020526040902054900b610d87565b8161010001515b90508060020b600760149054906101000a900460020b60020b14610e3557600780547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000062ffffff600285900b160217905560c0820151600080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9092169190911790555b610e40868689612fdb565b610e53868360600151846040015161321d565b8515610f5157610e857f00000000000000000000000000000000000000000000000000000000000000008886866132ca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062888b604051610f44929190918252602082015260400190565b60405180910390a4611045565b610f7d7f00000000000000000000000000000000000000000000000000000000000000008886866132ca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062888b60405161103c929190918252602082015260400190565b60405180910390a45b505060016008555092949350505050565b6060806000806000806110688b612708565b905060006110758b612708565b60075490915073ffffffffffffffffffffffffffffffffffffffff908116908316811180156110cf57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b1561111857600080546fffffffffffffffffffffffffffffffff8082168e9003167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b61117a8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168e6fffffffffffffffffffffffffffffffff166000613472565b6fffffffffffffffffffffffffffffffff9182169650811694506f7fffffffffffffffffffffffffffffff908c16111592506111e5915050576040517f35278d1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806111fc338d8d6111f78e614494565b6134d0565b6040805160028082526060820190925291985092945090925090816020015b604080518082019091526000808252602082015281526020019060019003908161121b57905050965060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200185815250876000815181106112a2576112a26145a0565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001848152508760018151811061130b5761130b6145a0565b60209081029190910101526040805160028082526060820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161132c57905050955060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200183815250866000815181106113b3576113b36145a0565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001828152508660018151811061141c5761141c6145a0565b60209081029190910101526006805493909101700100000000000000000000000000000000949092016fffffffffffffffffffffffffffffffff80851682900381167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951685178690048116849003169094029092179091556114a2878383896136dc565b6007546040517f3c5474df0000000000000000000000000000000000000000000000000000000081526009600482015260028c810b60248301528b810b60448301526fffffffffffffffffffffffffffffffff8b16606483015274010000000000000000000000000000000000000000909204820b90910b608482015273__$ce5bd159ffa25aa093db868fa3464622ad$__90633c5474df9060a40160206040518083038186803b15801561155657600080fd5b505af415801561156a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158e9190613eae565b6007805460029290920b62ffffff1674010000000000000000000000000000000000000000027fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff909216919091179055604080518381526020810183905233917f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a910160405180910390a25050955095509592505050565b60408051600280825260608083018452926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061167a5761167a6145a0565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106116e8576116e86145a0565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b600060085460021415611764576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600855600061177783850185613fdb565b905060006117888260200151612708565b73ffffffffffffffffffffffffffffffffffffffff16905060006117af8360600151612708565b60075460a085015160808601516040517faec6cbfe0000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff9485166024820181905294909316604484018190526064840192909252608483015291925073__$df040e0a7bda43e0bcaf2b8c2beb7d11e8$__9063aec6cbfe9060a40160206040518083038186803b15801561185a57600080fd5b505af415801561186e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189291906140a2565b94506000806118b0866101000151876020015188606001518a6134d0565b5090925090508115611932576118ee7f00000000000000000000000000000000000000000000000000000000000000008388610100015160006132ca565b600680546fffffffffffffffffffffffffffffffff808216859003167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b80156119a25761196a7f00000000000000000000000000000000000000000000000000000000000000008288610100015160006132ca565b600680546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000808304821685900382160291161790555b505080831080156119b257508181105b156119fa57600080546fffffffffffffffffffffffffffffffff8082168801167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b611a0c84602001518560600151613a0f565b60028054600354600154875160208901516040808b015160608c015160075492517f33440084000000000000000000000000000000000000000000000000000000008152600960048201526024810198909852604488019690965273ffffffffffffffffffffffffffffffffffffffff948516606488015292870b608487015290860b60a486015290850b60c485015291840b60e48401526fffffffffffffffffffffffffffffffff891661010484015274010000000000000000000000000000000000000000909104830b90920b61012482015290821661014482015273__$ce5bd159ffa25aa093db868fa3464622ad$__906333440084906101640160206040518083038186803b158015611b2257600080fd5b505af4158015611b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5a9190613eae565b600760146101000a81548162ffffff021916908360020b62ffffff160217905550600080611b8c8585858a6001613472565b6040805160028082526060820190925292945090925060009190816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611bab57905050905060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018860c0015115158152602001846fffffffffffffffffffffffffffffffff1681525081600081518110611c7457611c746145a0565b602002602001018190525060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018860e0015115158152602001836fffffffffffffffffffffffffffffffff1681525081600181518110611cfb57611cfb6145a0565b60200260200101819052503373ffffffffffffffffffffffffffffffffffffffff1663ced10b4982604051602001611d3391906141de565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401611d5e919061424f565b600060405180830381600087803b158015611d7857600080fd5b505af1158015611d8c573d6000803e3d6000fd5b5050505050816fffffffffffffffffffffffffffffffff16600014611e6957611dd47f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006546fffffffffffffffffffffffffffffffff9081168401161115611e26576040517f840463aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff8082168501167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b6fffffffffffffffffffffffffffffffff811615611f4757611eaa7f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006546fffffffffffffffffffffffffffffffff70010000000000000000000000000000000090910481168301161115611f10576040517fe430204200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216850182160291161790555b600080611f5c886020015189606001516121a4565b6101208a0151919350915073ffffffffffffffffffffffffffffffffffffffff16156120825761010088015161012089015160208a015160608b01516101408c01516040517f6d59ebe100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152600293840b60248201529190920b60448201526fffffffffffffffffffffffffffffffff8d1660648201526084810186905260a4810185905260c4810191909152911690636d59ebe19060e401602060405180830381600087803b15801561204857600080fd5b505af115801561205c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208091906140a2565b505b610100880151604080516fffffffffffffffffffffffffffffffff80881682528616602082015273ffffffffffffffffffffffffffffffffffffffff909216917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a2505060016008555094979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b15801561216757600080fd5b505afa15801561217b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219f91906140a2565b600455565b600754600283810b80820b60009081526009602052604080822086850b850b835290822084546003549396879674010000000000000000000000000000000000000000909104810b95939492939192918791829182918291908a900b1261221857876001015493508760020154925061223c565b6001880154612227908761445b565b9350876002015485612239919061445b565b92505b8b60020b8960020b121561225b5750506001850154600286015461227f565b600187015461226a908761445b565b915086600201548561227c919061445b565b90505b8161228a858861445b565b612294919061445b565b9a50806122a1848761445b565b6122ab919061445b565b99505050505050505050509250929050565b600080600854600214156122fd576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260085560055460016fffffffffffffffffffffffffffffffff909116111561242b57600554612342906001906fffffffffffffffffffffffffffffffff166143fd565b600580547fffffffffffffffffffffffffffffffff000000000000000000000000000000001660011790556006805491935083916000906123969084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555061242b7f0000000000000000000000000000000000000000000000000000000000000000836fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000060006132ca565b60055460017001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115612572576005546124929060019070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166143fd565b600580547001000000000000000000000000000000006fffffffffffffffffffffffffffffffff918216811790925560068054939450849390926010926124dd9286929004166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506125727f0000000000000000000000000000000000000000000000000000000000000000826fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000060006132ca565b60016008559091565b600080600854600214156125bb576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026008556125cd33878760006134d0565b5090925090506125df848383866136dc565b600680548391906000906126069084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080600660108282829054906101000a90046fffffffffffffffffffffffffffffffff1661266991906143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f4a1c185b7b5da020829d63d69222d8602aa53a6b7800a73ee6e3e15a625d863d83836040516126f0929190918252602082015260400190565b60405180910390a26001600855909590945092505050565b60008060008360020b1261271f578260020b61272c565b8260020b61272c90614509565b90506127577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186144d3565b62ffffff16811115612795576040517ff87dc40c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182166127b6577001000000000000000000000000000000006127c8565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156127fc576ffff97272373d413259a46990580e213a0260801c5b600482161561281b576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561283a576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612859576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612878576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612897576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156128b6576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156128d6576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156128f6576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612916576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612936576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612956576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612976576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612996576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156129b6576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156129d7576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156129f7576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612a16576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612a33576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612a7257807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81612a6e57612a6e614571565b0490505b640100000000810615612a86576001612a89565b60005b60ff16602082901c0192505050919050565b60008115612aca57612ac3612ab7606087901b86860386612af5565b85808204910615150190565b9050612aed565b83612adc606087901b86860386612b96565b81612ae957612ae9614571565b0490505b949350505050565b6000612b02848484612b96565b90508180612b1257612b12614571565b83850915612b4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110612b4657600080fd5b6001015b9392505050565b60008115612b7357612ac3858585036c01000000000000000000000000612af5565b612b8d858585036c01000000000000000000000000612b96565b95945050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8587098587029250828110838203039150508060001415612bee5760008411612be357600080fd5b508290049050612b4a565b808411612bfa57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000806000806000612c828d8d62ffffff16620f4240612af5565b9050612c8e818a614320565b9850612c9a818e61445b565b612ca49089614320565b97506000612cb5828d612710612af5565b9050612cc18189614320565b9750612ccd818361445b565b9150612ceb827001000000000000000000000000000000008d612b96565b612cf59088614320565b999e989d50969b5097995095975050505050505050565b600287810b900b6000908152602089905260408120600301548190612d479073ffffffffffffffffffffffffffffffffffffffff168961442e565b60028a810b900b600090815260208c90526040902060030180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790558315612eb9576002612db4848b614338565b612dbe9190614472565b60020b612e0857600289810b900b600090815260208b90526040902054612e0190660100000000000090046fffffffffffffffffffffffffffffffff168861445b565b9650612e47565b600289810b900b600090815260208b90526040902054612e4490660100000000000090046fffffffffffffffffffffffffffffffff1688614320565b96505b600289810b900b600090815260208b90526040902060010154612e6a908661445b565b60028a810b810b600090815260208d90526040902060018101929092550154612e93908761445b565b6002998a0b8a0b600090815260208c905260409020808b01919091555490980b97612fcd565b6002612ec5848b614338565b612ecf9190614472565b60020b612f1957600289810b900b600090815260208b90526040902054612f1290660100000000000090046fffffffffffffffffffffffffffffffff1688614320565b9650612f58565b600289810b900b600090815260208b90526040902054612f5590660100000000000090046fffffffffffffffffffffffffffffffff168861445b565b96505b600289810b810b600090815260208c9052604090200154612f79908661445b565b60028a810b810b600090815260208d9052604090209081019190915560010154612fa3908761445b565b6002998a0b8a0b600090815260208c9052604090206001810191909155546301000000900490980b975b509498969750505050505050565b821561312457600061300c7f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006549091506000906130329085906fffffffffffffffffffffffffffffffff166142ec565b905081816fffffffffffffffffffffffffffffffff161115613080576040517f840463aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff838116919091178083558592916010916130e79185917001000000000000000000000000000000009004166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505050505050565b600061314f7f0000000000000000000000000000000000000000000000000000000000000000613bba565b60065490915060009061318990859070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166142ec565b905081816fffffffffffffffffffffffffffffffff1611156131d7576040517fe430204200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000008483160281811784558693926000926130e792869216176143fd565b821561329e5760038290556005805482919060109061326390849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166142ec565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550505050565b6002829055600580548291906000906132639084906fffffffffffffffffffffffffffffffff166142ec565b80156133b4576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4015b6040805180830381600087803b15801561337557600080fd5b505af1158015613389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ad91906140bb565b505061346c565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301528381166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc906084015b600060405180830381600087803b15801561345357600080fd5b505af1158015613467573d6000803e3d6000fd5b505050505b50505050565b60008084861161348f5761348884888886612b51565b90506134c6565b8685116134a9576134a284888886612a9b565b91506134c6565b6134b584868886612a9b565b91506134c384888786612b51565b90505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a60209081526040808320600287810b810b855290835281842086820b90910b8452909152812081908190818061352489896121a4565b9150915061356683600101548361353b919061445b565b84546fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000612b96565b955061357b83600201548261353b919061445b565b83549095506fffffffffffffffffffffffffffffffff1693506000600f88900b1215613605576135aa87614494565b835484906000906135ce9084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b600087600f0b13156136c1578254879084906000906136379084906fffffffffffffffffffffffffffffffff166142ec565b82546101009290920a6fffffffffffffffffffffffffffffffff81810219909316918316021790915584547f000000000000000000000000000000000000000000000000000000000000000082169116111590506136c1576040517fb03425ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018301919091556002909101559196909550909350915050565b8015613890576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152858116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137de91906140bb565b50506040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152858116604483015260006064830152608482018490527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a40161335c565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301528581166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b15801561394e57600080fd5b505af1158015613962573d6000803e3d6000fd5b50506040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301528781166044830152606482018690527f000000000000000000000000000000000000000000000000000000000000000016925063f18d03cc9150608401613439565b613a397f000000000000000000000000000000000000000000000000000000000000000083614472565b60020b15613a73576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002613a9f7f000000000000000000000000000000000000000000000000000000000000000084614338565b613aa99190614472565b60020b15613ae3576040517ffdf1420200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613b0d7f000000000000000000000000000000000000000000000000000000000000000082614472565b60020b15613b47576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002613b737f000000000000000000000000000000000000000000000000000000000000000083614338565b613b7d9190614472565b60020b613bb6576040517fa9778c6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523060248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b158015613c4c57600080fd5b505afa158015613c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c8491906140a2565b92915050565b8035613c95816145fe565b919050565b8035613c9581614623565b8035613c9581614631565b600080600060608486031215613cc557600080fd5b8335613cd0816145fe565b92506020840135613ce081614631565b91506040840135613cf081614631565b809150509250925092565b60008060008060808587031215613d1157600080fd5b8451613d1c81614623565b602086015160408701519195509350613d34816145fe565b6060860151909250613d4581614623565b939692955090935050565b60008060208385031215613d6357600080fd5b823567ffffffffffffffff80821115613d7b57600080fd5b818501915085601f830112613d8f57600080fd5b813581811115613d9e57600080fd5b866020828501011115613db057600080fd5b60209290920196919550909350505050565b600060208284031215613dd457600080fd5b813567ffffffffffffffff80821115613dec57600080fd5b818401915084601f830112613e0057600080fd5b813581811115613e1257613e126145cf565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715613e5857613e586145cf565b81604052828152876020848701011115613e7157600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208284031215613ea357600080fd5b8135612b4a81614631565b600060208284031215613ec057600080fd5b8151612b4a81614631565b60008060408385031215613ede57600080fd5b8235613ee981614631565b91506020830135613ef981614631565b809150509250929050565b60008060008060808587031215613f1a57600080fd5b8435613f2581614631565b93506020850135613f3581614631565b92506040850135613f45816145fe565b91506060850135613d4581614623565b600080600080600060a08688031215613f6d57600080fd5b8535613f7881614631565b94506020860135613f8881614631565b935060408601356fffffffffffffffffffffffffffffffff81168114613fad57600080fd5b92506060860135613fbd816145fe565b91506080860135613fcd81614623565b809150509295509295909350565b60006101608284031215613fee57600080fd5b613ff66142c2565b613fff83613ca5565b815261400d60208401613ca5565b602082015261401e60408401613ca5565b604082015261402f60608401613ca5565b60608201526080830135608082015260a083013560a082015261405460c08401613c9a565b60c082015261406560e08401613c9a565b60e0820152610100614078818501613c8a565b9082015261012061408a848201613c8a565b90820152610140928301359281019290925250919050565b6000602082840312156140b457600080fd5b5051919050565b600080604083850312156140ce57600080fd5b505080516020909101519092909150565b600081518084526020808501945080840160005b83811015614130578151805173ffffffffffffffffffffffffffffffffffffffff16885283015183880152604090960195908201906001016140f3565b509495945050505050565b6020808252825182820181905260009190848201906040850190845b8181101561418957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101614157565b50909695505050505050565b602081526000612b4a60208301846140df565b6060815260006141bb60608301866140df565b82810360208401526141cd81866140df565b915050826040830152949350505050565b602080825282518282018190526000919060409081850190868401855b82811015614242578151805173ffffffffffffffffffffffffffffffffffffffff1685528681015115158786015285015185850152606090930192908501906001016141fb565b5091979650505050505050565b600060208083528351808285015260005b8181101561427c57858101830151858201604001528201614260565b8181111561428e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b604051610160810167ffffffffffffffff811182821017156142e6576142e66145cf565b60405290565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561431757614317614542565b01949350505050565b6000821982111561433357614333614542565b500190565b60008160020b8360020b8061434f5761434f614571565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000831416156143a3576143a3614542565b90059392505050565b6000826143bb576143bb614571565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143f8576143f8614542565b500290565b60006fffffffffffffffffffffffffffffffff8381169083168181101561442657614426614542565b039392505050565b600073ffffffffffffffffffffffffffffffffffffffff8381169083168181101561442657614426614542565b60008282101561446d5761446d614542565b500390565b60008260020b8061448557614485614571565b808360020b0791505092915050565b600081600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114156144ca576144ca614542565b60000392915050565b60008160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008114156144ca576144ca614542565b60007f800000000000000000000000000000000000000000000000000000000000000082141561453b5761453b614542565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461462057600080fd5b50565b801515811461462057600080fd5b8060020b811461462057600080fdfea2646970667358221220b5f4ddca6d99127e73ff19f59eccaed3901aa2bb1db06cd142170afc64577eb564736f6c63430008070033a2646970667358221220b8f221b9c25254282020f76712f35ba17ca7aa891e61e7c6cb1c4fb41f50f48864736f6c63430008070033",
  "linkReferences": {
    "contracts/libraries/concentratedPool/DyDxMath.sol": {
      "DyDxMath": [
        {
          "length": 20,
          "start": 12340
        }
      ]
    },
    "contracts/libraries/concentratedPool/Ticks.sol": {
      "Ticks": [
        {
          "length": 20,
          "start": 3894
        },
        {
          "length": 20,
          "start": 11568
        },
        {
          "length": 20,
          "start": 13051
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/libraries/concentratedPool/DyDxMath.sol": {
      "DyDxMath": [
        {
          "length": 20,
          "start": 12139
        }
      ]
    },
    "contracts/libraries/concentratedPool/Ticks.sol": {
      "Ticks": [
        {
          "length": 20,
          "start": 3693
        },
        {
          "length": 20,
          "start": 11367
        },
        {
          "length": 20,
          "start": 12850
        }
      ]
    }
  }
}
