0x6101406040523480156200001257600080fd5b506040518060400160405280600781526020017f5541546f6b656e00000000000000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f5541546f6b656e000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f55544b00000000000000000000000000000000000000000000000000000000008152508160039081620000fd919062000fcf565b5080600490816200010f919062000fcf565b5050506000600560006101000a81548160ff0219169083151502179055506200014d620001416200024460201b60201c565b6200024c60201b60201c565b60008280519060200120905060008280519060200120905060007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90508260e081815250508161010081815250504660a08181525050620001b68184846200031260201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508061012081815250505050505050506200023e33620002156200034e60201b60201c565b600a62000223919062001246565b6103e862000232919062001297565b6200035760201b60201c565b6200172d565b600033905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600083838346306040516020016200032f95949392919062001353565b6040516020818303038152906040528051906020012090509392505050565b60006012905090565b6200036982826200036d60201b60201c565b5050565b6200037f82826200042660201b60201c565b6200038f6200059360201b60201c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620003bd620005b760201b60201c565b111562000401576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003f89062001437565b60405180910390fd5b62000420600a620005c160201b620010ac1783620005d960201b60201c565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000498576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200048f90620014a9565b60405180910390fd5b620004ac60008383620008d760201b60201c565b8060026000828254620004c09190620014cb565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000573919062001506565b60405180910390a36200058f60008383620008ff60201b60201c565b5050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b6000600254905090565b60008183620005d19190620014cb565b905092915050565b6000806000858054905090506000808214620006b4576200060f8760018462000603919062001523565b6200091760201b60201c565b6040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525050620006f0565b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152505b905080602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1693506200072384868860201c565b92506000821180156200073f575043816000015163ffffffff16145b15620007cd5762000756836200092c60201b60201c565b62000776886001856200076a919062001523565b6200091760201b60201c565b60000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550620008cd565b866040518060400160405280620007ea436200099a60201b60201c565b63ffffffff16815260200162000806866200092c60201b60201c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b5050935093915050565b620008e7620009f060201b60201c565b620008fa83838362000a4560201b60201c565b505050565b6200091283838362000a4a60201b60201c565b505050565b60008260005281602060002001905092915050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff801682111562000992576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200098990620015d4565b60405180910390fd5b819050919050565b600063ffffffff8016821115620009e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009df906200166c565b60405180910390fd5b819050919050565b62000a0062000a9560201b60201c565b1562000a43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a3a90620016de565b60405180910390fd5b565b505050565b62000a5d83838362000aac60201b60201c565b62000a9062000a728462000ab160201b60201c565b62000a838462000ab160201b60201c565b8362000b1a60201b60201c565b505050565b6000600560009054906101000a900460ff16905090565b505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801562000b575750600081115b1562000d3857600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161462000c4a5760008062000bf1600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002062000d3d60201b620010c21785620005d960201b60201c565b915091508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405162000c3f92919062001700565b60405180910390a250505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000d375760008062000cde600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020620005c160201b620010ac1785620005d960201b60201c565b915091508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405162000d2c92919062001700565b60405180910390a250505b5b505050565b6000818362000d4d919062001523565b905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000dd757607f821691505b60208210810362000ded5762000dec62000d8f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e18565b62000e63868362000e18565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000eb062000eaa62000ea48462000e7b565b62000e85565b62000e7b565b9050919050565b6000819050919050565b62000ecc8362000e8f565b62000ee462000edb8262000eb7565b84845462000e25565b825550505050565b600090565b62000efb62000eec565b62000f0881848462000ec1565b505050565b5b8181101562000f305762000f2460008262000ef1565b60018101905062000f0e565b5050565b601f82111562000f7f5762000f498162000df3565b62000f548462000e08565b8101602085101562000f64578190505b62000f7c62000f738562000e08565b83018262000f0d565b50505b505050565b600082821c905092915050565b600062000fa46000198460080262000f84565b1980831691505092915050565b600062000fbf838362000f91565b9150826002028217905092915050565b62000fda8262000d55565b67ffffffffffffffff81111562000ff65762000ff562000d60565b5b62001002825462000dbe565b6200100f82828562000f34565b600060209050601f83116001811462001047576000841562001032578287015190505b6200103e858262000fb1565b865550620010ae565b601f198416620010578662000df3565b60005b8281101562001081578489015182556001820191506020850194506020810190506200105a565b86831015620010a157848901516200109d601f89168262000f91565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562001144578086048111156200111c576200111b620010b6565b5b60018516156200112c5780820291505b80810290506200113c85620010e5565b9450620010fc565b94509492505050565b6000826200115f576001905062001232565b816200116f576000905062001232565b81600181146200118857600281146200119357620011c9565b600191505062001232565b60ff841115620011a857620011a7620010b6565b5b8360020a915084821115620011c257620011c1620010b6565b5b5062001232565b5060208310610133831016604e8410600b8410161715620012035782820a905083811115620011fd57620011fc620010b6565b5b62001232565b620012128484846001620010f2565b925090508184048111156200122c576200122b620010b6565b5b81810290505b9392505050565b600060ff82169050919050565b6000620012538262000e7b565b9150620012608362001239565b92506200128f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200114d565b905092915050565b6000620012a48262000e7b565b9150620012b18362000e7b565b9250828202620012c18162000e7b565b91508282048414831517620012db57620012da620010b6565b5b5092915050565b6000819050919050565b620012f781620012e2565b82525050565b620013088162000e7b565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200133b826200130e565b9050919050565b6200134d816200132e565b82525050565b600060a0820190506200136a6000830188620012ec565b620013796020830187620012ec565b620013886040830186620012ec565b620013976060830185620012fd565b620013a6608083018462001342565b9695505050505050565b600082825260208201905092915050565b7f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60008201527f766572666c6f77696e6720766f74657300000000000000000000000000000000602082015250565b60006200141f603083620013b0565b91506200142c82620013c1565b604082019050919050565b60006020820190508181036000830152620014528162001410565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001491601f83620013b0565b91506200149e8262001459565b602082019050919050565b60006020820190508181036000830152620014c48162001482565b9050919050565b6000620014d88262000e7b565b9150620014e58362000e7b565b92508282019050808211156200150057620014ff620010b6565b5b92915050565b60006020820190506200151d6000830184620012fd565b92915050565b6000620015308262000e7b565b91506200153d8362000e7b565b9250828203905081811115620015585762001557620010b6565b5b92915050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203260008201527f3234206269747300000000000000000000000000000000000000000000000000602082015250565b6000620015bc602783620013b0565b9150620015c9826200155e565b604082019050919050565b60006020820190508181036000830152620015ef81620015ad565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203360008201527f3220626974730000000000000000000000000000000000000000000000000000602082015250565b600062001654602683620013b0565b91506200166182620015f6565b604082019050919050565b60006020820190508181036000830152620016878162001645565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000620016c6601083620013b0565b9150620016d3826200168e565b602082019050919050565b60006020820190508181036000830152620016f981620016b7565b9050919050565b6000604082019050620017176000830185620012fd565b620017266020830184620012fd565b9392505050565b60805160a05160c05160e0516101005161012051613f2e6200177d60003960006116590152600061169b0152600061167a015260006115af015260006116050152600061162e0152613f2e6000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806370a08231116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf14610558578063dd62ed3e14610574578063f1127ed8146105a4578063f2fde38b146105d4576101cf565b80639ab24eb0146104ac578063a457c2d7146104dc578063a9059cbb1461050c578063c3cda5201461053c576101cf565b80638456cb59116100de5780638456cb59146104365780638da5cb5b146104405780638e539e8c1461045e57806395d89b411461048e576101cf565b806370a08231146103cc578063715018a6146103fc5780637ecebe0014610406576101cf565b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146103325780635c19a95c146103625780635c975abb1461037e5780636fcfff451461039c576101cf565b80633a46b1a8146102dc5780633f4ba83a1461030c57806340c10f1914610316576101cf565b806323b872dd116101ad57806323b872dd14610240578063313ce567146102705780633644e5151461028e57806339509351146102ac576101cf565b806306fdde03146101d4578063095ea7b3146101f257806318160ddd14610222575b600080fd5b6101dc6105f0565b6040516101e99190612a3d565b60405180910390f35b61020c60048036038101906102079190612af8565b610682565b6040516102199190612b53565b60405180910390f35b61022a6106a5565b6040516102379190612b7d565b60405180910390f35b61025a60048036038101906102559190612b98565b6106af565b6040516102679190612b53565b60405180910390f35b6102786106de565b6040516102859190612c07565b60405180910390f35b6102966106e7565b6040516102a39190612c3b565b60405180910390f35b6102c660048036038101906102c19190612af8565b6106f6565b6040516102d39190612b53565b60405180910390f35b6102f660048036038101906102f19190612af8565b61072d565b6040516103039190612b7d565b60405180910390f35b6103146107c1565b005b610330600480360381019061032b9190612af8565b6107d3565b005b61034c60048036038101906103479190612c56565b6107e9565b6040516103599190612c92565b60405180910390f35b61037c60048036038101906103779190612c56565b610852565b005b610386610866565b6040516103939190612b53565b60405180910390f35b6103b660048036038101906103b19190612c56565b61087d565b6040516103c39190612ccc565b60405180910390f35b6103e660048036038101906103e19190612c56565b6108d1565b6040516103f39190612b7d565b60405180910390f35b610404610919565b005b610420600480360381019061041b9190612c56565b61092d565b60405161042d9190612b7d565b60405180910390f35b61043e61097d565b005b61044861098f565b6040516104559190612c92565b60405180910390f35b61047860048036038101906104739190612ce7565b6109b9565b6040516104859190612b7d565b60405180910390f35b610496610a0f565b6040516104a39190612a3d565b60405180910390f35b6104c660048036038101906104c19190612c56565b610aa1565b6040516104d39190612b7d565b60405180910390f35b6104f660048036038101906104f19190612af8565b610bb2565b6040516105039190612b53565b60405180910390f35b61052660048036038101906105219190612af8565b610c29565b6040516105339190612b53565b60405180910390f35b61055660048036038101906105519190612d6c565b610c4c565b005b610572600480360381019061056d9190612df9565b610d50565b005b61058e60048036038101906105899190612e9b565b610e92565b60405161059b9190612b7d565b60405180910390f35b6105be60048036038101906105b99190612f07565b610f19565b6040516105cb9190612fbc565b60405180910390f35b6105ee60048036038101906105e99190612c56565b611029565b005b6060600380546105ff90613006565b80601f016020809104026020016040519081016040528092919081815260200182805461062b90613006565b80156106785780601f1061064d57610100808354040283529160200191610678565b820191906000526020600020905b81548152906001019060200180831161065b57829003601f168201915b5050505050905090565b60008061068d6110d8565b905061069a8185856110e0565b600191505092915050565b6000600254905090565b6000806106ba6110d8565b90506106c78582856112a9565b6106d2858585611335565b60019150509392505050565b60006012905090565b60006106f16115ab565b905090565b6000806107016110d8565b90506107228185856107138589610e92565b61071d9190613066565b6110e0565b600191505092915050565b6000438210610771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610768906130e6565b60405180910390fd5b6107b9600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020836116c5565b905092915050565b6107c9611816565b6107d1611894565b565b6107db611816565b6107e582826118f7565b5050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61086361085d6110d8565b82611905565b50565b6000600560009054906101000a900460ff16905090565b60006108ca600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050611a1f565b9050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610921611816565b61092b6000611a72565b565b6000610976600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611b38565b9050919050565b610985611816565b61098d611b46565b565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60004382106109fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f4906130e6565b60405180910390fd5b610a08600a836116c5565b9050919050565b606060048054610a1e90613006565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4a90613006565b8015610a975780601f10610a6c57610100808354040283529160200191610a97565b820191906000526020600020905b815481529060010190602001808311610a7a57829003601f168201915b5050505050905090565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008114610b8957600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600182610b3d9190613106565b81548110610b4e57610b4d61313a565b5b9060005260206000200160000160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610b8c565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915050919050565b600080610bbd6110d8565b90506000610bcb8286610e92565b905083811015610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c07906131db565b60405180910390fd5b610c1d82868684036110e0565b60019250505092915050565b600080610c346110d8565b9050610c41818585611335565b600191505092915050565b83421115610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690613247565b60405180910390fd5b6000610cf1610ce97fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf898989604051602001610cce9493929190613267565b60405160208183030381529060405280519060200120611ba9565b858585611bc3565b9050610cfc81611bee565b8614610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d34906132f8565b60405180910390fd5b610d478188611905565b50505050505050565b83421115610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a90613364565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610dc28c611bee565b89604051602001610dd896959493929190613384565b6040516020818303038152906040528051906020012090506000610dfb82611ba9565b90506000610e0b82878787611bc3565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7290613431565b60405180910390fd5b610e868a8a8a6110e0565b50505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f2161296f565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208263ffffffff1681548110610f7857610f7761313a565b5b906000526020600020016040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525050905092915050565b611031611816565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611097906134c3565b60405180910390fd5b6110a981611a72565b50565b600081836110ba9190613066565b905092915050565b600081836110d09190613106565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361114f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114690613555565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b5906135e7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161129c9190612b7d565b60405180910390a3505050565b60006112b58484610e92565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461132f5781811015611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890613653565b60405180910390fd5b61132e84848484036110e0565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139b906136e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a90613777565b60405180910390fd5b61141e838383611c4c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149b90613809565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115929190612b7d565b60405180910390a36115a5848484611c64565b50505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561162757507f000000000000000000000000000000000000000000000000000000000000000046145b15611654577f000000000000000000000000000000000000000000000000000000000000000090506116c2565b6116bf7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611c74565b90505b90565b60008083805490509050600080829050600583111561173b5760006116e984611cae565b846116f49190613106565b9050856117018883611da7565b60000160009054906101000a900463ffffffff1663ffffffff16111561172957809150611739565b6001816117369190613066565b92505b505b5b8082101561179b5760006117508383611dbc565b90508561175d8883611da7565b60000160009054906101000a900463ffffffff1663ffffffff16111561178557809150611795565b6001816117929190613066565b92505b5061173c565b600081146117ea576117b9866001836117b49190613106565b611da7565b60000160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166117ed565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16935050505092915050565b61181e6110d8565b73ffffffffffffffffffffffffffffffffffffffff1661183c61098f565b73ffffffffffffffffffffffffffffffffffffffff1614611892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188990613875565b60405180910390fd5b565b61189c611de2565b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6118e06110d8565b6040516118ed9190612c92565b60405180910390a1565b6119018282611e2b565b5050565b6000611910836107e9565b9050600061191d846108d1565b905082600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611a19828483611eb8565b50505050565b600063ffffffff8016821115611a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6190613907565b60405180910390fd5b819050919050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081600001549050919050565b611b4e6120b1565b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611b926110d8565b604051611b9f9190612c92565b60405180910390a1565b6000611bbc611bb66115ab565b836120fb565b9050919050565b6000806000611bd48787878761212e565b91509150611be181612210565b8192505050949350505050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050611c3b81611b38565b9150611c4681612376565b50919050565b611c546120b1565b611c5f83838361238c565b505050565b611c6f838383612391565b505050565b60008383834630604051602001611c8f959493929190613927565b6040516020818303038152906040528051906020012090509392505050565b6000808203611cc05760009050611da2565b60006001611ccd846123bc565b901c6001901b90506001818481611ce757611ce661397a565b5b048201901c90506001818481611d0057611cff61397a565b5b048201901c90506001818481611d1957611d1861397a565b5b048201901c90506001818481611d3257611d3161397a565b5b048201901c90506001818481611d4b57611d4a61397a565b5b048201901c90506001818481611d6457611d6361397a565b5b048201901c90506001818481611d7d57611d7c61397a565b5b048201901c9050611d9e81828581611d9857611d9761397a565b5b0461249d565b9150505b919050565b60008260005281602060002001905092915050565b60006002828418611dcd91906139a9565b828416611dda9190613066565b905092915050565b611dea610866565b611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2090613a26565b60405180910390fd5b565b611e3582826124b6565b611e3d61260c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611e636106a5565b1115611ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9b90613ab8565b60405180910390fd5b611eb2600a6110ac83612630565b50505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ef45750600081115b156120ac57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611fd257600080611f7b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206110c285612630565b915091508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611fc7929190613ad8565b60405180910390a250505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120ab57600080612054600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206110ac85612630565b915091508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516120a0929190613ad8565b60405180910390a250505b5b505050565b6120b9610866565b156120f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f090613b4d565b60405180910390fd5b565b60008282604051602001612110929190613be5565b60405160208183030381529060405280519060200120905092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115612169576000600391509150612207565b60006001878787876040516000815260200160405260405161218e9493929190613c1c565b6020604051602081039080840390855afa1580156121b0573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121fe57600060019250925050612207565b80600092509250505b94509492505050565b6000600481111561222457612223613c61565b5b81600481111561223757612236613c61565b5b0315612373576001600481111561225157612250613c61565b5b81600481111561226457612263613c61565b5b036122a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229b90613cdc565b60405180910390fd5b600260048111156122b8576122b7613c61565b5b8160048111156122cb576122ca613c61565b5b0361230b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230290613d48565b60405180910390fd5b6003600481111561231f5761231e613c61565b5b81600481111561233257612331613c61565b5b03612372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236990613dda565b60405180910390fd5b5b50565b6001816000016000828254019250508190555050565b505050565b61239c8383836128ff565b6123b76123a8846107e9565b6123b1846107e9565b83611eb8565b505050565b600080600090506000608084901c11156123de57608083901c92506080810190505b6000604084901c11156123f957604083901c92506040810190505b6000602084901c111561241457602083901c92506020810190505b6000601084901c111561242f57601083901c92506010810190505b6000600884901c111561244a57600883901c92506008810190505b6000600484901c111561246557600483901c92506004810190505b6000600284901c111561248057600283901c92506002810190505b6000600184901c1115612494576001810190505b80915050919050565b60008183106124ac57816124ae565b825b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251c90613e46565b60405180910390fd5b61253160008383611c4c565b80600260008282546125439190613066565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125f49190612b7d565b60405180910390a361260860008383611c64565b5050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b60008060008580549050905060008082146126ff5761265b876001846126569190613106565b611da7565b6040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152505061273b565b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152505b905080602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16935061277084868863ffffffff16565b925060008211801561278b575043816000015163ffffffff16145b156128055761279983612904565b6127af886001856127aa9190613106565b611da7565b60000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602179055506128f5565b86604051806040016040528061281a43611a1f565b63ffffffff16815260200161282e86612904565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b5050935093915050565b505050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8016821115612967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295e90613ed8565b60405180910390fd5b819050919050565b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156129e75780820151818401526020810190506129cc565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a0f826129ad565b612a1981856129b8565b9350612a298185602086016129c9565b612a32816129f3565b840191505092915050565b60006020820190508181036000830152612a578184612a04565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a8f82612a64565b9050919050565b612a9f81612a84565b8114612aaa57600080fd5b50565b600081359050612abc81612a96565b92915050565b6000819050919050565b612ad581612ac2565b8114612ae057600080fd5b50565b600081359050612af281612acc565b92915050565b60008060408385031215612b0f57612b0e612a5f565b5b6000612b1d85828601612aad565b9250506020612b2e85828601612ae3565b9150509250929050565b60008115159050919050565b612b4d81612b38565b82525050565b6000602082019050612b686000830184612b44565b92915050565b612b7781612ac2565b82525050565b6000602082019050612b926000830184612b6e565b92915050565b600080600060608486031215612bb157612bb0612a5f565b5b6000612bbf86828701612aad565b9350506020612bd086828701612aad565b9250506040612be186828701612ae3565b9150509250925092565b600060ff82169050919050565b612c0181612beb565b82525050565b6000602082019050612c1c6000830184612bf8565b92915050565b6000819050919050565b612c3581612c22565b82525050565b6000602082019050612c506000830184612c2c565b92915050565b600060208284031215612c6c57612c6b612a5f565b5b6000612c7a84828501612aad565b91505092915050565b612c8c81612a84565b82525050565b6000602082019050612ca76000830184612c83565b92915050565b600063ffffffff82169050919050565b612cc681612cad565b82525050565b6000602082019050612ce16000830184612cbd565b92915050565b600060208284031215612cfd57612cfc612a5f565b5b6000612d0b84828501612ae3565b91505092915050565b612d1d81612beb565b8114612d2857600080fd5b50565b600081359050612d3a81612d14565b92915050565b612d4981612c22565b8114612d5457600080fd5b50565b600081359050612d6681612d40565b92915050565b60008060008060008060c08789031215612d8957612d88612a5f565b5b6000612d9789828a01612aad565b9650506020612da889828a01612ae3565b9550506040612db989828a01612ae3565b9450506060612dca89828a01612d2b565b9350506080612ddb89828a01612d57565b92505060a0612dec89828a01612d57565b9150509295509295509295565b600080600080600080600060e0888a031215612e1857612e17612a5f565b5b6000612e268a828b01612aad565b9750506020612e378a828b01612aad565b9650506040612e488a828b01612ae3565b9550506060612e598a828b01612ae3565b9450506080612e6a8a828b01612d2b565b93505060a0612e7b8a828b01612d57565b92505060c0612e8c8a828b01612d57565b91505092959891949750929550565b60008060408385031215612eb257612eb1612a5f565b5b6000612ec085828601612aad565b9250506020612ed185828601612aad565b9150509250929050565b612ee481612cad565b8114612eef57600080fd5b50565b600081359050612f0181612edb565b92915050565b60008060408385031215612f1e57612f1d612a5f565b5b6000612f2c85828601612aad565b9250506020612f3d85828601612ef2565b9150509250929050565b612f5081612cad565b82525050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b612f8781612f56565b82525050565b604082016000820151612fa36000850182612f47565b506020820151612fb66020850182612f7e565b50505050565b6000604082019050612fd16000830184612f8d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061301e57607f821691505b60208210810361303157613030612fd7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061307182612ac2565b915061307c83612ac2565b925082820190508082111561309457613093613037565b5b92915050565b7f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e656400600082015250565b60006130d0601f836129b8565b91506130db8261309a565b602082019050919050565b600060208201905081810360008301526130ff816130c3565b9050919050565b600061311182612ac2565b915061311c83612ac2565b925082820390508181111561313457613133613037565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006131c56025836129b8565b91506131d082613169565b604082019050919050565b600060208201905081810360008301526131f4816131b8565b9050919050565b7f4552433230566f7465733a207369676e61747572652065787069726564000000600082015250565b6000613231601d836129b8565b915061323c826131fb565b602082019050919050565b6000602082019050818103600083015261326081613224565b9050919050565b600060808201905061327c6000830187612c2c565b6132896020830186612c83565b6132966040830185612b6e565b6132a36060830184612b6e565b95945050505050565b7f4552433230566f7465733a20696e76616c6964206e6f6e636500000000000000600082015250565b60006132e26019836129b8565b91506132ed826132ac565b602082019050919050565b60006020820190508181036000830152613311816132d5565b9050919050565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b600061334e601d836129b8565b915061335982613318565b602082019050919050565b6000602082019050818103600083015261337d81613341565b9050919050565b600060c0820190506133996000830189612c2c565b6133a66020830188612c83565b6133b36040830187612c83565b6133c06060830186612b6e565b6133cd6080830185612b6e565b6133da60a0830184612b6e565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b600061341b601e836129b8565b9150613426826133e5565b602082019050919050565b6000602082019050818103600083015261344a8161340e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134ad6026836129b8565b91506134b882613451565b604082019050919050565b600060208201905081810360008301526134dc816134a0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061353f6024836129b8565b915061354a826134e3565b604082019050919050565b6000602082019050818103600083015261356e81613532565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135d16022836129b8565b91506135dc82613575565b604082019050919050565b60006020820190508181036000830152613600816135c4565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061363d601d836129b8565b915061364882613607565b602082019050919050565b6000602082019050818103600083015261366c81613630565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136cf6025836129b8565b91506136da82613673565b604082019050919050565b600060208201905081810360008301526136fe816136c2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006137616023836129b8565b915061376c82613705565b604082019050919050565b6000602082019050818103600083015261379081613754565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006137f36026836129b8565b91506137fe82613797565b604082019050919050565b60006020820190508181036000830152613822816137e6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061385f6020836129b8565b915061386a82613829565b602082019050919050565b6000602082019050818103600083015261388e81613852565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203360008201527f3220626974730000000000000000000000000000000000000000000000000000602082015250565b60006138f16026836129b8565b91506138fc82613895565b604082019050919050565b60006020820190508181036000830152613920816138e4565b9050919050565b600060a08201905061393c6000830188612c2c565b6139496020830187612c2c565b6139566040830186612c2c565b6139636060830185612b6e565b6139706080830184612c83565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139b482612ac2565b91506139bf83612ac2565b9250826139cf576139ce61397a565b5b828204905092915050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000613a106014836129b8565b9150613a1b826139da565b602082019050919050565b60006020820190508181036000830152613a3f81613a03565b9050919050565b7f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60008201527f766572666c6f77696e6720766f74657300000000000000000000000000000000602082015250565b6000613aa26030836129b8565b9150613aad82613a46565b604082019050919050565b60006020820190508181036000830152613ad181613a95565b9050919050565b6000604082019050613aed6000830185612b6e565b613afa6020830184612b6e565b9392505050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613b376010836129b8565b9150613b4282613b01565b602082019050919050565b60006020820190508181036000830152613b6681613b2a565b9050919050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000613bae600283613b6d565b9150613bb982613b78565b600282019050919050565b6000819050919050565b613bdf613bda82612c22565b613bc4565b82525050565b6000613bf082613ba1565b9150613bfc8285613bce565b602082019150613c0c8284613bce565b6020820191508190509392505050565b6000608082019050613c316000830187612c2c565b613c3e6020830186612bf8565b613c4b6040830185612c2c565b613c586060830184612c2c565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b6000613cc66018836129b8565b9150613cd182613c90565b602082019050919050565b60006020820190508181036000830152613cf581613cb9565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b6000613d32601f836129b8565b9150613d3d82613cfc565b602082019050919050565b60006020820190508181036000830152613d6181613d25565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000613dc46022836129b8565b9150613dcf82613d68565b604082019050919050565b60006020820190508181036000830152613df381613db7565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613e30601f836129b8565b9150613e3b82613dfa565b602082019050919050565b60006020820190508181036000830152613e5f81613e23565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203260008201527f3234206269747300000000000000000000000000000000000000000000000000602082015250565b6000613ec26027836129b8565b9150613ecd82613e66565b604082019050919050565b60006020820190508181036000830152613ef181613eb5565b905091905056fea2646970667358221220de16879ca8bba2a2fa7e1989e6612de76692649db136f2c2de14b9b426cb0c9a64736f6c63430008130033