60806040523480156200001157600080fd5b506040518060400160405280600881526020017f43616c69624e46540000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4e4654000000000000000000000000000000000000000000000000000000000081525081600090816200008f9190620004ad565b508060019081620000a19190620004ad565b505050620000c86000801b620000bc620000ce60201b60201c565b620000d660201b60201c565b62000594565b600033905090565b620000e88282620001c860201b60201c565b620001c45760016007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000169620000ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002b557607f821691505b602082108103620002cb57620002ca6200026d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002f6565b620003418683620002f6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200038e62000388620003828462000359565b62000363565b62000359565b9050919050565b6000819050919050565b620003aa836200036d565b620003c2620003b98262000395565b84845462000303565b825550505050565b600090565b620003d9620003ca565b620003e68184846200039f565b505050565b5b818110156200040e5762000402600082620003cf565b600181019050620003ec565b5050565b601f8211156200045d576200042781620002d1565b6200043284620002e6565b8101602085101562000442578190505b6200045a6200045185620002e6565b830182620003eb565b50505b505050565b600082821c905092915050565b6000620004826000198460080262000462565b1980831691505092915050565b60006200049d83836200046f565b9150826002028217905092915050565b620004b88262000233565b67ffffffffffffffff811115620004d457620004d36200023e565b5b620004e082546200029c565b620004ed82828562000412565b600060209050601f83116001811462000525576000841562000510578287015190505b6200051c85826200048f565b8655506200058c565b601f1984166200053586620002d1565b60005b828110156200055f5784890151825560018201915060208501945060208101905062000538565b868310156200057f57848901516200057b601f8916826200046f565b8355505b6001600288020188555050505b505050505050565b61451680620005a46000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806369e2f0fb116100f9578063a217fddf11610097578063c87b56dd11610071578063c87b56dd146104c9578063d5391393146104f9578063d547741f14610517578063e985e9c514610533576101a9565b8063a217fddf14610473578063a22cb46514610491578063b88d4fde146104ad576101a9565b806383197ef0116100d357806383197ef0146103ff57806391d148541461040957806394ab67fe1461043957806395d89b4114610455576101a9565b806369e2f0fb1461038357806370a082311461039f5780637b17b7a8146103cf576101a9565b8063248a9ca31161016657806336568abe1161014057806336568abe146102ff5780633dd1eb611461031b57806342842e0e146103375780636352211e14610353576101a9565b8063248a9ca3146102825780632a55205a146102b25780632f2ff15d146102e3576101a9565b806301ffc9a7146101ae57806306fdde03146101de578063081812fc146101fc578063095ea7b31461022c57806318160ddd1461024857806323b872dd14610266575b600080fd5b6101c860048036038101906101c39190612bb3565b610563565b6040516101d59190612bfb565b60405180910390f35b6101e6610575565b6040516101f39190612ca6565b60405180910390f35b61021660048036038101906102119190612cfe565b610607565b6040516102239190612d6c565b60405180910390f35b61024660048036038101906102419190612db3565b61064d565b005b610250610764565b60405161025d9190612e02565b60405180910390f35b610280600480360381019061027b9190612e1d565b610775565b005b61029c60048036038101906102979190612ea6565b6107d5565b6040516102a99190612ee2565b60405180910390f35b6102cc60048036038101906102c79190612efd565b6107f5565b6040516102da929190612f3d565b60405180910390f35b6102fd60048036038101906102f89190612f66565b6109df565b005b61031960048036038101906103149190612f66565b610a00565b005b61033560048036038101906103309190612fa6565b610a83565b005b610351600480360381019061034c9190612e1d565b610b72565b005b61036d60048036038101906103689190612cfe565b610b92565b60405161037a9190612d6c565b60405180910390f35b61039d60048036038101906103989190612fa6565b610c43565b005b6103b960048036038101906103b49190612fa6565b610d32565b6040516103c69190612e02565b60405180910390f35b6103e960048036038101906103e4919061314c565b610de9565b6040516103f69190612e02565b60405180910390f35b610407610eb8565b005b610423600480360381019061041e9190612f66565b610f2c565b6040516104309190612bfb565b60405180910390f35b610453600480360381019061044e9190612db3565b610f97565b005b61045d610fa6565b60405161046a9190612ca6565b60405180910390f35b61047b611038565b6040516104889190612ee2565b60405180910390f35b6104ab60048036038101906104a691906131e7565b61103f565b005b6104c760048036038101906104c291906132c8565b611055565b005b6104e360048036038101906104de9190612cfe565b6110b7565b6040516104f09190612ca6565b60405180910390f35b6105016110c9565b60405161050e9190612ee2565b60405180910390f35b610531600480360381019061052c9190612f66565b6110ed565b005b61054d6004803603810190610548919061334b565b61110e565b60405161055a9190612bfb565b60405180910390f35b600061056e826111a2565b9050919050565b606060008054610584906133ba565b80601f01602080910402602001604051908101604052809291908181526020018280546105b0906133ba565b80156105fd5780601f106105d2576101008083540402835291602001916105fd565b820191906000526020600020905b8154815290600101906020018083116105e057829003601f168201915b5050505050905090565b60006106128261121c565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061065882610b92565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf9061345d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166106e7611267565b73ffffffffffffffffffffffffffffffffffffffff161480610716575061071581610710611267565b61110e565b5b610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074c906134ef565b60405180910390fd5b61075f838361126f565b505050565b6000610770600a611328565b905090565b610786610780611267565b82611336565b6107c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bc90613581565b60405180910390fd5b6107d08383836113cb565b505050565b600060076000838152602001908152602001600020600101549050919050565b6000806000600960008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361098a5760086040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000610994611631565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff16866109c091906135d0565b6109ca9190613641565b90508160000151819350935050509250929050565b6109e8826107d5565b6109f18161163b565b6109fb838361164f565b505050565b610a08611267565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c906136e4565b60405180910390fd5b610a7f8282611730565b5050565b610a976000801b610a92611267565b610f2c565b610ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acd90613750565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c906137bc565b60405180910390fd5b610b6f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68261164f565b50565b610b8d83838360405180602001604052806000815250611055565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3190613828565b60405180910390fd5b80915050919050565b610c576000801b610c52611267565b610f2c565b610c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8d90613750565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfc90613894565b60405180910390fd5b610d2f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682611730565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9990613926565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610e1c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610e17611267565b610f2c565b80610e375750610e366000801b610e31611267565b610f2c565b5b610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d90613992565b60405180910390fd5b610e80600a611812565b6000610e8c600a611328565b9050610e988582611828565b610ea28185611846565b610ead8186856118b3565b809150509392505050565b610ecc6000801b610ec7611267565b610f2c565b610f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0290613750565b60405180910390fd5b610f13611a5a565b3373ffffffffffffffffffffffffffffffffffffffff16ff5b60006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610fa23383836113cb565b5050565b606060018054610fb5906133ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe1906133ba565b801561102e5780601f106110035761010080835404028352916020019161102e565b820191906000526020600020905b81548152906001019060200180831161101157829003601f168201915b5050505050905090565b6000801b81565b61105161104a611267565b8383611afe565b5050565b611066611060611267565b83611336565b6110a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109c90613581565b60405180910390fd5b6110b184848484611c6a565b50505050565b60606110c282611cc6565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6110f6826107d5565b6110ff8161163b565b6111098383611730565b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611215575061121482611dd8565b5b9050919050565b61122581611e52565b611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b90613828565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166112e283610b92565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b60008061134283610b92565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806113845750611383818561110e565b5b806113c257508373ffffffffffffffffffffffffffffffffffffffff166113aa84610607565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166113eb82610b92565b73ffffffffffffffffffffffffffffffffffffffff1614611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143890613a24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a790613ab6565b60405180910390fd5b6114bb838383611ebe565b6114c660008261126f565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115169190613ad6565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461156d9190613b0a565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461162c838383611ec3565b505050565b6000612710905090565b61164c81611647611267565b611ec8565b50565b6116598282610f2c565b61172c5760016007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116d1611267565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61173a8282610f2c565b1561180e5760006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117b3611267565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6001816000016000828254019250508190555050565b611842828260405180602001604052806000815250611f65565b5050565b61184f82611e52565b61188e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188590613bb0565b60405180910390fd5b806006600084815260200190815260200160002090816118ae9190613d7c565b505050565b6118bb611631565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115611919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191090613ec0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197f90613f2c565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff168152506009600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b611a6e6000801b611a69611267565b610f2c565b611aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa490613750565b60405180910390fd5b6000611ab7610764565b90506000600190505b600182611acd9190613b0a565b811015611afa57611add81611fc0565b611ae7600a611fd5565b8080611af290613f4c565b915050611ac0565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6390613fe0565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c5d9190612bfb565b60405180910390a3505050565b611c758484846113cb565b611c8184848484612031565b611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb790614072565b60405180910390fd5b50505050565b6060611cd18261121c565b6000600660008481526020019081526020016000208054611cf1906133ba565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1d906133ba565b8015611d6a5780601f10611d3f57610100808354040283529160200191611d6a565b820191906000526020600020905b815481529060010190602001808311611d4d57829003601f168201915b505050505090506000611d7b6121b8565b90506000815103611d90578192505050611dd3565b600082511115611dc5578082604051602001611dad9291906140ce565b60405160208183030381529060405292505050611dd3565b611dce846121cf565b925050505b919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611e4b5750611e4a82612237565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b611ed28282610f2c565b611f6157611ef78173ffffffffffffffffffffffffffffffffffffffff166014612319565b611f058360001c6020612319565b604051602001611f1692919061418a565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f589190612ca6565b60405180910390fd5b5050565b611f6f8383612555565b611f7c6000848484612031565b611fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb290614072565b60405180910390fd5b505050565b611fc98161272e565b611fd281612781565b50565b60008160000154905060008111612021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201890614210565b60405180910390fd5b6001810382600001819055505050565b60006120528473ffffffffffffffffffffffffffffffffffffffff166127e0565b156121ab578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261207b611267565b8786866040518563ffffffff1660e01b815260040161209d9493929190614285565b6020604051808303816000875af19250505080156120d957506040513d601f19601f820116820180604052508101906120d691906142e6565b60015b61215b573d8060008114612109576040519150601f19603f3d011682016040523d82523d6000602084013e61210e565b606091505b506000815103612153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214a90614072565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506121b0565b600190505b949350505050565b606060405180602001604052806000815250905090565b60606121da8261121c565b60006121e46121b8565b90506000815111612204576040518060200160405280600081525061222f565b8061220e84612803565b60405160200161221f9291906140ce565b6040516020818303038152906040525b915050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061230257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612312575061231182612963565b5b9050919050565b60606000600283600261232c91906135d0565b6123369190613b0a565b67ffffffffffffffff81111561234f5761234e612fdd565b5b6040519080825280601f01601f1916602001820160405280156123815781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106123b9576123b8614313565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061241d5761241c614313565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261245d91906135d0565b6124679190613b0a565b90505b6001811115612507577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106124a9576124a8614313565b5b1a60f81b8282815181106124c0576124bf614313565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061250090614342565b905061246a565b506000841461254b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612542906143b7565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bb90614423565b60405180910390fd5b6125cd81611e52565b1561260d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126049061448f565b60405180910390fd5b61261960008383611ebe565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126699190613b0a565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461272a60008383611ec3565b5050565b612737816129cd565b6000600660008381526020019081526020016000208054612757906133ba565b90501461277e5760066000828152602001908152602001600020600061277d9190612aea565b5b50565b60096000828152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60606000820361284a576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061295e565b600082905060005b6000821461287c57808061286590613f4c565b915050600a826128759190613641565b9150612852565b60008167ffffffffffffffff81111561289857612897612fdd565b5b6040519080825280601f01601f1916602001820160405280156128ca5781602001600182028036833780820191505090505b5090505b60008514612957576001826128e39190613ad6565b9150600a856128f291906144af565b60306128fe9190613b0a565b60f81b81838151811061291457612913614313565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856129509190613641565b94506128ce565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006129d882610b92565b90506129e681600084611ebe565b6129f160008361126f565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a419190613ad6565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612ae681600084611ec3565b5050565b508054612af6906133ba565b6000825580601f10612b085750612b27565b601f016020900490600052602060002090810190612b269190612b2a565b5b50565b5b80821115612b43576000816000905550600101612b2b565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612b9081612b5b565b8114612b9b57600080fd5b50565b600081359050612bad81612b87565b92915050565b600060208284031215612bc957612bc8612b51565b5b6000612bd784828501612b9e565b91505092915050565b60008115159050919050565b612bf581612be0565b82525050565b6000602082019050612c106000830184612bec565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c50578082015181840152602081019050612c35565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c7882612c16565b612c828185612c21565b9350612c92818560208601612c32565b612c9b81612c5c565b840191505092915050565b60006020820190508181036000830152612cc08184612c6d565b905092915050565b6000819050919050565b612cdb81612cc8565b8114612ce657600080fd5b50565b600081359050612cf881612cd2565b92915050565b600060208284031215612d1457612d13612b51565b5b6000612d2284828501612ce9565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d5682612d2b565b9050919050565b612d6681612d4b565b82525050565b6000602082019050612d816000830184612d5d565b92915050565b612d9081612d4b565b8114612d9b57600080fd5b50565b600081359050612dad81612d87565b92915050565b60008060408385031215612dca57612dc9612b51565b5b6000612dd885828601612d9e565b9250506020612de985828601612ce9565b9150509250929050565b612dfc81612cc8565b82525050565b6000602082019050612e176000830184612df3565b92915050565b600080600060608486031215612e3657612e35612b51565b5b6000612e4486828701612d9e565b9350506020612e5586828701612d9e565b9250506040612e6686828701612ce9565b9150509250925092565b6000819050919050565b612e8381612e70565b8114612e8e57600080fd5b50565b600081359050612ea081612e7a565b92915050565b600060208284031215612ebc57612ebb612b51565b5b6000612eca84828501612e91565b91505092915050565b612edc81612e70565b82525050565b6000602082019050612ef76000830184612ed3565b92915050565b60008060408385031215612f1457612f13612b51565b5b6000612f2285828601612ce9565b9250506020612f3385828601612ce9565b9150509250929050565b6000604082019050612f526000830185612d5d565b612f5f6020830184612df3565b9392505050565b60008060408385031215612f7d57612f7c612b51565b5b6000612f8b85828601612e91565b9250506020612f9c85828601612d9e565b9150509250929050565b600060208284031215612fbc57612fbb612b51565b5b6000612fca84828501612d9e565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61301582612c5c565b810181811067ffffffffffffffff8211171561303457613033612fdd565b5b80604052505050565b6000613047612b47565b9050613053828261300c565b919050565b600067ffffffffffffffff82111561307357613072612fdd565b5b61307c82612c5c565b9050602081019050919050565b82818337600083830152505050565b60006130ab6130a684613058565b61303d565b9050828152602081018484840111156130c7576130c6612fd8565b5b6130d2848285613089565b509392505050565b600082601f8301126130ef576130ee612fd3565b5b81356130ff848260208601613098565b91505092915050565b60006bffffffffffffffffffffffff82169050919050565b61312981613108565b811461313457600080fd5b50565b60008135905061314681613120565b92915050565b60008060006060848603121561316557613164612b51565b5b600061317386828701612d9e565b935050602084013567ffffffffffffffff81111561319457613193612b56565b5b6131a0868287016130da565b92505060406131b186828701613137565b9150509250925092565b6131c481612be0565b81146131cf57600080fd5b50565b6000813590506131e1816131bb565b92915050565b600080604083850312156131fe576131fd612b51565b5b600061320c85828601612d9e565b925050602061321d858286016131d2565b9150509250929050565b600067ffffffffffffffff82111561324257613241612fdd565b5b61324b82612c5c565b9050602081019050919050565b600061326b61326684613227565b61303d565b90508281526020810184848401111561328757613286612fd8565b5b613292848285613089565b509392505050565b600082601f8301126132af576132ae612fd3565b5b81356132bf848260208601613258565b91505092915050565b600080600080608085870312156132e2576132e1612b51565b5b60006132f087828801612d9e565b945050602061330187828801612d9e565b935050604061331287828801612ce9565b925050606085013567ffffffffffffffff81111561333357613332612b56565b5b61333f8782880161329a565b91505092959194509250565b6000806040838503121561336257613361612b51565b5b600061337085828601612d9e565b925050602061338185828601612d9e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133d257607f821691505b6020821081036133e5576133e461338b565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613447602183612c21565b9150613452826133eb565b604082019050919050565b600060208201905081810360008301526134768161343a565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b60006134d9603e83612c21565b91506134e48261347d565b604082019050919050565b60006020820190508181036000830152613508816134cc565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b600061356b602e83612c21565b91506135768261350f565b604082019050919050565b6000602082019050818103600083015261359a8161355e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135db82612cc8565b91506135e683612cc8565b92508282026135f481612cc8565b9150828204841483151761360b5761360a6135a1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061364c82612cc8565b915061365783612cc8565b92508261366757613666613612565b5b828204905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b60006136ce602f83612c21565b91506136d982613672565b604082019050919050565b600060208201905081810360008301526136fd816136c1565b9050919050565b7f43414c4c45525f4d5553545f484156455f41444d494e5f524f4c450000000000600082015250565b600061373a601b83612c21565b915061374582613704565b602082019050919050565b600060208201905081810360008301526137698161372d565b9050919050565b7f7a65726f2061646472657373206572726f720000000000000000000000000000600082015250565b60006137a6601283612c21565b91506137b182613770565b602082019050919050565b600060208201905081810360008301526137d581613799565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000613812601883612c21565b915061381d826137dc565b602082019050919050565b6000602082019050818103600083015261384181613805565b9050919050565b7f6163636f756e742063616e6e6f74206265207a65726f20616464726573730000600082015250565b600061387e601e83612c21565b915061388982613848565b602082019050919050565b600060208201905081810360008301526138ad81613871565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613910602983612c21565b915061391b826138b4565b604082019050919050565b6000602082019050818103600083015261393f81613903565b9050919050565b7f43414c4c45525f4d5553545f484156455f4d494e5445525f524f4c4500000000600082015250565b600061397c601c83612c21565b915061398782613946565b602082019050919050565b600060208201905081810360008301526139ab8161396f565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613a0e602583612c21565b9150613a19826139b2565b604082019050919050565b60006020820190508181036000830152613a3d81613a01565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613aa0602483612c21565b9150613aab82613a44565b604082019050919050565b60006020820190508181036000830152613acf81613a93565b9050919050565b6000613ae182612cc8565b9150613aec83612cc8565b9250828203905081811115613b0457613b036135a1565b5b92915050565b6000613b1582612cc8565b9150613b2083612cc8565b9250828201905080821115613b3857613b376135a1565b5b92915050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000613b9a602e83612c21565b9150613ba582613b3e565b604082019050919050565b60006020820190508181036000830152613bc981613b8d565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613c327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613bf5565b613c3c8683613bf5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613c79613c74613c6f84612cc8565b613c54565b612cc8565b9050919050565b6000819050919050565b613c9383613c5e565b613ca7613c9f82613c80565b848454613c02565b825550505050565b600090565b613cbc613caf565b613cc7818484613c8a565b505050565b5b81811015613ceb57613ce0600082613cb4565b600181019050613ccd565b5050565b601f821115613d3057613d0181613bd0565b613d0a84613be5565b81016020851015613d19578190505b613d2d613d2585613be5565b830182613ccc565b50505b505050565b600082821c905092915050565b6000613d5360001984600802613d35565b1980831691505092915050565b6000613d6c8383613d42565b9150826002028217905092915050565b613d8582612c16565b67ffffffffffffffff811115613d9e57613d9d612fdd565b5b613da882546133ba565b613db3828285613cef565b600060209050601f831160018114613de65760008415613dd4578287015190505b613dde8582613d60565b865550613e46565b601f198416613df486613bd0565b60005b82811015613e1c57848901518255600182019150602085019450602081019050613df7565b86831015613e395784890151613e35601f891682613d42565b8355505b6001600288020188555050505b505050505050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b6000613eaa602a83612c21565b9150613eb582613e4e565b604082019050919050565b60006020820190508181036000830152613ed981613e9d565b9050919050565b7f455243323938313a20496e76616c696420706172616d65746572730000000000600082015250565b6000613f16601b83612c21565b9150613f2182613ee0565b602082019050919050565b60006020820190508181036000830152613f4581613f09565b9050919050565b6000613f5782612cc8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613f8957613f886135a1565b5b600182019050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613fca601983612c21565b9150613fd582613f94565b602082019050919050565b60006020820190508181036000830152613ff981613fbd565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061405c603283612c21565b915061406782614000565b604082019050919050565b6000602082019050818103600083015261408b8161404f565b9050919050565b600081905092915050565b60006140a882612c16565b6140b28185614092565b93506140c2818560208601612c32565b80840191505092915050565b60006140da828561409d565b91506140e6828461409d565b91508190509392505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000614128601783614092565b9150614133826140f2565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000614174601183614092565b915061417f8261413e565b601182019050919050565b60006141958261411b565b91506141a1828561409d565b91506141ac82614167565b91506141b8828461409d565b91508190509392505050565b7f436f756e7465723a2064656372656d656e74206f766572666c6f770000000000600082015250565b60006141fa601b83612c21565b9150614205826141c4565b602082019050919050565b60006020820190508181036000830152614229816141ed565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061425782614230565b614261818561423b565b9350614271818560208601612c32565b61427a81612c5c565b840191505092915050565b600060808201905061429a6000830187612d5d565b6142a76020830186612d5d565b6142b46040830185612df3565b81810360608301526142c6818461424c565b905095945050505050565b6000815190506142e081612b87565b92915050565b6000602082840312156142fc576142fb612b51565b5b600061430a848285016142d1565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061434d82612cc8565b9150600082036143605761435f6135a1565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006143a1602083612c21565b91506143ac8261436b565b602082019050919050565b600060208201905081810360008301526143d081614394565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061440d602083612c21565b9150614418826143d7565b602082019050919050565b6000602082019050818103600083015261443c81614400565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614479601c83612c21565b915061448482614443565b602082019050919050565b600060208201905081810360008301526144a88161446c565b9050919050565b60006144ba82612cc8565b91506144c583612cc8565b9250826144d5576144d4613612565b5b82820690509291505056fea26469706673582212207c2e7df08b2603b952a85759ffaf4a68c2cf017a83263a42ec3794a17777c8fe64736f6c63430008110033