60806040525f6005555f600655348015610017575f5ffd5b5060405161438038038061438083398181016040528101906100399190610250565b3360405180602001604052805f8152506100588161014360201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100c9575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100c091906102cd565b60405180910390fd5b6100d88161015660201b60201c565b5060016004819055505f821180156100ef57505f81115b61012e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012590610340565b60405180910390fd5b81600781905550806008819055505050610661565b80600290816101529190610592565b5050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5ffd5b5f819050919050565b61022f8161021d565b8114610239575f5ffd5b50565b5f8151905061024a81610226565b92915050565b5f5f6040838503121561026657610265610219565b5b5f6102738582860161023c565b92505060206102848582860161023c565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102b78261028e565b9050919050565b6102c7816102ad565b82525050565b5f6020820190506102e05f8301846102be565b92915050565b5f82825260208201905092915050565b7f507269636573206d7573742062652067726561746572207468616e20302e00005f82015250565b5f61032a601e836102e6565b9150610335826102f6565b602082019050919050565b5f6020820190508181035f8301526103578161031e565b9050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806103d957607f821691505b6020821081036103ec576103eb610395565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261044e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610413565b6104588683610413565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61049361048e6104898461021d565b610470565b61021d565b9050919050565b5f819050919050565b6104ac83610479565b6104c06104b88261049a565b84845461041f565b825550505050565b5f5f905090565b6104d76104c8565b6104e28184846104a3565b505050565b5b81811015610505576104fa5f826104cf565b6001810190506104e8565b5050565b601f82111561054a5761051b816103f2565b61052484610404565b81016020851015610533578190505b61054761053f85610404565b8301826104e7565b50505b505050565b5f82821c905092915050565b5f61056a5f198460080261054f565b1980831691505092915050565b5f610582838361055b565b9150826002028217905092915050565b61059b8261035e565b67ffffffffffffffff8111156105b4576105b3610368565b5b6105be82546103c2565b6105c9828285610509565b5f60209050601f8311600181146105fa575f84156105e8578287015190505b6105f28582610577565b865550610659565b601f198416610608866103f2565b5f5b8281101561062f5784890151825560018201915060208501945060208101905061060a565b8683101561064c5784890151610648601f89168261055b565b8355505b6001600288020188555050505b505050505050565b613d128061066e5f395ff3fe608060405260043610610128575f3560e01c806371014c54116100aa578063bcaedade1161006e578063bcaedade146103a0578063e985e9c5146103ca578063ea3696ca14610406578063f242432a14610430578063f2fde38b14610458578063fe4867121461048057610128565b806371014c54146102e4578063715018a61461030e5780638da5cb5b14610324578063a22cb4651461034e578063aa1b16501461037657610128565b80633272e4e1116100f15780633272e4e1146102245780633ccfd60b1461024e5780634c01a4e7146102645780634e1273f4146102805780636bcb21dd146102bc57610128565b8062fdd58e1461012c57806301ffc9a7146101685780630e89341c146101a45780632eb2c2d6146101e05780632f243ca914610208575b5f5ffd5b348015610137575f5ffd5b50610152600480360381019061014d9190612736565b6104bc565b60405161015f9190612783565b60405180910390f35b348015610173575f5ffd5b5061018e600480360381019061018991906127f1565b610511565b60405161019b9190612836565b60405180910390f35b3480156101af575f5ffd5b506101ca60048036038101906101c5919061284f565b6105f2565b6040516101d791906128ea565b60405180910390f35b3480156101eb575f5ffd5b5061020660048036038101906102019190612afa565b610949565b005b610222600480360381019061021d9190612c63565b6109f0565b005b34801561022f575f5ffd5b50610238610b6d565b6040516102459190612783565b60405180910390f35b348015610259575f5ffd5b50610262610b88565b005b61027e60048036038101906102799190612c63565b610c99565b005b34801561028b575f5ffd5b506102a660048036038101906102a19190612d6a565b610e18565b6040516102b39190612e97565b60405180910390f35b3480156102c7575f5ffd5b506102e260048036038101906102dd9190612eb7565b610f22565b005b3480156102ef575f5ffd5b506102f8611185565b6040516103059190612e97565b60405180910390f35b348015610319575f5ffd5b50610322611310565b005b34801561032f575f5ffd5b50610338611323565b6040516103459190612fc9565b60405180910390f35b348015610359575f5ffd5b50610374600480360381019061036f919061300c565b61134b565b005b348015610381575f5ffd5b5061038a611361565b6040516103979190612783565b60405180910390f35b3480156103ab575f5ffd5b506103b461137c565b6040516103c19190613065565b60405180910390f35b3480156103d5575f5ffd5b506103f060048036038101906103eb919061307e565b611381565b6040516103fd9190612836565b60405180910390f35b348015610411575f5ffd5b5061041a61140f565b6040516104279190613065565b60405180910390f35b34801561043b575f5ffd5b50610456600480360381019061045191906130bc565b611414565b005b348015610463575f5ffd5b5061047e6004803603810190610479919061314f565b6114bb565b005b34801561048b575f5ffd5b506104a660048036038101906104a1919061284f565b61153f565b6040516104b391906128ea565b60405180910390f35b5f5f5f8381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105db57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806105eb57506105ea82611694565b5b9050919050565b6060815f600a5f8381526020019081526020015f206001018054610615906131a7565b905011610657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064e90613221565b60405180910390fd5b5f600a5f8581526020019081526020015f206040518060600160405290815f82015f9054906101000a900460ff1660ff1660ff16815260200160018201805461069f906131a7565b80601f01602080910402602001604051908101604052809291908181526020018280546106cb906131a7565b80156107165780601f106106ed57610100808354040283529160200191610716565b820191905f5260205f20905b8154815290600101906020018083116106f957829003601f168201915b5050505050815260200160028201805461072f906131a7565b80601f016020809104026020016040519081016040528092919081815260200182805461075b906131a7565b80156107a65780601f1061077d576101008083540402835291602001916107a6565b820191905f5260205f20905b81548152906001019060200180831161078957829003601f168201915b50505050508152505090505f600c82602001516040516107c69190613279565b90815260200160405180910390206040518060400160405290815f820180546107ee906131a7565b80601f016020809104026020016040519081016040528092919081815260200182805461081a906131a7565b80156108655780601f1061083c57610100808354040283529160200191610865565b820191905f5260205f20905b81548152906001019060200180831161084857829003601f168201915b5050505050815260200160018201805461087e906131a7565b80601f01602080910402602001604051908101604052809291908181526020018280546108aa906131a7565b80156108f55780601f106108cc576101008083540402835291602001916108f5565b820191905f5260205f20905b8154815290600101906020018083116108d857829003601f168201915b5050505050815250509050600560ff16825f015160ff161461091a57805f0151610920565b80602001515b60405160200161093091906132d9565b6040516020818303038152906040529350505050919050565b5f6109526116fd565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561099757506109958682611381565b155b156109db5780866040517fe237d9220000000000000000000000000000000000000000000000000000000081526004016109d29291906132fa565b60405180910390fd5b6109e88686868686611704565b505050505050565b6109f86117f8565b5f600b82604051610a099190613279565b90815260200160405180910390205f018054610a24906131a7565b905011610a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5d9061336b565b60405180910390fd5b610a6e611361565b341015610ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa7906133d3565b60405180910390fd5b610b62600382600b84604051610ac69190613279565b90815260200160405180910390205f018054610ae1906131a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0d906131a7565b8015610b585780601f10610b2f57610100808354040283529160200191610b58565b820191905f5260205f20905b815481529060010190602001808311610b3b57829003601f168201915b505050505061183e565b610b6a611955565b50565b5f610b7661195f565b600854610b83919061341e565b905090565b610b906117f8565b610b98611974565b5f4790505f8111610bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd5906134a9565b60405180910390fd5b5f610be7611323565b73ffffffffffffffffffffffffffffffffffffffff1682604051610c0a906134f4565b5f6040518083038185875af1925050503d805f8114610c44576040519150601f19603f3d011682016040523d82523d5f602084013e610c49565b606091505b5050905080610c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8490613552565b60405180910390fd5b5050610c97611955565b565b610ca16117f8565b5f600b82604051610cb29190613279565b90815260200160405180910390206001018054610cce906131a7565b905011610d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d07906135ba565b60405180910390fd5b610d18610b6d565b341015610d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d51906133d3565b60405180910390fd5b610e0d600582600b84604051610d709190613279565b90815260200160405180910390206001018054610d8c906131a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610db8906131a7565b8015610e035780601f10610dda57610100808354040283529160200191610e03565b820191905f5260205f20905b815481529060010190602001808311610de657829003601f168201915b505050505061183e565b610e15611955565b50565b60608151835114610e6457815183516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401610e5b9291906135d8565b60405180910390fd5b5f835167ffffffffffffffff811115610e8057610e7f61290e565b5b604051908082528060200260200182016040528015610eae5781602001602082028036833780820191505090505b5090505f5f90505b8451811015610f1757610eed610ed582876119fb90919063ffffffff16565b610ee88387611a0e90919063ffffffff16565b6104bc565b828281518110610f0057610eff6135ff565b5b602002602001018181525050806001019050610eb6565b508091505092915050565b610f2a611974565b84848484845f8551118015610f3f57505f8451115b8015610f4b57505f8351115b8015610f5757505f8251115b8015610f6357505f8151115b8015610f9a57505f600b86604051610f7b9190613279565b90815260200160405180910390205f018054610f96906131a7565b9050145b8015610fd257505f600b86604051610fb29190613279565b90815260200160405180910390206001018054610fce906131a7565b9050145b801561100957505f600c86604051610fea9190613279565b90815260200160405180910390205f018054611005906131a7565b9050145b801561104157505f600c866040516110219190613279565b9081526020016040518091039020600101805461103d906131a7565b9050145b611080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107790613676565b60405180910390fd5b60405180604001604052808a815260200189815250600b8b6040516110a59190613279565b90815260200160405180910390205f820151815f0190816110c69190613834565b5060208201518160010190816110dc9190613834565b50905050604051806040016040528088815260200187815250600c8b6040516111059190613279565b90815260200160405180910390205f820151815f0190816111269190613834565b50602082015181600101908161113c9190613834565b509050507f720ee81855e49269f84f2c9aae151bdc73b8f6fa88150d34ab2083bba1f9925e8a33604051611171929190613903565b60405180910390a150505050505050505050565b60605f5f90505f3390505f600190505b6005548111611214575f600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205411156112015782806111fd90613931565b9350505b808061120c90613931565b915050611195565b508167ffffffffffffffff81111561122f5761122e61290e565b5b60405190808252806020026020018201604052801561125d5781602001602082028036833780820191505090505b5092505f5f90505f600190505b6005548111611309575f600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205411156112f657808583815181106112db576112da6135ff565b5b60200260200101818152505081806112f290613931565b9250505b808061130190613931565b91505061126a565b5050505090565b611318611974565b6113215f611a21565b565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61135d6113566116fd565b8383611ae4565b5050565b5f61136a61195f565b600754611377919061341e565b905090565b600381565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b600581565b5f61141d6116fd565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561146257506114608682611381565b155b156114a65780866040517fe237d92200000000000000000000000000000000000000000000000000000000815260040161149d9291906132fa565b60405180910390fd5b6114b38686868686611c4d565b505050505050565b6114c3611974565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611533575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161152a9190612fc9565b60405180910390fd5b61153c81611a21565b50565b6060815f61154d33836104bc565b1161158d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611584906139c2565b60405180910390fd5b825f600a5f8381526020019081526020015f2060010180546115ae906131a7565b9050116115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790613221565b60405180910390fd5b600a5f8581526020019081526020015f20600201805461160f906131a7565b80601f016020809104026020016040519081016040528092919081815260200182805461163b906131a7565b80156116865780601f1061165d57610100808354040283529160200191611686565b820191905f5260205f20905b81548152906001019060200180831161166957829003601f168201915b505050505092505050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611774575f6040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161176b9190612fc9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036117e4575f6040517f01a835140000000000000000000000000000000000000000000000000000000081526004016117db9190612fc9565b60405180910390fd5b6117f18585858585611d53565b5050505050565b600260045403611834576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600481905550565b5f3390505f8385604051602001611856929190613a14565b6040516020818303038152906040528051906020012090505f61187b82878787611dff565b9050600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f205f8154809291906118d990613931565b919050555060065f8154809291906118f090613931565b91905055506119108382600160405180602001604052805f815250611ee2565b7f5f0bfe46408de861e545e0aed9e386f259cf2bb8a932c76430a3f124b17f746c858785846040516119459493929190613a3b565b60405180910390a1505050505050565b6001600481905550565b5f606460065461196f9190613ab2565b905090565b61197c6116fd565b73ffffffffffffffffffffffffffffffffffffffff1661199a611323565b73ffffffffffffffffffffffffffffffffffffffff16146119f9576119bd6116fd565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016119f09190612fc9565b60405180910390fd5b565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b54575f6040517fced3e100000000000000000000000000000000000000000000000000000000008152600401611b4b9190612fc9565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c409190612836565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611cbd575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611cb49190612fc9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611d2d575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401611d249190612fc9565b60405180910390fd5b5f5f611d398585611f77565b91509150611d4a8787848487611d53565b50505050505050565b611d5f85858585611fa7565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611df8575f611d9b6116fd565b90506001845103611de7575f611dba5f86611a0e90919063ffffffff16565b90505f611dd05f86611a0e90919063ffffffff16565b9050611de083898985858961233a565b5050611df6565b611df58187878787876124e9565b5b505b5050505050565b5f5f60095f8781526020019081526020015f205403611ec65760055f815480929190611e2a90613931565b919050555060055460095f8781526020019081526020015f208190555060405180606001604052808560ff16815260200184815260200183815250600a5f60055481526020019081526020015f205f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151816001019081611eab9190613834565b506040820151816002019081611ec19190613834565b509050505b60095f8681526020019081526020015f20549050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f52575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611f499190612fc9565b60405180910390fd5b5f5f611f5e8585611f77565b91509150611f6f5f87848487611d53565b505050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b8051825114611ff157815181516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401611fe89291906135d8565b60405180910390fd5b5f611ffa6116fd565b90505f5f90505b83518110156121f9575f61201e8286611a0e90919063ffffffff16565b90505f6120348386611a0e90919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614612157575f5f5f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561210357888183856040517f03dee4c50000000000000000000000000000000000000000000000000000000081526004016120fa9493929190613ae2565b60405180910390fd5b8181035f5f8581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146121ec57805f5f8481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546121e49190613b25565b925050819055505b5050806001019050612001565b5060018351036122b4575f6122175f85611a0e90919063ffffffff16565b90505f61222d5f85611a0e90919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6285856040516122a59291906135d8565b60405180910390a45050612333565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161232a929190613b58565b60405180910390a45b5050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b11156124e1578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161239a959493929190613bdf565b6020604051808303815f875af19250505080156123d557506040513d601f19601f820116820180604052508101906123d29190613c4b565b60015b612456573d805f8114612403576040519150601f19603f3d011682016040523d82523d5f602084013e612408565b606091505b505f81510361244e57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016124459190612fc9565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146124df57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016124d69190612fc9565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115612690578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612549959493929190613c76565b6020604051808303815f875af192505050801561258457506040513d601f19601f820116820180604052508101906125819190613c4b565b60015b612605573d805f81146125b2576040519150601f19603f3d011682016040523d82523d5f602084013e6125b7565b606091505b505f8151036125fd57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016125f49190612fc9565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461268e57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016126859190612fc9565b60405180910390fd5b505b505050505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126d2826126a9565b9050919050565b6126e2816126c8565b81146126ec575f5ffd5b50565b5f813590506126fd816126d9565b92915050565b5f819050919050565b61271581612703565b811461271f575f5ffd5b50565b5f813590506127308161270c565b92915050565b5f5f6040838503121561274c5761274b6126a1565b5b5f612759858286016126ef565b925050602061276a85828601612722565b9150509250929050565b61277d81612703565b82525050565b5f6020820190506127965f830184612774565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6127d08161279c565b81146127da575f5ffd5b50565b5f813590506127eb816127c7565b92915050565b5f60208284031215612806576128056126a1565b5b5f612813848285016127dd565b91505092915050565b5f8115159050919050565b6128308161281c565b82525050565b5f6020820190506128495f830184612827565b92915050565b5f60208284031215612864576128636126a1565b5b5f61287184828501612722565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6128bc8261287a565b6128c68185612884565b93506128d6818560208601612894565b6128df816128a2565b840191505092915050565b5f6020820190508181035f83015261290281846128b2565b905092915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612944826128a2565b810181811067ffffffffffffffff821117156129635761296261290e565b5b80604052505050565b5f612975612698565b9050612981828261293b565b919050565b5f67ffffffffffffffff8211156129a05761299f61290e565b5b602082029050602081019050919050565b5f5ffd5b5f6129c76129c284612986565b61296c565b905080838252602082019050602084028301858111156129ea576129e96129b1565b5b835b81811015612a1357806129ff8882612722565b8452602084019350506020810190506129ec565b5050509392505050565b5f82601f830112612a3157612a3061290a565b5b8135612a418482602086016129b5565b91505092915050565b5f5ffd5b5f67ffffffffffffffff821115612a6857612a6761290e565b5b612a71826128a2565b9050602081019050919050565b828183375f83830152505050565b5f612a9e612a9984612a4e565b61296c565b905082815260208101848484011115612aba57612ab9612a4a565b5b612ac5848285612a7e565b509392505050565b5f82601f830112612ae157612ae061290a565b5b8135612af1848260208601612a8c565b91505092915050565b5f5f5f5f5f60a08688031215612b1357612b126126a1565b5b5f612b20888289016126ef565b9550506020612b31888289016126ef565b945050604086013567ffffffffffffffff811115612b5257612b516126a5565b5b612b5e88828901612a1d565b935050606086013567ffffffffffffffff811115612b7f57612b7e6126a5565b5b612b8b88828901612a1d565b925050608086013567ffffffffffffffff811115612bac57612bab6126a5565b5b612bb888828901612acd565b9150509295509295909350565b5f67ffffffffffffffff821115612bdf57612bde61290e565b5b612be8826128a2565b9050602081019050919050565b5f612c07612c0284612bc5565b61296c565b905082815260208101848484011115612c2357612c22612a4a565b5b612c2e848285612a7e565b509392505050565b5f82601f830112612c4a57612c4961290a565b5b8135612c5a848260208601612bf5565b91505092915050565b5f60208284031215612c7857612c776126a1565b5b5f82013567ffffffffffffffff811115612c9557612c946126a5565b5b612ca184828501612c36565b91505092915050565b5f67ffffffffffffffff821115612cc457612cc361290e565b5b602082029050602081019050919050565b5f612ce7612ce284612caa565b61296c565b90508083825260208201905060208402830185811115612d0a57612d096129b1565b5b835b81811015612d335780612d1f88826126ef565b845260208401935050602081019050612d0c565b5050509392505050565b5f82601f830112612d5157612d5061290a565b5b8135612d61848260208601612cd5565b91505092915050565b5f5f60408385031215612d8057612d7f6126a1565b5b5f83013567ffffffffffffffff811115612d9d57612d9c6126a5565b5b612da985828601612d3d565b925050602083013567ffffffffffffffff811115612dca57612dc96126a5565b5b612dd685828601612a1d565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e1281612703565b82525050565b5f612e238383612e09565b60208301905092915050565b5f602082019050919050565b5f612e4582612de0565b612e4f8185612dea565b9350612e5a83612dfa565b805f5b83811015612e8a578151612e718882612e18565b9750612e7c83612e2f565b925050600181019050612e5d565b5085935050505092915050565b5f6020820190508181035f830152612eaf8184612e3b565b905092915050565b5f5f5f5f5f60a08688031215612ed057612ecf6126a1565b5b5f86013567ffffffffffffffff811115612eed57612eec6126a5565b5b612ef988828901612c36565b955050602086013567ffffffffffffffff811115612f1a57612f196126a5565b5b612f2688828901612c36565b945050604086013567ffffffffffffffff811115612f4757612f466126a5565b5b612f5388828901612c36565b935050606086013567ffffffffffffffff811115612f7457612f736126a5565b5b612f8088828901612c36565b925050608086013567ffffffffffffffff811115612fa157612fa06126a5565b5b612fad88828901612c36565b9150509295509295909350565b612fc3816126c8565b82525050565b5f602082019050612fdc5f830184612fba565b92915050565b612feb8161281c565b8114612ff5575f5ffd5b50565b5f8135905061300681612fe2565b92915050565b5f5f60408385031215613022576130216126a1565b5b5f61302f858286016126ef565b925050602061304085828601612ff8565b9150509250929050565b5f60ff82169050919050565b61305f8161304a565b82525050565b5f6020820190506130785f830184613056565b92915050565b5f5f60408385031215613094576130936126a1565b5b5f6130a1858286016126ef565b92505060206130b2858286016126ef565b9150509250929050565b5f5f5f5f5f60a086880312156130d5576130d46126a1565b5b5f6130e2888289016126ef565b95505060206130f3888289016126ef565b945050604061310488828901612722565b935050606061311588828901612722565b925050608086013567ffffffffffffffff811115613136576131356126a5565b5b61314288828901612acd565b9150509295509295909350565b5f60208284031215613164576131636126a1565b5b5f613171848285016126ef565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806131be57607f821691505b6020821081036131d1576131d061317a565b5b50919050565b7f496d61676520646f6573206e6f742065786973742e00000000000000000000005f82015250565b5f61320b601583612884565b9150613216826131d7565b602082019050919050565b5f6020820190508181035f830152613238816131ff565b9050919050565b5f81905092915050565b5f6132538261287a565b61325d818561323f565b935061326d818560208601612894565b80840191505092915050565b5f6132848284613249565b915081905092915050565b7f68747470733a2f2f697066732e7733732e6c696e6b2f697066732f00000000005f82015250565b5f6132c3601b8361323f565b91506132ce8261328f565b601b82019050919050565b5f6132e3826132b7565b91506132ef8284613249565b915081905092915050565b5f60408201905061330d5f830185612fba565b61331a6020830184612fba565b9392505050565b7f5374616e6461726420696d61676520646f6573206e6f742065786973742e00005f82015250565b5f613355601e83612884565b915061336082613321565b602082019050919050565b5f6020820190508181035f83015261338281613349565b9050919050565b7f496e73756666696369656e742066756e64732e000000000000000000000000005f82015250565b5f6133bd601383612884565b91506133c882613389565b602082019050919050565b5f6020820190508181035f8301526133ea816133b1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61342882612703565b915061343383612703565b925082820261344181612703565b91508282048414831517613458576134576133f1565b5b5092915050565b7f4e6f7468696e6720746f2077697468647261772e0000000000000000000000005f82015250565b5f613493601483612884565b915061349e8261345f565b602082019050919050565b5f6020820190508181035f8301526134c081613487565b9050919050565b5f81905092915050565b50565b5f6134df5f836134c7565b91506134ea826134d1565b5f82019050919050565b5f6134fe826134d4565b9150819050919050565b7f4661696c656420746f2073656e642066756e64732e00000000000000000000005f82015250565b5f61353c601583612884565b915061354782613508565b602082019050919050565b5f6020820190508181035f83015261356981613530565b9050919050565b7f5072656d69756d20696d61676520646f6573206e6f742065786973742e0000005f82015250565b5f6135a4601d83612884565b91506135af82613570565b602082019050919050565b5f6020820190508181035f8301526135d181613598565b9050919050565b5f6040820190506135eb5f830185612774565b6135f86020830184612774565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c696420696d61676520646174612e000000000000000000000000005f82015250565b5f613660601383612884565b915061366b8261362c565b602082019050919050565b5f6020820190508181035f83015261368d81613654565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026136f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826136b5565b6136fa86836136b5565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61373561373061372b84612703565b613712565b612703565b9050919050565b5f819050919050565b61374e8361371b565b61376261375a8261373c565b8484546136c1565b825550505050565b5f5f905090565b61377961376a565b613784818484613745565b505050565b5b818110156137a75761379c5f82613771565b60018101905061378a565b5050565b601f8211156137ec576137bd81613694565b6137c6846136a6565b810160208510156137d5578190505b6137e96137e1856136a6565b830182613789565b50505b505050565b5f82821c905092915050565b5f61380c5f19846008026137f1565b1980831691505092915050565b5f61382483836137fd565b9150826002028217905092915050565b61383d8261287a565b67ffffffffffffffff8111156138565761385561290e565b5b61386082546131a7565b61386b8282856137ab565b5f60209050601f83116001811461389c575f841561388a578287015190505b6138948582613819565b8655506138fb565b601f1984166138aa86613694565b5f5b828110156138d1578489015182556001820191506020850194506020810190506138ac565b868310156138ee57848901516138ea601f8916826137fd565b8355505b6001600288020188555050505b505050505050565b5f6040820190508181035f83015261391b81856128b2565b905061392a6020830184612fba565b9392505050565b5f61393b82612703565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361396d5761396c6133f1565b5b600182019050919050565b7f4f6e6c79206f776e65722063616e206163636573732069742e000000000000005f82015250565b5f6139ac601983612884565b91506139b782613978565b602082019050919050565b5f6020820190508181035f8301526139d9816139a0565b9050919050565b5f8160f81b9050919050565b5f6139f6826139e0565b9050919050565b613a0e613a098261304a565b6139ec565b82525050565b5f613a1f8285613249565b9150613a2b82846139fd565b6001820191508190509392505050565b5f6080820190508181035f830152613a5381876128b2565b9050613a626020830186613056565b613a6f6040830185612fba565b613a7c6060830184612774565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613abc82612703565b9150613ac783612703565b925082613ad757613ad6613a85565b5b828204905092915050565b5f608082019050613af55f830187612fba565b613b026020830186612774565b613b0f6040830185612774565b613b1c6060830184612774565b95945050505050565b5f613b2f82612703565b9150613b3a83612703565b9250828201905080821115613b5257613b516133f1565b5b92915050565b5f6040820190508181035f830152613b708185612e3b565b90508181036020830152613b848184612e3b565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f613bb182613b8d565b613bbb8185613b97565b9350613bcb818560208601612894565b613bd4816128a2565b840191505092915050565b5f60a082019050613bf25f830188612fba565b613bff6020830187612fba565b613c0c6040830186612774565b613c196060830185612774565b8181036080830152613c2b8184613ba7565b90509695505050505050565b5f81519050613c45816127c7565b92915050565b5f60208284031215613c6057613c5f6126a1565b5b5f613c6d84828501613c37565b91505092915050565b5f60a082019050613c895f830188612fba565b613c966020830187612fba565b8181036040830152613ca88186612e3b565b90508181036060830152613cbc8185612e3b565b90508181036080830152613cd08184613ba7565b9050969550505050505056fea2646970667358221220e350d82949e880e37ec2f401a7fe5a0d8a235f3a1e5c1f6300e38b7f9bf4e62064736f6c634300081b003300000000000000000000000000000000000000000000000000013e52b9abe000000000000000000000000000000000000000000000000000000c6f3b40b6c000