{
  "_format": "hh-sol-artifact-1",
  "contractName": "DrawCalculatorV2",
  "sourceName": "contracts/DrawCalculatorV2.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract ITicket",
          "name": "_ticket",
          "type": "address"
        },
        {
          "internalType": "contract IDrawBuffer",
          "name": "_drawBuffer",
          "type": "address"
        },
        {
          "internalType": "contract IPrizeDistributionSource",
          "name": "_prizeDistributionSource",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract ITicket",
          "name": "ticket",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "contract IDrawBuffer",
          "name": "drawBuffer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "contract IPrizeDistributionSource",
          "name": "prizeDistributionSource",
          "type": "address"
        }
      ],
      "name": "Deployed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract PrizeDistributor",
          "name": "prizeDistributor",
          "type": "address"
        }
      ],
      "name": "PrizeDistributorSet",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "TIERS_LENGTH",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "uint32[]",
          "name": "_drawIds",
          "type": "uint32[]"
        },
        {
          "internalType": "bytes",
          "name": "_pickIndicesForDraws",
          "type": "bytes"
        }
      ],
      "name": "calculate",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "drawBuffer",
      "outputs": [
        {
          "internalType": "contract IDrawBuffer",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDrawBuffer",
      "outputs": [
        {
          "internalType": "contract IDrawBuffer",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "uint32[]",
          "name": "_drawIds",
          "type": "uint32[]"
        }
      ],
      "name": "getNormalizedBalancesForDrawIds",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPrizeDistributionSource",
      "outputs": [
        {
          "internalType": "contract IPrizeDistributionSource",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "prizeDistributionSource",
      "outputs": [
        {
          "internalType": "contract IPrizeDistributionSource",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ticket",
      "outputs": [
        {
          "internalType": "contract ITicket",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60e06040523480156200001157600080fd5b50604051620021fe380380620021fe8339810160408190526200003491620001a7565b6001600160a01b038316620000905760405162461bcd60e51b815260206004820152601860248201527f4472617743616c632f7469636b65742d6e6f742d7a65726f000000000000000060448201526064015b60405180910390fd5b6001600160a01b038116620000e85760405162461bcd60e51b815260206004820152601560248201527f4472617743616c632f7064622d6e6f742d7a65726f0000000000000000000000604482015260640162000087565b6001600160a01b038216620001405760405162461bcd60e51b815260206004820152601460248201527f4472617743616c632f64682d6e6f742d7a65726f000000000000000000000000604482015260640162000087565b6001600160601b0319606084811b821660a05283811b821660805282901b1660c0526040516001600160a01b0382811691848216918616907fc95935a66d15e0da5e412aca0ad27ae891d20b2fb91cf3994b6a3bf2b817808290600090a450505062000214565b600080600060608486031215620001bd57600080fd5b8351620001ca81620001fb565b6020850151909350620001dd81620001fb565b6040850151909250620001f081620001fb565b809150509250925092565b6001600160a01b03811681146200021157600080fd5b50565b60805160601c60a05160601c60c05160601c611f7b62000283600039600081816101020152818161016c0152818161028801526104ad01526000818160de015281816107d9015261086c015260008181608f01528181610193015281816101d5015261041c0152611f7b6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063aaca392e1161005b578063aaca392e14610146578063bcc18abc14610167578063ce343bb61461018e578063f8d0ca4c146101b557600080fd5b80634019f2d61461008d5780636cc25db7146100d9578063740e61a3146101005780638045fbcf14610126575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100af7f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000006100af565b6101396101343660046114db565b6101cf565b6040516100d09190611af8565b61015961015436600461152e565b61034e565b6040516100d0929190611b0b565b6100af7f000000000000000000000000000000000000000000000000000000000000000081565b6100af7f000000000000000000000000000000000000000000000000000000000000000081565b6101bd601081565b60405160ff90911681526020016100d0565b606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0bb78f385856040518363ffffffff1660e01b815260040161022e929190611b70565b60006040518083038186803b15801561024657600080fd5b505afa15801561025a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261028291908101906116f9565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d30a5daf86866040518363ffffffff1660e01b81526004016102e1929190611b70565b60006040518083038186803b1580156102f957600080fd5b505afa15801561030d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261033591908101906117f4565b90506103428683836105d9565b925050505b9392505050565b606080600061035f848601866115d9565b805190915086146103dc5760405162461bcd60e51b8152602060048201526024808201527f4472617743616c632f696e76616c69642d7069636b2d696e64696365732d6c6560448201527f6e6774680000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6040517fd0bb78f300000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d0bb78f390610453908b908b90600401611b70565b60006040518083038186803b15801561046b57600080fd5b505afa15801561047f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104a791908101906116f9565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d30a5daf8a8a6040518363ffffffff1660e01b8152600401610506929190611b70565b60006040518083038186803b15801561051e57600080fd5b505afa158015610532573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261055a91908101906117f4565b905060006105698b84846105d9565b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608e901b1660208201529091506000906034016040516020818303038152906040528051906020012090506105c68282868887610a44565b9650965050505050509550959350505050565b815160609060008167ffffffffffffffff8111156105f9576105f9611f04565b604051908082528060200260200182016040528015610622578160200160208202803683370190505b50905060008267ffffffffffffffff81111561064057610640611f04565b604051908082528060200260200182016040528015610669578160200160208202803683370190505b50905060005b838163ffffffff16101561079857858163ffffffff168151811061069557610695611eee565b60200260200101516040015163ffffffff16878263ffffffff16815181106106bf576106bf611eee565b60200260200101516040015103838263ffffffff16815181106106e4576106e4611eee565b602002602001019067ffffffffffffffff16908167ffffffffffffffff1681525050858163ffffffff168151811061071e5761071e611eee565b60200260200101516060015163ffffffff16878263ffffffff168151811061074857610748611eee565b60200260200101516040015103828263ffffffff168151811061076d5761076d611eee565b67ffffffffffffffff909216602092830291909101909101528061079081611e94565b91505061066f565b506040517f68c7fd5700000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906368c7fd5790610812908b9087908790600401611a2d565b60006040518083038186803b15801561082a57600080fd5b505afa15801561083e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108669190810190611920565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638e6d536a85856040518363ffffffff1660e01b81526004016108c5929190611bbb565b60006040518083038186803b1580156108dd57600080fd5b505afa1580156108f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109199190810190611920565b905060008567ffffffffffffffff81111561093657610936611f04565b60405190808252806020026020018201604052801561095f578160200160208202803683370190505b50905060005b86811015610a365782818151811061097f5761097f611eee565b6020026020010151600014156109b45760008282815181106109a3576109a3611eee565b602002602001018181525050610a24565b8281815181106109c6576109c6611eee565b60200260200101518482815181106109e0576109e0611eee565b6020026020010151670de0b6b3a76400006109fb9190611dfb565b610a059190611ceb565b828281518110610a1757610a17611eee565b6020026020010181815250505b80610a2e81611e79565b915050610965565b509998505050505050505050565b6060806000875167ffffffffffffffff811115610a6357610a63611f04565b604051908082528060200260200182016040528015610a8c578160200160208202803683370190505b5090506000885167ffffffffffffffff811115610aab57610aab611f04565b604051908082528060200260200182016040528015610ade57816020015b6060815260200190600190039081610ac95790505b5090504260005b88518163ffffffff161015610ccb57868163ffffffff1681518110610b0c57610b0c611eee565b602002602001015160a0015163ffffffff16898263ffffffff1681518110610b3657610b36611eee565b602002602001015160400151610b4c9190611c9a565b67ffffffffffffffff168267ffffffffffffffff1610610bae5760405162461bcd60e51b815260206004820152601560248201527f4472617743616c632f647261772d65787069726564000000000000000000000060448201526064016103d3565b6000610bf8888363ffffffff1681518110610bcb57610bcb611eee565b60200260200101518d8463ffffffff1681518110610beb57610beb611eee565b6020026020010151610cfe565b9050610c728a8363ffffffff1681518110610c1557610c15611eee565b6020026020010151600001518267ffffffffffffffff168d8c8663ffffffff1681518110610c4557610c45611eee565b60200260200101518c8763ffffffff1681518110610c6557610c65611eee565b6020026020010151610d3b565b868463ffffffff1681518110610c8a57610c8a611eee565b60200260200101868563ffffffff1681518110610ca957610ca9611eee565b6020908102919091010191909152525080610cc381611e94565b915050610ae5565b5081604051602001610cdd9190611a78565b60405160208183030381529060405293508294505050509550959350505050565b6000670de0b6b3a76400008360c001516cffffffffffffffffffffffffff1683610d289190611dfb565b610d329190611ceb565b90505b92915050565b600060606000610d4a846110c0565b85516040805160108082526102208201909252929350909160009160208201610200803683370190505090506000866080015163ffffffff168363ffffffff161115610dd85760405162461bcd60e51b815260206004820152601f60248201527f4472617743616c632f657863656564732d6d61782d757365722d7069636b730060448201526064016103d3565b60005b8363ffffffff168163ffffffff161015610ff0578a898263ffffffff1681518110610e0857610e08611eee565b602002602001015167ffffffffffffffff1610610e675760405162461bcd60e51b815260206004820181905260248201527f4472617743616c632f696e73756666696369656e742d757365722d7069636b7360448201526064016103d3565b63ffffffff811615610f1e5788610e7f600183611e31565b63ffffffff1681518110610e9557610e95611eee565b602002602001015167ffffffffffffffff16898263ffffffff1681518110610ebf57610ebf611eee565b602002602001015167ffffffffffffffff1611610f1e5760405162461bcd60e51b815260206004820152601860248201527f4472617743616c632f7069636b732d617363656e64696e67000000000000000060448201526064016103d3565b60008a8a8363ffffffff1681518110610f3957610f39611eee565b6020026020010151604051602001610f6592919091825267ffffffffffffffff16602082015260400190565b6040516020818303038152906040528051906020012060001c90506000610f8d828f896111c5565b9050601060ff82161015610fdb578360ff168160ff161115610fad578093505b848160ff1681518110610fc257610fc2611eee565b602002602001018051809190610fd790611e79565b9052505b50508080610fe890611e94565b915050610ddb565b50600080610ffe8984611264565b905060005b8360ff16811161108c57600085828151811061102157611021611eee565b6020026020010151111561107a5784818151811061104157611041611eee565b602002602001015182828151811061105b5761105b611eee565b602002602001015161106d9190611dfb565b6110779084611c82565b92505b8061108481611e79565b915050611003565b50633b9aca00896101000151836110a39190611dfb565b6110ad9190611ceb565b9d939c50929a5050505050505050505050565b60606000826020015160ff1667ffffffffffffffff8111156110e4576110e4611f04565b60405190808252806020026020018201604052801561110d578160200160208202803683370190505b508351909150600190611121906002611d50565b61112b9190611e1a565b8160008151811061113e5761113e611eee565b602090810291909101015260015b836020015160ff168160ff1610156111be57835160ff168261116f600184611e56565b60ff168151811061118257611182611eee565b6020026020010151901b828260ff16815181106111a1576111a1611eee565b6020908102919091010152806111b681611eb8565b91505061114c565b5092915050565b80516000908190815b8160ff168160ff161015611259576000858260ff16815181106111f3576111f3611eee565b6020026020010151905080871681891614611238578360ff168360ff161415611223576000945050505050610347565b61122d8484611e56565b945050505050610347565b8361124281611eb8565b94505050808061125190611eb8565b9150506111ce565b506103428282611e56565b60606000611273836001611cc6565b60ff1667ffffffffffffffff81111561128e5761128e611f04565b6040519080825280602002602001820160405280156112b7578160200160208202803683370190505b50905060005b8360ff168160ff1611611309576112d7858260ff16611311565b828260ff16815181106112ec576112ec611eee565b60209081029190910101528061130181611eb8565b9150506112bd565b509392505050565b6000808360e00151836010811061132a5761132a611eee565b602002015163ffffffff169050600061134785600001518561135c565b90506113538183611ceb565b95945050505050565b600081156113a25761136f600183611e1a565b61137c9060ff8516611dfb565b6001901b61138d8360ff8616611dfb565b6001901b61139b9190611e1a565b9050610d35565b506001610d35565b803573ffffffffffffffffffffffffffffffffffffffff811681146113ce57600080fd5b919050565b600082601f8301126113e457600080fd5b60405161020080820182811067ffffffffffffffff8211171561140957611409611f04565b604052818482810187101561141d57600080fd5b600092505b601083101561144b57805161143681611f1a565b82526001929092019160209182019101611422565b509195945050505050565b60008083601f84011261146857600080fd5b50813567ffffffffffffffff81111561148057600080fd5b6020830191508360208260051b850101111561149b57600080fd5b9250929050565b80516cffffffffffffffffffffffffff811681146113ce57600080fd5b80516113ce81611f1a565b805160ff811681146113ce57600080fd5b6000806000604084860312156114f057600080fd5b6114f9846113aa565b9250602084013567ffffffffffffffff81111561151557600080fd5b61152186828701611456565b9497909650939450505050565b60008060008060006060868803121561154657600080fd5b61154f866113aa565b9450602086013567ffffffffffffffff8082111561156c57600080fd5b61157889838a01611456565b9096509450604088013591508082111561159157600080fd5b818801915088601f8301126115a557600080fd5b8135818111156115b457600080fd5b8960208285010111156115c657600080fd5b9699959850939650602001949392505050565b600060208083850312156115ec57600080fd5b823567ffffffffffffffff8082111561160457600080fd5b818501915085601f83011261161857600080fd5b813561162b61162682611c5e565b611c2d565b80828252858201915085850189878560051b880101111561164b57600080fd5b60005b848110156116ea5781358681111561166557600080fd5b8701603f81018c1361167657600080fd5b8881013561168661162682611c5e565b808282528b82019150604084018f60408560051b87010111156116a857600080fd5b600094505b838510156116d45780356116c081611f2f565b835260019490940193918c01918c016116ad565b508752505050928701929087019060010161164e565b50909998505050505050505050565b6000602080838503121561170c57600080fd5b825167ffffffffffffffff81111561172357600080fd5b8301601f8101851361173457600080fd5b805161174261162682611c5e565b8181528381019083850160a0808502860187018a101561176157600080fd5b60009550855b858110156117e55781838c03121561177d578687fd5b611785611be0565b835181528884015161179681611f1a565b818a01526040848101516117a981611f2f565b908201526060848101516117bc81611f2f565b908201526080848101516117cf81611f1a565b9082015285529387019391810191600101611767565b50919998505050505050505050565b6000602080838503121561180757600080fd5b825167ffffffffffffffff81111561181e57600080fd5b8301601f8101851361182f57600080fd5b805161183d61162682611c5e565b81815283810190838501610300808502860187018a101561185d57600080fd5b60009550855b858110156117e55781838c031215611879578687fd5b611881611c09565b61188a846114ca565b81526118978985016114ca565b8982015260406118a88186016114bf565b9082015260606118b98582016114bf565b9082015260806118ca8582016114bf565b9082015260a06118db8582016114bf565b9082015260c06118ec8582016114a2565b9082015260e06118fe8d8683016113d3565b908201526102e084015161010082015285529387019391810191600101611863565b6000602080838503121561193357600080fd5b825167ffffffffffffffff81111561194a57600080fd5b8301601f8101851361195b57600080fd5b805161196961162682611c5e565b80828252848201915084840188868560051b870101111561198957600080fd5b600094505b838510156119ac57805183526001949094019391850191850161198e565b50979650505050505050565b600081518084526020808501945080840160005b838110156119e8578151875295820195908201906001016119cc565b509495945050505050565b600081518084526020808501945080840160005b838110156119e857815167ffffffffffffffff1687529582019590820190600101611a07565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201526000611a5c60608301856119f3565b8281036040840152611a6e81856119f3565b9695505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611aeb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452611ad98583516119b8565b94509285019290850190600101611a9f565b5092979650505050505050565b602081526000610d3260208301846119b8565b604081526000611b1e60408301856119b8565b602083820381850152845180835260005b81811015611b4a578681018301518482018401528201611b2f565b81811115611b5b5760008383860101525b50601f01601f19169190910101949350505050565b60208082528181018390526000908460408401835b86811015611bb0578235611b9881611f1a565b63ffffffff1682529183019190830190600101611b85565b509695505050505050565b604081526000611bce60408301856119f3565b828103602084015261135381856119f3565b60405160a0810167ffffffffffffffff81118282101715611c0357611c03611f04565b60405290565b604051610120810167ffffffffffffffff81118282101715611c0357611c03611f04565b604051601f8201601f1916810167ffffffffffffffff81118282101715611c5657611c56611f04565b604052919050565b600067ffffffffffffffff821115611c7857611c78611f04565b5060051b60200190565b60008219821115611c9557611c95611ed8565b500190565b600067ffffffffffffffff808316818516808303821115611cbd57611cbd611ed8565b01949350505050565b600060ff821660ff84168060ff03821115611ce357611ce3611ed8565b019392505050565b600082611d0857634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115611d48578160001904821115611d2e57611d2e611ed8565b80851615611d3b57918102915b93841c9390800290611d12565b509250929050565b6000610d3260ff841683600082611d6957506001610d35565b81611d7657506000610d35565b8160018114611d8c5760028114611d9657611db2565b6001915050610d35565b60ff841115611da757611da7611ed8565b50506001821b610d35565b5060208310610133831016604e8410600b8410161715611dd5575081810a610d35565b611ddf8383611d0d565b8060001904821115611df357611df3611ed8565b029392505050565b6000816000190483118215151615611e1557611e15611ed8565b500290565b600082821015611e2c57611e2c611ed8565b500390565b600063ffffffff83811690831681811015611e4e57611e4e611ed8565b039392505050565b600060ff821660ff841680821015611e7057611e70611ed8565b90039392505050565b6000600019821415611e8d57611e8d611ed8565b5060010190565b600063ffffffff80831681811415611eae57611eae611ed8565b6001019392505050565b600060ff821660ff811415611ecf57611ecf611ed8565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b63ffffffff81168114611f2c57600080fd5b50565b67ffffffffffffffff81168114611f2c57600080fdfea2646970667358221220f2853d0d2295a363244a50df9962fece1368b6c2c299b27b0190124151281cba64736f6c63430008060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063aaca392e1161005b578063aaca392e14610146578063bcc18abc14610167578063ce343bb61461018e578063f8d0ca4c146101b557600080fd5b80634019f2d61461008d5780636cc25db7146100d9578063740e61a3146101005780638045fbcf14610126575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100af7f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000006100af565b6101396101343660046114db565b6101cf565b6040516100d09190611af8565b61015961015436600461152e565b61034e565b6040516100d0929190611b0b565b6100af7f000000000000000000000000000000000000000000000000000000000000000081565b6100af7f000000000000000000000000000000000000000000000000000000000000000081565b6101bd601081565b60405160ff90911681526020016100d0565b606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0bb78f385856040518363ffffffff1660e01b815260040161022e929190611b70565b60006040518083038186803b15801561024657600080fd5b505afa15801561025a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261028291908101906116f9565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d30a5daf86866040518363ffffffff1660e01b81526004016102e1929190611b70565b60006040518083038186803b1580156102f957600080fd5b505afa15801561030d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261033591908101906117f4565b90506103428683836105d9565b925050505b9392505050565b606080600061035f848601866115d9565b805190915086146103dc5760405162461bcd60e51b8152602060048201526024808201527f4472617743616c632f696e76616c69642d7069636b2d696e64696365732d6c6560448201527f6e6774680000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6040517fd0bb78f300000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d0bb78f390610453908b908b90600401611b70565b60006040518083038186803b15801561046b57600080fd5b505afa15801561047f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104a791908101906116f9565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d30a5daf8a8a6040518363ffffffff1660e01b8152600401610506929190611b70565b60006040518083038186803b15801561051e57600080fd5b505afa158015610532573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261055a91908101906117f4565b905060006105698b84846105d9565b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608e901b1660208201529091506000906034016040516020818303038152906040528051906020012090506105c68282868887610a44565b9650965050505050509550959350505050565b815160609060008167ffffffffffffffff8111156105f9576105f9611f04565b604051908082528060200260200182016040528015610622578160200160208202803683370190505b50905060008267ffffffffffffffff81111561064057610640611f04565b604051908082528060200260200182016040528015610669578160200160208202803683370190505b50905060005b838163ffffffff16101561079857858163ffffffff168151811061069557610695611eee565b60200260200101516040015163ffffffff16878263ffffffff16815181106106bf576106bf611eee565b60200260200101516040015103838263ffffffff16815181106106e4576106e4611eee565b602002602001019067ffffffffffffffff16908167ffffffffffffffff1681525050858163ffffffff168151811061071e5761071e611eee565b60200260200101516060015163ffffffff16878263ffffffff168151811061074857610748611eee565b60200260200101516040015103828263ffffffff168151811061076d5761076d611eee565b67ffffffffffffffff909216602092830291909101909101528061079081611e94565b91505061066f565b506040517f68c7fd5700000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906368c7fd5790610812908b9087908790600401611a2d565b60006040518083038186803b15801561082a57600080fd5b505afa15801561083e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108669190810190611920565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638e6d536a85856040518363ffffffff1660e01b81526004016108c5929190611bbb565b60006040518083038186803b1580156108dd57600080fd5b505afa1580156108f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109199190810190611920565b905060008567ffffffffffffffff81111561093657610936611f04565b60405190808252806020026020018201604052801561095f578160200160208202803683370190505b50905060005b86811015610a365782818151811061097f5761097f611eee565b6020026020010151600014156109b45760008282815181106109a3576109a3611eee565b602002602001018181525050610a24565b8281815181106109c6576109c6611eee565b60200260200101518482815181106109e0576109e0611eee565b6020026020010151670de0b6b3a76400006109fb9190611dfb565b610a059190611ceb565b828281518110610a1757610a17611eee565b6020026020010181815250505b80610a2e81611e79565b915050610965565b509998505050505050505050565b6060806000875167ffffffffffffffff811115610a6357610a63611f04565b604051908082528060200260200182016040528015610a8c578160200160208202803683370190505b5090506000885167ffffffffffffffff811115610aab57610aab611f04565b604051908082528060200260200182016040528015610ade57816020015b6060815260200190600190039081610ac95790505b5090504260005b88518163ffffffff161015610ccb57868163ffffffff1681518110610b0c57610b0c611eee565b602002602001015160a0015163ffffffff16898263ffffffff1681518110610b3657610b36611eee565b602002602001015160400151610b4c9190611c9a565b67ffffffffffffffff168267ffffffffffffffff1610610bae5760405162461bcd60e51b815260206004820152601560248201527f4472617743616c632f647261772d65787069726564000000000000000000000060448201526064016103d3565b6000610bf8888363ffffffff1681518110610bcb57610bcb611eee565b60200260200101518d8463ffffffff1681518110610beb57610beb611eee565b6020026020010151610cfe565b9050610c728a8363ffffffff1681518110610c1557610c15611eee565b6020026020010151600001518267ffffffffffffffff168d8c8663ffffffff1681518110610c4557610c45611eee565b60200260200101518c8763ffffffff1681518110610c6557610c65611eee565b6020026020010151610d3b565b868463ffffffff1681518110610c8a57610c8a611eee565b60200260200101868563ffffffff1681518110610ca957610ca9611eee565b6020908102919091010191909152525080610cc381611e94565b915050610ae5565b5081604051602001610cdd9190611a78565b60405160208183030381529060405293508294505050509550959350505050565b6000670de0b6b3a76400008360c001516cffffffffffffffffffffffffff1683610d289190611dfb565b610d329190611ceb565b90505b92915050565b600060606000610d4a846110c0565b85516040805160108082526102208201909252929350909160009160208201610200803683370190505090506000866080015163ffffffff168363ffffffff161115610dd85760405162461bcd60e51b815260206004820152601f60248201527f4472617743616c632f657863656564732d6d61782d757365722d7069636b730060448201526064016103d3565b60005b8363ffffffff168163ffffffff161015610ff0578a898263ffffffff1681518110610e0857610e08611eee565b602002602001015167ffffffffffffffff1610610e675760405162461bcd60e51b815260206004820181905260248201527f4472617743616c632f696e73756666696369656e742d757365722d7069636b7360448201526064016103d3565b63ffffffff811615610f1e5788610e7f600183611e31565b63ffffffff1681518110610e9557610e95611eee565b602002602001015167ffffffffffffffff16898263ffffffff1681518110610ebf57610ebf611eee565b602002602001015167ffffffffffffffff1611610f1e5760405162461bcd60e51b815260206004820152601860248201527f4472617743616c632f7069636b732d617363656e64696e67000000000000000060448201526064016103d3565b60008a8a8363ffffffff1681518110610f3957610f39611eee565b6020026020010151604051602001610f6592919091825267ffffffffffffffff16602082015260400190565b6040516020818303038152906040528051906020012060001c90506000610f8d828f896111c5565b9050601060ff82161015610fdb578360ff168160ff161115610fad578093505b848160ff1681518110610fc257610fc2611eee565b602002602001018051809190610fd790611e79565b9052505b50508080610fe890611e94565b915050610ddb565b50600080610ffe8984611264565b905060005b8360ff16811161108c57600085828151811061102157611021611eee565b6020026020010151111561107a5784818151811061104157611041611eee565b602002602001015182828151811061105b5761105b611eee565b602002602001015161106d9190611dfb565b6110779084611c82565b92505b8061108481611e79565b915050611003565b50633b9aca00896101000151836110a39190611dfb565b6110ad9190611ceb565b9d939c50929a5050505050505050505050565b60606000826020015160ff1667ffffffffffffffff8111156110e4576110e4611f04565b60405190808252806020026020018201604052801561110d578160200160208202803683370190505b508351909150600190611121906002611d50565b61112b9190611e1a565b8160008151811061113e5761113e611eee565b602090810291909101015260015b836020015160ff168160ff1610156111be57835160ff168261116f600184611e56565b60ff168151811061118257611182611eee565b6020026020010151901b828260ff16815181106111a1576111a1611eee565b6020908102919091010152806111b681611eb8565b91505061114c565b5092915050565b80516000908190815b8160ff168160ff161015611259576000858260ff16815181106111f3576111f3611eee565b6020026020010151905080871681891614611238578360ff168360ff161415611223576000945050505050610347565b61122d8484611e56565b945050505050610347565b8361124281611eb8565b94505050808061125190611eb8565b9150506111ce565b506103428282611e56565b60606000611273836001611cc6565b60ff1667ffffffffffffffff81111561128e5761128e611f04565b6040519080825280602002602001820160405280156112b7578160200160208202803683370190505b50905060005b8360ff168160ff1611611309576112d7858260ff16611311565b828260ff16815181106112ec576112ec611eee565b60209081029190910101528061130181611eb8565b9150506112bd565b509392505050565b6000808360e00151836010811061132a5761132a611eee565b602002015163ffffffff169050600061134785600001518561135c565b90506113538183611ceb565b95945050505050565b600081156113a25761136f600183611e1a565b61137c9060ff8516611dfb565b6001901b61138d8360ff8616611dfb565b6001901b61139b9190611e1a565b9050610d35565b506001610d35565b803573ffffffffffffffffffffffffffffffffffffffff811681146113ce57600080fd5b919050565b600082601f8301126113e457600080fd5b60405161020080820182811067ffffffffffffffff8211171561140957611409611f04565b604052818482810187101561141d57600080fd5b600092505b601083101561144b57805161143681611f1a565b82526001929092019160209182019101611422565b509195945050505050565b60008083601f84011261146857600080fd5b50813567ffffffffffffffff81111561148057600080fd5b6020830191508360208260051b850101111561149b57600080fd5b9250929050565b80516cffffffffffffffffffffffffff811681146113ce57600080fd5b80516113ce81611f1a565b805160ff811681146113ce57600080fd5b6000806000604084860312156114f057600080fd5b6114f9846113aa565b9250602084013567ffffffffffffffff81111561151557600080fd5b61152186828701611456565b9497909650939450505050565b60008060008060006060868803121561154657600080fd5b61154f866113aa565b9450602086013567ffffffffffffffff8082111561156c57600080fd5b61157889838a01611456565b9096509450604088013591508082111561159157600080fd5b818801915088601f8301126115a557600080fd5b8135818111156115b457600080fd5b8960208285010111156115c657600080fd5b9699959850939650602001949392505050565b600060208083850312156115ec57600080fd5b823567ffffffffffffffff8082111561160457600080fd5b818501915085601f83011261161857600080fd5b813561162b61162682611c5e565b611c2d565b80828252858201915085850189878560051b880101111561164b57600080fd5b60005b848110156116ea5781358681111561166557600080fd5b8701603f81018c1361167657600080fd5b8881013561168661162682611c5e565b808282528b82019150604084018f60408560051b87010111156116a857600080fd5b600094505b838510156116d45780356116c081611f2f565b835260019490940193918c01918c016116ad565b508752505050928701929087019060010161164e565b50909998505050505050505050565b6000602080838503121561170c57600080fd5b825167ffffffffffffffff81111561172357600080fd5b8301601f8101851361173457600080fd5b805161174261162682611c5e565b8181528381019083850160a0808502860187018a101561176157600080fd5b60009550855b858110156117e55781838c03121561177d578687fd5b611785611be0565b835181528884015161179681611f1a565b818a01526040848101516117a981611f2f565b908201526060848101516117bc81611f2f565b908201526080848101516117cf81611f1a565b9082015285529387019391810191600101611767565b50919998505050505050505050565b6000602080838503121561180757600080fd5b825167ffffffffffffffff81111561181e57600080fd5b8301601f8101851361182f57600080fd5b805161183d61162682611c5e565b81815283810190838501610300808502860187018a101561185d57600080fd5b60009550855b858110156117e55781838c031215611879578687fd5b611881611c09565b61188a846114ca565b81526118978985016114ca565b8982015260406118a88186016114bf565b9082015260606118b98582016114bf565b9082015260806118ca8582016114bf565b9082015260a06118db8582016114bf565b9082015260c06118ec8582016114a2565b9082015260e06118fe8d8683016113d3565b908201526102e084015161010082015285529387019391810191600101611863565b6000602080838503121561193357600080fd5b825167ffffffffffffffff81111561194a57600080fd5b8301601f8101851361195b57600080fd5b805161196961162682611c5e565b80828252848201915084840188868560051b870101111561198957600080fd5b600094505b838510156119ac57805183526001949094019391850191850161198e565b50979650505050505050565b600081518084526020808501945080840160005b838110156119e8578151875295820195908201906001016119cc565b509495945050505050565b600081518084526020808501945080840160005b838110156119e857815167ffffffffffffffff1687529582019590820190600101611a07565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201526000611a5c60608301856119f3565b8281036040840152611a6e81856119f3565b9695505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611aeb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452611ad98583516119b8565b94509285019290850190600101611a9f565b5092979650505050505050565b602081526000610d3260208301846119b8565b604081526000611b1e60408301856119b8565b602083820381850152845180835260005b81811015611b4a578681018301518482018401528201611b2f565b81811115611b5b5760008383860101525b50601f01601f19169190910101949350505050565b60208082528181018390526000908460408401835b86811015611bb0578235611b9881611f1a565b63ffffffff1682529183019190830190600101611b85565b509695505050505050565b604081526000611bce60408301856119f3565b828103602084015261135381856119f3565b60405160a0810167ffffffffffffffff81118282101715611c0357611c03611f04565b60405290565b604051610120810167ffffffffffffffff81118282101715611c0357611c03611f04565b604051601f8201601f1916810167ffffffffffffffff81118282101715611c5657611c56611f04565b604052919050565b600067ffffffffffffffff821115611c7857611c78611f04565b5060051b60200190565b60008219821115611c9557611c95611ed8565b500190565b600067ffffffffffffffff808316818516808303821115611cbd57611cbd611ed8565b01949350505050565b600060ff821660ff84168060ff03821115611ce357611ce3611ed8565b019392505050565b600082611d0857634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115611d48578160001904821115611d2e57611d2e611ed8565b80851615611d3b57918102915b93841c9390800290611d12565b509250929050565b6000610d3260ff841683600082611d6957506001610d35565b81611d7657506000610d35565b8160018114611d8c5760028114611d9657611db2565b6001915050610d35565b60ff841115611da757611da7611ed8565b50506001821b610d35565b5060208310610133831016604e8410600b8410161715611dd5575081810a610d35565b611ddf8383611d0d565b8060001904821115611df357611df3611ed8565b029392505050565b6000816000190483118215151615611e1557611e15611ed8565b500290565b600082821015611e2c57611e2c611ed8565b500390565b600063ffffffff83811690831681811015611e4e57611e4e611ed8565b039392505050565b600060ff821660ff841680821015611e7057611e70611ed8565b90039392505050565b6000600019821415611e8d57611e8d611ed8565b5060010190565b600063ffffffff80831681811415611eae57611eae611ed8565b6001019392505050565b600060ff821660ff811415611ecf57611ecf611ed8565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b63ffffffff81168114611f2c57600080fd5b50565b67ffffffffffffffff81168114611f2c57600080fdfea2646970667358221220f2853d0d2295a363244a50df9962fece1368b6c2c299b27b0190124151281cba64736f6c63430008060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
