60806040526040518060400160405280600681526020017f42414e4745520000000000000000000000000000000000000000000000000000815250600390816200004a91906200059b565b506040518060400160405280600681526020017f42414e4745520000000000000000000000000000000000000000000000000000815250600490816200009191906200059b565b506012600560006101000a81548160ff021916908360ff160217905550600560009054906101000a900460ff16600a620000cc919062000812565b630bebc200620000dd919062000863565b60065533600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073687d11ca0af00143a91ebda855b30483ed37be07600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d8da6bf26964af9d7eed9e03e53415d37aa96045600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620001d857600080fd5b506006546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000254600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166006546200025a60201b60201c565b620008dc565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620002b557600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003159190620008bf565b60405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003a357607f821691505b602082108103620003b957620003b86200035b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003e4565b6200042f8683620003e4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200047c62000476620004708462000447565b62000451565b62000447565b9050919050565b6000819050919050565b62000498836200045b565b620004b0620004a78262000483565b848454620003f1565b825550505050565b600090565b620004c7620004b8565b620004d48184846200048d565b505050565b5b81811015620004fc57620004f0600082620004bd565b600181019050620004da565b5050565b601f8211156200054b576200051581620003bf565b6200052084620003d4565b8101602085101562000530578190505b620005486200053f85620003d4565b830182620004d9565b50505b505050565b600082821c905092915050565b6000620005706000198460080262000550565b1980831691505092915050565b60006200058b83836200055d565b9150826002028217905092915050565b620005a68262000321565b67ffffffffffffffff811115620005c257620005c16200032c565b5b620005ce82546200038a565b620005db82828562000500565b600060209050601f831160018114620006135760008415620005fe578287015190505b6200060a85826200057d565b8655506200067a565b601f1984166200062386620003bf565b60005b828110156200064d5784890151825560018201915060208501945060208101905062000626565b868310156200066d578489015162000669601f8916826200055d565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200071057808604811115620006e857620006e762000682565b5b6001851615620006f85780820291505b80810290506200070885620006b1565b9450620006c8565b94509492505050565b6000826200072b5760019050620007fe565b816200073b5760009050620007fe565b81600181146200075457600281146200075f5762000795565b6001915050620007fe565b60ff84111562000774576200077362000682565b5b8360020a9150848211156200078e576200078d62000682565b5b50620007fe565b5060208310610133831016604e8410600b8410161715620007cf5782820a905083811115620007c957620007c862000682565b5b620007fe565b620007de8484846001620006be565b92509050818404811115620007f857620007f762000682565b5b81810290505b9392505050565b600060ff82169050919050565b60006200081f8262000447565b91506200082c8362000805565b92506200085b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000719565b905092915050565b6000620008708262000447565b91506200087d8362000447565b92508282026200088d8162000447565b91508282048414831517620008a757620008a662000682565b5b5092915050565b620008b98162000447565b82525050565b6000602082019050620008d66000830184620008ae565b92915050565b611ba780620008ec6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb14610274578063c2a672e0146102a4578063d4fc9fc6146102c0578063dd62ed3e146102dc576100f5565b806370a08231146101ec578063715018a61461021c57806395d89b41146102265780639d988d0314610244576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce567146101965780634956eaf0146101b457806353ca57da146101d0576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b61010261030c565b60405161010f9190611828565b60405180910390f35b610132600480360381019061012d91906118e3565b61039a565b60405161013f919061193e565b60405180910390f35b61015061048c565b60405161015d9190611968565b60405180910390f35b610180600480360381019061017b9190611983565b610492565b60405161018d919061193e565b60405180910390f35b61019e610ce4565b6040516101ab91906119f2565b60405180910390f35b6101ce60048036038101906101c991906118e3565b610cf7565b005b6101ea60048036038101906101e59190611a0d565b610dbb565b005b61020660048036038101906102019190611a0d565b610ec6565b6040516102139190611968565b60405180910390f35b610224610f0e565b005b61022e611011565b60405161023b9190611828565b60405180910390f35b61025e60048036038101906102599190611a0d565b61109f565b60405161026b9190611968565b60405180910390f35b61028e600480360381019061028991906118e3565b6110b7565b60405161029b919061193e565b60405180910390f35b6102be60048036038101906102b991906118e3565b6115c7565b005b6102da60048036038101906102d59190611a0d565b611668565b005b6102f660048036038101906102f19190611a3a565b611773565b6040516103039190611968565b60405180910390f35b6003805461031990611aa9565b80601f016020809104026020016040519081016040528092919081815260200182805461034590611aa9565b80156103925780601f1061036757610100808354040283529160200191610392565b820191906000526020600020905b81548152906001019060200180831161037557829003601f168201915b505050505081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161047a9190611968565b60405180910390a36001905092915050565b60065481565b6000600760149054906101000a900460ff16156107d557600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561054d5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61055657600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156105a157600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561062a57600080fd5b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106789190611b09565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106cd9190611b3d565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107609190611b09565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107c49190611968565b60405180910390a360019050610cdd565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610a62576000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561087557600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156108fe57600080fd5b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461094c9190611b09565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109a19190611b3d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a279190611968565b60405180910390a3600760149054906101000a900460ff1615600760146101000a81548160ff02191690831515021790555060019050610cdd565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610aad57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610b3657600080fd5b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b849190611b09565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bd99190611b3d565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c6c9190611b09565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cd09190611968565b60405180910390a3600190505b9392505050565b600560009054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d5157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610daf9190611968565b60405180910390a35050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e1557600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e6b57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f6857600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6004805461101e90611aa9565b80601f016020809104026020016040519081016040528092919081815260200182805461104a90611aa9565b80156110975780601f1061106c57610100808354040283529160200191611097565b820191906000526020600020905b81548152906001019060200180831161107a57829003601f168201915b505050505081565b60006020528060005260406000206000915090505481565b6000600760149054906101000a900460ff161561128857600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561112557600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561117057600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111be9190611b09565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112139190611b3d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112779190611968565b60405180910390a3600190506115c1565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361146257816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561132857600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113769190611b09565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113cb9190611b3d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114519190611968565b60405180910390a3600190506115c1565b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156114ad57600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114fb9190611b09565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115509190611b3d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115b49190611968565b60405180910390a3600190505b92915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461162157600080fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116c257600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561171957600080fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6002602052816000526040600020602052806000526040600020600091509150505481565b600081519050919050565b600082825260208201905092915050565b60005b838110156117d25780820151818401526020810190506117b7565b60008484015250505050565b6000601f19601f8301169050919050565b60006117fa82611798565b61180481856117a3565b93506118148185602086016117b4565b61181d816117de565b840191505092915050565b6000602082019050818103600083015261184281846117ef565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061187a8261184f565b9050919050565b61188a8161186f565b811461189557600080fd5b50565b6000813590506118a781611881565b92915050565b6000819050919050565b6118c0816118ad565b81146118cb57600080fd5b50565b6000813590506118dd816118b7565b92915050565b600080604083850312156118fa576118f961184a565b5b600061190885828601611898565b9250506020611919858286016118ce565b9150509250929050565b60008115159050919050565b61193881611923565b82525050565b6000602082019050611953600083018461192f565b92915050565b611962816118ad565b82525050565b600060208201905061197d6000830184611959565b92915050565b60008060006060848603121561199c5761199b61184a565b5b60006119aa86828701611898565b93505060206119bb86828701611898565b92505060406119cc868287016118ce565b9150509250925092565b600060ff82169050919050565b6119ec816119d6565b82525050565b6000602082019050611a0760008301846119e3565b92915050565b600060208284031215611a2357611a2261184a565b5b6000611a3184828501611898565b91505092915050565b60008060408385031215611a5157611a5061184a565b5b6000611a5f85828601611898565b9250506020611a7085828601611898565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611ac157607f821691505b602082108103611ad457611ad3611a7a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b14826118ad565b9150611b1f836118ad565b9250828203905081811115611b3757611b36611ada565b5b92915050565b6000611b48826118ad565b9150611b53836118ad565b9250828201905080821115611b6b57611b6a611ada565b5b9291505056fea2646970667358221220e97590cce4b0da6b3ded148edbf94e3cc13e4835770e6af1fa5c5c54f777e54164736f6c63430008110033