60806040523480156200001157600080fd5b5060405162004d5938038062004d59833981810160405281019062000037919062000541565b604051806020016040528060008152506200005881620000c460201b60201c565b50620000796200006d620000d960201b60201c565b620000e160201b60201c565b6200008a33620000e160201b60201c565b80600690816200009b9190620007dd565b50620000ac620001a760201b60201c565b60059081620000bc9190620007dd565b505062000d6e565b8060029081620000d59190620007dd565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6060620001dc6006604051602001620001c1919062000b3e565b6040516020818303038152906040526200020260201b60201c565b604051602001620001ee919062000c2c565b604051602081830303815290604052905090565b6060600082519050600081036200022c5760405180602001604052806000815250915050620003a9565b600060036002836200023f919062000c81565b6200024b919062000ceb565b600462000259919062000d23565b905060006020826200026c919062000c81565b67ffffffffffffffff811115620002885762000287620003dd565b5b6040519080825280601f01601f191660200182016040528015620002bb5781602001600182028036833780820191505090505b509050600060405180606001604052806040815260200162004d19604091399050600181016020830160005b86811015620003625760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b90508084526004840193505050620002e7565b5060038606600181146200037f576002811462000390576200039b565b613d3d60f01b60028303526200039b565b603d60f81b60018303525b508484525050819450505050505b919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200041782620003cc565b810181811067ffffffffffffffff82111715620004395762000438620003dd565b5b80604052505050565b60006200044e620003ae565b90506200045c82826200040c565b919050565b600067ffffffffffffffff8211156200047f576200047e620003dd565b5b6200048a82620003cc565b9050602081019050919050565b60005b83811015620004b75780820151818401526020810190506200049a565b60008484015250505050565b6000620004da620004d48462000461565b62000442565b905082815260208101848484011115620004f957620004f8620003c7565b5b6200050684828562000497565b509392505050565b600082601f830112620005265762000525620003c2565b5b815162000538848260208601620004c3565b91505092915050565b6000602082840312156200055a5762000559620003b8565b5b600082015167ffffffffffffffff8111156200057b576200057a620003bd565b5b62000589848285016200050e565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005e557607f821691505b602082108103620005fb57620005fa6200059d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006657fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000626565b62000671868362000626565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620006be620006b8620006b28462000689565b62000693565b62000689565b9050919050565b6000819050919050565b620006da836200069d565b620006f2620006e982620006c5565b84845462000633565b825550505050565b600090565b62000709620006fa565b62000716818484620006cf565b505050565b5b818110156200073e5762000732600082620006ff565b6001810190506200071c565b5050565b601f8211156200078d57620007578162000601565b620007628462000616565b8101602085101562000772578190505b6200078a620007818562000616565b8301826200071b565b50505b505050565b600082821c905092915050565b6000620007b26000198460080262000792565b1980831691505092915050565b6000620007cd83836200079f565b9150826002028217905092915050565b620007e88262000592565b67ffffffffffffffff811115620008045762000803620003dd565b5b620008108254620005cc565b6200081d82828562000742565b600060209050601f83116001811462000855576000841562000840578287015190505b6200084c8582620007bf565b865550620008bc565b601f198416620008658662000601565b60005b828110156200088f5784890151825560018201915060208501945060208101905062000868565b86831015620008af5784890151620008ab601f8916826200079f565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b7f7b00000000000000000000000000000000000000000000000000000000000000600082015250565b600062000907600183620008c4565b91506200091482620008cf565b600182019050919050565b7f226e616d65223a22e2808b222c00000000000000000000000000000000000000600082015250565b600062000957600d83620008c4565b915062000964826200091f565b600d82019050919050565b7f226465736372697074696f6e223a22e2808b222c000000000000000000000000600082015250565b6000620009a7601483620008c4565b9150620009b4826200096f565b601482019050919050565b7f22696d616765223a220000000000000000000000000000000000000000000000600082015250565b6000620009f7600983620008c4565b915062000a0482620009bf565b600982019050919050565b6000815462000a1e81620005cc565b62000a2a8186620008c4565b9450600182166000811462000a48576001811462000a5e5762000a95565b60ff198316865281151582028601935062000a95565b62000a698562000601565b60005b8381101562000a8d5781548189015260018201915060208101905062000a6c565b838801955050505b50505092915050565b7f2200000000000000000000000000000000000000000000000000000000000000600082015250565b600062000ad6600183620008c4565b915062000ae38262000a9e565b600182019050919050565b7f7d00000000000000000000000000000000000000000000000000000000000000600082015250565b600062000b26600183620008c4565b915062000b338262000aee565b600182019050919050565b600062000b4b82620008f8565b915062000b588262000948565b915062000b658262000998565b915062000b7282620009e8565b915062000b80828462000a0f565b915062000b8d8262000ac7565b915062000b9a8262000b17565b915081905092915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b600062000bdd601d83620008c4565b915062000bea8262000ba5565b601d82019050919050565b600062000c028262000592565b62000c0e8185620008c4565b935062000c2081856020860162000497565b80840191505092915050565b600062000c398262000bce565b915062000c47828462000bf5565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c8e8262000689565b915062000c9b8362000689565b925082820190508082111562000cb65762000cb562000c52565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000cf88262000689565b915062000d058362000689565b92508262000d185762000d1762000cbc565b5b828204905092915050565b600062000d308262000689565b915062000d3d8362000689565b925082820262000d4d8162000689565b9150828204841483151762000d675762000d6662000c52565b5b5092915050565b613f9b8062000d7e6000396000f3fe608060405234801561001057600080fd5b506004361061012a5760003560e01c806380f2152e116100ad578063dc42c25511610071578063dc42c25514610346578063e8a3d48514610362578063e985e9c514610380578063f242432a146103b0578063f2fde38b146103cc5761012a565b806380f2152e146102b45780638da5cb5b146102d25780638eab84ee146102f0578063a22cb4651461030e578063b926ac501461032a5761012a565b80632eb2c2d6116100f45780632eb2c2d6146102105780634e1273f41461022c578063565cc5041461025c57806368233eef1461028c578063715018a6146102aa5761012a565b80629a9b7b1461012f578062fdd58e1461014d57806301ffc9a71461017d5780630e89341c146101ad5780632cc6cd4a146101dd575b600080fd5b6101376103e8565b604051610144919061210e565b60405180910390f35b610167600480360381019061016291906121c7565b6103ee565b604051610174919061210e565b60405180910390f35b6101976004803603810190610192919061225f565b6104b6565b6040516101a491906122a7565b60405180910390f35b6101c760048036038101906101c291906122c2565b610598565b6040516101d4919061237f565b60405180910390f35b6101f760048036038101906101f291906122c2565b6105e7565b60405161020794939291906123ba565b60405180910390f35b61022a600480360381019061022591906125fc565b610617565b005b6102466004803603810190610241919061278e565b6106b8565b60405161025391906128c4565b60405180910390f35b610276600480360381019061027191906122c2565b6107d1565b604051610283919061294a565b60405180910390f35b610294610826565b6040516102a1919061210e565b60405180910390f35b6102b261082c565b005b6102bc610840565b6040516102c9919061237f565b60405180910390f35b6102da6108ce565b6040516102e79190612974565b60405180910390f35b6102f86108f8565b604051610305919061237f565b60405180910390f35b610328600480360381019061032391906129bb565b610986565b005b610344600480360381019061033f9190612a56565b61099c565b005b610360600480360381019061035b9190612b44565b610c23565b005b61036a610c55565b604051610377919061237f565b60405180910390f35b61039a60048036038101906103959190612b8d565b610ce7565b6040516103a791906122a7565b60405180910390f35b6103ca60048036038101906103c59190612bcd565b610d7b565b005b6103e660048036038101906103e19190612c64565b610e1c565b005b60045481565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361045e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045590612d03565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058157507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610591575061059082610e9f565b5b9050919050565b60606000604051806060016040528060228152602001613f446022913990506105c081610f09565b6040516020016105d09190612dab565b604051602081830303815290604052915050919050565b60076020528060005260406000206000915090508060000154908060010154908060020154908060030154905084565b61061f6110a0565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061066557506106648561065f6110a0565b610ce7565b5b6106a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069b90612e3f565b60405180910390fd5b6106b185858585856110a8565b5050505050565b606081518351146106fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f590612ed1565b60405180910390fd5b6000835167ffffffffffffffff81111561071b5761071a612404565b5b6040519080825280602002602001820160405280156107495781602001602082028036833780820191505090505b50905060005b84518110156107c65761079685828151811061076e5761076d612ef1565b5b602002602001015185838151811061078957610788612ef1565b5b60200260200101516103ee565b8282815181106107a9576107a8612ef1565b5b602002602001018181525050806107bf90612f4f565b905061074f565b508091505092915050565b6107d96120ca565b600760008381526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820154815250509050919050565b60085481565b6108346113c9565b61083e6000611447565b565b6005805461084d90612fc6565b80601f016020809104026020016040519081016040528092919081815260200182805461087990612fc6565b80156108c65780601f1061089b576101008083540402835291602001916108c6565b820191906000526020600020905b8154815290600101906020018083116108a957829003601f168201915b505050505081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6006805461090590612fc6565b80601f016020809104026020016040519081016040528092919081815260200182805461093190612fc6565b801561097e5780601f106109535761010080835404028352916020019161097e565b820191906000526020600020905b81548152906001019060200180831161096157829003601f168201915b505050505081565b6109986109916110a0565b838361150d565b5050565b6109a46113c9565b600082829050116109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e190613043565b60405180910390fd5b60006004549050600083839050905060008167ffffffffffffffff811115610a1557610a14612404565b5b604051908082528060200260200182016040528015610a435781602001602082028036833780820191505090505b50905060005b85859050811015610b2f57610aa2868683818110610a6a57610a69612ef1565b5b9050602002016020810190610a7f9190612c64565b8286610a8b9190613063565b600160405180602001604052806000815250611679565b8084610aae9190613063565b868683818110610ac157610ac0612ef1565b5b9050602002016020810190610ad69190612c64565b604051602001610ae7929190613100565b60405160208183030381529060405280519060200120828281518110610b1057610b0f612ef1565b5b6020026020010181815250508080610b2790612f4f565b915050610a49565b508160046000828254610b429190613063565b925050819055506000610b5482611829565b90506040518060800160405280600854815260200185815260200184815260200182815250600760006008548152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301559050506008547f42f4c4ff03a9d53ac501b8d9328b38ad7c095a55a342b9ae49fbe20de622a826858584604051610bef9392919061312c565b60405180910390a2610c0360085482611949565b60086000815480929190610c1690612f4f565b9190505550505050505050565b610c2b6113c9565b8060069081610c3a919061330f565b50610c43611985565b60059081610c51919061330f565b5050565b606060058054610c6490612fc6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9090612fc6565b8015610cdd5780601f10610cb257610100808354040283529160200191610cdd565b820191906000526020600020905b815481529060010190602001808311610cc057829003601f168201915b5050505050905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610d836110a0565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610dc95750610dc885610dc36110a0565b610ce7565b5b610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff90612e3f565b60405180910390fd5b610e1585858585856119d4565b5050505050565b610e246113c9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a90613453565b60405180910390fd5b610e9c81611447565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b606060008251905060008103610f31576040518060200160405280600081525091505061109b565b60006003600283610f429190613063565b610f4c91906134a2565b6004610f5891906134d3565b90506000602082610f699190613063565b67ffffffffffffffff811115610f8257610f81612404565b5b6040519080825280601f01601f191660200182016040528015610fb45781602001600182028036833780820191505090505b5090506000604051806060016040528060408152602001613f04604091399050600181016020830160005b868110156110585760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b90508084526004840193505050610fdf565b50600386066001811461107257600281146110825761108d565b613d3d60f01b600283035261108d565b603d60f81b60018303525b508484525050819450505050505b919050565b600033905090565b81518351146110ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e390613587565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115290613619565b60405180910390fd5b60006111656110a0565b9050611175818787878787611c6f565b60005b845181101561132657600085828151811061119657611195612ef1565b5b6020026020010151905060008583815181106111b5576111b4612ef1565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124d906136ab565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461130b9190613063565b925050819055505050508061131f90612f4f565b9050611178565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161139d9291906136cb565b60405180910390a46113b3818787878787611c77565b6113c1818787878787611c7f565b505050505050565b6113d16110a0565b73ffffffffffffffffffffffffffffffffffffffff166113ef6108ce565b73ffffffffffffffffffffffffffffffffffffffff1614611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c9061374e565b60405180910390fd5b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361157b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611572906137e0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161166c91906122a7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116df90613872565b60405180910390fd5b60006116f26110a0565b905060006116ff85611e56565b9050600061170c85611e56565b905061171d83600089858589611c6f565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461177c9190613063565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6289896040516117fa929190613892565b60405180910390a461181183600089858589611c77565b61182083600089898989611ed0565b50505050505050565b600080825190505b60018111156119255760005b60028261184a91906134a2565b811015611904578381600261185f91906134d3565b815181106118705761186f612ef1565b5b602002602001015184600183600261188891906134d3565b6118929190613063565b815181106118a3576118a2612ef1565b5b60200260200101516040516020016118bc9291906138dc565b604051602081830303815290604052805190602001208482815181106118e5576118e4612ef1565b5b60200260200101818152505080806118fc90612f4f565b91505061183d565b5060026001826119149190613063565b61191e91906134a2565b9050611831565b8260008151811061193957611938612ef1565b5b6020026020010151915050919050565b817f7a4ad524510273a4fa7f7153de4dcb7ab00d410b9d19942de0fabfa1c11397bb826040516119799190613908565b60405180910390a25050565b60606119b0600660405160200161199c9190613b6e565b604051602081830303815290604052610f09565b6040516020016119c09190612dab565b604051602081830303815290604052905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a90613619565b60405180910390fd5b6000611a4d6110a0565b90506000611a5a85611e56565b90506000611a6785611e56565b9050611a77838989858589611c6f565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905085811015611b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b05906136ab565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bc39190613063565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051611c40929190613892565b60405180910390a4611c56848a8a86868a611c77565b611c64848a8a8a8a8a611ed0565b505050505050505050565b505050505050565b505050505050565b611c9e8473ffffffffffffffffffffffffffffffffffffffff166120a7565b15611e4e578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611ce4959493929190613c1c565b6020604051808303816000875af1925050508015611d2057506040513d601f19601f82011682018060405250810190611d1d9190613c99565b60015b611dc557611d2c613cd3565b806308c379a003611d885750611d40613cf5565b80611d4b5750611d8a565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7f919061237f565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbc90613df7565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4390613e89565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff811115611e7557611e74612404565b5b604051908082528060200260200182016040528015611ea35781602001602082028036833780820191505090505b5090508281600081518110611ebb57611eba612ef1565b5b60200260200101818152505080915050919050565b611eef8473ffffffffffffffffffffffffffffffffffffffff166120a7565b1561209f578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611f35959493929190613ea9565b6020604051808303816000875af1925050508015611f7157506040513d601f19601f82011682018060405250810190611f6e9190613c99565b60015b61201657611f7d613cd3565b806308c379a003611fd95750611f91613cf5565b80611f9c5750611fdb565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd0919061237f565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d90613df7565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461209d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209490613e89565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6040518060800160405280600081526020016000815260200160008152602001600080191681525090565b6000819050919050565b612108816120f5565b82525050565b600060208201905061212360008301846120ff565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121688261213d565b9050919050565b6121788161215d565b811461218357600080fd5b50565b6000813590506121958161216f565b92915050565b6121a4816120f5565b81146121af57600080fd5b50565b6000813590506121c18161219b565b92915050565b600080604083850312156121de576121dd612133565b5b60006121ec85828601612186565b92505060206121fd858286016121b2565b9150509250929050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61223c81612207565b811461224757600080fd5b50565b60008135905061225981612233565b92915050565b60006020828403121561227557612274612133565b5b60006122838482850161224a565b91505092915050565b60008115159050919050565b6122a18161228c565b82525050565b60006020820190506122bc6000830184612298565b92915050565b6000602082840312156122d8576122d7612133565b5b60006122e6848285016121b2565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561232957808201518184015260208101905061230e565b60008484015250505050565b6000601f19601f8301169050919050565b6000612351826122ef565b61235b81856122fa565b935061236b81856020860161230b565b61237481612335565b840191505092915050565b600060208201905081810360008301526123998184612346565b905092915050565b6000819050919050565b6123b4816123a1565b82525050565b60006080820190506123cf60008301876120ff565b6123dc60208301866120ff565b6123e960408301856120ff565b6123f660608301846123ab565b95945050505050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61243c82612335565b810181811067ffffffffffffffff8211171561245b5761245a612404565b5b80604052505050565b600061246e612129565b905061247a8282612433565b919050565b600067ffffffffffffffff82111561249a57612499612404565b5b602082029050602081019050919050565b600080fd5b60006124c36124be8461247f565b612464565b905080838252602082019050602084028301858111156124e6576124e56124ab565b5b835b8181101561250f57806124fb88826121b2565b8452602084019350506020810190506124e8565b5050509392505050565b600082601f83011261252e5761252d6123ff565b5b813561253e8482602086016124b0565b91505092915050565b600080fd5b600067ffffffffffffffff82111561256757612566612404565b5b61257082612335565b9050602081019050919050565b82818337600083830152505050565b600061259f61259a8461254c565b612464565b9050828152602081018484840111156125bb576125ba612547565b5b6125c684828561257d565b509392505050565b600082601f8301126125e3576125e26123ff565b5b81356125f384826020860161258c565b91505092915050565b600080600080600060a0868803121561261857612617612133565b5b600061262688828901612186565b955050602061263788828901612186565b945050604086013567ffffffffffffffff81111561265857612657612138565b5b61266488828901612519565b935050606086013567ffffffffffffffff81111561268557612684612138565b5b61269188828901612519565b925050608086013567ffffffffffffffff8111156126b2576126b1612138565b5b6126be888289016125ce565b9150509295509295909350565b600067ffffffffffffffff8211156126e6576126e5612404565b5b602082029050602081019050919050565b600061270a612705846126cb565b612464565b9050808382526020820190506020840283018581111561272d5761272c6124ab565b5b835b8181101561275657806127428882612186565b84526020840193505060208101905061272f565b5050509392505050565b600082601f830112612775576127746123ff565b5b81356127858482602086016126f7565b91505092915050565b600080604083850312156127a5576127a4612133565b5b600083013567ffffffffffffffff8111156127c3576127c2612138565b5b6127cf85828601612760565b925050602083013567ffffffffffffffff8111156127f0576127ef612138565b5b6127fc85828601612519565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61283b816120f5565b82525050565b600061284d8383612832565b60208301905092915050565b6000602082019050919050565b600061287182612806565b61287b8185612811565b935061288683612822565b8060005b838110156128b757815161289e8882612841565b97506128a983612859565b92505060018101905061288a565b5085935050505092915050565b600060208201905081810360008301526128de8184612866565b905092915050565b6128ef816123a1565b82525050565b60808201600082015161290b6000850182612832565b50602082015161291e6020850182612832565b5060408201516129316040850182612832565b50606082015161294460608501826128e6565b50505050565b600060808201905061295f60008301846128f5565b92915050565b61296e8161215d565b82525050565b60006020820190506129896000830184612965565b92915050565b6129988161228c565b81146129a357600080fd5b50565b6000813590506129b58161298f565b92915050565b600080604083850312156129d2576129d1612133565b5b60006129e085828601612186565b92505060206129f1858286016129a6565b9150509250929050565b600080fd5b60008083601f840112612a1657612a156123ff565b5b8235905067ffffffffffffffff811115612a3357612a326129fb565b5b602083019150836020820283011115612a4f57612a4e6124ab565b5b9250929050565b60008060208385031215612a6d57612a6c612133565b5b600083013567ffffffffffffffff811115612a8b57612a8a612138565b5b612a9785828601612a00565b92509250509250929050565b600067ffffffffffffffff821115612abe57612abd612404565b5b612ac782612335565b9050602081019050919050565b6000612ae7612ae284612aa3565b612464565b905082815260208101848484011115612b0357612b02612547565b5b612b0e84828561257d565b509392505050565b600082601f830112612b2b57612b2a6123ff565b5b8135612b3b848260208601612ad4565b91505092915050565b600060208284031215612b5a57612b59612133565b5b600082013567ffffffffffffffff811115612b7857612b77612138565b5b612b8484828501612b16565b91505092915050565b60008060408385031215612ba457612ba3612133565b5b6000612bb285828601612186565b9250506020612bc385828601612186565b9150509250929050565b600080600080600060a08688031215612be957612be8612133565b5b6000612bf788828901612186565b9550506020612c0888828901612186565b9450506040612c19888289016121b2565b9350506060612c2a888289016121b2565b925050608086013567ffffffffffffffff811115612c4b57612c4a612138565b5b612c57888289016125ce565b9150509295509295909350565b600060208284031215612c7a57612c79612133565b5b6000612c8884828501612186565b91505092915050565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b6000612ced602a836122fa565b9150612cf882612c91565b604082019050919050565b60006020820190508181036000830152612d1c81612ce0565b9050919050565b600081905092915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b6000612d64601d83612d23565b9150612d6f82612d2e565b601d82019050919050565b6000612d85826122ef565b612d8f8185612d23565b9350612d9f81856020860161230b565b80840191505092915050565b6000612db682612d57565b9150612dc28284612d7a565b915081905092915050565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206f7220617070726f766564000000000000000000000000000000000000602082015250565b6000612e29602e836122fa565b9150612e3482612dcd565b604082019050919050565b60006020820190508181036000830152612e5881612e1c565b9050919050565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b6000612ebb6029836122fa565b9150612ec682612e5f565b604082019050919050565b60006020820190508181036000830152612eea81612eae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f5a826120f5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f8c57612f8b612f20565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fde57607f821691505b602082108103612ff157612ff0612f97565b5b50919050565b7f526563697069656e74732063616e6e6f7420626520656d707479000000000000600082015250565b600061302d601a836122fa565b915061303882612ff7565b602082019050919050565b6000602082019050818103600083015261305c81613020565b9050919050565b600061306e826120f5565b9150613079836120f5565b925082820190508082111561309157613090612f20565b5b92915050565b6000819050919050565b6130b26130ad826120f5565b613097565b82525050565b60008160601b9050919050565b60006130d0826130b8565b9050919050565b60006130e2826130c5565b9050919050565b6130fa6130f58261215d565b6130d7565b82525050565b600061310c82856130a1565b60208201915061311c82846130e9565b6014820191508190509392505050565b600060608201905061314160008301866120ff565b61314e60208301856120ff565b61315b60408301846123ab565b949350505050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026131c57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613188565b6131cf8683613188565b95508019841693508086168417925050509392505050565b6000819050919050565b600061320c613207613202846120f5565b6131e7565b6120f5565b9050919050565b6000819050919050565b613226836131f1565b61323a61323282613213565b848454613195565b825550505050565b600090565b61324f613242565b61325a81848461321d565b505050565b5b8181101561327e57613273600082613247565b600181019050613260565b5050565b601f8211156132c35761329481613163565b61329d84613178565b810160208510156132ac578190505b6132c06132b885613178565b83018261325f565b50505b505050565b600082821c905092915050565b60006132e6600019846008026132c8565b1980831691505092915050565b60006132ff83836132d5565b9150826002028217905092915050565b613318826122ef565b67ffffffffffffffff81111561333157613330612404565b5b61333b8254612fc6565b613346828285613282565b600060209050601f8311600181146133795760008415613367578287015190505b61337185826132f3565b8655506133d9565b601f19841661338786613163565b60005b828110156133af5784890151825560018201915060208501945060208101905061338a565b868310156133cc57848901516133c8601f8916826132d5565b8355505b6001600288020188555050505b505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061343d6026836122fa565b9150613448826133e1565b604082019050919050565b6000602082019050818103600083015261346c81613430565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134ad826120f5565b91506134b8836120f5565b9250826134c8576134c7613473565b5b828204905092915050565b60006134de826120f5565b91506134e9836120f5565b92508282026134f7816120f5565b9150828204841483151761350e5761350d612f20565b5b5092915050565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b60006135716028836122fa565b915061357c82613515565b604082019050919050565b600060208201905081810360008301526135a081613564565b9050919050565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136036025836122fa565b915061360e826135a7565b604082019050919050565b60006020820190508181036000830152613632816135f6565b9050919050565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b6000613695602a836122fa565b91506136a082613639565b604082019050919050565b600060208201905081810360008301526136c481613688565b9050919050565b600060408201905081810360008301526136e58185612866565b905081810360208301526136f98184612866565b90509392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137386020836122fa565b915061374382613702565b602082019050919050565b600060208201905081810360008301526137678161372b565b9050919050565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b60006137ca6029836122fa565b91506137d58261376e565b604082019050919050565b600060208201905081810360008301526137f9816137bd565b9050919050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061385c6021836122fa565b915061386782613800565b604082019050919050565b6000602082019050818103600083015261388b8161384f565b9050919050565b60006040820190506138a760008301856120ff565b6138b460208301846120ff565b9392505050565b6000819050919050565b6138d66138d1826123a1565b6138bb565b82525050565b60006138e882856138c5565b6020820191506138f882846138c5565b6020820191508190509392505050565b600060208201905061391d60008301846123ab565b92915050565b7f7b00000000000000000000000000000000000000000000000000000000000000600082015250565b6000613959600183612d23565b915061396482613923565b600182019050919050565b7f226e616d65223a22e2808b222c00000000000000000000000000000000000000600082015250565b60006139a5600d83612d23565b91506139b08261396f565b600d82019050919050565b7f226465736372697074696f6e223a22e2808b222c000000000000000000000000600082015250565b60006139f1601483612d23565b91506139fc826139bb565b601482019050919050565b7f22696d616765223a220000000000000000000000000000000000000000000000600082015250565b6000613a3d600983612d23565b9150613a4882613a07565b600982019050919050565b60008154613a6081612fc6565b613a6a8186612d23565b94506001821660008114613a855760018114613a9a57613acd565b60ff1983168652811515820286019350613acd565b613aa385613163565b60005b83811015613ac557815481890152600182019150602081019050613aa6565b838801955050505b50505092915050565b7f2200000000000000000000000000000000000000000000000000000000000000600082015250565b6000613b0c600183612d23565b9150613b1782613ad6565b600182019050919050565b7f7d00000000000000000000000000000000000000000000000000000000000000600082015250565b6000613b58600183612d23565b9150613b6382613b22565b600182019050919050565b6000613b798261394c565b9150613b8482613998565b9150613b8f826139e4565b9150613b9a82613a30565b9150613ba68284613a53565b9150613bb182613aff565b9150613bbc82613b4b565b915081905092915050565b600081519050919050565b600082825260208201905092915050565b6000613bee82613bc7565b613bf88185613bd2565b9350613c0881856020860161230b565b613c1181612335565b840191505092915050565b600060a082019050613c316000830188612965565b613c3e6020830187612965565b8181036040830152613c508186612866565b90508181036060830152613c648185612866565b90508181036080830152613c788184613be3565b90509695505050505050565b600081519050613c9381612233565b92915050565b600060208284031215613caf57613cae612133565b5b6000613cbd84828501613c84565b91505092915050565b60008160e01c9050919050565b600060033d1115613cf25760046000803e613cef600051613cc6565b90505b90565b600060443d10613d8257613d07612129565b60043d036004823e80513d602482011167ffffffffffffffff82111715613d2f575050613d82565b808201805167ffffffffffffffff811115613d4d5750505050613d82565b80602083010160043d038501811115613d6a575050505050613d82565b613d7982602001850186612433565b82955050505050505b90565b7f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b6000613de16034836122fa565b9150613dec82613d85565b604082019050919050565b60006020820190508181036000830152613e1081613dd4565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b6000613e736028836122fa565b9150613e7e82613e17565b604082019050919050565b60006020820190508181036000830152613ea281613e66565b9050919050565b600060a082019050613ebe6000830188612965565b613ecb6020830187612965565b613ed860408301866120ff565b613ee560608301856120ff565b8181036080830152613ef78184613be3565b9050969550505050505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f7b226e616d65223a22e2808b222c226465736372697074696f6e223a22e2808b227da264697066735822122077d3c3be532a009fb0d6474400fc0eddd06e6125951938b40836662fe786e87564736f6c634300081400334142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f697066732e696f2f697066732f6261666b726569666e77656f79613335787433663232767a32726362667874626676767a627a65623275626a65706e64357a63716264677a6b726500000000000000000000000000000000