{
  "_format": "hh-sol-artifact-1",
  "contractName": "HintHelpers",
  "sourceName": "contracts/HintHelpers.sol",
  "abi": [
    {
      "inputs": [],
      "name": "AddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ControllerAlreadyInitialized",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_CR",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_numTrials",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_inputRandomSeed",
          "type": "uint256"
        }
      ],
      "name": "getApproxHint",
      "outputs": [
        {
          "internalType": "address",
          "name": "hintAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "diff",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "latestRandomSeed",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getEntireSystemColl",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getEntireSystemDebt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "confidenceMultiplier",
          "type": "uint256"
        }
      ],
      "name": "getRecommendedTrials",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "recommendedTrials",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_VEUSDamount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_collToRedeem",
          "type": "address"
        }
      ],
      "name": "getRedemptionHintCollateralSingle",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "tokenAmountToRedeem",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "partialRedemptionHintAICR",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "truncatedVEUSDamount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_VEUSDamount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxIterations",
          "type": "uint256"
        }
      ],
      "name": "getRedemptionHints",
      "outputs": [
        {
          "internalType": "address",
          "name": "firstRedemptionHint",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "partialRedemptionHintAICR",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "truncatedVEUSDamount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sortedVaultsAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_vaultManagerAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_controllerAddress",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "sortedVaults",
      "outputs": [
        {
          "internalType": "contract ISortedVaults",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "vaultManager",
      "outputs": [
        {
          "internalType": "contract IVaultManager",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50611d9e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063887105d3116100765780638ac54b0d1161005b5780638ac54b0d1461015a578063c0c53b8b1461016d578063dcbf6920146101f557600080fd5b8063887105d31461013f5780638a4adf241461014757600080fd5b80636b9adfb7146100a85780637165f24f146100ce578063795d26c3146100ff5780637b41bdbe14610107575b600080fd5b6100bb6100b636600461192b565b610223565b6040519081526020015b60405180910390f35b6035546100e7906201000090046001600160a01b031681565b6040516001600160a01b0390911681526020016100c5565b6100bb6102cf565b61011a610115366004611944565b6103d7565b604080516001600160a01b0390941684526020840192909252908201526060016100c5565b6100bb6106ed565b6036546100e7906001600160a01b031681565b61011a610168366004611970565b610779565b6101f361017b3660046119aa565b603580546001600160a01b0394851662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909116179055603680549284167fffffffffffffffffffffffff000000000000000000000000000000000000000093841617905560008054919093169116179055565b005b6102086102033660046119f5565b610c86565b604080519384526020840192909252908201526060016100c5565b600080603660009054906101000a90046001600160a01b03166001600160a01b031663cf80c3726040518163ffffffff1660e01b8152600401602060405180830381865afa158015610279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029d9190611a1c565b9050806000036102b05750600092915050565b60006102bb826113de565b90506102c78185611a4b565b949350505050565b600080600160009054906101000a90046001600160a01b03166001600160a01b03166381b7f1bf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103499190611a1c565b90506000600260009054906101000a90046001600160a01b03166001600160a01b03166381b7f1bf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c49190611a1c565b90506103d08183611a62565b9250505090565b600080600080603660009054906101000a90046001600160a01b03166001600160a01b031663cf80c3726040518163ffffffff1660e01b8152600401602060405180830381865afa158015610430573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104549190611a1c565b90508060000361046e5760008086935093509350506106e4565b603560029054906101000a90046001600160a01b03166001600160a01b0316634d6228316040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e59190611a75565b603554604051635189b08f60e01b81526001600160a01b038084166004830152929650610565928a926201000090041690635189b08f90602401602060405180830381865afa15801561053c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105609190611a1c565b611446565b925084915060015b868110156106e15760408051602081018590520160408051601f198184030181529190528051602090910120925060006105a78385611aa8565b6036546040517fc0d52873000000000000000000000000000000000000000000000000000000008152600481018390529192506000916001600160a01b039091169063c0d5287390602401602060405180830381865afa15801561060f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106339190611a75565b603554604051635189b08f60e01b81526001600160a01b0380841660048301529293506000926201000090920490911690635189b08f90602401602060405180830381865afa15801561068a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ae9190611a1c565b905060006106bc828d611446565b9050878110156106cd578097508298505b6106d685611abc565b94505050505061056d565b50505b93509350939050565b600154604080517f651340c400000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163651340c49160048083019260209291908290030181865afa158015610750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107749190611a1c565b905090565b600080600080603560029054906101000a90046001600160a01b0316905060008690506000826001600160a01b0316634d6228316040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108009190611a75565b90505b6001600160a01b038116158015906108f7575060008054906101000a90046001600160a01b03166001600160a01b031663794e57246040518163ffffffff1660e01b8152600401602060405180830381865afa158015610867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088b9190611a1c565b604051635189b08f60e01b81526001600160a01b038381166004830152851690635189b08f90602401602060405180830381865afa1580156108d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f59190611a1c565b105b1561096d57604051632dc9c0eb60e21b81526001600160a01b03828116600483015284169063b72703ac90602401602060405180830381865afa158015610942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109669190611a75565b9050610803565b8095508660000361097e5760001996505b6001600160a01b0381161580159061099557508115155b80156109a057508615155b15610c70576036546040517f450031f20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092839291169063450031f290602401606060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190611ad5565b6036546040517fc0af0d3b0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152949650919450600093869350610acb9291169063c0af0d3b90602401602060405180830381865afa158015610aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac69190611a1c565b611472565b610ad59190611a62565b9050818111610ae5576000610aef565b610aef8282611b03565b905084811115610be15760008060009054906101000a90046001600160a01b03166001600160a01b031663969c24526040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b719190611a1c565b905080821115610bd8576000610b9087610b8b8486611b03565b6114f4565b90506000610b9e878361150a565b90506000610bac8386611b03565b90506000610bb9826116c2565b9050610bc58382611744565b9c50610bd1848b611b03565b9950505050505b50505050610c70565b610beb8186611b03565b604051632dc9c0eb60e21b81526001600160a01b0386811660048301529196509087169063b72703ac90602401602060405180830381865afa158015610c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c599190611a75565b9350610c6660018b611b03565b995050505061097e565b610c7a8289611b03565b93505050509250925092565b6000806000610c936118d3565b603654604051633a1141eb60e01b81526001600160a01b03888116600483015290911690633a1141eb90602401600060405180830381865afa158015610cdd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d059190810190611bec565b6020808501516040860192909252810191909152526000805b60208301515151821015610d7e57866001600160a01b03168360200151600001518381518110610d5057610d50611cba565b60200260200101516001600160a01b031603610d6e57506001610d7e565b610d7782611abc565b9150610d1e565b80610dd05760405162461bcd60e51b815260206004820152601560248201527f564d523a436f6c6c206e6f7420696e207661756c74000000000000000000000060448201526064015b60405180910390fd5b506000546040517fd98bb5b10000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301529091169063d98bb5b190602401602060405180830381865afa158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e589190611a1c565b60c08301526000546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152909116906341976e0990602401602060405180830381865afa158015610ec0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee49190611a1c565b60808301526036546040517f27fb7d890000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152909116906327fb7d8990602401602060405180830381865afa158015610f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f709190611a1c565b6060830152600054604080517f794e572400000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169163794e5724916004808201926020929091908290030181865afa158015610fd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffc9190611a1c565b8260600151101561104f5760405162461bcd60e51b815260206004820152601160248201527f564d523a4943522062656c6f77204d43520000000000000000000000000000006044820152606401610dc7565b60008060009054906101000a90046001600160a01b03166001600160a01b0316635733d58f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c79190611a1c565b9050600081846060015110156110fd57670de0b6b3a76400008460600151836110f09190611b03565b6110fa9190611a4b565b90505b6000670de0b6b3a76400008560c00151101561112d5760c085015161112a90670de0b6b3a7640000611b03565b90505b6000611149670de0b6b3a764000067058d15e176280000611a4b565b6111538385611a4b565b61115d9190611cd0565b9050600081116111af5760405162461bcd60e51b815260206004820152601460248201527f564d523a446973636f756e74206973207a65726f0000000000000000000000006044820152606401610dc7565b6000670de0b6b3a76400006111c48382611b03565b88608001516111d39190611a4b565b6111dd9190611cd0565b9050670de0b6b3a764000081886020015160200151888151811061120357611203611cba565b60200260200101516112159190611a4b565b61121f9190611cd0565b60a08801819052611230908e6114f4565b808852819061124890670de0b6b3a764000090611a4b565b6112529190611cd0565b995089876020015160200151878151811061126f5761126f611cba565b602002602001018181516112839190611b03565b905250865160408801516112979190611b03565b604088018190526000906112aa90611472565b90508760000151886040015111156113a75760008054906101000a90046001600160a01b03166001600160a01b031663969c24526040518163ffffffff1660e01b8152600401602060405180830381865afa15801561130d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113319190611a1c565b811061135f576113498860200151896040015161177d565b8851909a50611358908f611b03565b9d506113c1565b60405162461bcd60e51b815260206004820152601860248201527f48696e7448656c706572733a4465627420746f6f206c6f7700000000000000006044820152606401610dc7565b806000036113c15760408801516113be908f611b03565b9d505b6113cb8e80611b03565b9850505050505050505093509350939050565b6000816000036113f057506000919050565b600060026113ff846001611a62565b6114099190611cd0565b9050825b8082101561143f5750806002816114248187611cd0565b61142e9190611a62565b6114389190611cd0565b915061140d565b9392505050565b60008183101561145f5761145a8383611b03565b611469565b6114698284611b03565b90505b92915050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316637d92c3bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ea9190611a1c565b61146c9083611b03565b60008183106115035781611469565b5090919050565b6000611529604051806040016040528060608152602001606081525090565b603654604051633a1141eb60e01b81526001600160a01b03868116600483015290911690633a1141eb90602401600060405180830381865afa158015611573573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261159b9190810190611bec565b5060208301528082525160009067ffffffffffffffff8111156115c0576115c0611b16565b6040519080825280602002602001820160405280156115e9578160200160208202803683370190505b50905060006115f783611795565b9050600061160d670de0b6b3a764000087611a4b565b84515190915060005b818110156116a95760008660200151828151811061163657611636611cba565b602002602001015190506000670de0b6b3a76400008683876116589190611a4b565b6116629190611cd0565b61166c9190611cd0565b90506116788183611b03565b87848151811061168a5761168a611cba565b6020026020010181815250505050806116a290611abc565b9050611616565b5084516116b69085611827565b98975050505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316637d92c3bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173a9190611a1c565b61146c9083611a62565b600081156117745760008261176185670de0b6b3a7640000611a4b565b61176b9190611cd0565b915061146c9050565b5060001961146c565b6000806117898461189b565b90506102c78184611744565b60008054825160208401516040517f3b1c29060000000000000000000000000000000000000000000000000000000081526001600160a01b0390931692633b1c2906926117e6929091600401611ce4565b602060405180830381865afa158015611803573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146c9190611a1c565b6000805460405163617ddfff60e01b81526001600160a01b039091169063617ddfff9061185a9086908690600401611ce4565b602060405180830381865afa158015611877573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114699190611a1c565b600080548251602084015160405163617ddfff60e01b81526001600160a01b039093169263617ddfff926117e6929091600401611ce4565b6040518060e0016040528060008152602001611902604051806040016040528060608152602001606081525090565b815260200160008152602001600081526020016000815260200160008152602001600081525090565b60006020828403121561193d57600080fd5b5035919050565b60008060006060848603121561195957600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561198357600080fd5b50508035926020909101359150565b6001600160a01b03811681146119a757600080fd5b50565b6000806000606084860312156119bf57600080fd5b83356119ca81611992565b925060208401356119da81611992565b915060408401356119ea81611992565b809150509250925092565b600080600060608486031215611a0a57600080fd5b8335925060208401356119da81611992565b600060208284031215611a2e57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761146c5761146c611a35565b8082018082111561146c5761146c611a35565b600060208284031215611a8757600080fd5b815161143f81611992565b634e487b7160e01b600052601260045260246000fd5b600082611ab757611ab7611a92565b500690565b600060018201611ace57611ace611a35565b5060010190565b600080600060608486031215611aea57600080fd5b8351925060208401519150604084015190509250925092565b8181038181111561146c5761146c611a35565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611b5557611b55611b16565b604052919050565b600067ffffffffffffffff821115611b7757611b77611b16565b5060051b60200190565b600082601f830112611b9257600080fd5b81516020611ba7611ba283611b5d565b611b2c565b82815260059290921b84018101918181019086841115611bc657600080fd5b8286015b84811015611be15780518352918301918301611bca565b509695505050505050565b600080600060608486031215611c0157600080fd5b835167ffffffffffffffff80821115611c1957600080fd5b818601915086601f830112611c2d57600080fd5b81516020611c3d611ba283611b5d565b82815260059290921b8401810191818101908a841115611c5c57600080fd5b948201945b83861015611c83578551611c7481611992565b82529482019490820190611c61565b91890151919750909350505080821115611c9c57600080fd5b50611ca986828701611b81565b925050604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600082611cdf57611cdf611a92565b500490565b604080825283519082018190526000906020906060840190828701845b82811015611d265781516001600160a01b031684529284019290840190600101611d01565b5050508381038285015284518082528583019183019060005b81811015611d5b57835183529284019291840191600101611d3f565b509097965050505050505056fea2646970667358221220748771bca50c0f96cbaf180a4e8f5db2cca9c525f59ade57b454467bc9bd105764736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c8063887105d3116100765780638ac54b0d1161005b5780638ac54b0d1461015a578063c0c53b8b1461016d578063dcbf6920146101f557600080fd5b8063887105d31461013f5780638a4adf241461014757600080fd5b80636b9adfb7146100a85780637165f24f146100ce578063795d26c3146100ff5780637b41bdbe14610107575b600080fd5b6100bb6100b636600461192b565b610223565b6040519081526020015b60405180910390f35b6035546100e7906201000090046001600160a01b031681565b6040516001600160a01b0390911681526020016100c5565b6100bb6102cf565b61011a610115366004611944565b6103d7565b604080516001600160a01b0390941684526020840192909252908201526060016100c5565b6100bb6106ed565b6036546100e7906001600160a01b031681565b61011a610168366004611970565b610779565b6101f361017b3660046119aa565b603580546001600160a01b0394851662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909116179055603680549284167fffffffffffffffffffffffff000000000000000000000000000000000000000093841617905560008054919093169116179055565b005b6102086102033660046119f5565b610c86565b604080519384526020840192909252908201526060016100c5565b600080603660009054906101000a90046001600160a01b03166001600160a01b031663cf80c3726040518163ffffffff1660e01b8152600401602060405180830381865afa158015610279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029d9190611a1c565b9050806000036102b05750600092915050565b60006102bb826113de565b90506102c78185611a4b565b949350505050565b600080600160009054906101000a90046001600160a01b03166001600160a01b03166381b7f1bf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103499190611a1c565b90506000600260009054906101000a90046001600160a01b03166001600160a01b03166381b7f1bf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c49190611a1c565b90506103d08183611a62565b9250505090565b600080600080603660009054906101000a90046001600160a01b03166001600160a01b031663cf80c3726040518163ffffffff1660e01b8152600401602060405180830381865afa158015610430573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104549190611a1c565b90508060000361046e5760008086935093509350506106e4565b603560029054906101000a90046001600160a01b03166001600160a01b0316634d6228316040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e59190611a75565b603554604051635189b08f60e01b81526001600160a01b038084166004830152929650610565928a926201000090041690635189b08f90602401602060405180830381865afa15801561053c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105609190611a1c565b611446565b925084915060015b868110156106e15760408051602081018590520160408051601f198184030181529190528051602090910120925060006105a78385611aa8565b6036546040517fc0d52873000000000000000000000000000000000000000000000000000000008152600481018390529192506000916001600160a01b039091169063c0d5287390602401602060405180830381865afa15801561060f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106339190611a75565b603554604051635189b08f60e01b81526001600160a01b0380841660048301529293506000926201000090920490911690635189b08f90602401602060405180830381865afa15801561068a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ae9190611a1c565b905060006106bc828d611446565b9050878110156106cd578097508298505b6106d685611abc565b94505050505061056d565b50505b93509350939050565b600154604080517f651340c400000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163651340c49160048083019260209291908290030181865afa158015610750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107749190611a1c565b905090565b600080600080603560029054906101000a90046001600160a01b0316905060008690506000826001600160a01b0316634d6228316040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108009190611a75565b90505b6001600160a01b038116158015906108f7575060008054906101000a90046001600160a01b03166001600160a01b031663794e57246040518163ffffffff1660e01b8152600401602060405180830381865afa158015610867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088b9190611a1c565b604051635189b08f60e01b81526001600160a01b038381166004830152851690635189b08f90602401602060405180830381865afa1580156108d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f59190611a1c565b105b1561096d57604051632dc9c0eb60e21b81526001600160a01b03828116600483015284169063b72703ac90602401602060405180830381865afa158015610942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109669190611a75565b9050610803565b8095508660000361097e5760001996505b6001600160a01b0381161580159061099557508115155b80156109a057508615155b15610c70576036546040517f450031f20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092839291169063450031f290602401606060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190611ad5565b6036546040517fc0af0d3b0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152949650919450600093869350610acb9291169063c0af0d3b90602401602060405180830381865afa158015610aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac69190611a1c565b611472565b610ad59190611a62565b9050818111610ae5576000610aef565b610aef8282611b03565b905084811115610be15760008060009054906101000a90046001600160a01b03166001600160a01b031663969c24526040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b719190611a1c565b905080821115610bd8576000610b9087610b8b8486611b03565b6114f4565b90506000610b9e878361150a565b90506000610bac8386611b03565b90506000610bb9826116c2565b9050610bc58382611744565b9c50610bd1848b611b03565b9950505050505b50505050610c70565b610beb8186611b03565b604051632dc9c0eb60e21b81526001600160a01b0386811660048301529196509087169063b72703ac90602401602060405180830381865afa158015610c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c599190611a75565b9350610c6660018b611b03565b995050505061097e565b610c7a8289611b03565b93505050509250925092565b6000806000610c936118d3565b603654604051633a1141eb60e01b81526001600160a01b03888116600483015290911690633a1141eb90602401600060405180830381865afa158015610cdd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d059190810190611bec565b6020808501516040860192909252810191909152526000805b60208301515151821015610d7e57866001600160a01b03168360200151600001518381518110610d5057610d50611cba565b60200260200101516001600160a01b031603610d6e57506001610d7e565b610d7782611abc565b9150610d1e565b80610dd05760405162461bcd60e51b815260206004820152601560248201527f564d523a436f6c6c206e6f7420696e207661756c74000000000000000000000060448201526064015b60405180910390fd5b506000546040517fd98bb5b10000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301529091169063d98bb5b190602401602060405180830381865afa158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e589190611a1c565b60c08301526000546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152909116906341976e0990602401602060405180830381865afa158015610ec0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee49190611a1c565b60808301526036546040517f27fb7d890000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152909116906327fb7d8990602401602060405180830381865afa158015610f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f709190611a1c565b6060830152600054604080517f794e572400000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169163794e5724916004808201926020929091908290030181865afa158015610fd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffc9190611a1c565b8260600151101561104f5760405162461bcd60e51b815260206004820152601160248201527f564d523a4943522062656c6f77204d43520000000000000000000000000000006044820152606401610dc7565b60008060009054906101000a90046001600160a01b03166001600160a01b0316635733d58f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c79190611a1c565b9050600081846060015110156110fd57670de0b6b3a76400008460600151836110f09190611b03565b6110fa9190611a4b565b90505b6000670de0b6b3a76400008560c00151101561112d5760c085015161112a90670de0b6b3a7640000611b03565b90505b6000611149670de0b6b3a764000067058d15e176280000611a4b565b6111538385611a4b565b61115d9190611cd0565b9050600081116111af5760405162461bcd60e51b815260206004820152601460248201527f564d523a446973636f756e74206973207a65726f0000000000000000000000006044820152606401610dc7565b6000670de0b6b3a76400006111c48382611b03565b88608001516111d39190611a4b565b6111dd9190611cd0565b9050670de0b6b3a764000081886020015160200151888151811061120357611203611cba565b60200260200101516112159190611a4b565b61121f9190611cd0565b60a08801819052611230908e6114f4565b808852819061124890670de0b6b3a764000090611a4b565b6112529190611cd0565b995089876020015160200151878151811061126f5761126f611cba565b602002602001018181516112839190611b03565b905250865160408801516112979190611b03565b604088018190526000906112aa90611472565b90508760000151886040015111156113a75760008054906101000a90046001600160a01b03166001600160a01b031663969c24526040518163ffffffff1660e01b8152600401602060405180830381865afa15801561130d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113319190611a1c565b811061135f576113498860200151896040015161177d565b8851909a50611358908f611b03565b9d506113c1565b60405162461bcd60e51b815260206004820152601860248201527f48696e7448656c706572733a4465627420746f6f206c6f7700000000000000006044820152606401610dc7565b806000036113c15760408801516113be908f611b03565b9d505b6113cb8e80611b03565b9850505050505050505093509350939050565b6000816000036113f057506000919050565b600060026113ff846001611a62565b6114099190611cd0565b9050825b8082101561143f5750806002816114248187611cd0565b61142e9190611a62565b6114389190611cd0565b915061140d565b9392505050565b60008183101561145f5761145a8383611b03565b611469565b6114698284611b03565b90505b92915050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316637d92c3bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ea9190611a1c565b61146c9083611b03565b60008183106115035781611469565b5090919050565b6000611529604051806040016040528060608152602001606081525090565b603654604051633a1141eb60e01b81526001600160a01b03868116600483015290911690633a1141eb90602401600060405180830381865afa158015611573573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261159b9190810190611bec565b5060208301528082525160009067ffffffffffffffff8111156115c0576115c0611b16565b6040519080825280602002602001820160405280156115e9578160200160208202803683370190505b50905060006115f783611795565b9050600061160d670de0b6b3a764000087611a4b565b84515190915060005b818110156116a95760008660200151828151811061163657611636611cba565b602002602001015190506000670de0b6b3a76400008683876116589190611a4b565b6116629190611cd0565b61166c9190611cd0565b90506116788183611b03565b87848151811061168a5761168a611cba565b6020026020010181815250505050806116a290611abc565b9050611616565b5084516116b69085611827565b98975050505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316637d92c3bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173a9190611a1c565b61146c9083611a62565b600081156117745760008261176185670de0b6b3a7640000611a4b565b61176b9190611cd0565b915061146c9050565b5060001961146c565b6000806117898461189b565b90506102c78184611744565b60008054825160208401516040517f3b1c29060000000000000000000000000000000000000000000000000000000081526001600160a01b0390931692633b1c2906926117e6929091600401611ce4565b602060405180830381865afa158015611803573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146c9190611a1c565b6000805460405163617ddfff60e01b81526001600160a01b039091169063617ddfff9061185a9086908690600401611ce4565b602060405180830381865afa158015611877573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114699190611a1c565b600080548251602084015160405163617ddfff60e01b81526001600160a01b039093169263617ddfff926117e6929091600401611ce4565b6040518060e0016040528060008152602001611902604051806040016040528060608152602001606081525090565b815260200160008152602001600081526020016000815260200160008152602001600081525090565b60006020828403121561193d57600080fd5b5035919050565b60008060006060848603121561195957600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561198357600080fd5b50508035926020909101359150565b6001600160a01b03811681146119a757600080fd5b50565b6000806000606084860312156119bf57600080fd5b83356119ca81611992565b925060208401356119da81611992565b915060408401356119ea81611992565b809150509250925092565b600080600060608486031215611a0a57600080fd5b8335925060208401356119da81611992565b600060208284031215611a2e57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761146c5761146c611a35565b8082018082111561146c5761146c611a35565b600060208284031215611a8757600080fd5b815161143f81611992565b634e487b7160e01b600052601260045260246000fd5b600082611ab757611ab7611a92565b500690565b600060018201611ace57611ace611a35565b5060010190565b600080600060608486031215611aea57600080fd5b8351925060208401519150604084015190509250925092565b8181038181111561146c5761146c611a35565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611b5557611b55611b16565b604052919050565b600067ffffffffffffffff821115611b7757611b77611b16565b5060051b60200190565b600082601f830112611b9257600080fd5b81516020611ba7611ba283611b5d565b611b2c565b82815260059290921b84018101918181019086841115611bc657600080fd5b8286015b84811015611be15780518352918301918301611bca565b509695505050505050565b600080600060608486031215611c0157600080fd5b835167ffffffffffffffff80821115611c1957600080fd5b818601915086601f830112611c2d57600080fd5b81516020611c3d611ba283611b5d565b82815260059290921b8401810191818101908a841115611c5c57600080fd5b948201945b83861015611c83578551611c7481611992565b82529482019490820190611c61565b91890151919750909350505080821115611c9c57600080fd5b50611ca986828701611b81565b925050604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600082611cdf57611cdf611a92565b500490565b604080825283519082018190526000906020906060840190828701845b82811015611d265781516001600160a01b031684529284019290840190600101611d01565b5050508381038285015284518082528583019183019060005b81811015611d5b57835183529284019291840191600101611d3f565b509097965050505050505056fea2646970667358221220748771bca50c0f96cbaf180a4e8f5db2cca9c525f59ade57b454467bc9bd105764736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
