More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 7,470 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Process Route Wi... | 56128130 | 64 days ago | IN | 0 ETH | 0.00000946 | ||||
Process Route Wi... | 56127935 | 64 days ago | IN | 0.0001 ETH | 0.00001361 | ||||
Process Route Wi... | 56127554 | 64 days ago | IN | 0 ETH | 0.00000842 | ||||
Process Route Wi... | 56127203 | 64 days ago | IN | 0 ETH | 0.00001944 | ||||
Process Route Wi... | 56127034 | 64 days ago | IN | 0 ETH | 0.00001423 | ||||
Process Route Wi... | 56125374 | 64 days ago | IN | 0 ETH | 0.0000149 | ||||
Process Route Wi... | 56123999 | 64 days ago | IN | 0 ETH | 0.0000101 | ||||
Process Route Wi... | 56122378 | 64 days ago | IN | 0 ETH | 0.00000918 | ||||
Process Route | 56121607 | 64 days ago | IN | 0.0000001 ETH | 0.00000951 | ||||
Process Route Wi... | 56120278 | 64 days ago | IN | 0 ETH | 0.0000298 | ||||
Process Route Wi... | 56119818 | 64 days ago | IN | 0 ETH | 0.00001081 | ||||
Process Route Wi... | 56118853 | 64 days ago | IN | 0 ETH | 0.00001897 | ||||
Process Route Wi... | 56116968 | 64 days ago | IN | 0 ETH | 0.00001285 | ||||
Process Route Wi... | 56111846 | 64 days ago | IN | 0.000001 ETH | 0.00001015 | ||||
Process Route Wi... | 56110482 | 64 days ago | IN | 0 ETH | 0.00000938 | ||||
Process Route Wi... | 56110361 | 64 days ago | IN | 0 ETH | 0.00001026 | ||||
Process Route Wi... | 56103254 | 64 days ago | IN | 0 ETH | 0.00001043 | ||||
Process Route Wi... | 56103212 | 64 days ago | IN | 0 ETH | 0.00001163 | ||||
Process Route Wi... | 56102070 | 64 days ago | IN | 0 ETH | 0.0000152 | ||||
Process Route Wi... | 56102052 | 64 days ago | IN | 0 ETH | 0.00000777 | ||||
Process Route Wi... | 56102009 | 64 days ago | IN | 0 ETH | 0.00000925 | ||||
Process Route Wi... | 56100629 | 64 days ago | IN | 0.0005 ETH | 0.00001066 | ||||
Process Route Wi... | 56100556 | 64 days ago | IN | 0 ETH | 0.00001725 | ||||
Process Route Wi... | 56098770 | 64 days ago | IN | 0 ETH | 0.00001172 | ||||
Process Route | 56097389 | 64 days ago | IN | 0 ETH | 0.00000525 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
56128130 | 64 days ago | 0.03225127 ETH | ||||
56128130 | 64 days ago | 0.00008042 ETH | ||||
56128130 | 64 days ago | 0.03233169 ETH | ||||
56128130 | 64 days ago | 0.03233169 ETH | ||||
56127935 | 64 days ago | 0.0001 ETH | ||||
56127935 | 64 days ago | 0.0001 ETH | ||||
56127935 | 64 days ago | 0.0001 ETH | ||||
56127554 | 64 days ago | 0.00060886 ETH | ||||
56127554 | 64 days ago | 0.00000151 ETH | ||||
56127554 | 64 days ago | 0.00061038 ETH | ||||
56127554 | 64 days ago | 0.00061038 ETH | ||||
56127203 | 64 days ago | 0.66353636 ETH | ||||
56127203 | 64 days ago | 0.00165466 ETH | ||||
56127203 | 64 days ago | 0.66519102 ETH | ||||
56127203 | 64 days ago | 0.66519102 ETH | ||||
56127034 | 64 days ago | 0.27854348 ETH | ||||
56127034 | 64 days ago | 0.0006946 ETH | ||||
56127034 | 64 days ago | 0.27923808 ETH | ||||
56127034 | 64 days ago | 0.27923808 ETH | ||||
56126278 | 64 days ago | 0.00004407 ETH | ||||
56126278 | 64 days ago | 0.00004407 ETH | ||||
56125374 | 64 days ago | 0.00002807 ETH | ||||
56125374 | 64 days ago | 0.00000007 ETH | ||||
56125374 | 64 days ago | 0.00002814 ETH | ||||
56125374 | 64 days ago | 0.00002814 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
RouteProcessor5
Compiler Version
v0.8.10-1.0.1
ZkSolc Version
v1.5.2
Optimization Enabled:
Yes with Mode 3
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.10; import '../interfaces/IUniswapV2Pair.sol'; import '../interfaces/IUniswapV3Pool.sol'; import '../interfaces/ITridentCLPool.sol'; import '../interfaces/IBentoBoxMinimal.sol'; import '../interfaces/IPool.sol'; import '../interfaces/IWETH.sol'; import '../interfaces/ICurve.sol'; import './InputStream.sol'; import './Utils.sol'; import '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol'; import "@openzeppelin/contracts/access/Ownable.sol"; address constant IMPOSSIBLE_POOL_ADDRESS = 0x0000000000000000000000000000000000000001; address constant INTERNAL_INPUT_SOURCE = 0x0000000000000000000000000000000000000000; uint8 constant LOCKED = 2; uint8 constant NOT_LOCKED = 1; uint8 constant PAUSED = 2; uint8 constant NOT_PAUSED = 1; /// @dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK) uint160 constant MIN_SQRT_RATIO = 4295128739; /// @dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK) uint160 constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342; /// @title A route processor for the Sushi Aggregator /// @author Ilya Lyalin contract RouteProcessor5 is Ownable { using SafeERC20 for IERC20; using Utils for IERC20; using Utils for address; using SafeERC20 for IERC20Permit; using InputStream for uint256; event Route( address indexed from, address to, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOutMin, uint256 amountOut ); error MinimalOutputBalanceViolation(uint256 amountOut); IBentoBoxMinimal public immutable bentoBox; mapping (address => bool) public priviledgedUsers; address private lastCalledPool; uint8 private unlocked = NOT_LOCKED; uint8 private paused = NOT_PAUSED; modifier lock() { require(unlocked == NOT_LOCKED, 'RouteProcessor is locked'); require(paused == NOT_PAUSED, 'RouteProcessor is paused'); unlocked = LOCKED; _; unlocked = NOT_LOCKED; } modifier onlyOwnerOrPriviledgedUser() { require(msg.sender == owner() || priviledgedUsers[msg.sender], "RP: caller is not the owner or a privileged user"); _; } constructor(address _bentoBox, address[] memory priviledgedUserList) { bentoBox = IBentoBoxMinimal(_bentoBox); lastCalledPool = IMPOSSIBLE_POOL_ADDRESS; for (uint256 i = 0; i < priviledgedUserList.length; i++) { priviledgedUsers[priviledgedUserList[i]] = true; } } function setPriviledge(address user, bool priviledge) external onlyOwner { priviledgedUsers[user] = priviledge; } function pause() external onlyOwnerOrPriviledgedUser { paused = PAUSED; } function resume() external onlyOwnerOrPriviledgedUser { paused = NOT_PAUSED; } /// @notice For native unwrapping receive() external payable {} /// @notice Processes the route generated off-chain. Has a lock /// @param tokenIn Address of the input token /// @param amountIn Amount of the input token /// @param tokenOut Address of the output token /// @param amountOutMin Minimum amount of the output token /// @param to Where to transfer output tokens /// @param route Route to process /// @return amountOut Actual amount of the output token function processRoute( address tokenIn, uint256 amountIn, address tokenOut, uint256 amountOutMin, address to, bytes memory route ) external payable lock returns (uint256 amountOut) { return processRouteInternal(tokenIn, amountIn, tokenOut, amountOutMin, to, route); } /// @notice Transfers some value to <transferValueTo> and then processes the route /// @param transferValueTo Address where the value should be transferred /// @param amountValueTransfer How much value to transfer /// @param tokenIn Address of the input token /// @param amountIn Amount of the input token /// @param tokenOut Address of the output token /// @param amountOutMin Minimum amount of the output token /// @return amountOut Actual amount of the output token function transferValueAndprocessRoute( address transferValueTo, uint256 amountValueTransfer, address tokenIn, uint256 amountIn, address tokenOut, uint256 amountOutMin, address to, bytes memory route ) external payable lock returns (uint256 amountOut) { transferValueTo.transferNative(amountValueTransfer); return processRouteInternal(tokenIn, amountIn, tokenOut, amountOutMin, to, route); } /// @notice Transfers some value of input tokens to <transferValueTo> and then processes the route /// @param transferValueTo Address where the value should be transferred /// @param amountValueTransfer How much value to transfer /// @param tokenIn Address of the input token /// @param amountIn Amount of the input token /// @param tokenOut Address of the output token /// @param amountOutMin Minimum amount of the output token /// @return amountOut Actual amount of the output token function processRouteWithTransferValueInput( address payable transferValueTo, uint256 amountValueTransfer, address tokenIn, uint256 amountIn, address tokenOut, uint256 amountOutMin, address to, bytes memory route ) external payable lock returns (uint256 amountOut) { tokenIn.transferAnyFromSender(transferValueTo, amountValueTransfer); return processRouteInternal(tokenIn, amountIn, tokenOut, amountOutMin, to, route); } /// @notice processes the route and sends <amountValueTransfer> amount of output token to <transferValueTo> /// @param transferValueTo Address where the value should be transferred /// @param amountValueTransfer How much value to transfer /// @param tokenIn Address of the input token /// @param amountIn Amount of the input token /// @param tokenOut Address of the output token /// @param amountOutMin Minimum amount of the output token /// @return amountOut Actual amount of the output token function processRouteWithTransferValueOutput( address payable transferValueTo, uint256 amountValueTransfer, address tokenIn, uint256 amountIn, address tokenOut, uint256 amountOutMin, address to, bytes memory route ) external payable lock returns (uint256 amountOut) { amountOut = processRouteInternal(tokenIn, amountIn, tokenOut, amountOutMin, address(this), route); tokenOut.transferAny(transferValueTo, amountValueTransfer); tokenOut.transferAny(to, amountOut - amountValueTransfer); } /// @notice Processes the route generated off-chain /// @param tokenIn Address of the input token /// @param amountIn Amount of the input token /// @param tokenOut Address of the output token /// @param amountOutMin Minimum amount of the output token /// @return amountOut Actual amount of the output token function processRouteInternal( address tokenIn, uint256 amountIn, address tokenOut, uint256 amountOutMin, address to, bytes memory route ) private returns (uint256 amountOut) { uint256 balanceInInitial = tokenIn.anyBalanceOf(msg.sender); uint256 balanceOutInitial = tokenOut.anyBalanceOf(to); uint256 realAmountIn = amountIn; { uint256 step = 0; uint256 stream = InputStream.createStream(route); while (stream.isNotEmpty()) { uint8 commandCode = stream.readUint8(); if (commandCode == 1) { uint256 usedAmount = processMyERC20(stream); if (step == 0) realAmountIn = usedAmount; } else if (commandCode == 2) processUserERC20(stream, amountIn); else if (commandCode == 3) { uint256 usedAmount = processNative(stream); if (step == 0) realAmountIn = usedAmount; } else if (commandCode == 4) processOnePool(stream); else if (commandCode == 5) processInsideBento(stream); else if (commandCode == 6) applyPermit(tokenIn, stream); else revert('RouteProcessor: Unknown command code'); ++step; } } uint256 balanceInFinal = tokenIn.anyBalanceOf(msg.sender); if (tokenIn != Utils.NATIVE_ADDRESS) require(balanceInFinal + amountIn + 10 >= balanceInInitial, 'RouteProcessor: Minimal input balance violation'); uint256 balanceOutFinal = tokenOut.anyBalanceOf(to); if (balanceOutFinal < balanceOutInitial + amountOutMin) revert MinimalOutputBalanceViolation(balanceOutFinal - balanceOutInitial); amountOut = balanceOutFinal - balanceOutInitial; emit Route(msg.sender, to, tokenIn, tokenOut, realAmountIn, amountOutMin, amountOut); } /// @notice Applies ERC-2612 permit /// @param tokenIn permitted token /// @param stream Streamed program function applyPermit(address tokenIn, uint256 stream) private { uint256 value = stream.readUint(); uint256 deadline = stream.readUint(); uint8 v = stream.readUint8(); bytes32 r = stream.readBytes32(); bytes32 s = stream.readBytes32(); if (IERC20(tokenIn).allowance(msg.sender, address(this)) < value) { IERC20Permit(tokenIn).safePermit(msg.sender, address(this), value, deadline, v, r, s); } } /// @notice Processes native coin: call swap for all pools that swap from native coin /// @param stream Streamed program function processNative(uint256 stream) private returns (uint256 amountTotal) { amountTotal = address(this).balance; distributeAndSwap(stream, address(this), Utils.NATIVE_ADDRESS, amountTotal); } /// @notice Processes ERC20 token from this contract balance: /// @notice Call swap for all pools that swap from this token /// @param stream Streamed program function processMyERC20(uint256 stream) private returns (uint256 amountTotal) { address token = stream.readAddress(); amountTotal = IERC20(token).balanceOf(address(this)); unchecked { if (amountTotal > 0) amountTotal -= 1; // slot undrain protection } distributeAndSwap(stream, address(this), token, amountTotal); } /// @notice Processes ERC20 token from msg.sender balance: /// @notice Call swap for all pools that swap from this token /// @param stream Streamed program /// @param amountTotal Amount of tokens to take from msg.sender function processUserERC20(uint256 stream, uint256 amountTotal) private { address token = stream.readAddress(); distributeAndSwap(stream, msg.sender, token, amountTotal); } /// @notice Processes ERC20 token for cases when the token has only one output pool /// @notice In this case liquidity is already at pool balance. This is an optimization /// @notice Call swap for all pools that swap from this token /// @param stream Streamed program function processOnePool(uint256 stream) private { address token = stream.readAddress(); swap(stream, INTERNAL_INPUT_SOURCE, token, 0); } /// @notice Processes Bento tokens /// @notice Call swap for all pools that swap from this token /// @param stream Streamed program function processInsideBento(uint256 stream) private { address token = stream.readAddress(); uint256 amountTotal = bentoBox.balanceOf(token, address(this)); unchecked { if (amountTotal > 0) amountTotal -= 1; // slot undrain protection } distributeAndSwap(stream, address(this), token, amountTotal); } /// @notice Distributes amountTotal to several pools according to their shares and calls swap for each pool /// @param stream Streamed program /// @param from Where to take liquidity for swap /// @param tokenIn Input token /// @param amountTotal Total amount of tokenIn for swaps function distributeAndSwap(uint256 stream, address from, address tokenIn, uint256 amountTotal) private { uint8 num = stream.readUint8(); unchecked { for (uint256 i = 0; i < num; ++i) { uint16 share = stream.readUint16(); uint256 amount = (amountTotal * share) / type(uint16).max /*65535*/; amountTotal -= amount; swap(stream, from, tokenIn, amount); } } } /// @notice Makes swap /// @param stream Streamed program /// @param from Where to take liquidity for swap /// @param tokenIn Input token /// @param amountIn Amount of tokenIn to take for swap function swap(uint256 stream, address from, address tokenIn, uint256 amountIn) private { uint8 poolType = stream.readUint8(); if (poolType == 0) swapUniV2(stream, from, tokenIn, amountIn); else if (poolType == 1) swapUniV3(stream, from, tokenIn, amountIn); else if (poolType == 2) wrapNative(stream, from, tokenIn, amountIn); else if (poolType == 3) bentoBridge(stream, from, tokenIn, amountIn); else if (poolType == 4) swapTrident(stream, from, tokenIn, amountIn); else if (poolType == 5) swapCurve(stream, from, tokenIn, amountIn); else revert('RouteProcessor: Unknown pool type'); } /// @notice Wraps/unwraps native token /// @param stream [direction & fake, recipient, wrapToken?] /// @param from Where to take liquidity for swap /// @param tokenIn Input token /// @param amountIn Amount of tokenIn to take for swap function wrapNative(uint256 stream, address from, address tokenIn, uint256 amountIn) private { uint8 directionAndFake = stream.readUint8(); address to = stream.readAddress(); if (directionAndFake & 1 == 1) { // wrap native address wrapToken = stream.readAddress(); if (directionAndFake & 2 == 0) IWETH(wrapToken).deposit{value: amountIn}(); if (to != address(this)) IERC20(wrapToken).safeTransfer(to, amountIn); } else { // unwrap native if (directionAndFake & 2 == 0) { if (from == msg.sender) IERC20(tokenIn).safeTransferFrom(msg.sender, address(this), amountIn); IWETH(tokenIn).withdraw(amountIn); } to.transferNative(amountIn); } } /// @notice Bridge/unbridge tokens to/from Bento /// @param stream [direction, recipient] /// @param from Where to take liquidity for swap /// @param tokenIn Input token /// @param amountIn Amount of tokenIn to take for swap function bentoBridge(uint256 stream, address from, address tokenIn, uint256 amountIn) private { uint8 direction = stream.readUint8(); address to = stream.readAddress(); if (direction > 0) { // outside to Bento // deposit to arbitrary recipient is possible only from address(bentoBox) if (from == address(this)) IERC20(tokenIn).safeTransfer(address(bentoBox), amountIn); else if (from == msg.sender) IERC20(tokenIn).safeTransferFrom(msg.sender, address(bentoBox), amountIn); else { // tokens already are at address(bentoBox) amountIn = IERC20(tokenIn).balanceOf(address(bentoBox)) + bentoBox.strategyData(tokenIn).balance - bentoBox.totals(tokenIn).elastic; } bentoBox.deposit(tokenIn, address(bentoBox), to, amountIn, 0); } else { // Bento to outside if (from != INTERNAL_INPUT_SOURCE) { bentoBox.transfer(tokenIn, from, address(this), amountIn); } else amountIn = bentoBox.balanceOf(tokenIn, address(this)); bentoBox.withdraw(tokenIn, address(this), to, 0, amountIn); } } /// @notice UniswapV2 pool swap /// @param stream [pool, direction, recipient, fee] /// @param from Where to take liquidity for swap /// @param tokenIn Input token /// @param amountIn Amount of tokenIn to take for swap function swapUniV2(uint256 stream, address from, address tokenIn, uint256 amountIn) private { address pool = stream.readAddress(); uint8 direction = stream.readUint8(); address to = stream.readAddress(); uint24 fee = stream.readUint24(); // pool fee in 1/1_000_000 if (from == address(this)) IERC20(tokenIn).safeTransfer(pool, amountIn); else if (from == msg.sender) IERC20(tokenIn).safeTransferFrom(msg.sender, pool, amountIn); (uint256 r0, uint256 r1, ) = IUniswapV2Pair(pool).getReserves(); require(r0 > 0 && r1 > 0, 'Wrong pool reserves'); (uint256 reserveIn, uint256 reserveOut) = direction == 1 ? (r0, r1) : (r1, r0); amountIn = IERC20(tokenIn).balanceOf(pool) - reserveIn; // tokens already were transferred uint256 amountInWithFee = amountIn * (1_000_000 - fee); uint256 amountOut = (amountInWithFee * reserveOut) / (reserveIn * 1_000_000 + amountInWithFee); (uint256 amount0Out, uint256 amount1Out) = direction == 1 ? (uint256(0), amountOut) : (amountOut, uint256(0)); IUniswapV2Pair(pool).swap(amount0Out, amount1Out, to, new bytes(0)); } /// @notice Trident pool swap /// @param stream [pool, swapData] /// @param from Where to take liquidity for swap /// @param tokenIn Input token /// @param amountIn Amount of tokenIn to take for swap function swapTrident(uint256 stream, address from, address tokenIn, uint256 amountIn) private { address pool = stream.readAddress(); bytes memory swapData = stream.readBytes(); if (from != INTERNAL_INPUT_SOURCE) { bentoBox.transfer(tokenIn, from, pool, amountIn); } IPool(pool).swap(swapData); } /// @notice UniswapV3 pool swap /// @param stream [pool, direction, recipient] /// @param from Where to take liquidity for swap /// @param tokenIn Input token /// @param amountIn Amount of tokenIn to take for swap function swapUniV3(uint256 stream, address from, address tokenIn, uint256 amountIn) private { address pool = stream.readAddress(); bool zeroForOne = stream.readUint8() > 0; address recipient = stream.readAddress(); if (from == msg.sender) IERC20(tokenIn).safeTransferFrom(msg.sender, address(this), uint256(amountIn)); lastCalledPool = pool; IUniswapV3Pool(pool).swap( recipient, zeroForOne, int256(amountIn), zeroForOne ? MIN_SQRT_RATIO + 1 : MAX_SQRT_RATIO - 1, abi.encode(tokenIn) ); require(lastCalledPool == IMPOSSIBLE_POOL_ADDRESS, 'RouteProcessor.swapUniV3: unexpected'); // Just to be sure } /// @notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap. /// @dev In the implementation you must pay the pool tokens owed for the swap. /// The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped. /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by /// the end of the swap. If positive, the callback must send that amount of token0 to the pool. /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by /// the end of the swap. If positive, the callback must send that amount of token1 to the pool. /// @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call function uniswapV3SwapCallback( int256 amount0Delta, int256 amount1Delta, bytes calldata data ) public { require(msg.sender == lastCalledPool, 'RouteProcessor.uniswapV3SwapCallback: call from unknown source'); int256 amount = amount0Delta > 0 ? amount0Delta : amount1Delta; require(amount > 0, 'RouteProcessor.uniswapV3SwapCallback: not positive amount'); lastCalledPool = IMPOSSIBLE_POOL_ADDRESS; (address tokenIn) = abi.decode(data, (address)); IERC20(tokenIn).safeTransfer(msg.sender, uint256(amount)); } /// @notice Called to `msg.sender` after executing a swap via IAlgebraPool#swap. /// @dev In the implementation you must pay the pool tokens owed for the swap. /// The caller of this method _must_ be checked to be a AlgebraPool deployed by the canonical AlgebraFactory. /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped. /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by /// the end of the swap. If positive, the callback must send that amount of token0 to the pool. /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by /// the end of the swap. If positive, the callback must send that amount of token1 to the pool. /// @param data Any data passed through by the caller via the IAlgebraPoolActions#swap call function algebraSwapCallback( int256 amount0Delta, int256 amount1Delta, bytes calldata data ) external { uniswapV3SwapCallback(amount0Delta, amount1Delta, data); } /// @notice Called to `msg.sender` after executing a swap via PancakeV3Pool#swap. /// @dev In the implementation you must pay the pool tokens owed for the swap. /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by /// the end of the swap. If positive, the callback must send that amount of token0 to the pool. /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by /// the end of the swap. If positive, the callback must send that amount of token1 to the pool. /// @param data Any data passed through by the caller via the PancakeV3Pool#swap call function pancakeV3SwapCallback( int256 amount0Delta, int256 amount1Delta, bytes calldata data ) external { uniswapV3SwapCallback(amount0Delta, amount1Delta, data); } /// @notice Curve pool swap. Legacy pools that don't return amountOut and have native coins are not supported /// @param stream [pool, poolType, fromIndex, toIndex, recipient, output token] /// @param from Where to take liquidity for swap /// @param tokenIn Input token /// @param amountIn Amount of tokenIn to take for swap function swapCurve(uint256 stream, address from, address tokenIn, uint256 amountIn) private { address pool = stream.readAddress(); uint8 poolType = stream.readUint8(); int128 fromIndex = int8(stream.readUint8()); int128 toIndex = int8(stream.readUint8()); address to = stream.readAddress(); address tokenOut = stream.readAddress(); uint256 amountOut; if (tokenIn == Utils.NATIVE_ADDRESS) { amountOut = ICurve(pool).exchange{value: amountIn}(fromIndex, toIndex, amountIn, 0); } else { if (from == msg.sender) IERC20(tokenIn).safeTransferFrom(msg.sender, address(this), amountIn); IERC20(tokenIn).approveSafe(pool, amountIn); if (poolType == 0) amountOut = ICurve(pool).exchange(fromIndex, toIndex, amountIn, 0); else { uint256 balanceBefore = tokenOut.anyBalanceOf(address(this)); ICurveLegacy(pool).exchange(fromIndex, toIndex, amountIn, 0); uint256 balanceAfter = tokenOut.anyBalanceOf(address(this)); amountOut = balanceAfter - balanceBefore; } } if (to != address(this)) tokenOut.transferAny(to, amountOut); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. * * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't * need to send a transaction, and thus is not required to hold Ether at all. */ interface IERC20Permit { /** * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens, * given ``owner``'s signed approval. * * IMPORTANT: The same issues {IERC20-approve} has related to transaction * ordering also apply here. * * Emits an {Approval} event. * * Requirements: * * - `spender` cannot be the zero address. * - `deadline` must be a timestamp in the future. * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` * over the EIP712-formatted function arguments. * - the signature must use ``owner``'s current nonce (see {nonces}). * * For more information on the signature format, see the * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP * section]. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /** * @dev Returns the current nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases ``owner``'s nonce by one. This * prevents a signature from being used multiple times. */ function nonces(address owner) external view returns (uint256); /** * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.0; import "../IERC20.sol"; import "../extensions/draft-IERC20Permit.sol"; import "../../../utils/Address.sol"; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } function safePermit( IERC20Permit token, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) internal { uint256 nonceBefore = token.nonces(owner); token.permit(owner, spender, value, deadline, v, r, s); uint256 nonceAfter = token.nonces(owner); require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed"); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.10; /** @notice Simple read stream */ library InputStream { /** @notice Creates stream from data * @param data data */ function createStream(bytes memory data) internal pure returns (uint256 stream) { assembly { stream := mload(0x40) mstore(0x40, add(stream, 64)) mstore(stream, data) let length := mload(data) mstore(add(stream, 32), add(data, length)) } } /** @notice Checks if stream is not empty * @param stream stream */ function isNotEmpty(uint256 stream) internal pure returns (bool) { uint256 pos; uint256 finish; assembly { pos := mload(stream) finish := mload(add(stream, 32)) } return pos < finish; } /** @notice Reads uint8 from the stream * @param stream stream */ function readUint8(uint256 stream) internal pure returns (uint8 res) { assembly { let pos := mload(stream) pos := add(pos, 1) res := mload(pos) mstore(stream, pos) } } /** @notice Reads uint16 from the stream * @param stream stream */ function readUint16(uint256 stream) internal pure returns (uint16 res) { assembly { let pos := mload(stream) pos := add(pos, 2) res := mload(pos) mstore(stream, pos) } } /** @notice Reads uint24 from the stream * @param stream stream */ function readUint24(uint256 stream) internal pure returns (uint24 res) { assembly { let pos := mload(stream) pos := add(pos, 3) res := mload(pos) mstore(stream, pos) } } /** @notice Reads uint32 from the stream * @param stream stream */ function readUint32(uint256 stream) internal pure returns (uint32 res) { assembly { let pos := mload(stream) pos := add(pos, 4) res := mload(pos) mstore(stream, pos) } } /** @notice Reads uint256 from the stream * @param stream stream */ function readUint(uint256 stream) internal pure returns (uint256 res) { assembly { let pos := mload(stream) pos := add(pos, 32) res := mload(pos) mstore(stream, pos) } } /** @notice Reads bytes32 from the stream * @param stream stream */ function readBytes32(uint256 stream) internal pure returns (bytes32 res) { assembly { let pos := mload(stream) pos := add(pos, 32) res := mload(pos) mstore(stream, pos) } } /** @notice Reads address from the stream * @param stream stream */ function readAddress(uint256 stream) internal pure returns (address res) { assembly { let pos := mload(stream) pos := add(pos, 20) res := mload(pos) mstore(stream, pos) } } /** @notice Reads bytes from the stream * @param stream stream */ function readBytes(uint256 stream) internal pure returns (bytes memory res) { assembly { let pos := mload(stream) res := add(pos, 32) let length := mload(res) mstore(stream, add(res, length)) } } }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.10; import '@openzeppelin/contracts/token/ERC20/IERC20.sol'; import '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol'; library Utils { using SafeERC20 for IERC20; address constant NATIVE_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; /** * @dev returns user's balance of token (or native) */ function anyBalanceOf(address token, address user) internal view returns (uint256) { if (token == NATIVE_ADDRESS) return address(user).balance; else return IERC20(token).balanceOf(user); } /** * @dev transfers native with correct revert bubble up */ function transferNative(address to, uint256 amount) internal { (bool success, bytes memory returnBytes) = to.call{value: amount}(''); if (!success) { assembly { revert(add(32, returnBytes), mload(returnBytes)) } } } /** * @dev transfers ERC20 or native */ function transferAny(address token, address to, uint256 amount) internal { if (token == NATIVE_ADDRESS) transferNative(to, amount); else IERC20(token).safeTransfer(to, amount); } /** * @dev transfers from ERC20 or transfers native */ function transferAnyFromSender(address token, address to, uint256 amount) internal { if (token == NATIVE_ADDRESS) transferNative(to, amount); // native liquidity is already on this contract else IERC20(token).safeTransferFrom(msg.sender, to, amount); } /** * @dev ERC20 approve that correct works with token.approve which returns bool or nothing (USDT for example) * @param token The token targeted by the call. * @param spender token spender * @param amount token amount */ function approveStable(IERC20 token, address spender, uint256 amount) internal returns (bool) { (bool success, bytes memory data) = address(token).call( abi.encodeWithSelector(token.approve.selector, spender, amount) ); return success && (data.length == 0 || abi.decode(data, (bool))); } /** * @dev ERC20 approve that correct works with token.approve which reverts if amount and * current allowance are not zero simultaniously (USDT for example). * In second case it tries to set allowance to 0, and then back to amount. * @param token The token targeted by the call. * @param spender token spender * @param amount token amount */ function approveSafe(IERC20 token, address spender, uint256 amount) internal returns (bool) { return approveStable(token, spender, amount) || (approveStable(token, spender, 0) && approveStable(token, spender, amount)); } }
// SPDX-License-Identifier: UNLICENSED pragma solidity >=0.8.0; struct Rebase { uint128 elastic; uint128 base; } struct StrategyData { uint64 strategyStartDate; uint64 targetPercentage; uint128 balance; // the balance of the strategy that BentoBox thinks is in there } /// @notice A rebasing library library RebaseLibrary { /// @notice Calculates the base value in relationship to `elastic` and `total`. function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) { if (total.elastic == 0) { base = elastic; } else { base = (elastic * total.base) / total.elastic; } } /// @notice Calculates the elastic value in relationship to `base` and `total`. function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) { if (total.base == 0) { elastic = base; } else { elastic = (base * total.elastic) / total.base; } } } /// @notice Minimal BentoBox vault interface. /// @dev `token` is aliased as `address` from `IERC20` for simplicity. interface IBentoBoxMinimal { /// @notice Balance per ERC-20 token per account in shares. function balanceOf(address, address) external view returns (uint256); /// @dev Helper function to represent an `amount` of `token` in shares. /// @param token The ERC-20 token. /// @param amount The `token` amount. /// @param roundUp If the result `share` should be rounded up. /// @return share The token amount represented in shares. function toShare( address token, uint256 amount, bool roundUp ) external view returns (uint256 share); /// @dev Helper function to represent shares back into the `token` amount. /// @param token The ERC-20 token. /// @param share The amount of shares. /// @param roundUp If the result should be rounded up. /// @return amount The share amount back into native representation. function toAmount( address token, uint256 share, bool roundUp ) external view returns (uint256 amount); /// @notice Registers this contract so that users can approve it for BentoBox. function registerProtocol() external; /// @notice Deposit an amount of `token` represented in either `amount` or `share`. /// @param token The ERC-20 token to deposit. /// @param from which account to pull the tokens. /// @param to which account to push the tokens. /// @param amount Token amount in native representation to deposit. /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`. /// @return amountOut The amount deposited. /// @return shareOut The deposited amount represented in shares. function deposit( address token, address from, address to, uint256 amount, uint256 share ) external payable returns (uint256 amountOut, uint256 shareOut); /// @notice Withdraws an amount of `token` from a user account. /// @param token_ The ERC-20 token to withdraw. /// @param from which user to pull the tokens. /// @param to which user to push the tokens. /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied. /// @param share Like above, but `share` takes precedence over `amount`. function withdraw( address token_, address from, address to, uint256 amount, uint256 share ) external returns (uint256 amountOut, uint256 shareOut); /// @notice Transfer shares from a user account to another one. /// @param token The ERC-20 token to transfer. /// @param from which user to pull the tokens. /// @param to which user to push the tokens. /// @param share The amount of `token` in shares. function transfer( address token, address from, address to, uint256 share ) external; /// @dev Reads the Rebase `totals`from storage for a given token function totals(address token) external view returns (Rebase memory total); function strategyData(address token) external view returns (StrategyData memory total); /// @dev Approves users' BentoBox assets to a "master" contract. function setMasterContractApproval( address user, address masterContract, bool approved, uint8 v, bytes32 r, bytes32 s ) external; function harvest( address token, bool balance, uint256 maxChangeAmount ) external; }
// SPDX-License-Identifier: UNLICENSED pragma solidity >=0.8.0; interface ICurve { function exchange(int128 i, int128 j, uint256 dx, uint256 min_dy) payable external returns (uint256); } interface ICurveLegacy { function exchange(int128 i, int128 j, uint256 dx, uint256 min_dy) payable external; }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity >=0.5.0; pragma experimental ABIEncoderV2; /// @notice Trident pool interface. interface IPool { /// @notice Executes a swap from one token to another. /// @dev The input tokens must've already been sent to the pool. /// @param data ABI-encoded params that the pool requires. /// @return finalAmountOut The amount of output tokens that were sent to the user. function swap(bytes calldata data) external returns (uint256 finalAmountOut); /// @notice Executes a swap from one token to another with a callback. /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback. /// @param data ABI-encoded params that the pool requires. /// @return finalAmountOut The amount of output tokens that were sent to the user. function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut); /// @notice Mints liquidity tokens. /// @param data ABI-encoded params that the pool requires. /// @return liquidity The amount of liquidity tokens that were minted for the user. function mint(bytes calldata data) external returns (uint256 liquidity); /// @notice Burns liquidity tokens. /// @dev The input LP tokens must've already been sent to the pool. /// @param data ABI-encoded params that the pool requires. /// @return withdrawnAmounts The amount of various output tokens that were sent to the user. function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts); /// @notice Burns liquidity tokens for a single output token. /// @dev The input LP tokens must've already been sent to the pool. /// @param data ABI-encoded params that the pool requires. /// @return amountOut The amount of output tokens that were sent to the user. function burnSingle(bytes calldata data) external returns (uint256 amountOut); /// @return A unique identifier for the pool type. function poolIdentifier() external pure returns (bytes32); /// @return An array of tokens supported by the pool. function getAssets() external view returns (address[] memory); /// @notice Simulates a trade and returns the expected output. /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library. /// @param data ABI-encoded params that the pool requires. /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed. function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut); /// @notice Simulates a trade and returns the expected output. /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library. /// @param data ABI-encoded params that the pool requires. /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed. function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn); /// @dev This event must be emitted on all swaps. event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut); /// @dev This struct frames output tokens for burns. struct TokenAmount { address token; uint256 amount; } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.10; interface ITridentCLPool { function token0() external returns (address); function token1() external returns (address); function swap( address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bool unwrapBento, bytes calldata data ) external returns (int256 amount0, int256 amount1); }
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.10; interface IUniswapV3Pool { function token0() external returns (address); function token1() external returns (address); function swap( address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes calldata data ) external returns (int256 amount0, int256 amount1); }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.10; interface IWETH { function deposit() external payable; function transfer(address to, uint256 value) external returns (bool); function withdraw(uint256) external; }
{ "detectMissingLibraries": false, "enableEraVMExtensions": false, "forceEVMLA": false, "libraries": {}, "optimizer": { "enabled": true, "mode": "3" }, "outputSelection": { "*": { "*": [ "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_bentoBox","type":"address"},{"internalType":"address[]","name":"priviledgedUserList","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"MinimalOutputBalanceViolation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"tokenIn","type":"address"},{"indexed":true,"internalType":"address","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"Route","type":"event"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"algebraSwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bentoBox","outputs":[{"internalType":"contract IBentoBoxMinimal","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"pancakeV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"priviledgedUsers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"route","type":"bytes"}],"name":"processRoute","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address payable","name":"transferValueTo","type":"address"},{"internalType":"uint256","name":"amountValueTransfer","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"route","type":"bytes"}],"name":"processRouteWithTransferValueInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address payable","name":"transferValueTo","type":"address"},{"internalType":"uint256","name":"amountValueTransfer","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"route","type":"bytes"}],"name":"processRouteWithTransferValueOutput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resume","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"priviledge","type":"bool"}],"name":"setPriviledge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"transferValueTo","type":"address"},{"internalType":"uint256","name":"amountValueTransfer","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"route","type":"bytes"}],"name":"transferValueAndprocessRoute","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
9c4d535b000000000000000000000000000000000000000000000000000000000000000001000c6f53f81c37aec85c36e9fff45627ebf8337a53691677283ac93f8220b900000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x00030000000000020008000000000002000000000701034f0000000001070019000000600110027000000be106100197000200000067035500010000000703550000000100200190000000290000c13d0000008003000039000000400030043f000000040060008c000000690000413d000000000167034f000000000207043b000000e00220027000000bee0020009c0000006d0000a13d00000bef0020009c000000de0000213d00000bf50020009c000001640000213d00000bf80020009c000001f00000613d00000bf90020009c000003890000c13d0000000001000416000000000001004b000003890000c13d000000000100041a00000be3021001970000000001000411000000000021004b000003450000c13d00000080020000390000000201000039000000000301041a00000c140330019700000c15033001c7000002a40000013d000000a001000039000000400010043f0000000002000416000000000002004b000003890000c13d0000001f0260003900000be202200197000000a002200039000000400020043f0000001f0260018f00000005036002720000003c0000613d0000000504300210000000a004400039000000000507034f000000005805043c0000000001810436000000000041004b000000380000c13d000000000002004b0000004b0000613d0000000501300210000000000317034f0000000302200210000000a001100039000000000401043300000000042401cf000000000424022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000242019f0000000000210435000000400060008c000003890000413d000000a00700043d00000be30070009c000003890000213d000000c00100043d00000be40010009c000003890000213d0000001f02100039000000000062004b000000000300001900000be50300804100000be502200197000000000002004b000000000400001900000be50400404100000be50020009c000000000403c019000000000004004b000003890000c13d000000a002100039000000000202043300000be40020009c000002070000a13d00000c1b0100004100000000001004350000004101000039000000040010043f00000c1c0100004100002f2100010430000000000006004b000003890000c13d000000000100001900002f200001042e00000bfa0020009c000001050000a13d00000bfb0020009c000001cf0000213d00000bfe0020009c000001e50000613d00000bff0020009c000003890000c13d000001040060008c000003890000413d0000000402700370000000000402043b00000be30040009c000003890000213d0000002402700370000000000302043b0000004402700370000000000202043b000600000002001d00000be30020009c000003890000213d0000006402700370000000000202043b000500000002001d0000008402700370000000000202043b000400000002001d00000be30020009c000003890000213d000000a402700370000000000202043b000300000002001d000000c402700370000000000202043b000200000002001d00000be30020009c000003890000213d000000e402700370000000000502043b00000be40050009c000003890000213d0000002302500039000000000062004b000003890000813d0000000408500039000000000287034f000000000202043b00000be40020009c000000630000213d0000001f0920003900000c22099001970000003f0990003900000c220990019700000c090090009c000000630000213d0000008009900039000000400090043f000000800020043f00000000052500190000002405500039000000000065004b000003890000213d0000002005800039000000000557034f0000001f0620018f00000005072002720000000507700210000000b80000613d000000a008000039000000a009700039000000000a05034f00000000ab0a043c0000000008b80436000000000098004b000000b40000c13d000000000006004b000000c60000613d000000000575034f0000000306600210000000a007700039000000000807043300000000086801cf000000000868022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000585019f0000000000570435000000a00220003900000000000204350000000202000039000000000202041a00000c0a0520019700000c0b0050009c0000038b0000c13d00000c0c0520019700000c0d0050009c0000038f0000c13d00000c0e0220019700000c0f022001c70000000205000039000000000025041b000000400200043d000000060500002900000c190050009c000003a00000c13d0000000005000414000000040040008c000003e50000c13d00000001020000390000000005000031000004470000013d00000bf00020009c000001e10000213d00000bf30020009c0000026f0000613d00000bf40020009c000003890000c13d000000240060008c000003890000413d0000000001000416000000000001004b000003890000c13d0000000401700370000000000101043b00000be30010009c000003890000213d00000000001004350000000101000039000000200010043f000000000100041400000be10010009c00000be101008041000000c00110021000000bec011001c700008010020000392f1f2f1a0000040f0000000100200190000003890000613d000000000101043b000000000101041a000000ff001001900000000001000019000000010100c039000000400200043d000000000012043500000be10020009c00000be102008041000000400120021000000c08011001c700002f200001042e00000c000020009c000002970000613d00000c010020009c000001e50000613d00000c020020009c000003890000c13d000000c40060008c000003890000413d0000000401700370000000000101043b00000be30010009c000003890000213d0000002402700370000000000202043b0000004403700370000000000303043b00000be30030009c000003890000213d0000006404700370000000000404043b0000008405700370000000000505043b00000be30050009c000003890000213d000000a408700370000000000908043b00000be40090009c000003890000213d0000002308900039000000000068004b000003890000813d000000040a9000390000000008a7034f000000000808043b00000be40080009c000000630000213d0000001f0b80003900000c220bb001970000003f0bb0003900000c220bb0019700000c0900b0009c000000630000213d000000800bb000390000004000b0043f000000800080043f00000000098900190000002409900039000000000069004b000003890000213d0000002006a00039000000000667034f0000001f0780018f0000000509800272000001430000613d000000a00a000039000000050b900210000000a00bb00039000000000c06034f00000000cd0c043c000000000ada04360000000000ba004b0000013f0000c13d000000000007004b000001520000613d0000000509900210000000000696034f0000000307700210000000a009900039000000000a090433000000000a7a01cf000000000a7a022f000000000606043b0000010007700089000000000676022f00000000067601cf0000000006a6019f0000000000690435000000a006800039000000000006043500000002060000390000000008060019000000000606041a00000c0a0760019700000c0b0070009c0000038b0000c13d00000c0c0760019700000c0d0070009c0000038f0000c13d00000c0e0660019700000c0f066001c7000000000068041b00000080060000392f1f05500000040f0000000203000039000004550000013d00000bf60020009c000002a90000613d000600000003001d00000bf70020009c000003890000c13d000001040060008c000003890000413d0000000402700370000000000402043b00000be30040009c000003890000213d0000002402700370000000000302043b0000004402700370000000000202043b000500000002001d00000be30020009c000003890000213d0000006402700370000000000202043b000400000002001d0000008402700370000000000202043b000300000002001d00000be30020009c000003890000213d000000a402700370000000000202043b000200000002001d000000c402700370000000000202043b000100000002001d00000be30020009c000003890000213d000000e402700370000000000502043b00000be40050009c000003890000213d0000002302500039000000000062004b000003890000813d0000000408500039000000000287034f000000000202043b00000be40020009c000000630000213d0000001f0920003900000c22099001970000003f0990003900000c220990019700000c090090009c000000630000213d0000008009900039000000400090043f000000800020043f00000000052500190000002405500039000000000065004b000003890000213d0000002005800039000000000557034f0000001f0620018f00000005072002720000000507700210000001ac0000613d000000a008000039000000a009700039000000000a05034f00000000ab0a043c0000000008b80436000000000098004b000001a80000c13d000000000006004b000001ba0000613d000000000575034f0000000306600210000000a007700039000000000807043300000000086801cf000000000868022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000585019f0000000000570435000000a00220003900000000000204350000000202000039000000000202041a00000c0a0520019700000c0b0050009c0000038b0000c13d00000c0c0520019700000c0d0050009c0000038f0000c13d00000c0e0220019700000c0f022001c70000000205000039000000000025041b000000400500043d0000000002000414000000040040008c000003b40000c13d00000001020000390000000004000031000004040000013d00000bfc0020009c000002b10000613d00000bfd0020009c000003890000c13d0000000001000416000000000001004b000003890000c13d0000000001000412000800000001001d000700000000001d000080050100003900000044030000390000000004000415000000080440008a000000050440021000000c18020000412f1f2efc0000040f000002ad0000013d00000bf10020009c000003200000613d00000bf20020009c000003890000c13d0000000001000416000000000001004b000003890000c13d00000000010600192f1f05330000040f2f1f2ea70000040f000000400100043d00000be10010009c00000be101008041000000400110021000002f200001042e0000000001000416000000000001004b000003890000c13d000000000100041a00000be3021001970000000005000411000000000052004b0000033c0000c13d00000be701100197000000000010041b000000000100041400000be10010009c00000be101008041000000c00110021000000c03011001c70000800d02000039000000030300003900000be90400004100000000060000192f1f2f150000040f0000000100200190000001eb0000c13d000003890000013d00000005032002100000003f0430003900000be604400197000000400500043d0000000004450019000500000005001d000000000054004b0000000005000019000000010500403900000be40040009c000000630000213d0000000100500190000000630000c13d000000a005600039000000400040043f00000005040000290000000004240436000400000004001d000000c0011000390000000003130019000000000053004b000003890000213d000000000002004b000002260000613d0000000402000029000000001401043400000be30040009c000003890000213d0000000002420436000000000031004b000002200000413d000000000100041a00000be7021001970000000006000411000000000262019f000000000020041b000000400200043d00000be10020009c00000be1020080410000004002200210000000000300041400000be10030009c00000be103008041000000c003300210000000000223019f00000be30510019700000be8012001c70000800d02000039000000030300003900000be904000041000600000007001d2f1f2f150000040f00000006010000290000000100200190000003890000613d00000be3011001970000000202000039000000000302041a000000800010043f00000bea0330019700000beb033001c7000000000032041b00000005020000290000000002020433000000000002004b0000000103000039000002680000613d0000000002000019000600000002001d00000005012002100000000401100029000000000101043300000be3011001970000000000100435000000200030043f000000000100041400000be10010009c00000be101008041000000c00110021000000bec011001c700008010020000392f1f2f1a0000040f0000000100200190000003890000613d000000000101043b000000000201041a00000c230220019700000001022001bf000000000021041b0000000602000029000000010220003900000005010000290000000001010433000000000012004b00000001030000390000024b0000413d000000800100043d0000014000000443000001600010044300000020010000390000010000100443000001200030044300000bed0100004100002f200001042e000000440060008c000003890000413d0000000001000416000000000001004b000003890000c13d0000000401700370000000000101043b00000be30010009c000003890000213d0000002402700370000000000302043b000000000003004b0000000002000019000000010200c039000600000003001d000000000023004b000003890000c13d000000000200041a00000be3022001970000000003000411000000000032004b0000033c0000c13d00000000001004350000000101000039000000200010043f000000000100041400000be10010009c00000be101008041000000c00110021000000bec011001c700008010020000392f1f2f1a0000040f0000000100200190000003890000613d000000000101043b000000000201041a00000c230220019700000006022001af000000000021041b000001eb0000013d0000000001000416000000000001004b000003890000c13d000000000100041a00000be3021001970000000001000411000000000021004b000003570000c13d00000080020000390000000201000039000000000301041a00000c140330019700000c0d033001c7000000000031041b00000be10020009c00000be102008041000000400120021000002f200001042e0000000001000416000000000001004b000003890000c13d000000000100041a00000be301100197000000800010043f00000c100100004100002f200001042e000001040060008c000003890000413d0000000401700370000000000101043b000600000001001d00000be30010009c000003890000213d0000002401700370000000000101043b000500000001001d0000004401700370000000000101043b00000be30010009c000003890000213d0000006402700370000000000202043b0000008403700370000000000303043b000400000003001d00000be30030009c000003890000213d000000a403700370000000000403043b000000c403700370000000000303043b000300000003001d00000be30030009c000003890000213d000000e403700370000000000503043b00000be40050009c000003890000213d0000002303500039000000000063004b000003890000813d0000000408500039000000000387034f000000000303043b00000be40030009c000000630000213d0000001f0930003900000c22099001970000003f0990003900000c220990019700000c090090009c000000630000213d0000008009900039000000400090043f000000800030043f00000000053500190000002405500039000000000065004b000003890000213d0000002005800039000000000557034f0000001f0630018f00000005073002720000000507700210000002f30000613d000000a008000039000000a009700039000000000a05034f00000000ab0a043c0000000008b80436000000000098004b000002ef0000c13d000000000006004b000003010000613d000000000575034f0000000306600210000000a007700039000000000807043300000000086801cf000000000868022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000585019f0000000000570435000000a00330003900000000000304350000000203000039000000000303041a00000c0a0530019700000c0b0050009c0000038b0000c13d00000c0c0530019700000c0d0050009c0000038f0000c13d00000c0e0330019700000c0f033001c70000000205000039000000000035041b000000000500041000000080060000390000000403000029000100000006001d2f1f05500000040f000000400200043d000200000001001d000000040100002900000c190010009c000003bf0000c13d00000000010004140000000603000029000000040030008c000003f00000c13d00000001020000390000000001000031000004900000013d000000240060008c000003890000413d0000000001000416000000000001004b000003890000c13d0000000401700370000000000601043b00000be30060009c000003890000213d000000000100041a00000be3021001970000000005000411000000000052004b0000033c0000c13d000000000006004b0000037b0000c13d00000c0401000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f00000c0501000041000000c40010043f00000c0601000041000000e40010043f00000c070100004100002f210001043000000c0401000041000000800010043f0000002001000039000000840010043f000000a40010043f00000c1601000041000000c40010043f00000c170100004100002f210001043000000000001004350000000101000039000000200010043f000000000100041400000be10010009c00000be101008041000000c00110021000000bec011001c700008010020000392f1f2f1a0000040f0000000100200190000003890000613d000000400200043d000000000101043b000000000101041a000000ff00100190000000240000c13d000003680000013d00000000001004350000000101000039000000200010043f000000000100041400000be10010009c00000be101008041000000c00110021000000bec011001c700008010020000392f1f2f1a0000040f0000000100200190000003890000613d000000400200043d000000000101043b000000000101041a000000ff00100190000002a00000c13d000000640120003900000c11030000410000000000310435000000440120003900000c1203000041000000000031043500000024012000390000003003000039000000000031043500000c0401000041000000000012043500000004012000390000002003000039000000000031043500000be10020009c00000be102008041000000400120021000000c13011001c700002f210001043000000be701100197000000000161019f000000000010041b000000000100041400000be10010009c00000be101008041000000c00110021000000c03011001c70000800d02000039000000030300003900000be9040000412f1f2f150000040f0000000100200190000001eb0000c13d000000000100001900002f2100010430000000400100043d000000440210003900000c1f03000041000003920000013d000000400100043d000000440210003900000c2103000041000000000032043500000024021000390000001803000039000000000032043500000c0402000041000000000021043500000004021000390000002003000039000000000032043500000be10010009c00000be101008041000000400110021000000c20011001c700002f2100010430000000200120003900000c1d0500004100000000005104350000006401200039000000000031043500000044012000390000000000410435000000000100041100000be301100197000000240320003900000000001304350000006401000039000000000012043500000c1e0020009c000000630000213d000000a001200039000000400010043f00000006010000292f1f2d7f0000040f0000044d0000013d00000be10050009c00000be105008041000000400150021000000be10020009c00000be102008041000000c002200210000000000112019f000000000003004b000003fb0000c13d0000000002040019000003fe0000013d000000200120003900000c1a0300004100000000003104350000004401200039000000050300002900000000003104350000002401200039000000060300002900000000003104350000004401000039000000000012043500000c090020009c000000630000213d0000008001200039000000400010043f00000004010000292f1f2d7f0000040f0000000502000029000000020120006b000004980000413d000000400200043d000000200320003900000c1a040000410000000000430435000000440320003900000000001304350000002401200039000000030300002900000000003104350000004401000039000000000012043500000c090020009c000000630000213d0000008001200039000000400010043f00000004010000292f1f2d7f0000040f0000051d0000013d00000be10020009c00000be102008041000000400120021000000be10050009c00000be105008041000000c002500210000000000112019f000000000003004b0000043e0000c13d0000000002040019000004410000013d00000be10020009c00000be102008041000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f000000050000006b000004860000c13d00000006020000290000048b0000013d00000be8011001c7000080090200003900000000050000192f1f2f150000040f00020000000103550000000003010019000000600330027000000be10030019d00000be104300197000000000004004b000004100000c13d000000600300003900000001002001900000043c0000613d000000800600003900000005010000290000000402000029000000030300002900000002040000290000000105000029000004530000013d00000be40040009c000000630000213d0000001f0340003900000c22033001970000003f0330003900000c2205300197000000400300043d0000000005530019000000000035004b0000000006000019000000010600403900000be40050009c000000630000213d0000000100600190000000630000c13d000000400050043f0000001f0540018f0000000006430436000600000006001d000000050440027200000005044002100000042d0000613d00000006080000290000000006480019000000000701034f000000007907043c0000000008980436000000000068004b000004290000c13d000000000005004b000004070000613d000000000141034f00000006044000290000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000004070000013d0000000601000029000004cd0000013d00000be8011001c7000080090200003900000000050000192f1f2f150000040f00020000000103550000000003010019000000600330027000000be10030019d00000be105300197000000000005004b0000045a0000c13d0000006003000039000000800400003900000001002001900000052a0000613d0000008006000039000000060100002900000005020000290000000403000029000000030400002900000002050000292f1f05500000040f0000000203000039000000000203041a00000c0e0220019700000c0b022001c7000000000023041b000000fe0000013d00000be40050009c000000630000213d0000001f0350003900000c22033001970000003f0330003900000c2204300197000000400300043d0000000004430019000000000034004b0000000006000019000000010600403900000be40040009c000000630000213d0000000100600190000000630000c13d000000400040043f0000001f0650018f00000000045304360000000505500272000004760000613d00000005075002100000000007740019000000000801034f0000000009040019000000008a08043c0000000009a90436000000000079004b000004720000c13d000000000006004b0000044b0000613d0000000505500210000000000151034f00000000055400190000000306600210000000000705043300000000076701cf000000000767022f000000000101043b0000010006600089000000000161022f00000000016101cf000000000171019f00000000001504350000044b0000013d00000be8011001c700008009020000390000000503000029000000060400002900000000050000192f1f2f150000040f0002000000010355000000600110027000000be10010019d00000be101100197000000000001004b0000049e0000c13d00000060030000390000000100200190000004cc0000613d0000000503000029000000020330006b000004d10000813d00000c1b0100004100000000001004350000001101000039000000040010043f00000c1c0100004100002f210001043000000be40010009c000000630000213d0000001f0310003900000c22033001970000003f0330003900000c2204300197000000400300043d0000000004430019000000000034004b0000000005000019000000010500403900000be40040009c000000630000213d0000000100500190000000630000c13d000000400040043f0000001f0410018f0000000005130436000100000005001d00000002050003670000000506100272000004bc0000613d000000050760021000000001090000290000000007790019000000000805034f000000008a08043c0000000009a90436000000000079004b000004b80000c13d000000000004004b000004930000613d0000000506600210000000000565034f00000001066000290000000304400210000000000706043300000000074701cf000000000747022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000474019f0000000000460435000004930000013d000000010100002900000be10010009c00000be10100804100000040011002100000052d0000013d000000400400043d00000000020004140000000305000029000000040050008c000004d80000c13d0000000102000039000004ed0000013d00000be10040009c00000be104008041000000400140021000000be10020009c00000be102008041000000c002200210000000000112019f0000000504000029000000020040006b000004e40000c13d0000000302000029000004e80000013d00000be8011001c70000800902000039000000030400002900000000050000192f1f2f150000040f0002000000010355000000600110027000000be10010019d00000be101100197000000000001004b000004f20000c13d000000600300003900000080040000390000051b0000013d0000001f0310003900000c22033001970000003f0330003900000c2204300197000000400300043d0000000004430019000000000034004b0000000005000019000000010500403900000be40040009c000000630000213d0000000100500190000000630000c13d000000400040043f0000001f0510018f00000000041304360000000206000367000000050110027200000005011002100000050d0000613d0000000007140019000000000806034f0000000009040019000000008a08043c0000000009a90436000000000079004b000005090000c13d000000000005004b0000051b0000613d000000000616034f00000000011400190000000305500210000000000701043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f000000000051043500000001002001900000052a0000613d0000000202000039000000000102041a00000c0e0110019700000c0b011001c7000000000012041b000000400100043d0000000202000029000000000021043500000be10010009c00000be101008041000000400110021000000c08011001c700002f200001042e00000be10040009c00000be1040080410000004001400210000000000203043300000be10020009c00000be1020080410000006002200210000000000112019f00002f210001043000000c240010009c0000054e0000213d000000630010008c0000054e0000a13d00000001030003670000002402300370000000000202043b0000000404300370000000000504043b0000004404300370000000000604043b00000be40060009c0000054e0000213d0000002304600039000000000014004b0000054e0000813d0000000404600039000000000343034f000000000403043b00000be40040009c0000054e0000213d00000024036000390000000006430019000000000016004b0000054e0000213d0000000001050019000000000001042d000000000100001900002f2100010430001e000000000002000700000005001d000600000004001d000500000003001d000800000002001d000000000200041100000be30410019700000c190040009c000a00000004001d000200000001001d001c00000006001d0000056b0000c13d00000c260100004100000000001004390000000400200443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c70000800a020000392f1f2f1a0000040f000000010020019000001d820000613d000000000401043b0000001c06000029000005b90000013d000000400900043d000000000302001900000c2502000041000000000529043600000be303300197000000040290003900000000003204350000000003000414000000040040008c000005770000c13d0000000003000031000005a90000013d00000be10090009c000000000204001900000be1010000410000000001094019000000400410021000000be10030009c00000be103008041000000c001300210000000000141019f00000c1c011001c7001b00000009001d001a00000005001d2f1f2f1a0000040f0000001a0a0000290000001b090000290000000003010019000000600330027000000be103300197000000200030008c000000200500003900000000050340190000001f0450018f0000000505500272000005950000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b000005910000c13d000000000004004b000005a40000613d0000000505500210000000000651034f00000000055900190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000000000003001f0002000000010355000000010020019000001fb90000613d0000001c060000290000001f0130003900000c22021001970000000001920019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001d7a0000213d0000001f0030008c00001d7a0000a13d0000000004090433000000050100002900000be30210019700000c190020009c000300000002001d000100000004001d000005d00000c13d00000c2601000041000000000010043900000007010000290000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c70000800a020000392f1f2f1a0000040f000000010020019000001d820000613d000000400500043d000000000101043b0000001c060000290000061e0000013d000000400900043d00000c25010000410000000005190436000000070100002900000be301100197000000040390003900000000001304350000000001000414000000040020008c000005dc0000c13d00000000030000310000060d0000013d00000be10090009c00000be1030000410000000003094019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c1c011001c7001b00000009001d001a00000005001d2f1f2f1a0000040f0000001a0a0000290000001b090000290000000003010019000000600330027000000be103300197000000200030008c000000200500003900000000050340190000001f0450018f0000000505500272000005f90000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b000005f50000c13d000000000004004b000006080000613d0000000505500210000000000651034f00000000055900190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000000000003001f0002000000010355000000010020019000001fc80000613d0000001c060000290000001f0130003900000c22011001970000000002910019000000000012004b00000000010000190000000101004039000000000502001900000be40020009c00001d7c0000213d000000010010019000001d7c0000c13d000000400050043f00000c240030009c00001d7a0000213d000000200030008c00001d7a0000413d0000000001090433000400000001001d0000004001500039000000400010043f000000000265043600000000010604330000000001610019000c00000002001d0000000000120435000000000061004b000000080300002900001c870000a13d000000000100041100090be30010019b001700000000001d0000000803000029001900000005001d000006370000013d0000001701000029001700010010003d000000190500002900000000060504330000000c010000290000000001010433000000000016004b00001c870000813d000000010160003900000000020104330000000000150435000000ff0120018f000000010110008a000000050010008c001400000003a01d00000bc90001a13e00001e6a0000013d000000150160003900000000030104330000000000150435000000400900043d00000c25010000410000000004190436000000040190003900000000020004100000000000210435000000000100041400000be302300197000000040020008c000010fd0000c13d000000000a0000310000112e0000013d0000001501600039000000000301043300000000001504350000000001050019000000000200041100000008040000292f1f21150000040f000012b10000013d000000150160003900000000030104330000000000150435000000000100041000000be301100197000000400400043d0000002402400039000000000012043500000c30010000410000000001140436001a00000001001d001b00000003001d00000be301300197001c00000004001d0000000402400039000000000012043500000c18010000410000000000100439000000000100041200000004001004430000002400000443000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000001d820000613d000000000201043b000000000100041400000be302200197000000040020008c000012010000c13d00000000030000310000001c090000290000122e0000013d00000c2601000041000000000010043900000000010004100000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c70000800a020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000b00000001001d00000019050000290000000001050433000000010110003900000000020104330000000000150435001800ff00200194000010f90000613d000000000100041000160be30010019b0000000b040000290000000006000019000006a10000013d000000010020019000001dd60000613d0000001c010000290000001b041000690000001a060000290000000106600039000000180060006c0000001905000029000010f90000813d0000000007050433000000020270003900000000010204330000000000250435000000030270003900000000030204330000000000250435000000ff0230018f000000050020008c0000ffff0110a18f000000000941a0a90000ffff0190a11a001c00000001a01d001b00000004a01d001a00000006a01d00000bd50002a13e000012c20000013d00000017017000390000000002010433000000000015043500000018017000390000000003010433001300000003001d00000000001504350000002c017000390000000003010433001000000003001d00000000001504350000002f017000390000000003010433001200000003001d000000000015043500000be309200197000000000100041000000c0b0010009c001500000009001d000009eb0000813d000000400100043d00000044021000390000001c030000290000000000320435000000200210003900000c1a030000410000000000320435000000240310003900000000009304350000004403000039000000000031043500000c090010009c00001d7c0000213d0000008005100039000000400050043f00000c3c0050009c00001d7c0000213d000000c003100039000000400030043f00000020030000390000000000350435000000a00310003900000c5504000041000000000043043500000be10020009c00000be1020080410000004002200210000000000101043300000be10010009c00000be1010080410000006001100210000000000121019f000000000200041400000be10020009c00000be102008041000000c002200210000000000121019f00000c1902000041001100000005001d2f1f2f150000040f000000150900002900020000000103550000000003010019000000600330027000000be10030019d00000be103300198000000800a000039000000600b0000390000071e0000613d0000001f0430003900000be2044001970000003f0440003900000c5604400197000000400b00043d00000000044b00190000000000b4004b0000000005000019000000010500403900000be40040009c00001d7c0000213d000000010050019000001d7c0000c13d000000400040043f000000000a3b043600000005043002720000000504400210000007100000613d00000000054a0019000000000601034f00000000070a0019000000006806043c0000000007870436000000000057004b0000070c0000c13d0000001f033001900000071e0000613d000000000141034f00000000044a00190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000000010b0433000000010020019000001ddb0000613d000000000001004b0000073b0000c13d00110000000b001d000f0000000a001d00000c2b01000041000000000010043900000c19010000410000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000000001004b000000110100002900001dc50000613d0000000001010433000000000001004b00000015090000290000000f0a00002900000a720000613d00000c240010009c00001d7a0000213d000000200010008c00001d7a0000413d00000a6a0000013d0000001701700039000000000b01043300000000001504350000001801700039000000000a01043300000000001504350000002c01700039000000000901043300000000001504350000000001000411000000160010006b000007d70000c13d000000400100043d00000064021000390000001c030000290000000000320435000000200210003900000c1d030000410000000000320435000000440310003900000000040004110000000000430435000000240310003900000000004304350000006403000039000000000031043500000c1e0010009c00001d7c0000213d000000a005100039000000400050043f00000c540010009c00001d7c0000213d000000e003100039000000400030043f00000020030000390000000000350435000000c00310003900000c5504000041000000000043043500000be10020009c00000be1020080410000004002200210000000000101043300000be10010009c00000be1010080410000006001100210000000000121019f000000000200041400000be10020009c00000be102008041000000c002200210000000000121019f00000c1902000041001500000009001d00130000000a001d00120000000b001d001100000005001d2f1f2f150000040f000000120b000029000000130a000029000000150900002900020000000103550000000003010019000000600330027000000be10030019d00000be103300198000000800c000039000000600d000039000007ac0000613d0000001f0430003900000be2044001970000003f0440003900000c5604400197000000400d00043d00000000044d00190000000000d4004b0000000005000019000000010500403900000be40040009c00001d7c0000213d000000010050019000001d7c0000c13d000000400040043f000000000c3d0436000000050430027200000005044002100000079e0000613d00000000054c0019000000000601034f00000000070c0019000000006806043c0000000007870436000000000057004b0000079a0000c13d0000001f03300190000007ac0000613d000000000141034f00000000044c00190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000000010d0433000000010020019000001de10000613d000000000001004b000007cb0000c13d00110000000d001d00100000000c001d00000c2b01000041000000000010043900000c19010000410000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000000001004b000000110100002900001dc50000613d0000000001010433000000000001004b0000001509000029000000130a000029000000120b000029000000100c000029000007d70000613d00000c240010009c00001d7a0000213d000000200010008c00001d7a0000413d00000000010c0433000000000001004b0000000002000019000000010200c039000000000021004b00001d7a0000c13d000000000001004b00001d830000613d00000be302b001970000000203000039000000000103041a00000be701100197000000000121019f000000000013041b000000400400043d0000002001000039000000000114043600000c1903000041000000000031043500000c3c0040009c00001d7c0000213d000000ff00a00190000000400a4000390000004000a0043f00000c430300004100000000003a0435000000c403400039000000a005000039000000000053043500000c450300004100000c440300c041000000a405400039000000000035043500000084034000390000001c0500002900000000005304350000000003000019000000010300c0390000006405400039000000000035043500000be30390019700000044054000390000000000350435000000e40540003900000000030404330000000000350435000000000003004b0000080b0000613d0000010404400039000000000500001900000000064500190000000007150019000000000707043300000000007604350000002005500039000000000035004b000008010000413d0000080b0000a13d000000000143001900000000000104350000000001000414000000040020008c00000aae0000c13d000000000300003100000ae20000013d0000001701700039000000000801043300000000001504350000003704700039000000000104043300000000014100190000000000150435000000160000006b00000c150000613d001200000004001d001300000008001d001500000007001d00000c18010000410000000000100439000000000100041200000004001004430000002400000443000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b00000c2b02000041000000000020043900000be301100197001100000001001d0000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000000001004b00000015070000290000001308000029000000120400002900001d7a0000613d000000400500043d00000064015000390000001c02000029000000000021043500000be3018001970000004402500039000000000012043500000024015000390000001602000029000000000021043500000c53010000410000000000150435000000040150003900000c1902000041000000000021043500000000010004140000001102000029000000040020008c00000ce10000c13d000000000300003100000cf70000013d000000040170003900000000020104330000000000150435000000180170003900000000030104330000000000150435000000ff00200190001500000003001d00000c170000613d00000c18010000410000000000100439000000000100041200000004001004430000002400000443000000000100041000000c0b0010009c00000c4d0000813d000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000001d820000613d000000000301043b000000400100043d00000044021000390000001c040000290000000000420435000000200210003900000c1a04000041000000000042043500000be303300197000000240410003900000000003404350000004403000039000000000031043500000c090010009c00001d7c0000213d0000008003100039000000400030043f001300000003001d00000c3c0030009c00001d7c0000213d000000c003100039000000400030043f000000200300003900000013040000290000000000340435000000a00310003900000c5504000041000000000043043500000be10020009c00000be1020080410000004002200210000000000101043300000be10010009c00000be1010080410000006001100210000000000121019f000000000200041400000be10020009c00000be102008041000000c002200210000000000121019f00000c19020000412f1f2f150000040f00020000000103550000000003010019000000600330027000000be10030019d00000be1033001980000008009000039000000600a000039000008c80000613d0000001f0430003900000be2044001970000003f0440003900000c5604400197000000400a00043d00000000044a00190000000000a4004b0000000005000019000000010500403900000be40040009c00001d7c0000213d000000010050019000001d7c0000c13d000000400040043f00000000093a043600000005043002720000000504400210000008ba0000613d0000000005490019000000000601034f0000000007090019000000006806043c0000000007870436000000000057004b000008b60000c13d0000001f03300190000008c80000613d000000000141034f00000000044900190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000000010a0433000000010020019000001e460000613d000000000001004b000008e50000c13d00130000000a001d001200000009001d00000c2b01000041000000000010043900000c19010000410000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000000001004b000000130100002900001dc50000613d0000000001010433000000000001004b0000001c02000029000000120900002900000ed40000613d00000c240010009c00001d7a0000213d000000200010008c00001d7a0000413d00000cd70000013d00000004017000390000000002010433000000000015043500000018017000390000000003010433001500000003001d0000000000150435000000020120018f000000010020019000000a7a0000c13d000000000001004b00000d670000c13d0000000001000411000000160010006b001000000009001d0000097d0000c13d000000400100043d00000064021000390000001c030000290000000000320435000000200210003900000c1d030000410000000000320435000000440310003900000000040004110000000000430435000000240310003900000000004304350000006403000039000000000031043500000c1e0010009c00001d7c0000213d000000a003100039001300000003001d000000400030043f00000c540010009c00001d7c0000213d000000e003100039000000400030043f000000200300003900000013040000290000000000340435000000c00310003900000c5504000041000000000043043500000be10020009c00000be1020080410000004002200210000000000101043300000be10010009c00000be1010080410000006001100210000000000121019f000000000200041400000be10020009c00000be102008041000000c002200210000000000121019f00000c19020000412f1f2f150000040f00020000000103550000000003010019000000600330027000000be10030019d00000be103300198000000800a000039000000600b000039000009550000613d0000001f0430003900000be2044001970000003f0440003900000c5604400197000000400b00043d00000000044b00190000000000b4004b0000000005000019000000010500403900000be40040009c00001d7c0000213d000000010050019000001d7c0000c13d000000400040043f000000000a3b043600000005043002720000000504400210000009470000613d00000000054a0019000000000601034f00000000070a0019000000006806043c0000000007870436000000000057004b000009430000c13d0000001f03300190000009550000613d000000000141034f00000000044a00190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000000010b0433000000010020019000001ef60000613d000000000001004b000009710000c13d00130000000b001d00120000000a001d00000c2b01000041000000000010043900000c19010000410000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000000001004b000000130100002900001dc50000613d0000000001010433000000000001004b000000120a0000290000097d0000613d00000c240010009c00001d7a0000213d000000200010008c00001d7a0000413d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b00001d7a0000c13d000000000001004b00001d830000613d00000c2b01000041000000000010043900000c19010000410000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000000001004b00001d7a0000613d000000400300043d00000c4201000041000000000013043500000004013000390000001c02000029000000000021043500000be10030009c001300000003001d00000be10100004100000000010340190000004001100210000000000200041400000be10020009c00000be102008041000000c002200210000000000112019f00000c1c011001c700000c19020000412f1f2f150000040f0000000003010019000000600330027000000be10030019d00000be1033001970002000000010355000000010020019000001e860000613d0000001f0130003900000be2021001970000001301200029000000000021004b0000000002000019000000010200403900000be40010009c000000100900002900001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000d680000013d00000017017000390000000001010433000000180270003900000000002504350000001902700039000000000302043300000000002504350000001a02700039000000000402043300000000002504350000002e0270003900000000080204330000000000250435000000420270003900000000070204330000000000250435000000400a00043d0000004402a000390000001c050000290000000000520435000000800040019000000c6206000041000000000206001900000000020060190000007f0440018f00000c4f05200197000000000445019f00000c340020019800000c35020000410000000002006019000000000224019f0000002404a00039000000000024043500000080003001900000000002060019000000000200601900000c360400004100000000054a04360000007f0330018f00000c4f04200197000000000334019f00000c340020019800000c35020000410000000002006019000000000223019f0000000403a0003900000000002304350000006402a000390000000000020435000000000200041400000be304100197000000040040008c00000a9d0000c13d000000000400003100000d990000013d0000000001000411000000160010006b00000a720000c13d000000400100043d00000064021000390000001c03000029000000000032043500000044021000390000000000920435000000200210003900000c1d0300004100000000003204350000002403100039000000000400041100000000004304350000006403000039000000000031043500000c1e0010009c00001d7c0000213d000000a005100039000000400050043f00000c540010009c00001d7c0000213d000000e003100039000000400030043f00000020030000390000000000350435000000c00310003900000c5504000041000000000043043500000be10020009c00000be1020080410000004002200210000000000101043300000be10010009c00000be1010080410000006001100210000000000121019f000000000200041400000be10020009c00000be102008041000000c002200210000000000121019f00000c1902000041001100000005001d2f1f2f150000040f000000150900002900020000000103550000000003010019000000600330027000000be10030019d00000be103300198000000800a000039000000600b00003900000a490000613d0000001f0430003900000be2044001970000003f0440003900000c5604400197000000400b00043d00000000044b00190000000000b4004b0000000005000019000000010500403900000be40040009c00001d7c0000213d000000010050019000001d7c0000c13d000000400040043f000000000a3b04360000000504300272000000050440021000000a3b0000613d00000000054a0019000000000601034f00000000070a0019000000006806043c0000000007870436000000000057004b00000a370000c13d0000001f0330019000000a490000613d000000000141034f00000000044a00190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000000010b0433000000010020019000001ddb0000613d000000000001004b00000a660000c13d00110000000b001d000f0000000a001d00000c2b01000041000000000010043900000c19010000410000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000000001004b000000110100002900001dc50000613d0000000001010433000000000001004b00000015090000290000000f0a00002900000a720000613d00000c240010009c00001d7a0000213d000000200010008c00001d7a0000413d00000000010a0433000000000001004b0000000002000019000000010200c039000000000021004b00001d7a0000c13d000000000001004b00001d830000613d000000400a00043d00000c480100004100000000051a04360000000001000414000000040090008c00000af70000c13d000000000300003100000b290000013d0000002c0270003900000000060204330000000000250435000000000001004b000010870000c13d001000000009001d00000c2b010000410000000000100439001300000006001d00000be301600197001200000001001d0000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000000001004b0000001003000029000000130600002900001d7a0000613d000000400400043d00000c4001000041000000000014043500000000010004140000001205000029000000040050008c00000f540000c13d00000000030000310000107a0000013d001200000005001d001100000007001d001500000008001d00000be100a0009c00130000000a001d00000be10100004100000000010a4019000000400110021000000be10020009c00000be102008041000000c002200210000000000112019f0000ffff0090008c00000d6f0000813d00000c13011001c7000000000204001900000d730000013d0000001f0330003900000c2203300197000000c40330003900000be10030009c00000be103008041000000600330021000000be100a0009c00000be10400004100000000040a40190000004004400210000000000343019f00000be10010009c00000be101008041000000c001100210000000000131019f00150000000a001d2f1f2f150000040f000000150a0000290000000003010019000000600330027000000be103300197000000400030008c000000400500003900000000050340190000000504500272000000050440021000000ad00000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b00000acc0000c13d0000001f0550019000000ade0000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000001e280000613d0000001f0130003900000c22021001970000000001a20019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001d7a0000213d000000400030008c00001d7a0000413d0000000202000039000000000202041a00000be302200197000000010020008c0000069a0000613d00001d930000013d000f00000005001d00000be100a0009c00000be10200004100000000020a4019000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f00000c41011001c7000000000209001900110000000a001d2f1f2f1a0000040f000000110a0000290000000003010019000000600330027000000be103300197000000600030008c000000600500003900000000050340190000000504500272000000050440021000000b150000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b00000b110000c13d0000001f0550019000000b230000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f00020000000103550000000100200190000000150900002900001ded0000613d0000000f050000290000001f0130003900000c22011001970000000004a10019000000000014004b0000000001000019000000010100403900000be40040009c00001d7c0000213d000000010010019000001d7c0000c13d000000400040043f00000c240030009c00001d7a0000213d000000600030008c00001d7a0000413d00000000020a043300000c490020009c00001d7a0000213d000000000305043300000c490030009c00001d7a0000213d0000004001a00039000000000101043300000be10010009c00001d7a0000213d0000000401400039001100000002001d000000000002004b00001d990000613d000000000003004b00001d990000613d00000c25020000410000000002240436000e00000002001d000000000091043500000be10040009c00000be10100004100000000010440190000004001100210000000000200041400000be10020009c00000be102008041000000c002200210000000000112019f00000c1c011001c700000c1902000041000f00000004001d000d00000003001d2f1f2f1a0000040f0000000e0d0000290000000f0b0000290000001303000029000000ff0330018f000000010030008c0000000d0500002900000011040000290000000004056019000000000c050019000000110c0060290000000005010019000000600550027000000be105500197000000200050008c00000020070000390000000007054019000000050670027200000b720000613d000000000801034f00000000090b0019000000008a08043c0000000009a904360000000000d9004b00000b6e0000c13d0000001f0770019000000b810000613d0000000506600210000000000861034f00000000066b00190000000307700210000000000906043300000000097901cf000000000979022f000000000808043b0000010007700089000000000878022f00000000077801cf000000000797019f0000000000760435000000000005001f0002000000010355000000010020019000001da80000613d0000001f0150003900000be2011001970000000007b1001900000be40070009c000000150600002900001d7c0000213d000000400070043f000000200050008c00001d7a0000413d00000000020b04330000000001c2004b00001f2c0000413d000000120500002900000c4a0550019700000c4b0050009c00001f2c0000213d00000c4b055000990000000000c2004b00000b9b0000613d00000c6302100129000000000052004b00001f2c0000413d00000000015100aa00000ba00000613d00000c6302100129000000000042004b00001f2c0000413d00000c630510016700000c4b02c000d1000000000052004b00001f2c0000213d000000000221001a00001d8d0000613d00000000014100a900000000012100d9000000010030008c00000000020000190000000002016019001100000002001d0000000001006019001200000001001d00000c4c0070009c00001d7c0000213d0000002001700039000f00000001001d000000400010043f001300000007001d000000000007043500000c2b0100004100000000001004390000000400600443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000000001004b0000001506000029000000130300002900001d7a0000613d000000400700043d000000640170003900000080020000390000000000210435000000100100002900000be3011001970000004402700039000000000012043500000024017000390000001102000029000000000021043500000c4d010000410000000000170435000000040170003900000012020000290000000000210435000000000103043300000084027000390000000000120435000000000001004b00000be80000613d000000a40270003900000000030000190000000f0800002900000000042300190000000005830019000000000505043300000000005404350000002003300039000000000013004b00000bde0000413d00000be80000a13d000000000221001900000000000204350000000002000414000000040060008c00000bed0000c13d000000000300003100000c070000013d0000001f0110003900000c2201100197000000a40110003900000be10010009c00000be101008041000000600110021000000be10070009c001300000007001d00000be10300004100000000030740190000004003300210000000000131019f00000be10020009c00000be102008041000000c002200210000000000112019f00000000020600192f1f2f150000040f0000000003010019000000600330027000000be10030019d00000be1033001970002000000010355000000010020019000001e370000613d00000013070000290000001f0130003900000c22021001970000000001720019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c0000069a0000a13d00001d7a0000013d000000400900043d00000d040000013d000000160000006b00000f340000613d00000c18010000410000000000100439000000000100041200000004001004430000002400000443000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b00000c2b02000041000000000020043900000be301100197001300000001001d0000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000000001004b00001d7a0000613d000000400400043d00000064014000390000001c0200002900000000002104350000004401400039000000160200002900000000002104350000002401400039000000000021043500000c53010000410000000000140435000000040140003900000c1902000041000000000021043500000000010004140000001302000029000000040020008c00000fa80000c13d000000000300003100000fbb0000013d0000000001000411000000160010006b00000dd10000c13d000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000001d820000613d000000000201043b000000400100043d00000064031000390000001c04000029000000000043043500000be30220019700000044031000390000000000230435000000200210003900000c1d0300004100000000003204350000002403100039000000000400041100000000004304350000006403000039000000000031043500000c1e0010009c00001d7c0000213d000000a003100039001300000003001d000000400030043f00000c540010009c00001d7c0000213d000000e003100039000000400030043f000000200300003900000013040000290000000000340435000000c00310003900000c5504000041000000000043043500000be10020009c00000be1020080410000004002200210000000000101043300000be10010009c00000be1010080410000006001100210000000000121019f000000000200041400000be10020009c00000be102008041000000c002200210000000000121019f00000c19020000412f1f2f150000040f00020000000103550000000003010019000000600330027000000be10030019d00000be1033001980000008009000039000000600a00003900000cb60000613d0000001f0430003900000be2044001970000003f0440003900000c5604400197000000400a00043d00000000044a00190000000000a4004b0000000005000019000000010500403900000be40040009c00001d7c0000213d000000010050019000001d7c0000c13d000000400040043f00000000093a04360000000504300272000000050440021000000ca80000613d0000000005490019000000000601034f0000000007090019000000006806043c0000000007870436000000000057004b00000ca40000c13d0000001f0330019000000cb60000613d000000000141034f00000000044900190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000000010a0433000000010020019000001e460000613d000000000001004b00000cd30000c13d00130000000a001d001200000009001d00000c2b01000041000000000010043900000c19010000410000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000000001004b000000130100002900001dc50000613d0000000001010433000000000001004b0000001c02000029000000120900002900000ed40000613d00000c240010009c00001d7a0000213d000000200010008c00001d7a0000413d0000000001090433000000000001004b0000000002000019000000010200c039000000000021004b00001d7a0000c13d000000000001004b0000001c0200002900000ed40000c13d00001d830000013d00000be10050009c001000000005001d00000be1030000410000000003054019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c13011001c72f1f2f150000040f0000000003010019000000600330027000000be10030019d00000be1033001970002000000010355000000010020019000001e4c0000613d00000015070000290000001308000029000000120400002900000010050000290000001f0130003900000c22011001970000000009510019000000000019004b0000000001000019000000010100403900000be40090009c00001d7c0000213d000000010010019000001d7c0000c13d000000400090043f00000c240030009c00001d7a0000213d00000c3701000041000000000a1904360000000401900039000000200200003900000000002104350000000001040433000000240290003900000000001204350000004403900039000000000001004b00000d1b0000613d0000005702700039000000000400001900000000053400190000000006420019000000000606043300000000006504350000002004400039000000000014004b00000d110000413d00000d1b0000a13d00000000023100190000000000020435000000000400041400000be302800197000000040020008c00000d210000c13d000000000300003100000d570000013d0000001f0110003900000c22011001970000000001910049000000000131001900000be10010009c00000be101008041000000600110021000000be10090009c00000be10300004100000000030940190000004003300210000000000131019f00000be10040009c00000be104008041000000c003400210000000000131019f001500000009001d00130000000a001d2f1f2f150000040f000000130a00002900000015090000290000000003010019000000600330027000000be103300197000000200030008c00000020050000390000000005034019000000050450027200000d440000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b00000d400000c13d0000001f0550019000000d530000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000001dfc0000613d0000001f0130003900000c22021001970000000001920019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001d7a0000213d000000200030008c0000069a0000813d00001d7a0000013d000000400100043d00000000020004140000001504000029000000040040008c00000dc60000c13d0000000003000031000000010200003900000f790000013d00000c50011001c700008009020000390000001c0300002900000000050000192f1f2f150000040f0000000003010019000000600330027000000be104300197000000200040008c000000200500003900000000050440190000000503500272000000130a000029000000120900002900000d840000613d000000000601034f00000000070a0019000000006806043c0000000007870436000000000097004b00000d800000c13d0000001f0550019000000d930000613d0000000503300210000000000631034f00000000033a00190000000305500210000000000703043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000530435000000000004001f00020000000103550000000100200190000000150800002900001e0b0000613d00000011070000290000001f0540003900000c22015001970000000002a10019000000000012004b0000000001000019000000010100403900000be40020009c00001d7c0000213d000000010010019000001d7c0000c13d000000400020043f00000c240040009c00001d7a0000213d000000200040008c00001d7a0000413d00000be3068001970000000001000410000000000016004b0000069a0000613d00000000030a043300000be30170019700000c190010009c00000db70000c13d0000000001000414000000040080008c00000f620000c13d00000be40040009c0000000103000039000010a80000a13d00001d7c0000013d000000200420003900000c1a05000041000000000054043500000044042000390000000000340435000000240320003900000000006304350000004403000039000000000032043500000c090020009c00001d7c0000213d0000008003200039000000400030043f2f1f2d7f0000040f0000069a0000013d00000be10010009c00000be101008041000000400110021000000be10020009c00000be102008041000000c002200210000000000112019f0000ffff0090008c00000f700000813d000000000204001900000f740000013d000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000400300043d001100000003001d00000c25020000410000000002230436001200000002001d00000be3021001970000000401300039001300000002001d000000000021043500000be10030009c00000be10100004100000000010340190000004001100210000000000200041400000be10020009c00000be102008041000000c002200210000000000112019f00000c1c011001c700000c19020000412f1f2f1a0000040f000000120a00002900000011090000290000000003010019000000600330027000000be103300197000000200030008c00000020050000390000000005034019000000050450027200000e000000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b00000dfc0000c13d0000001f0550019000000e0f0000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000001ea40000613d0000001f0130003900000be202100197000000000a92001900000000002a004b0000000002000019000000010200403900000be400a0009c000000130700002900001d7c0000213d000000010020019000001d7c0000c13d0000004000a0043f000000200030008c00001d7a0000413d000000000609043300000c380200004100000000052a04360000000402a0003900000c190400004100000000004204350000000002000414000000040070008c001200000006001d00000e5f0000613d001000000005001d00000be100a0009c00000be10100004100000000010a4019000000400110021000000be10020009c00000be102008041000000c002200210000000000112019f00000c1c011001c7000000000207001900110000000a001d2f1f2f1a0000040f000000110a0000290000000003010019000000600330027000000be103300197000000600030008c000000600500003900000000050340190000000504500272000000050440021000000e490000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b00000e450000c13d0000001f0550019000000e570000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000001f320000613d0000001f0130003900000012060000290000001307000029000000100500002900000be2011001970000000002a1001900000be40020009c00001d7c0000213d000000400020043f000000600030008c00001d7a0000413d00000c390020009c00001d7c0000213d0000006004200039000000400040043f00000000040a043300000be40040009c00001d7a0000213d0000000004420436000000000505043300000be40050009c00001d7a0000213d00000000005404350000004004a00039000000000504043300000c3a0050009c00001d7a0000213d0000004002200039000000000052043500000c6302500167000000000026004b00001f2c0000213d000000400a00043d00000c3b0200004100000000082a04360000000402a0003900000c190400004100000000004204350000000002000414000000040070008c00000eba0000613d001300000008001d001000000005001d00000be100a0009c00000be10100004100000000010a4019000000400110021000000be10020009c00000be102008041000000c002200210000000000112019f00000c1c011001c7000000000207001900110000000a001d2f1f2f1a0000040f000000110a0000290000000003010019000000600330027000000be103300197000000400030008c000000400500003900000000050340190000000504500272000000050440021000000ea30000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b00000e9f0000c13d0000001f0550019000000eb10000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f00020000000103550000000100200190000000130800002900001f410000613d0000001f0130003900000be201100197000000120600002900000010050000290000000002a10019000000000012004b0000000001000019000000010100403900000be40020009c00001d7c0000213d000000010010019000001d7c0000c13d000000400020043f000000400030008c00001d7a0000413d00000c3c0020009c00001d7c0000213d0000004001200039000000400010043f00000000010a043300000c3a0010009c00001d7a0000213d0000000002120436000000000308043300000c3a0030009c00001d7a0000213d00000000046500190000000000320435000000000214004b00001f2c0000413d001300000002001d00000c18010000410000000000100439000000000100041200000004001004430000002400000443000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000400a00043d0000006402a0003900000013030000290000000000320435000000150200002900000be3022001970000004403a00039000000000023043500000c3d0200004100000000002a04350000000402a0003900000c1903000041000000000032043500000be3021001970000002401a0003900000000002104350000008401a0003900000000000104350000000001000414000000040020008c00000efb0000c13d000000000300003100000f290000013d00000be100a0009c00000be10300004100000000030a4019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c3e011001c700150000000a001d2f1f2f150000040f000000150a0000290000000003010019000000600330027000000be103300197000000400030008c000000400500003900000000050340190000000504500272000000050440021000000f170000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b00000f130000c13d0000001f0550019000000f250000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000001e5b0000613d0000001f0130003900000c22021001970000000001a20019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000010650000013d000000400300043d00000c30010000410000000001130436001200000001001d000000040130003900000c19020000410000000000210435001300000003001d0000002401300039000000000001043500000c18010000410000000000100439000000000100041200000004001004430000002400000443000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000001d820000613d000000000201043b000000000100041400000be302200197000000040020008c00000fca0000c13d0000000003000031000000130900002900000ff70000013d00000be10040009c001100000004001d00000be1020000410000000002044019000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f0000ffff0030008c0000106b0000813d00000c41011001c70000000002050019000010700000013d00000be10020009c00000be102008041000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f000000000003004b0000109e0000613d00000be8011001c70000800902000039000000000408001900000000050000190000109f0000013d00000be8011001c700008009020000390000001c0300002900000000050000192f1f2f150000040f0002000000010355000000600110027000000be10010019d00000be103100197000000000003004b00000080040000390000006001000039000006980000613d00000be40030009c00001d7c0000213d0000001f0130003900000c22011001970000003f0110003900000c2204100197000000400100043d0000000004410019000000000014004b0000000005000019000000010500403900000be40040009c00001d7c0000213d000000010050019000001d7c0000c13d000000400040043f000000000431043600000002050003670000000506300272000000050660021000000f990000613d0000000007640019000000000805034f0000000009040019000000008a08043c0000000009a90436000000000079004b00000f950000c13d0000001f03300190000006980000613d000000000565034f00000000066400190000000303300210000000000706043300000000073701cf000000000737022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000373019f0000000000360435000006980000013d00000be10040009c001200000004001d00000be1030000410000000003044019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c13011001c72f1f2f150000040f0000000003010019000000600330027000000be10030019d00000be1033001970002000000010355000000010020019000001f1b0000613d00000012040000290000001f0130003900000c22011001970000000004410019000000000014004b0000000001000019000000010100403900000be40040009c00001d7c0000213d000000010010019000001d7c0000c13d000000400040043f00000c240030009c0000001c01000029000010070000a13d00001d7a0000013d000000130300002900000be10030009c00000be103008041000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c29011001c72f1f2f1a0000040f00000013090000290000000003010019000000600330027000000be103300197000000200030008c000000200500003900000000050340190000000504500272000000120a00002900000fe40000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b00000fe00000c13d0000001f0550019000000ff30000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000001f7d0000613d0000001f0130003900000c22011001970000000004910019000000000014004b0000000001000019000000010100403900000be40040009c00001d7c0000213d000000010010019000001d7c0000c13d000000400040043f00000c240030009c00001d7a0000213d000000200030008c00001d7a0000413d000000000109043300000084024000390000000000120435000000150100002900000be3011001970000004402400039000000000012043500000024014000390000001602000029000000000021043500000c3f010000410000000000140435000000040140003900000c19020000410000000000210435001300000004001d0000006401400039000000000001043500000c18010000410000000000100439000000000100041200000004001004430000002400000443000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000001d820000613d000000000201043b000000000100041400000be302200197000000040020008c0000102e0000c13d0000000003000031000000130a0000290000105b0000013d000000130300002900000be10030009c00000be103008041000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c3e011001c72f1f2f150000040f000000130a0000290000000003010019000000600330027000000be103300197000000400030008c0000004005000039000000000503401900000005045002720000000504400210000010490000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b000010450000c13d0000001f05500190000010570000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000001e950000613d0000001f0130003900000c22021001970000000001a20019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001d7a0000213d000000400030008c0000069a0000813d00001d7a0000013d00000c57011001c700008009020000390000001c03000029000000000405001900000000050000192f1f2f150000040f00020000000103550000000003010019000000600330027000000be10030019d00000be1033001970000000100200190000000130600002900001f0c0000613d00000011040000290000001f0130003900000c22021001970000000001420019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001d7a0000213d000000150100002900000be3011001970000000002000410000000000021004b0000069a0000613d000000400200043d000000200320003900000c1a04000041000000000043043500000044032000390000001c040000290000000000430435000000240320003900000000001304350000004401000039000000000012043500000c090020009c00001d7c0000213d0000008001200039000000400010043f00000be3016001972f1f2d7f0000040f0000069a0000013d00000000020800192f1f2f150000040f00000000030200190002000000010355000000600110027000000be10010019d00000be104100198000010d10000613d000000400200043d0000001f0540003900000c51015001970000003f0110003900000c52051001970000000001250019000000000051004b0000000005000019000000010500403900000be40010009c00001d7c0000213d000000010050019000001d7c0000c13d000000400010043f0000000001420436000000020500036700000005064002720000000506600210000010c00000613d0000000007610019000000000805034f0000000009010019000000008a08043c0000000009a90436000000000079004b000010bc0000c13d0000001f04400190000010ce0000613d000000000565034f00000000066100190000000304400210000000000706043300000000074701cf000000000747022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000474019f000000000046043500000001003001900000069a0000c13d00001fb00000013d00000001003001900000069a0000c13d00001fae0000013d00000021016000390000000007010433000000000015043500000041016000390000000002010433001b00000002001d000000000015043500000042016000390000000002010433001a00000002001d000000000015043500000062016000390000000002010433001800000002001d000000000015043500000082016000390000000002010433001500000002001d0000000000150435000000400a00043d00000c280100004100000000041a04360000000401a0003900000009020000290000000000210435000000000100041000000be3021001970000002401a00039001600000002001d000000000021043500000000010004140000000a02000029000000040020008c001c00000007001d000011480000c13d0000000003000031000011780000013d000000170000006b0000000b03000029000012b10000c13d0000062f0000013d001a00000003001d00000be10090009c00000be1030000410000000003094019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c1c011001c7001c00000009001d001b00000004001d2f1f2f1a0000040f0000001b0b0000290000001c090000290000000003010019000000600330027000000be10a3001970000002000a0008c000000200500003900000000050a401900000005045002720000111a0000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000b7004b000011160000c13d0000001f05500190000011290000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f000000000054043500000000000a001f0002000000010355000000010020019000001eb30000613d0000001a030000290000001f01a0003900000c22021001970000000001920019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c2400a0009c00001d7a0000213d0000002000a0008c00001d7a0000413d0000000001090433000000010410008c0000000004004019000b00000004001d000000190100002900000000020004102f1f21150000040f0000000b03000029000000170000006b000012b10000c13d0000062f0000013d00000be100a0009c00000be10300004100000000030a4019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c29011001c700130000000a001d001200000004001d2f1f2f1a0000040f0000001209000029000000130a0000290000000003010019000000600330027000000be103300197000000200030008c000000200500003900000000050340190000000504500272000011640000613d000000000601034f00000000070a0019000000006806043c0000000007870436000000000097004b000011600000c13d0000001f05500190000011730000613d0000000504400210000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000001ecf0000613d0000001c070000290000001f0130003900000c22011001970000000009a10019000000000019004b0000000002000019000000010200403900000be40090009c00001d7c0000213d000000010020019000001d7c0000c13d000000400090043f00000c240030009c00001d7a0000213d000000200030008c00001d7a0000413d00000000020a0433000000000072004b000012b10000813d00000c2a02000041000000000529043600000004029000390000000904000029000000000042043500000000020004140000000a04000029000000040040008c000011c50000613d00000be10090009c00000be1010000410000000001094019000000400110021000000be10020009c00000be102008041000000c002200210000000000112019f00000c1c011001c70000000a02000029001300000009001d001200000005001d2f1f2f1a0000040f000000120a00002900000013090000290000000003010019000000600330027000000be103300197000000200030008c000000200500003900000000050340190000000504500272000011b00000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b000011ac0000c13d0000001f05500190000011bf0000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000001f500000613d0000001f0130003900000be2011001970000000002910019000000000012004b0000000001000019000000010100403900000be40020009c00001d7c0000213d000000010010019000001d7c0000c13d000000400020043f000000200030008c00001d7a0000413d0000000001090433001300000001001d00000c2b0100004100000000001004390000000a010000290000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000000001004b0000001c0300002900001d7a0000613d000000400400043d000000c40140003900000015020000290000000000210435000000a401400039000000180200002900000000002104350000001a01000029000000ff0110018f0000008402400039000000000012043500000064014000390000001b0200002900000000002104350000004401400039000000000031043500000024014000390000001602000029000000000021043500000c2c01000041000000000014043500000004014000390000000902000029000000000021043500000000010004140000000a02000029000000040020008c000012450000c13d0000000003000031000012580000013d0000001c0300002900000be10030009c00000be103008041000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c29011001c72f1f2f1a0000040f0000001c090000290000000003010019000000600330027000000be103300197000000200030008c0000002005000039000000000503401900000005045002720000001a0a0000290000121b0000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b000012170000c13d0000001f055001900000122a0000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000001ede0000613d0000001f0130003900000c22021001970000000001920019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001d7a0000213d000000200030008c00001d7a0000413d0000000001090433000000010410008c0000000004004019000000190100002900000000020004100000001b030000292f1f21150000040f000012b10000013d00000be10040009c001c00000004001d00000be1030000410000000003044019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c2d011001c72f1f2f150000040f0000000003010019000000600330027000000be10030019d00000be1033001970002000000010355000000010020019000001f5f0000613d0000001c040000290000001f0130003900000c22021001970000000009420019000000000029004b0000000001000019000000010100403900000be40090009c00001d7c0000213d000000010010019000001d7c0000c13d000000400090043f00000c240030009c00001d7a0000213d00000c2a01000041000000000519043600000004019000390000000904000029000000000041043500000000010004140000000a04000029000000040040008c000012a00000613d00000be10090009c00000be1020000410000000002094019000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f00000c1c011001c70000000a02000029001c00000009001d001b00000005001d2f1f2f1a0000040f0000001b0a0000290000001c090000290000000003010019000000600330027000000be103300197000000200030008c0000002005000039000000000503401900000005045002720000128b0000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b000012870000c13d0000001f055001900000129a0000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000001f6e0000613d0000001f0130003900000be2021001970000000001920019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f000000200030008c00001d7a0000413d0000001302000029000000010220003a00001f2c0000613d0000000003090433000000000023004b00001eed0000c13d000000010100008a000000170010006b00001f2c0000613d00000014030000290000062f0000013d00000000040004150000000001050433000000140210003900000000070204330000000000250435000000150210003900000000030204330000000000250435000000ff0230018f000000050020008c001c00000004a01d00000bcf0002a13e000000400200043d001c00000002001d00000c0401000041000000000012043500000004012000392f1f2d720000040f0000001c02000029000000000121004900000be10010009c00000be101008041000000600110021000000be10020009c00000be1020080410000004002200210000000000121019f00002f21000104300000002902100039000000000302043300000000002504350000002a021000390000000004020433001800000004001d00000000002504350000003e021000390000000004020433001500000004001d000000000025043500000041011000390000000002010433001600000002001d000000000015043500000be3063001970000000001000410000000000001004b001a00000006001d001b00000007001d000014ea0000613d0000000001000411000000000001004b000014fc0000c13d000000400200043d000000200120003900000c1d0300004100000000003104350000004401200039000000000061043500000064010000390000000000120435000000640120003900000000000104350000002401200039000000000001043500000c1e0020009c00001d7c0000213d000000a001200039000014f70000013d0000002902100039000000000302043300000000002504350000002a02100039000000000802043300000000002504350000003e01100039000000000601043300000000001504350000000001000411000000000001004b0000144e0000613d00000be3057001970000146a0000013d0000001602100039000000000302043300000000002504350000002a0210003900000000040204330000000000250435000000020230018f0000000100300190000013ad0000c13d000000000002004b000016470000c13d0000000001000411000000000001004b001a00000004001d00001a0e0000613d00000be30270019700001a240000013d0000001602100039000000000302043300000000002504350000002a011000390000000002010433000000000015043500000c18010000410000000000100439000000000100041200000004001004430000002400000443000000ff00300190001b00000007001d001a00000002001d0000162c0000613d0000000001000410000000000001004b000017ad0000613d0000000001000411000000000001004b000018590000613d000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000400900043d00000c2502000041000000000329043600000be3061001970000000401900039000000000061043500000000010004140000001b0200002900000be308200197000000040080008c001600000006001d001800000008001d000018b00000c13d0000000003000031000018e20000013d0000002903100039000000000203043300000000003504350000004903100039000000000403043300000000043400190000000000450435000000400900043d00000c370400004100000000084904360000000404900039000000200500003900000000005404350000000003030433000000240490003900000000003404350000004404900039000000000003004b000013660000613d0000006901100039000000000500001900000000064500190000000007510019000000000707043300000000007604350000002005500039000000000035004b0000135c0000413d000013660000a13d00000000014300190000000000010435000000000100041400000be302200197000000040020008c000013d00000c13d0000000003000031000014060000013d0000000001000415001800000001001d00000000010504330000001402100039000000000a02043300000000002504350000001502100039000000000802043300000000002504350000001602100039000000000302043300000000002504350000001702100039000000000402043300000000002504350000002b021000390000000006020433001a00000006001d00000000002504350000003f011000390000000002010433001600000002001d00000000001504350000008000400190000000800100008a000000000601001900000000060060190000008000300190000000000201001900000000020060190000007f0130018f0000000003020019000000000513019f0000007f0140018f000000000116019f00000be30d70019700000c1900d0009c000014160000c13d00000c330110019700000c340060019800000c35020000410000000002006019000000000112019f000000400900043d0000002402900039000000000012043500000c3601000041000000000419043600000c330150019700000c340030019800000c35020000410000000002006019000000000112019f000000040290003900000000001204350000006401900039000000000001043500000044019000390000000000010435000000000100041400000be302a00197000000040020008c000016490000c13d0000000003000031000016780000013d0000003e0110003900000000060104330000000000150435000000000002004b0000189b0000c13d001a00000004001d00000c2b010000410000000000100439001b00000006001d00000be301600197001800000001001d0000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000000001004b0000001a040000290000001b0600002900001d7a0000613d000000400500043d00000c4001000041000000000015043500000000010004140000001802000029000000040020008c000018790000c13d00000000030000310000188e0000013d0000001f0330003900000c22033001970000000003930049000000000343001900000be10030009c00000be103008041000000600330021000000be10090009c00000be10400004100000000040940190000004004400210000000000343019f00000be10010009c00000be101008041000000c001100210000000000113019f001b00000009001d001a00000008001d2f1f2f150000040f0000001a0a0000290000001b090000290000000003010019000000600330027000000be103300197000000200030008c000000200500003900000000050340190000000504500272000013f30000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b000013ef0000c13d0000001f05500190000014020000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000001ff50000613d0000001f0130003900000c22021001970000000001920019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001d7a0000213d000000200030008c00001c830000813d00001d7a0000013d001300000008001d000f00000001001d001000000006001d001100000005001d001200000003001d0000000001000411000000000001004b00150000000d001d000014360000c13d001b0000000a001d000000400200043d000000200120003900000c1d030000410000000000310435000000000100041000000be3011001970000004403200039000000000013043500000064010000390000000000120435000000640120003900000000000104350000002401200039000000000001043500000c1e0020009c00001d7c0000213d000000a001200039000000400010043f00000000010d00192f1f2d7f0000040f000000150d0000290000001b0a000029000000000c000415000000400200043d000000200120003900000c320300004100000000003104350000004403000039000000000032043500000be30ba0019700000024032000390000000000b304350000004403200039000000000003043500000c090020009c00001d7c0000213d0000008003200039000000400030043f000000000302043300000000020004140000000400d0008c001b0000000b001d000016860000c13d000000000100003100000001020000390000169c0000013d001a00000003001d000000400200043d000000200120003900000c1d030000410000000000310435000000000100041000000be3011001970000004403200039000000000013043500000064010000390000000000120435000000640120003900000000000104350000002401200039000000000001043500000c1e0020009c00001d7c0000213d000000a001200039000000400010043f00000be301700197001600000001001d001b00000006001d001800000008001d2f1f2d7f0000040f000000160500002900000018080000290000001b060000290000001a0300002900000be3023001970000000203000039000000000103041a00000be701100197000000000121019f000000000013041b000000400400043d00000020010000390000000001140436000000000051043500000c3c0040009c00001d7c0000213d000000ff00800190000000400a4000390000004000a0043f00000c430300004100000000003a0435000000c403400039000000a005000039000000000053043500000c450300004100000c440300c041000000a40540003900000000003504350000000003000019000000010300c0390000006405400039000000000035043500000be30360019700000044054000390000000000350435000000e4054000390000000003040433000000000035043500000084054000390000000000050435000000000003004b0000149c0000613d0000010404400039000000000500001900000000064500190000000007150019000000000707043300000000007604350000002005500039000000000035004b000014920000413d0000149c0000a13d000000000143001900000000000104350000000001000414000000040020008c000014a10000c13d0000000003000031000014d50000013d0000001f0330003900000c2203300197000000c40330003900000be10030009c00000be103008041000000600330021000000be100a0009c00000be10400004100000000040a40190000004004400210000000000343019f00000be10010009c00000be101008041000000c001100210000000000131019f001b0000000a001d2f1f2f150000040f0000001b0a0000290000000003010019000000600330027000000be103300197000000400030008c0000004005000039000000000503401900000005045002720000000504400210000014c30000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b000014bf0000c13d0000001f05500190000014d10000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f00020000000103550000000100200190000020040000613d0000001f0130003900000c22021001970000000001a20019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001d7a0000213d000000400030008c00001d7a0000413d0000000202000039000000000202041a00000be302200197000000010020008c00001c830000613d00001d930000013d000000400200043d000000200120003900000c1a03000041000000000031043500000024012000390000000000610435000000440100003900000000001204350000004401200039000000000001043500000c090020009c00001d7c0000213d0000008001200039000000400010043f00000be3017001972f1f2d7f0000040f0000001a060000290000001b07000029000000400a00043d00000c480100004100000000041a04360000000001000414000000040060008c000015040000c13d0000000003000031000015370000013d001200000004001d00000be100a0009c00000be10200004100000000020a4019000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f00000c41011001c7000000000206001900130000000a001d2f1f2f1a0000040f000000130a0000290000000003010019000000600330027000000be103300197000000600030008c0000006005000039000000000503401900000005045002720000000504400210000015220000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b0000151e0000c13d0000001f05500190000015300000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f00020000000103550000000100200190000020130000613d0000001b070000290000001a0600002900000012040000290000001f0130003900000c22011001970000000009a10019000000000019004b0000000002000019000000010200403900000be40090009c00001d7c0000213d000000010020019000001d7c0000c13d000000400090043f00000c240030009c00001d7a0000213d000000600030008c00001d7a0000413d00000000080a043300000c490080009c00001d7a0000213d000000000204043300000c490020009c00001d7a0000213d0000004004a00039000000000404043300000be10040009c00001d7a0000213d0000000404900039000000000008004b00001f9f0000613d000000000002004b00001f9f0000613d00000c2505000041000000000b59043600000000006404350000001804000029000000ff0540018f000000010050008c000000000a080019000000000a026019000000000802c019000000000400041400000be302700197000000040020008c0000159a0000613d00130000000a001d001100000005001d001800000008001d00000be10090009c00000be1010000410000000001094019000000400110021000000be10040009c00000be104008041000000c003400210000000000113019f00000c1c011001c7001b00000009001d00120000000b001d2f1f2f1a0000040f000000120a0000290000001b090000290000000003010019000000600330027000000be103300197000000200030008c000000200500003900000000050340190000000504500272000015810000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b0000157d0000c13d0000001f05500190000015900000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f000200000001035500000001002001900000001808000029000000130a000029000020220000613d0000001f0130003900000be2011001970000001a0600002900000011050000290000000004910019000000000014004b0000000001000019000000010100403900000be40040009c00001d7c0000213d000000010010019000001d7c0000c13d000000400040043f000000200030008c00001d7a0000413d0000000002090433000000000182004b00001f2c0000413d000000160300002900000c4a0330019700000c4b0030009c00001f2c0000213d00000c4b03300099000000000082004b000015b20000613d00000c6302100129000000000032004b00001f2c0000413d00000000013100aa000015b70000613d00000c63021001290000000000a2004b00001f2c0000413d00000c630310016700000c4b028000d1000000000032004b00001f2c0000213d000000000221001a00001d8d0000613d0000000001a100a900000000012100d9000000010050008c00000000020000190000000002016019001600000002001d0000000001006019001800000001001d00000c4c0040009c00001d7c0000213d0000002001400039001300000001001d000000400010043f001b00000004001d000000000004043500000c2b0100004100000000001004390000000400600443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000000001004b0000001a060000290000001b0300002900001d7a0000613d000000400700043d000000640170003900000080020000390000000000210435000000150100002900000be3011001970000004402700039000000000012043500000024017000390000001602000029000000000021043500000c4d010000410000000000170435000000040170003900000018020000290000000000210435000000000103043300000084027000390000000000120435000000000001004b000015ff0000613d000000a4027000390000000003000019000000130800002900000000042300190000000005830019000000000505043300000000005404350000002003300039000000000013004b000015f50000413d000015ff0000a13d000000000221001900000000000204350000000002000414000000040060008c000016040000c13d00000000030000310000161e0000013d0000001f0110003900000c2201100197000000a40110003900000be10010009c00000be101008041000000600110021000000be10070009c001b00000007001d00000be10300004100000000030740190000004003300210000000000131019f00000be10020009c00000be102008041000000c002200210000000000112019f00000000020600192f1f2f150000040f0000000003010019000000600330027000000be10030019d00000be10330019700020000000103550000000100200190000020310000613d0000001b070000290000001f0130003900000c22021001970000000001720019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001c830000a13d00001d7a0000013d000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000001d820000613d000000000201043b000000400900043d00000c30010000410000000003190436000000000100041000000be307100197000000240190003900000000007104350000001b0100002900000be30610019700000004019000390000000000610435000000000100041400000be305200197000000040050008c000017c70000c13d0000000003000031000017fd0000013d000000400100043d00001a610000013d00000be10090009c00000be1030000410000000003094019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c13011001c7001b00000009001d001500000004001d2f1f2f150000040f000000150a0000290000001b090000290000000003010019000000600330027000000be103300197000000200030008c000000200500003900000000050340190000000504500272000016650000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b000016610000c13d0000001f05500190000016740000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f000200000001035500000001002001900000204f0000613d0000001f0130003900000c22021001970000000001920019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001d7a0000213d00001b2d0000013d00000be10010009c00000be101008041000000400110021000000be10030009c00000be1030080410000006003300210000000000113019f00000be10020009c00000be102008041000000c002200210000000000121019f00000000020d0019000e0000000c001d2f1f2f150000040f000000150d0000290000000e0c0000290000001b0b000029000000010220018f0002000000010355000000600110027000000be10010019d00000be101100197000000000001004b00000080030000390000006004000039000016ca0000613d00000be40010009c00001d7c0000213d0000001f0310003900000c22033001970000003f0330003900000c2203300197000000400400043d0000000003340019000000000043004b0000000005000019000000010500403900000be40030009c00001d7c0000213d000000010050019000001d7c0000c13d000000400030043f0000000003140436000000020500036700000005061002720000000506600210000016bc0000613d0000000007630019000000000805034f0000000009030019000000008a08043c0000000009a90436000000000079004b000016b80000c13d0000001f07100190000016ca0000613d000000000565034f00000000066300190000000307700210000000000806043300000000087801cf000000000878022f000000000505043b0000010007700089000000000575022f00000000057501cf000000000585019f0000000000560435000000000002004b000016db0000613d0000000002040433000000000002004b00001aaa0000613d00000c240020009c00001d7a0000213d000000200020008c00001d7a0000413d0000000002030433000000000002004b0000000003000019000000010300c039000000000032004b00001d7a0000c13d000000000002004b00001aaa0000c13d000000400200043d000000200320003900000c3204000041000000000043043500000024042000390000000000b40435000000440400003900000000004204350000004404200039000000000004043500000c090020009c00001d7c0000213d0000008004200039000000400040043f000000000502043300000000040004140000000400d0008c0000000102000039000017040000613d00000be10030009c00000be103008041000000400130021000000be10050009c00000be1050080410000006002500210000000000112019f00000be10040009c00000be104008041000000c002400210000000000121019f00000000020d0019000e0000000c001d2f1f2f150000040f000000150d0000290000000e0c0000290000001b0b000029000000010220018f0002000000010355000000600110027000000be10010019d00000be101100197000000000001004b00000080030000390000006004000039000017300000613d0000001f0310003900000c22033001970000003f0330003900000c2203300197000000400400043d0000000003340019000000000043004b0000000005000019000000010500403900000be40030009c00001d7c0000213d000000010050019000001d7c0000c13d000000400030043f0000000003140436000000020500036700000005061002720000000506600210000017220000613d0000000007630019000000000805034f0000000009030019000000008a08043c0000000009a90436000000000079004b0000171e0000c13d0000001f07100190000017300000613d000000000565034f00000000066300190000000307700210000000000806043300000000087801cf000000000878022f000000000505043b0000010007700089000000000575022f00000000057501cf000000000585019f0000000000560435000000000002004b00001aaa0000613d00000000050004150000001e0550008a00000005055002100000000002040433000000000002004b000017470000613d00000c240020009c00001d7a0000213d000000200020008c00001d7a0000413d0000000002030433000000000002004b0000000003000019000000010300c039000000000032004b00001d7a0000c13d00000000050004150000001d0550008a0000000505500210000000000002004b00001aaa0000613d000d00000005001d000000400200043d000000200320003900000c3204000041000000000043043500000024042000390000000000b40435000000440400003900000000004204350000004404200039000000000004043500000c090020009c00001d7c0000213d0000008004200039000000400040043f000000000502043300000000040004140000000400d0008c0000000102000039000017700000613d00000be10030009c00000be103008041000000400130021000000be10050009c00000be1050080410000006002500210000000000112019f00000be10040009c00000be104008041000000c002400210000000000121019f00000000020d0019000e0000000c001d2f1f2f150000040f0000000e0c0000290000001b0b000029000000010220018f0002000000010355000000600110027000000be10010019d00000be101100197000000000001004b000000800300003900000060040000390000179c0000613d0000001f0310003900000c22033001970000003f0330003900000c2203300197000000400400043d0000000003340019000000000043004b0000000005000019000000010500403900000be40030009c00001d7c0000213d000000010050019000001d7c0000c13d000000400030043f00000000031404360000000205000367000000050610027200000005066002100000178e0000613d0000000007630019000000000805034f0000000009030019000000008a08043c0000000009a90436000000000079004b0000178a0000c13d0000001f011001900000179c0000613d000000000565034f00000000066300190000000301100210000000000706043300000000071701cf000000000717022f000000000505043b0000010001100089000000000515022f00000000011501cf000000000171019f0000000000160435000000000002004b00001aa60000613d0000000002040433000000000002004b000000010100003900001aa70000613d00000c240020009c00001d7a0000213d000000200020008c00001d7a0000413d0000000001030433000000000001004b0000000002000019000000010200c039000000000021004b00001aa70000613d00001d7a0000013d000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000400200043d000000200320003900000c1a04000041000000000043043500000be30110019700000024032000390000000000130435000000440100003900000000001204350000004401200039000000000001043500000c090020009c0000001b0300002900001d7c0000213d0000008001200039000018740000013d001300000007001d001500000006001d00000be10090009c00000be1020000410000000002094019000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f00000c29011001c7001600000005001d0000000002050019001b00000009001d001800000003001d2f1f2f1a0000040f000000180a0000290000001b090000290000000003010019000000600330027000000be103300197000000200030008c000000200500003900000000050340190000000504500272000017e70000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b000017e30000c13d0000001f05500190000017f60000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f000200000001035500000001002001900000205e0000613d0000001605000029000000150600002900000013070000290000001f0130003900000c2201100197000000000a91001900000000001a004b0000000002000019000000010200403900000be400a0009c00001d7c0000213d000000010020019000001d7c0000c13d0000004000a0043f00000c240030009c00001d7a0000213d000000200030008c00001d7a0000413d00000000020904330000008404a0003900000000002404350000001a0200002900000be3022001970000004404a0003900000000002404350000002402a00039000000000072043500000c3f0200004100000000002a04350000000402a0003900000000006204350000006402a0003900000000000204350000000002000414000000040050008c0000184f0000613d00000be100a0009c00000be10100004100000000010a4019000000400110021000000be10020009c00000be102008041000000c002200210000000000112019f00000c3e011001c70000000002050019001b0000000a001d2f1f2f150000040f0000001b0a0000290000000003010019000000600330027000000be103300197000000400030008c00000040050000390000000005034019000000050450027200000005044002100000183b0000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b000018370000c13d0000001f05500190000018490000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f000200000001035500000001002001900000206d0000613d0000001f0130003900000be2011001970000000002a10019000000000012004b0000000001000019000000010100403900000be40020009c00001d7c0000213d000000010010019000001d7c0000c13d000000400020043f00001a0b0000013d000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000400200043d000000200320003900000c1d04000041000000000043043500000be3011001970000004403200039000000000013043500000064010000390000000000120435000000640120003900000000000104350000002401200039000000000001043500000c1e0020009c0000001b0300002900001d7c0000213d000000a001200039000000400010043f00000be3013001972f1f2d7f0000040f001800000000001d000019a90000013d00000be10050009c001600000005001d00000be1030000410000000003054019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c41011001c72f1f2f150000040f0000000003010019000000600330027000000be10030019d00000be103300197000200000001035500000001002001900000208b0000613d0000001a040000290000001b0600002900000016050000290000001f0130003900000c22021001970000000001520019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001d7a0000213d00000be3014001970000000002000410000000000021004b00001c830000613d000000400200043d000000200320003900000c1a04000041000000000043043500000024032000390000000000130435000000440100003900000000001204350000004401200039000000000001043500000c090020009c00001d7c0000213d0000008001200039000000400010043f00000be3016001972f1f2d7f0000040f00001c830000013d00000be10090009c00000be1020000410000000002094019000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f00000c1c011001c70000000002080019001500000009001d001300000003001d2f1f2f1a0000040f000000130a00002900000015090000290000000003010019000000600330027000000be103300197000000200030008c000000200500003900000000050340190000000504500272000018cd0000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b000018c90000c13d0000001f05500190000018dc0000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000000018080000290000209a0000613d00000016060000290000001f0130003900000c2201100197000000000a91001900000000001a004b0000000002000019000000010200403900000be400a0009c00001d7c0000213d000000010020019000001d7c0000c13d0000004000a0043f00000c240030009c00001d7a0000213d000000200030008c00001d7a0000413d000000000709043300000c380200004100000000052a04360000000402a0003900000000008204350000000002000414000000040060008c001500000007001d000019300000613d001200000005001d00000be100a0009c00000be10100004100000000010a4019000000400110021000000be10020009c00000be102008041000000c002200210000000000112019f00000c1c011001c7000000000206001900130000000a001d2f1f2f1a0000040f000000130a0000290000000003010019000000600330027000000be103300197000000600030008c0000006005000039000000000503401900000005045002720000000504400210000019180000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b000019140000c13d0000001f05500190000019260000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f000200000001035500000001002001900000001808000029000020c70000613d0000001f0130003900000be2011001970000001606000029000000150700002900000012050000290000000002a10019000000000012004b0000000004000019000000010400403900000be40020009c00001d7c0000213d000000010040019000001d7c0000c13d000000400020043f000000600030008c00001d7a0000413d00000c390020009c00001d7c0000213d0000006004200039000000400040043f00000000040a043300000be40040009c00001d7a0000213d0000000004420436000000000505043300000be40050009c00001d7a0000213d00000000005404350000004004a00039000000000404043300000c3a0040009c00001d7a0000213d0000004002200039000000000042043500000c6302400167000000000027004b00001f2c0000213d000000400a00043d00000c3b0200004100000000052a04360000000402a0003900000000008204350000000002000414000000040060008c0000198e0000613d001200000005001d001300000004001d00000be100a0009c00000be10100004100000000010a4019000000400110021000000be10020009c00000be102008041000000c002200210000000000112019f00000c1c011001c7000000000206001900180000000a001d2f1f2f1a0000040f000000180a0000290000000003010019000000600330027000000be103300197000000400030008c0000004005000039000000000503401900000005045002720000000504400210000019770000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b000019730000c13d0000001f05500190000019850000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f00020000000103550000000100200190000020a90000613d0000001f0130003900000be2011001970000001507000029000000130400002900000012050000290000000002a10019000000000012004b0000000001000019000000010100403900000be40020009c00001d7c0000213d000000010010019000001d7c0000c13d000000400020043f000000400030008c00001d7a0000413d00000c3c0020009c00001d7c0000213d0000004001200039000000400010043f00000000010a043300000c3a0010009c00001d7a0000213d0000000002120436000000000305043300000c3a0030009c00001d7a0000213d00000000047400190000000000320435000000000114004b00001f2c0000413d001800000001001d00000c18010000410000000000100439000000000100041200000004001004430000002400000443000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000400a00043d0000006402a00039000000180300002900000000003204350000001a0200002900000be3022001970000004403a00039000000000023043500000c3d0200004100000000002a04350000001b0200002900000be3022001970000000403a00039000000000023043500000be3021001970000002401a0003900000000002104350000008401a0003900000000000104350000000001000414000000040020008c000019d00000c13d0000000003000031000019fe0000013d00000be100a0009c00000be10300004100000000030a4019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c3e011001c7001b0000000a001d2f1f2f150000040f0000001b0a0000290000000003010019000000600330027000000be103300197000000400030008c0000004005000039000000000503401900000005045002720000000504400210000019ec0000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b000019e80000c13d0000001f05500190000019fa0000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f00020000000103550000000100200190000020400000613d0000001f0130003900000c22021001970000000001a20019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001d7a0000213d000000400030008c00001c830000813d00001d7a0000013d000000400200043d000000200120003900000c1d030000410000000000310435000000000100041000000be3011001970000004403200039000000000013043500000064010000390000000000120435000000640120003900000000000104350000002401200039000000000001043500000c1e0020009c00001d7c0000213d000000a001200039000000400010043f00000be301700197001b00000001001d2f1f2d7f0000040f0000001b0200002900000c2b010000410000000000100439001b00000002001d0000000400200443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000000001004b0000001a0400002900001d7a0000613d000000400500043d00000c420100004100000000001504350000000401500039000000000001043500000000010004140000001b02000029000000040020008c00001a400000c13d000000000300003100001a540000013d00000be10050009c001800000005001d00000be1030000410000000003054019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c1c011001c72f1f2f150000040f0000000003010019000000600330027000000be10030019d00000be10330019700020000000103550000000100200190000020b80000613d0000001a0400002900000018050000290000001f0130003900000c22021001970000000001520019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001d7a0000213d0000000002000414000000040040008c00001a670000c13d0000000003000031000000000200001900001a750000013d00000be10010009c00000be101008041000000400110021000000be10020009c00000be102008041000000c002200210000000000112019f00000000020400192f1f2f150000040f000000010220015f0002000000010355000000600110027000000be10010019d00000be103100197000000000003004b0000008004000039000000600100003900001aa30000613d00000be40030009c00001d7c0000213d0000001f0130003900000c22011001970000003f0110003900000c2204100197000000400100043d0000000004410019000000000014004b0000000005000019000000010500403900000be40040009c00001d7c0000213d000000010050019000001d7c0000c13d000000400040043f000000000431043600000002050003670000000506300272000000050660021000001a950000613d0000000007640019000000000805034f0000000009040019000000008a08043c0000000009a90436000000000079004b00001a910000c13d0000001f0330019000001aa30000613d000000000565034f00000000066400190000000303300210000000000706043300000000073701cf000000000737022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000373019f0000000000360435000000010020019000001c830000613d00001dd60000013d00000000010000190000000d020000290000000502200270000000000201001f000000000100041500000000011c004900000000010000020000001301000029000000ff0010019000001ac60000613d000000160100002900000be30210019700000c190020009c001500000002001d00001ae40000c13d00000c2601000041000000000010043900000000010004100000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c70000800a020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b001300000001001d0000001b0b00002900001b730000013d0000000f0100002900000c3301100197000000100200002900000c340020019800000c35020000410000000002006019000000000112019f000000400900043d0000002402900039000000000012043500000c36010000410000000003190436000000110100002900000c3301100197000000120200002900000c340020019800000c35020000410000000002006019000000000112019f00000004029000390000000000120435000000640190003900000000000104350000004401900039000000000001043500000000010004140000000400b0008c00001af00000c13d000000000300003100001b200000013d000000400900043d00000c25010000410000000004190436000000000100041000000be301100197000000040390003900000000001304350000000001000414000000040020008c00001b320000c13d000000000300003100001b620000013d00000be10090009c00000be1020000410000000002094019000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f00000c13011001c700000000020b0019001b00000009001d001500000003001d2f1f2f150000040f000000150a0000290000001b090000290000000003010019000000600330027000000be103300197000000200030008c00000020050000390000000005034019000000050450027200001b0d0000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b00001b090000c13d0000001f0550019000001b1c0000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f00020000000103550000000100200190000020d60000613d0000001f0130003900000c22021001970000000001920019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001d7a0000213d000000200030008c00001d7a0000413d00000000030904330000001a0400002900001c1f0000013d00000be10090009c00000be1030000410000000003094019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c1c011001c7001300000009001d000e00000004001d2f1f2f1a0000040f0000000e0a00002900000013090000290000000003010019000000600330027000000be103300197000000200030008c00000020050000390000000005034019000000050450027200001b4e0000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b00001b4a0000c13d0000001f0550019000001b5d0000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f000200000001035500000001002001900000001b0b000029000020f70000613d0000001f0130003900000c22021001970000000001920019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001d7a0000213d000000200030008c00001d7a0000413d0000000001090433001300000001001d00000c2b0100004100000000001004390000000400b00443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b000000000001004b0000001b03000029000000150500002900001d7a0000613d0000000f0100002900000c3301100197000000100200002900000c340020019800000c35020000410000000002006019000000000112019f000000400400043d0000002402400039000000000012043500000c36010000410000000000140435000000110100002900000c3301100197000000120200002900000c340020019800000c35020000410000000002006019000000000112019f0000000402400039000000000012043500000064014000390000000000010435000000440140003900000000000104350000000001000414000000040030008c00001ba20000c13d000000000300003100001bb70000013d00000be10040009c001200000004001d00000be1020000410000000002044019000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f00000c13011001c700000000020300192f1f2f150000040f0000000003010019000000600330027000000be10030019d00000be103300197000200000001035500000001002001900000207c0000613d000000150500002900000012040000290000001f0130003900000c22011001970000000009410019000000000019004b0000000002000019000000010200403900000be40090009c00001d7c0000213d000000010020019000001d7c0000c13d000000400090043f00000c240030009c00001d7a0000213d00000c190050009c00001bd50000c13d00000c2601000041000000000010043900000000010004100000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c70000800a020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b00001c1c0000013d00000c25020000410000000006290436000000000200041000000be302200197000000040490003900000000002404350000000002000414000000040050008c00001c100000613d00000be10090009c00000be1010000410000000001094019000000400110021000000be10020009c00000be102008041000000c002200210000000000112019f00000c1c011001c70000000002050019001b00000009001d001500000006001d2f1f2f1a0000040f000000150a0000290000001b090000290000000003010019000000600330027000000be103300197000000200030008c00000020050000390000000005034019000000050450027200001bfb0000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b00001bf70000c13d0000001f0550019000001c0a0000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f00020000000103550000000100200190000021060000613d0000001f0130003900000be2011001970000000002910019000000000012004b0000000001000019000000010100403900000be40020009c00001d7c0000213d000000010010019000001d7c0000c13d000000400020043f000000200030008c00001d7a0000413d0000000001090433000000130310006c0000001a0400002900001f2c0000413d00000be3074001970000000001000410000000000017004b00001c800000613d000000400200043d000000160100002900000be30110019700000c190010009c00001c2e0000c13d0000000001000414000000040040008c00001c3d0000c13d0000000003000031000000010200003900001c500000013d000000200520003900000c1a06000041000000000065043500000044052000390000000000350435000000240320003900000000007304350000004403000039000000000032043500000c090020009c00001d7c0000213d0000008003200039000000400030043f2f1f2d7f0000040f00001c800000013d00000be10020009c00000be102008041000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f000000000003004b00001c4a0000613d00000be8011001c70000800902000039000000000500001900001c4b0000013d00000000020400192f1f2f150000040f0002000000010355000000600110027000000be10010019d00000be103100197000000000003004b0000008004000039000000600100003900001c7e0000613d00000be40030009c00001d7c0000213d0000001f0130003900000c22011001970000003f0110003900000c2204100197000000400100043d0000000004410019000000000014004b0000000005000019000000010500403900000be40040009c00001d7c0000213d000000010050019000001d7c0000c13d000000400040043f000000000431043600000002050003670000000506300272000000050660021000001c700000613d0000000007640019000000000805034f0000000009040019000000008a08043c0000000009a90436000000000079004b00001c6c0000c13d0000001f0330019000001c7e0000613d000000000565034f00000000066400190000000303300210000000000706043300000000073701cf000000000737022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000373019f0000000000360435000000010020019000001dd60000613d00000000010004150000001801100069000000000100000200000000010004150000001c011000690000000001000002000012b10000013d0000000a0100002900000c190010009c000b00000003001d00001c990000c13d00000c2601000041000000000010043900000000010004110000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c70000800a020000392f1f2f1a0000040f000000010020019000001cf00000c13d00001d820000013d000000400900043d00000c25010000410000000004190436000000000100041100000be301100197000000040290003900000000001204350000000a020000290000000001000414000000040020008c00001ca60000c13d000000000300003100001cd60000013d00000be10090009c00000be1030000410000000003094019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c1c011001c7001c00000009001d001b00000004001d2f1f2f1a0000040f0000001b0a0000290000001c090000290000000003010019000000600330027000000be103300197000000200030008c000000200500003900000000050340190000001f0450018f000000050550027200001cc30000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b00001cbf0000c13d000000000004004b00001cd20000613d0000000505500210000000000651034f00000000055900190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000000000003001f0002000000010355000000010020019000001fd70000613d0000001f0130003900000c22021001970000000001920019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001d7a0000213d000000200030008c00001d7a0000413d000000010300008a000000080330014f0000000002090433000000000032004b00001f2c0000213d000000080220002900000c640020009c00001f2c0000213d0000000a02200039000000010020006c00001f8c0000413d000000030200002900000c190020009c00001d020000c13d00000c2601000041000000000010043900000007010000290000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c70000800a020000392f1f2f1a0000040f000000010020019000001d820000613d000000000101043b00001d4e0000013d000000400900043d00000c25010000410000000004190436000000070100002900000be301100197000000040390003900000000001304350000000001000414000000040020008c00001d0e0000c13d000000000300003100001d3e0000013d00000be10090009c00000be1030000410000000003094019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c1c011001c7001c00000009001d001b00000004001d2f1f2f1a0000040f0000001b0a0000290000001c090000290000000003010019000000600330027000000be103300197000000200030008c000000200500003900000000050340190000001f0450018f000000050550027200001d2b0000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b00001d270000c13d000000000004004b00001d3a0000613d0000000505500210000000000651034f00000000055900190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000000000003001f0002000000010355000000010020019000001fe60000613d0000001f0130003900000c22021001970000000001920019000000000021004b0000000002000019000000010200403900000be40010009c00001d7c0000213d000000010020019000001d7c0000c13d000000400010043f00000c240030009c00001d7a0000213d000000200030008c00001d7a0000413d00000000010904330000000403000029000000010400008a000000060240014f000000000023004b00001f2c0000213d00000004030000290000000602300029000000000021004b00001f2a0000413d000000000431004b00001f2c0000413d000000400100043d00000040021000390000000603000029000000000032043500000020021000390000000b0300002900000000003204350000006002100039001c00000004001d0000000000420435000000070200002900000be302200197000000000021043500000be10010009c00000be1010080410000004001100210000000000200041400000be10020009c00000be102008041000000c002200210000000000112019f00000c5d011001c70000800d02000039000000040300003900000c5e040000410000000005000411000000020600002900000005070000292f1f2f150000040f000000010020019000001d7a0000613d0000001c01000029000000000001042d000000000100001900002f210001043000000c1b0100004100000000001004350000004101000039000000040010043f00000c1c0100004100002f2100010430000000000001042f000000400100043d000000640210003900000c58030000410000000000320435000000440210003900000c5903000041000000000032043500000024021000390000002a0300003900001e730000013d00000c1b0100004100000000001004350000001201000039000000040010043f00000c1c0100004100002f2100010430000000640210003900000c46030000410000000000320435000000440210003900000c470300004100001e700000013d00000c0402000041000000000024043500000020020000390000000000210435000000440140003900000c4e02000041000000000021043500000024014000390000001302000039000000000021043500000be10040009c00000be104008041000000400140021000000c20011001c700002f2100010430000000400200043d0000001f0350018f000000050450027200001db40000613d00000005064002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001db00000c13d000000000003004b00001dc30000613d0000000504400210000000000141034f00000000044200190000000303300210000000000604043300000000063601cf000000000636022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000161019f00000000001404350000006001500210000020f20000013d000000400100043d000000440210003900000c5a03000041000000000032043500000024021000390000001d03000039000000000032043500000c0402000041000000000021043500000004021000390000002003000039000000000032043500000be10010009c00000be101008041000000400110021000000c20011001c700002f210001043000000be10040009c00000be1040080410000004002400210000000000101043300001e810000013d000000000001004b00001de30000613d00000be100a0009c00000be10a0080410000004002a0021000001e810000013d000000000001004b00001e7e0000c13d000000400300043d001c00000003001d00000c040100004100000000001304350000000401300039000000200200003900000000002104350000002402300039000000110100002900001f010000013d000000400200043d0000001f0430018f000000050530027200001df90000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001df50000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f0430018f000000050530027200001e080000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001e040000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f0340018f000000050540027200001e170000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001e130000c13d000000000003004b00001e260000613d0000000505500210000000000151034f00000000055200190000000303300210000000000605043300000000063601cf000000000636022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000161019f00000000001504350000006001400210000020f20000013d000000400200043d0000001f0430018f000000050530027200001e340000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001e300000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f0430018f000000050530027200001e430000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001e3f0000c13d000000000004004b000020f10000613d000020e40000013d000000000001004b00001ef80000613d00000be10090009c00000be109008041000000400290021000001e810000013d000000400200043d0000001f0430018f0000000505300272000000050550021000001e580000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001e540000c13d000000000004004b000020f10000613d000020e50000013d000000400200043d0000001f0430018f0000000505300272000000050550021000001e670000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001e630000c13d000000000004004b000020f10000613d000020e50000013d000000400100043d000000640210003900000c60030000410000000000320435000000440210003900000c6103000041000000000032043500000024021000390000002403000039000000000032043500000c0402000041000000000021043500000004021000390000002003000039000000000032043500000be10010009c00000be101008041000000400110021000000c13011001c700002f210001043000000be100c0009c00000be10c0080410000004002c0021000000be10010009c00000be1010080410000006001100210000000000121019f00002f2100010430000000400200043d0000001f0430018f0000000505300272000000050550021000001e920000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001e8e0000c13d000000000004004b000020f10000613d000020e50000013d000000400200043d0000001f0430018f0000000505300272000000050550021000001ea10000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001e9d0000c13d000000000004004b000020f10000613d000020e50000013d000000400200043d0000001f0430018f000000050530027200001eb00000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001eac0000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f04a0018f0000000505a00272000000050550021000001ebf0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001ebb0000c13d000000000004004b00001ecd0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001a00210000020f20000013d000000400200043d0000001f0430018f0000000505300272000000050550021000001edb0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001ed70000c13d000000000004004b000020f10000613d000020e50000013d000000400200043d0000001f0430018f0000000505300272000000050550021000001eea0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001ee60000c13d000000000004004b000020f10000613d000020e50000013d000000640210003900000c2e030000410000000000320435000000440210003900000c2f0300004100000000003204350000002402100039000000210300003900001e730000013d000000000001004b00001ddd0000c13d000000400300043d001c00000003001d00000c04010000410000000000130435000000040130003900000020020000390000000000210435000000240230003900000013010000292f1f2e940000040f0000001c02000029000000000121004900000be10010009c00000be10100804100000be10020009c00000be10200804100000060011002100000004002200210000000000121019f00002f2100010430000000400200043d0000001f0430018f0000000505300272000000050550021000001f180000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001f140000c13d000000000004004b000020f10000613d000020e50000013d000000400200043d0000001f0430018f0000000505300272000000050550021000001f270000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001f230000c13d000000000004004b000020f10000613d000020e50000013d000000000131004b00001f950000813d00000c1b0100004100000000001004350000001101000039000000040010043f00000c1c0100004100002f2100010430000000400200043d0000001f0430018f0000000505300272000000050550021000001f3e0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001f3a0000c13d000000000004004b000020f10000613d000020e50000013d000000400200043d0000001f0430018f0000000505300272000000050550021000001f4d0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001f490000c13d000000000004004b000020f10000613d000020e50000013d000000400200043d0000001f0430018f000000050530027200001f5c0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001f580000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f0430018f000000050530027200001f6b0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001f670000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f0430018f000000050530027200001f7a0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001f760000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f0430018f0000000505300272000000050550021000001f890000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001f850000c13d000000000004004b000020f10000613d000020e50000013d000000640210003900000c5b030000410000000000320435000000440210003900000c5c03000041000000000032043500000024021000390000002f0300003900001e730000013d000000400200043d00000c5f0300004100000000003204350000000403200039000000000013043500000be10020009c00000be102008041000000400120021000000c1c011001c700002f210001043000000c0401000041000000000019043500000020010000390000000000140435000000440190003900000c4e02000041000000000021043500000024019000390000001302000039000000000021043500000be10090009c00000be109008041000000400190021000000c20011001c700002f21000104300000008001000039000000600200003900000be10010009c00000be1010080410000004001100210000000000202043300000be10020009c00000be1020080410000006002200210000000000112019f00002f2100010430000000400200043d0000001f0430018f000000050530027200001fc50000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001fc10000c13d000000000004004b000020e40000c13d000020f10000013d000000400200043d0000001f0430018f000000050530027200001fd40000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001fd00000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f0430018f000000050530027200001fe30000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001fdf0000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f0430018f000000050530027200001ff20000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001fee0000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f0430018f00000005053002720000000505500210000020010000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00001ffd0000c13d000000000004004b000020f10000613d000020e50000013d000000400200043d0000001f0430018f00000005053002720000000505500210000020100000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000200c0000c13d000000000004004b000020f10000613d000020e50000013d000000400200043d0000001f0430018f000000050530027200000005055002100000201f0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000201b0000c13d000000000004004b000020f10000613d000020e50000013d000000400200043d0000001f0430018f000000050530027200000005055002100000202e0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000202a0000c13d000000000004004b000020f10000613d000020e50000013d000000400200043d0000001f0430018f000000050530027200000005055002100000203d0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000020390000c13d000000000004004b000020f10000613d000020e50000013d000000400200043d0000001f0430018f00000005053002720000204c0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000020480000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f0430018f00000005053002720000205b0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000020570000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f0430018f000000050530027200000005055002100000206a0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000020660000c13d000000000004004b000020f10000613d000020e50000013d000000400200043d0000001f0430018f00000005053002720000000505500210000020790000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000020750000c13d000000000004004b000020f10000613d000020e50000013d000000400200043d0000001f0430018f00000005053002720000000505500210000020880000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000020840000c13d000000000004004b000020f10000613d000020e50000013d000000400200043d0000001f0430018f0000000505300272000020970000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000020930000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f0430018f0000000505300272000020a60000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000020a20000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f0430018f0000000505300272000020b50000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000020b10000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f0430018f0000000505300272000020c40000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000020c00000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f0430018f0000000505300272000020d30000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000020cf0000c13d000000000004004b000020f10000613d000020e40000013d000000400200043d0000001f0430018f0000000505300272000020e20000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000020de0000c13d000000000004004b000020f10000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f0000000000150435000000600130021000000be10020009c00000be1020080410000004002200210000000000112019f00002f2100010430000000400200043d0000001f0430018f00000005053002720000000505500210000021030000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000020ff0000c13d000000000004004b000020f10000613d000020e50000013d000000400200043d0000001f0430018f00000005053002720000000505500210000021120000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b0000210e0000c13d000000000004004b000020f10000613d000020e50000013d0014000000000002000000000501043300000001065000390000000005060433000d00000001001d0000000000610435000c00ff0050019400002be30000613d000f0be30030019b000e0be30020019b00000000020000190000212c0000013d000000010020019000002c2b0000613d00000000010004150000000a01100069000000000100000200000012010000290000001004100069000000110200002900000001022000390000000c0020006c00002be30000813d001100000002001d0000000d050000290000000007050433000000020270003900000000010204330000000000250435000000030270003900000000030204330000000000250435000000ff0230018f000000050020008c0000ffff0110a18f000000000941a0a90000ffff0190a11a001200000001a01d001000000004a01d00000bdb0002a13e00002bf30000013d00000017017000390000000002010433000000000015043500000018017000390000000003010433000a00000003001d00000000001504350000002c017000390000000003010433000800000003001d00000000001504350000002f017000390000000003010433000900000003001d000000000015043500000be3062001970000000e010000290000000002000410000000000021004b000b00000006001d000022ba0000c13d000000400200043d000000200120003900000c1a030000410000000000310435000000440120003900000012030000290000000000310435000000240120003900000000006104350000004401000039000000000012043500000c090020009c00002be40000213d0000008001200039000022ce0000013d0000001701700039000000000301043300000000001504350000001801700039000000000801043300000000001504350000002c017000390000000006010433000000000015043500000000020004110000000e0020006b0000218a0000c13d000b00000003001d000000400200043d000000200120003900000c1d030000410000000000310435000000640120003900000012030000290000000000310435000000000100041000000be3011001970000004403200039000000000013043500000024012000390000000e0300002900000000003104350000006401000039000000000012043500000c1e0020009c00002be40000213d000000a001200039000000400010043f0000000f01000029000a00000006001d000900000008001d2f1f2d7f0000040f00000009080000290000000a060000290000000b0300002900000be3023001970000000203000039000000000103041a00000be701100197000000000121019f000000000013041b000000400400043d000000200100003900000000011404360000000f03000029000000000031043500000c3c0040009c00002be40000213d000000ff00800190000000400a4000390000004000a0043f00000c430300004100000000003a0435000000c403400039000000a005000039000000000053043500000c450300004100000c440300c041000000a40540003900000000003504350000008403400039000000120500002900000000005304350000000003000019000000010300c0390000006405400039000000000035043500000be30360019700000044054000390000000000350435000000e40540003900000000030404330000000000350435000000000003004b000021be0000613d0000010404400039000000000500001900000000064500190000000007150019000000000707043300000000007604350000002005500039000000000035004b000021b40000413d000021be0000a13d000000000143001900000000000104350000000001000414000000040020008c000024390000c13d00000000030000310000246d0000013d000000040170003900000000020104330000000000150435000000180170003900000000060104330000000000150435000000020120018f0000000100200190000022da0000c13d000000000001004b0000258e0000c13d000a00000009001d000b00000006001d00000000020004110000000e0020006b000021e90000c13d000000400200043d000000200120003900000c1d030000410000000000310435000000640120003900000012030000290000000000310435000000000100041000000be3011001970000004403200039000000000013043500000024012000390000000e0300002900000000003104350000006401000039000000000012043500000c1e0020009c00002be40000213d000000a001200039000000400010043f0000000f010000292f1f2d7f0000040f00000c2b0100004100000000001004390000000f010000290000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000002bec0000613d000000000101043b000000000001004b0000000b060000290000000a0900002900002bea0000613d000000400400043d00000c4201000041000000000014043500000004014000390000001202000029000000000021043500000000010004140000000f02000029000000040020008c0000274d0000c13d0000000003000031000027620000013d00000004017000390000000002010433000000000015043500000018017000390000000003010433000b00000003001d0000000000150435000000ff00200190000024aa0000613d00000c180100004100000000001004390000000001000412000000040010044300000024000004430000000e010000290000000002000410000000000021004b000024e40000c13d000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000002bec0000613d000000000101043b000000400200043d000000200320003900000c1a04000041000000000043043500000044032000390000001204000029000000000043043500000be301100197000000240320003900000000001304350000004401000039000000000012043500000c090020009c00002be40000213d0000008001200039000025030000013d00000017017000390000000008010433000000000015043500000037047000390000000001040433000000000141001900000000001504350000000e0000006b000024e20000613d000900000004001d000a00000008001d000b00000007001d00000c18010000410000000000100439000000000100041200000004001004430000002400000443000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000002bec0000613d000000000101043b00000c2b02000041000000000020043900000be301100197000800000001001d0000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000002bec0000613d000000000101043b000000000001004b0000000b070000290000000a08000029000000090400002900002bea0000613d000000400500043d00000064015000390000001202000029000000000021043500000be3018001970000004402500039000000000012043500000024015000390000000e02000029000000000021043500000c5301000041000000000015043500000004015000390000000f02000029000000000021043500000000010004140000000802000029000000040020008c000025080000c13d00000000030000310000251e0000013d0000000001000415000a00000001001d00000000010504330000001402100039000000000c020433000000000025043500000015021000390000000008020433000000000025043500000016021000390000000003020433000000000025043500000017021000390000000006050019000000000502043300000000002604350000002b021000390000000007020433000b00000007001d00000000002604350000003f011000390000000002010433000900000002001d00000000001604350000008000500190000000800100008a000000000601001900000000060060190000008000300190000000000201001900000000020060190000007f0130018f0000000003020019000000000b13019f0000007f0150018f000000000516019f0000000f0100002900000c190010009c000022ff0000c13d000000400a00043d0000004401a000390000001202000029000000000021043500000c330150019700000c340060019800000c35020000410000000002006019000000000112019f0000002402a00039000000000012043500000c360100004100000000061a043600000c3301b0019700000c340030019800000c35020000410000000002006019000000000112019f0000000402a0003900000000001204350000006401a000390000000000010435000000000100041400000be305c00197000000040050008c000025900000c13d00000000030000310000272e0000013d0000000002000411000000000021004b000022d20000c13d000000400200043d000000200120003900000c1d0300004100000000003104350000006401200039000000120300002900000000003104350000004401200039000000000061043500000024012000390000000e0300002900000000003104350000006401000039000000000012043500000c1e0020009c00002be40000213d000000a001200039000000400010043f0000000f010000292f1f2d7f0000040f0000000b06000029000000400a00043d00000c480100004100000000041a04360000000001000414000000040060008c0000233a0000c13d00000000030000310000236c0000013d0000002c0270003900000000070204330000000000250435000000000001004b000029f40000c13d000a00000009001d000b00000006001d00000c2b010000410000000000100439000900000007001d00000be301700197000800000001001d0000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000002bec0000613d000000000101043b000000000001004b0000000b060000290000000a03000029000000090700002900002bea0000613d000000400400043d00000c4001000041000000000014043500000000010004140000000805000029000000040050008c0000273f0000c13d0000000003000031000029e70000013d000600000008001d000300000005001d000400000006001d000500000003001d00000000020004110000000e0020006b00080000000b001d000023200000c13d00070000000c001d000000400200043d000000200120003900000c1d030000410000000000310435000000640120003900000012030000290000000000310435000000000100041000000be3011001970000004403200039000000000013043500000024012000390000000e0300002900000000003104350000006401000039000000000012043500000c650020009c00002be40000813d000000a001200039000000400010043f0000000f010000292f1f2d7f0000040f000000080b000029000000070c000029000000000d000415000000400200043d000000440120003900000012030000290000000000310435000000200120003900000c320300004100000000003104350000004403000039000000000032043500000be30cc0019700000024032000390000000000c3043500000c090020009c00002be40000213d0000008003200039000000400030043f000000000302043300000000040004140000000f02000029000000040020008c00070000000c001d0000259f0000c13d00000000010000310000000102000039000025b40000013d000600000004001d00000be100a0009c00000be10200004100000000020a4019000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f00000c41011001c7000000000206001900070000000a001d2f1f2f1a0000040f000000070a0000290000000003010019000000600330027000000be103300197000000600030008c0000006005000039000000000503401900000005045002720000000504400210000023580000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b000023540000c13d0000001f05500190000023660000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000002c340000613d0000000b0600002900000006040000290000001f0130003900000c22011001970000000009a10019000000000019004b0000000002000019000000010200403900000be40090009c00002be40000213d000000010020019000002be40000c13d000000400090043f00000c240030009c00002bea0000213d000000600030008c00002bea0000413d00000000070a043300000c490070009c00002bea0000213d000000000204043300000c490020009c00002bea0000213d0000004004a00039000000000404043300000be10040009c00002bea0000213d0000000404900039000000000007004b00002c030000613d000000000002004b00002c030000613d00000c2505000041000000000a59043600000000006404350000000a04000029000000ff0540018f000000010050008c00000000080700190000000008026019000000000702c01900000000040004140000000f02000029000000040020008c000023cf0000613d000700000008001d000400000005001d000500000007001d00000be10090009c00000be1010000410000000001094019000000400110021000000be10040009c00000be104008041000000c003400210000000000113019f00000c1c011001c7000a00000009001d00060000000a001d2f1f2f1a0000040f000000060a0000290000000a090000290000000003010019000000600330027000000be103300197000000200030008c000000200500003900000000050340190000000504500272000023b60000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b000023b20000c13d0000001f05500190000023c50000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f00020000000103550000000100200190000000070800002900002c430000613d0000001f0130003900000be2011001970000000b06000029000000050700002900000004050000290000000004910019000000000014004b0000000001000019000000010100403900000be40040009c00002be40000213d000000010010019000002be40000c13d000000400040043f000000200030008c00002bea0000413d0000000002090433000000000172004b00002bed0000413d000000090300002900000c4a0330019700000c4b0030009c00002bed0000213d00000c4b03300099000000000072004b000023e70000613d00000c6302100129000000000032004b00002bed0000413d00000000013100aa000023ec0000613d00000c6302100129000000000082004b00002bed0000413d00000c630310016700000c4b027000d1000000000032004b00002bed0000213d000000000221001a00002c120000613d00000000018100a900000000012100d9000000010050008c00000000020000190000000002016019000700000002001d0000000001006019000900000001001d00000c4c0040009c00002be40000213d0000002001400039000600000001001d000000400010043f000a00000004001d000000000004043500000c2b0100004100000000001004390000000400600443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000002bec0000613d000000000101043b000000000001004b0000000b060000290000000a0300002900002bea0000613d000000400700043d000000640170003900000080020000390000000000210435000000080100002900000be3011001970000004402700039000000000012043500000024017000390000000702000029000000000021043500000c4d010000410000000000170435000000040170003900000009020000290000000000210435000000000103043300000084027000390000000000120435000000000001004b0000000608000029000024340000613d000000a402700039000000000300001900000000042300190000000005830019000000000505043300000000005404350000002003300039000000000013004b0000242a0000413d000024340000a13d000000000221001900000000000204350000000002000414000000040060008c000024820000c13d00000000030000310000249c0000013d0000001f0330003900000c2203300197000000c40330003900000be10030009c00000be103008041000000600330021000000be100a0009c00000be10400004100000000040a40190000004004400210000000000343019f00000be10010009c00000be101008041000000c001100210000000000131019f000b0000000a001d2f1f2f150000040f0000000b0a0000290000000003010019000000600330027000000be103300197000000400030008c00000040050000390000000005034019000000050450027200000005044002100000245b0000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b000024570000c13d0000001f05500190000024690000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000002c520000613d0000001f0130003900000c22021001970000000001a20019000000000021004b0000000002000019000000010200403900000be40010009c00002be40000213d000000010020019000002be40000c13d000000400010043f00000c240030009c00002bea0000213d000000400030008c00002bea0000413d0000000202000039000000000202041a00000be302200197000000010020008c000021260000613d00002c180000013d0000001f0110003900000c2201100197000000a40110003900000be10010009c00000be101008041000000600110021000000be10070009c000a00000007001d00000be10300004100000000030740190000004003300210000000000131019f00000be10020009c00000be102008041000000c002200210000000000112019f00000000020600192f1f2f150000040f0000000003010019000000600330027000000be10030019d00000be1033001970002000000010355000000010020019000002c610000613d0000000a070000290000001f0130003900000c22021001970000000001720019000000000021004b0000000002000019000000010200403900000be40010009c00002be40000213d000000010020019000002be40000c13d000000400010043f00000c240030009c000021260000a13d00002bea0000013d0000000e0000006b000026e10000613d00000c18010000410000000000100439000000000100041200000004001004430000002400000443000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000002bec0000613d000000000101043b00000c2b02000041000000000020043900000be301100197000900000001001d0000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000002bec0000613d000000000101043b000000000001004b00002bea0000613d000000400500043d00000064015000390000001202000029000000000021043500000024015000390000000e02000029000000000021043500000c5301000041000000000015043500000004015000390000000f020000290000000000210435000000000100041000000be3041001970000004401500039000000000041043500000000010004140000000902000029000000040020008c000027bb0000c13d0000000003000031000027d00000013d000000400900043d0000252b0000013d0000000002000411000000000021004b000026ca0000c13d000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000002bec0000613d000000000101043b000000400200043d000000200320003900000c1d04000041000000000043043500000064032000390000001204000029000000000043043500000be3011001970000004403200039000000000013043500000024012000390000000e0300002900000000003104350000006401000039000000000012043500000c1e0020009c00002be40000213d000000a001200039000000400010043f0000000f010000292f1f2d7f0000040f0000001201000029000028d60000013d00000be10050009c000700000005001d00000be1030000410000000003054019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c13011001c72f1f2f150000040f0000000003010019000000600330027000000be10030019d00000be1033001970002000000010355000000010020019000002c7f0000613d0000000b070000290000000a08000029000000090400002900000007050000290000001f0130003900000c22011001970000000009510019000000000019004b0000000001000019000000010100403900000be40090009c00002be40000213d000000010010019000002be40000c13d000000400090043f00000c240030009c00002bea0000213d00000c3701000041000000000a1904360000000401900039000000200200003900000000002104350000000001040433000000240290003900000000001204350000004403900039000000000001004b000025420000613d0000005702700039000000000400001900000000053400190000000006420019000000000606043300000000006504350000002004400039000000000014004b000025380000413d000025420000a13d00000000023100190000000000020435000000000400041400000be302800197000000040020008c000025480000c13d00000000030000310000257e0000013d0000001f0110003900000c22011001970000000001910049000000000131001900000be10010009c00000be101008041000000600110021000000be10090009c00000be10300004100000000030940190000004003300210000000000131019f00000be10040009c00000be104008041000000c003400210000000000131019f000b00000009001d000a0000000a001d2f1f2f150000040f0000000a0a0000290000000b090000290000000003010019000000600330027000000be103300197000000200030008c0000002005000039000000000503401900000005045002720000256b0000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b000025670000c13d0000001f055001900000257a0000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000002c700000613d0000001f0130003900000c22021001970000000001920019000000000021004b0000000002000019000000010200403900000be40010009c00002be40000213d000000010020019000002be40000c13d000000400010043f00000c240030009c00002bea0000213d000000200030008c000021260000813d00002bea0000013d000000400100043d0000276f0000013d000700000006001d00000be100a0009c00080000000a001d00000be10200004100000000020a4019000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f0000ffff0090008c000027050000813d00000c13011001c700000000020500190000270a0000013d00000be10010009c00000be101008041000000400110021000000be10030009c00000be1030080410000006003300210000000000113019f00000be10040009c00000be104008041000000c003400210000000000131019f00020000000d001d2f1f2f150000040f000000020d000029000000070c000029000000080b000029000000010220018f0002000000010355000000600110027000000be10010019d00000be101100197000000000001004b00000080030000390000006004000039000025e20000613d00000be40010009c00002be40000213d0000001f0310003900000c22033001970000003f0330003900000c2203300197000000400400043d0000000003340019000000000043004b0000000005000019000000010500403900000be40030009c00002be40000213d000000010050019000002be40000c13d000000400030043f0000000003140436000000020500036700000005061002720000000506600210000025d40000613d0000000007630019000000000805034f0000000009030019000000008a08043c0000000009a90436000000000079004b000025d00000c13d0000001f07100190000025e20000613d000000000565034f00000000066300190000000307700210000000000806043300000000087801cf000000000878022f000000000505043b0000010007700089000000000575022f00000000057501cf000000000585019f0000000000560435000000000002004b000025f30000613d0000000002040433000000000002004b00002a0d0000613d00000c240020009c00002bea0000213d0000001f0020008c00002bea0000a13d0000000002030433000000000002004b0000000003000019000000010300c039000000000032004b00002bea0000c13d000000000002004b00002a0d0000c13d000000400200043d000000200320003900000c3204000041000000000043043500000024042000390000000000c40435000000440400003900000000004204350000004404200039000000000004043500000c090020009c00002be40000213d0000008004200039000000400040043f000000000502043300000000040004140000000f02000029000000040020008c00000001020000390000261d0000613d00000be10030009c00000be103008041000000400130021000000be10050009c00000be1050080410000006002500210000000000112019f00000be10040009c00000be104008041000000c002400210000000000121019f0000000f0200002900020000000d001d2f1f2f150000040f000000020d000029000000070c000029000000080b000029000000010220018f0002000000010355000000600110027000000be10010019d00000be101100197000000000001004b00000080030000390000006004000039000026490000613d0000001f0310003900000c22033001970000003f0330003900000c2203300197000000400400043d0000000003340019000000000043004b0000000005000019000000010500403900000be40030009c00002be40000213d000000010050019000002be40000c13d000000400030043f00000000031404360000000205000367000000050610027200000005066002100000263b0000613d0000000007630019000000000805034f0000000009030019000000008a08043c0000000009a90436000000000079004b000026370000c13d0000001f07100190000026490000613d000000000565034f00000000066300190000000307700210000000000806043300000000087801cf000000000878022f000000000505043b0000010007700089000000000575022f00000000057501cf000000000585019f0000000000560435000000000002004b00002a0d0000613d000000000e000415000000140ee0008a000000050ee002100000000002040433000000000002004b000026600000613d00000c240020009c00002bea0000213d000000200020008c00002bea0000413d0000000002030433000000000002004b0000000003000019000000010300c039000000000032004b00002bea0000c13d000000000e000415000000130ee0008a000000050ee00210000000000002004b00002a0d0000613d000000400200043d000000440320003900000012040000290000000000430435000000200320003900000c3204000041000000000043043500000024042000390000000000c404350000004404000039000000000042043500000c090020009c00002be40000213d0000008004200039000000400040043f000000000502043300000000040004140000000f02000029000000040020008c00000001020000390000268d0000613d00000be10030009c00000be103008041000000400130021000000be10050009c00000be1050080410000006002500210000000000112019f00000be10040009c00000be104008041000000c002400210000000000121019f0000000f0200002900020000000d001d00010000000e001d2f1f2f150000040f000000010e000029000000020d000029000000070c000029000000080b000029000000010220018f0002000000010355000000600110027000000be10010019d00000be101100197000000000001004b00000080030000390000006004000039000026b90000613d0000001f0310003900000c22033001970000003f0330003900000c2203300197000000400400043d0000000003340019000000000043004b0000000005000019000000010500403900000be40030009c00002be40000213d000000010050019000002be40000c13d000000400030043f0000000003140436000000020500036700000005061002720000000506600210000026ab0000613d0000000007630019000000000805034f0000000009030019000000008a08043c0000000009a90436000000000079004b000026a70000c13d0000001f01100190000026b90000613d000000000565034f00000000066300190000000301100210000000000706043300000000071701cf000000000717022f000000000505043b0000010001100089000000000515022f00000000011501cf000000000171019f0000000000160435000000000002004b00002a0a0000613d0000000002040433000000000002004b000000010100003900002a0b0000613d00000c240020009c00002bea0000213d000000200020008c00002bea0000413d0000000001030433000000000001004b0000000002000019000000010200c039000000000021004b00002a0b0000613d00002bea0000013d000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000002bec0000613d000000000101043b000000400900043d00000c2502000041000000000429043600000be3061001970000000401900039000000000061043500000000010004140000000f02000029000000040020008c000a00000006001d000027df0000c13d00000000030000310000280f0000013d000000400300043d00000c30010000410000000001130436000800000001001d00000004013000390000000f020000290000000000210435000000000100041000000be302100197000900000003001d0000002401300039000a00000002001d000000000021043500000c18010000410000000000100439000000000100041200000004001004430000002400000443000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000002bec0000613d000000000201043b000000000100041400000be302200197000000040020008c000029360000c13d00000000030000310000000a040000290000000909000029000029640000013d00000c50011001c700008009020000390000001203000029000000000405001900000000050000192f1f2f150000040f0000000003010019000000600330027000000be103300197000000200030008c000000200500003900000000050340190000000504500272000000080a00002900000007090000290000271b0000613d000000000601034f00000000070a0019000000006806043c0000000007870436000000000097004b000027170000c13d0000001f055001900000272a0000613d0000000504400210000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000002c9d0000613d0000001f0130003900000c22021001970000000001a20019000000000021004b0000000002000019000000010200403900000be40010009c00002be40000213d000000010020019000002be40000c13d000000400010043f00000c240030009c00002bea0000213d000000200030008c00002bea0000413d00000000030a043300002b800000013d00000be10040009c000700000004001d00000be1020000410000000002044019000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f0000ffff0030008c000029d70000813d00000c41011001c70000000002050019000029dc0000013d00000be10040009c000900000004001d00000be1030000410000000003044019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c1c011001c72f1f2f150000040f0000000003010019000000600330027000000be10030019d00000be1033001970002000000010355000000010020019000002cca0000613d0000000b060000290000000a0900002900000009040000290000001f0130003900000c22021001970000000001420019000000000021004b0000000002000019000000010200403900000be40010009c00002be40000213d000000010020019000002be40000c13d000000400010043f00000c240030009c00002bea0000213d0000000002000414000000040060008c000027750000c13d000000000300003100000001020000390000278a0000013d00000be10010009c00000be101008041000000400110021000000be10020009c00000be102008041000000c002200210000000000112019f0000ffff0090008c000027800000813d0000000002060019000027850000013d00000be8011001c700008009020000390000001203000029000000000406001900000000050000192f1f2f150000040f0002000000010355000000600110027000000be10010019d00000be103100197000000000003004b00000080040000390000006001000039000027b80000613d00000be40030009c00002be40000213d0000001f0130003900000c22011001970000003f0110003900000c2204100197000000400100043d0000000004410019000000000014004b0000000005000019000000010500403900000be40040009c00002be40000213d000000010050019000002be40000c13d000000400040043f0000000004310436000000020500036700000005063002720000000506600210000027aa0000613d0000000007640019000000000805034f0000000009040019000000008a08043c0000000009a90436000000000079004b000027a60000c13d0000001f03300190000027b80000613d000000000565034f00000000066400190000000303300210000000000706043300000000073701cf000000000737022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000373019f00000000003604350000000100200190000021260000c13d00002c2b0000013d000a00000004001d00000be10050009c000800000005001d00000be1030000410000000003054019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c13011001c72f1f2f150000040f0000000003010019000000600330027000000be10030019d00000be1033001970002000000010355000000010020019000002ce80000613d0000000a0400002900000008050000290000001f0130003900000c22011001970000000005510019000000000015004b0000000001000019000000010100403900000be40050009c00002be40000213d000000010010019000002be40000c13d000000400050043f00000c240030009c0000001201000029000029740000a13d00002bea0000013d00000be10090009c00000be1030000410000000003094019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c1c011001c7000900000009001d000800000004001d2f1f2f1a0000040f000000080a00002900000009090000290000000003010019000000600330027000000be103300197000000200030008c000000200500003900000000050340190000000504500272000027fb0000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b000027f70000c13d0000001f055001900000280a0000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000002d060000613d0000000a060000290000001f0130003900000c2201100197000000000a91001900000000001a004b0000000002000019000000010200403900000be400a0009c00002be40000213d000000010020019000002be40000c13d0000004000a0043f00000c240030009c00002bea0000213d000000200030008c00002bea0000413d000000000709043300000c380200004100000000052a04360000000402a000390000000f0400002900000000004204350000000002000414000000040060008c000900000007001d0000285d0000613d000700000005001d00000be100a0009c00000be10100004100000000010a4019000000400110021000000be10020009c00000be102008041000000c002200210000000000112019f00000c1c011001c7000000000206001900080000000a001d2f1f2f1a0000040f000000080a0000290000000003010019000000600330027000000be103300197000000600030008c0000006005000039000000000503401900000005045002720000000504400210000028460000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b000028420000c13d0000001f05500190000028540000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000002d150000613d0000001f0130003900000be2011001970000000a06000029000000090700002900000007050000290000000002a10019000000000012004b0000000004000019000000010400403900000be40020009c00002be40000213d000000010040019000002be40000c13d000000400020043f000000600030008c00002bea0000413d00000c390020009c00002be40000213d0000006004200039000000400040043f00000000040a043300000be40040009c00002bea0000213d0000000004420436000000000505043300000be40050009c00002bea0000213d00000000005404350000004004a00039000000000504043300000c3a0050009c00002bea0000213d0000004002200039000000000052043500000c6302500167000000000027004b00002bed0000213d000000400a00043d00000c3b0200004100000000082a04360000000402a000390000000f0400002900000000004204350000000002000414000000040060008c000028bc0000613d000800000008001d000700000005001d00000be100a0009c00000be10100004100000000010a4019000000400110021000000be10020009c00000be102008041000000c002200210000000000112019f00000c1c011001c70000000002060019000a0000000a001d2f1f2f1a0000040f0000000a0a0000290000000003010019000000600330027000000be103300197000000400030008c0000004005000039000000000503401900000005045002720000000504400210000028a50000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b000028a10000c13d0000001f05500190000028b30000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f00020000000103550000000100200190000000080800002900002d240000613d0000001f0130003900000be201100197000000090700002900000007050000290000000002a10019000000000012004b0000000001000019000000010100403900000be40020009c00002be40000213d000000010010019000002be40000c13d000000400020043f000000400030008c00002bea0000413d00000c3c0020009c00002be40000213d0000004001200039000000400010043f00000000010a043300000c3a0010009c00002bea0000213d0000000002120436000000000308043300000c3a0030009c00002bea0000213d00000000047500190000000000320435000000000114004b00002bed0000413d000a00000001001d00000c18010000410000000000100439000000000100041200000004001004430000002400000443000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000002bec0000613d000000000101043b000000400a00043d0000006402a000390000000a0300002900000000003204350000000b0200002900000be3022001970000004403a00039000000000023043500000c3d0200004100000000002a04350000000402a000390000000f03000029000000000032043500000be3021001970000002401a0003900000000002104350000008401a0003900000000000104350000000001000414000000040020008c000028fd0000c13d00000000030000310000292b0000013d00000be100a0009c00000be10300004100000000030a4019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c3e011001c7000b0000000a001d2f1f2f150000040f0000000b0a0000290000000003010019000000600330027000000be103300197000000400030008c0000004005000039000000000503401900000005045002720000000504400210000029190000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b000029150000c13d0000001f05500190000029270000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000002c8e0000613d0000001f0130003900000c22021001970000000001a20019000000000021004b0000000002000019000000010200403900000be40010009c00002be40000213d000000010020019000002be40000c13d000029d10000013d000000090300002900000be10030009c00000be103008041000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c29011001c72f1f2f1a0000040f00000009090000290000000003010019000000600330027000000be103300197000000200030008c000000200500003900000000050340190000000504500272000000080a000029000029500000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b0000294c0000c13d0000001f055001900000295f0000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000002d630000613d0000000a040000290000001f0130003900000c22011001970000000005910019000000000015004b0000000001000019000000010100403900000be40050009c00002be40000213d000000010010019000002be40000c13d000000400050043f00000c240030009c00002bea0000213d000000200030008c00002bea0000413d0000000001090433000000840250003900000000001204350000000b0100002900000be301100197000000440250003900000000001204350000002401500039000000000041043500000c3f01000041000000000015043500000004015000390000000f020000290000000000210435000a00000005001d0000006401500039000000000001043500000c18010000410000000000100439000000000100041200000004001004430000002400000443000000000100041400000be10010009c00000be101008041000000c00110021000000c31011001c700008005020000392f1f2f1a0000040f000000010020019000002bec0000613d000000000201043b000000000100041400000be302200197000000040020008c0000299a0000c13d00000000030000310000000a0a000029000029c70000013d0000000a0300002900000be10030009c00000be103008041000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c3e011001c72f1f2f150000040f0000000a0a0000290000000003010019000000600330027000000be103300197000000400030008c0000004005000039000000000503401900000005045002720000000504400210000029b50000613d00000000064a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b000029b10000c13d0000001f05500190000029c30000613d000000000641034f00000000044a00190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000002cac0000613d0000001f0130003900000c22021001970000000001a20019000000000021004b0000000002000019000000010200403900000be40010009c00002be40000213d000000010020019000002be40000c13d000000400010043f00000c240030009c00002bea0000213d000000400030008c000021260000813d00002bea0000013d00000c57011001c700008009020000390000001203000029000000000405001900000000050000192f1f2f150000040f00020000000103550000000003010019000000600330027000000be10030019d00000be1033001970000000100200190000000090700002900002cd90000613d0000000b0600002900000007040000290000001f0130003900000c22021001970000000001420019000000000021004b0000000002000019000000010200403900000be40010009c00002be40000213d000000010020019000002be40000c13d000000400010043f00000c240030009c00002bea0000213d00000be3016001970000000002000410000000000021004b000021260000613d000000400200043d000000200320003900000c1a040000410000000000430435000000440320003900000012040000290000000000430435000000240320003900000000001304350000004401000039000000000012043500000c090020009c00002be40000213d0000008001200039000000400010043f00000be3017001972f1f2d7f0000040f000021260000013d00000000010000190000000502e00270000000000201001f000000000100041500000000011d004900000000010000020000000601000029000000ff0010019000002a290000613d000000090100002900000be30210019700000c190020009c000600000002001d00002a470000c13d00000c2601000041000000000010043900000000010004100000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c70000800a020000392f1f2f1a0000040f000000010020019000002bec0000613d000000000101043b000200000001001d000000070c00002900002ad50000013d000000400900043d000000440190003900000012020000290000000000210435000000030100002900000c3301100197000000040200002900000c340020019800000c35020000410000000002006019000000000112019f0000002402900039000000000012043500000c3601000041000000000319043600000c3301b00197000000050200002900000c340020019800000c35020000410000000002006019000000000112019f000000040290003900000000001204350000006401900039000000000001043500000000010004140000000400c0008c00002a530000c13d000000000300003100002a830000013d000000400900043d00000c25010000410000000004190436000000000100041000000be301100197000000040390003900000000001304350000000001000414000000040020008c00002a940000c13d000000000300003100002ac40000013d00000be10090009c00000be1020000410000000002094019000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f00000c13011001c700000000020c0019000800000009001d000700000003001d2f1f2f150000040f000000070a00002900000008090000290000000003010019000000600330027000000be103300197000000200030008c00000020050000390000000005034019000000050450027200002a700000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b00002a6c0000c13d0000001f0550019000002a7f0000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000002cf70000613d0000001f0130003900000c22021001970000000001920019000000000021004b0000000002000019000000010200403900000be40010009c00002be40000213d000000010020019000002be40000c13d000000400010043f00000c240030009c00002bea0000213d000000200030008c00002bea0000413d000000000309043300002b800000013d00000be10090009c00000be1030000410000000003094019000000400330021000000be10010009c00000be101008041000000c001100210000000000131019f00000c1c011001c7000200000009001d000100000004001d2f1f2f1a0000040f000000010a00002900000002090000290000000003010019000000600330027000000be103300197000000200030008c00000020050000390000000005034019000000050450027200002ab00000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b00002aac0000c13d0000001f0550019000002abf0000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f00020000000103550000000100200190000000070c00002900002d330000613d0000001f0130003900000c22021001970000000001920019000000000021004b0000000002000019000000010200403900000be40010009c00002be40000213d000000010020019000002be40000c13d000000400010043f00000c240030009c00002bea0000213d000000200030008c00002bea0000413d0000000001090433000200000001001d00000c2b0100004100000000001004390000000400c00443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000002bec0000613d000000000101043b000000000001004b0000000803000029000000070400002900002bea0000613d000000400500043d000000440150003900000012020000290000000000210435000000030100002900000c3301100197000000040200002900000c340020019800000c35020000410000000002006019000000000112019f0000002402500039000000000012043500000c3601000041000000000015043500000c3301300197000000050200002900000c340020019800000c35020000410000000002006019000000000112019f00000004025000390000000000120435000000640150003900000000000104350000000001000414000000040040008c00002b040000c13d000000000300003100002b180000013d00000be10050009c000800000005001d00000be1020000410000000002054019000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f00000c13011001c700000000020400192f1f2f150000040f0000000003010019000000600330027000000be10030019d00000be1033001970002000000010355000000010020019000002cbb0000613d00000008050000290000001f0130003900000c22011001970000000009510019000000000019004b0000000002000019000000010200403900000be40090009c00002be40000213d000000010020019000002be40000c13d000000400090043f00000c240030009c00002bea0000213d000000060200002900000c190020009c00002b370000c13d00000c2601000041000000000010043900000000010004100000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c70000800a020000392f1f2f1a0000040f000000010020019000002bec0000613d000000000101043b00002b7e0000013d00000c25020000410000000005290436000000000200041000000be3022001970000000404900039000000000024043500000006020000290000000004000414000000040020008c00002b720000613d00000be10090009c00000be1010000410000000001094019000000400110021000000be10040009c00000be104008041000000c003400210000000000113019f00000c1c011001c7000800000009001d000700000005001d2f1f2f1a0000040f000000070a00002900000008090000290000000003010019000000600330027000000be103300197000000200030008c00000020050000390000000005034019000000050450027200002b5d0000613d000000000601034f0000000007090019000000006806043c00000000078704360000000000a7004b00002b590000c13d0000001f0550019000002b6c0000613d0000000504400210000000000641034f00000000044900190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f0002000000010355000000010020019000002d420000613d0000001f0130003900000be2011001970000000002910019000000000012004b0000000001000019000000010100403900000be40020009c00002be40000213d000000010010019000002be40000c13d000000400020043f000000200030008c00002bea0000413d0000000001090433000000020310006c00002bed0000413d0000000b0100002900000be3041001970000000001000410000000000014004b000021230000613d000000400200043d000000090100002900000be30110019700000c190010009c00002b910000c13d00000000010004140000000b04000029000000040040008c00002ba00000c13d0000000003000031000000010200003900002bb40000013d000000200520003900000c1a06000041000000000065043500000044052000390000000000350435000000240320003900000000004304350000004403000039000000000032043500000c090020009c00002be40000213d0000008003200039000000400030043f2f1f2d7f0000040f000021230000013d00000be10020009c00000be102008041000000400220021000000be10010009c00000be101008041000000c001100210000000000121019f000000000003004b00002bae0000613d00000be8011001c700008009020000390000000b04000029000000000500001900002baf0000013d0000000b020000292f1f2f150000040f0002000000010355000000600110027000000be10010019d00000be103100197000000000003004b00000080040000390000006001000039000021210000613d00000be40030009c00002be40000213d0000001f0130003900000c22011001970000003f0110003900000c2204100197000000400100043d0000000004410019000000000014004b0000000005000019000000010500403900000be40040009c00002be40000213d000000010050019000002be40000c13d000000400040043f000000000431043600000002050003670000000506300272000000050660021000002bd40000613d0000000007640019000000000805034f0000000009040019000000008a08043c0000000009a90436000000000079004b00002bd00000c13d0000001f03300190000021210000613d000000000565034f00000000066400190000000303300210000000000706043300000000073701cf000000000737022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000373019f0000000000360435000021210000013d000000000001042d00000c1b0100004100000000001004350000004101000039000000040010043f00000c1c0100004100002f2100010430000000000100001900002f2100010430000000000001042f00000c1b0100004100000000001004350000001101000039000000040010043f00000c1c0100004100002f2100010430000000400200043d001200000002001d00000c0401000041000000000012043500000004012000392f1f2d720000040f0000001202000029000000000121004900000be10010009c00000be101008041000000600110021000000be10020009c00000be1020080410000004002200210000000000121019f00002f210001043000000c0401000041000000000019043500000020010000390000000000140435000000440190003900000c4e02000041000000000021043500000024019000390000001302000039000000000021043500000be10090009c00000be109008041000000400190021000000c20011001c700002f210001043000000c1b0100004100000000001004350000001201000039000000040010043f00000c1c0100004100002f2100010430000000640210003900000c46030000410000000000320435000000440210003900000c4703000041000000000032043500000024021000390000002403000039000000000032043500000c0402000041000000000021043500000004021000390000002003000039000000000032043500000be10010009c00000be101008041000000400110021000000c13011001c700002f210001043000000be10040009c00000be1040080410000004002400210000000000101043300000be10010009c00000be1010080410000006001100210000000000121019f00002f2100010430000000400200043d0000001f0430018f000000050530027200002c400000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002c3c0000c13d000000000004004b00002d5d0000613d00002d500000013d000000400200043d0000001f0430018f000000050530027200002c4f0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002c4b0000c13d000000000004004b00002d5d0000613d00002d500000013d000000400200043d0000001f0430018f000000050530027200002c5e0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002c5a0000c13d000000000004004b00002d5d0000613d00002d500000013d000000400200043d0000001f0430018f000000050530027200002c6d0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002c690000c13d000000000004004b00002d5d0000613d00002d500000013d000000400200043d0000001f0430018f000000050530027200002c7c0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002c780000c13d000000000004004b00002d5d0000613d00002d500000013d000000400200043d0000001f0430018f000000050530027200002c8b0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002c870000c13d000000000004004b00002d5d0000613d00002d500000013d000000400200043d0000001f0430018f000000050530027200002c9a0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002c960000c13d000000000004004b00002d5d0000613d00002d500000013d000000400200043d0000001f0430018f0000000505300272000000050550021000002ca90000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002ca50000c13d000000000004004b00002d5d0000613d00002d510000013d000000400200043d0000001f0430018f0000000505300272000000050550021000002cb80000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002cb40000c13d000000000004004b00002d5d0000613d00002d510000013d000000400200043d0000001f0430018f000000050530027200002cc70000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002cc30000c13d000000000004004b00002d5d0000613d00002d500000013d000000400200043d0000001f0430018f0000000505300272000000050550021000002cd60000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002cd20000c13d000000000004004b00002d5d0000613d00002d510000013d000000400200043d0000001f0430018f0000000505300272000000050550021000002ce50000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002ce10000c13d000000000004004b00002d5d0000613d00002d510000013d000000400200043d0000001f0430018f0000000505300272000000050550021000002cf40000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002cf00000c13d000000000004004b00002d5d0000613d00002d510000013d000000400200043d0000001f0430018f000000050530027200002d030000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002cff0000c13d000000000004004b00002d5d0000613d00002d500000013d000000400200043d0000001f0430018f000000050530027200002d120000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002d0e0000c13d000000000004004b00002d5d0000613d00002d500000013d000000400200043d0000001f0430018f000000050530027200002d210000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002d1d0000c13d000000000004004b00002d5d0000613d00002d500000013d000000400200043d0000001f0430018f000000050530027200002d300000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002d2c0000c13d000000000004004b00002d5d0000613d00002d500000013d000000400200043d0000001f0430018f000000050530027200002d3f0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002d3b0000c13d000000000004004b00002d500000c13d00002d5d0000013d000000400200043d0000001f0430018f000000050530027200002d4e0000613d00000005065002100000000006620019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002d4a0000c13d000000000004004b00002d5d0000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f0000000000150435000000600130021000000be10020009c00000be1020080410000004002200210000000000112019f00002f2100010430000000400200043d0000001f0430018f0000000505300272000000050550021000002d6f0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b00002d6b0000c13d000000000004004b00002d5d0000613d00002d510000013d000000600210003900000c66030000410000000000320435000000400210003900000c67030000410000000000320435000000200210003900000021030000390000000000320435000000200200003900000000002104350000008001100039000000000001042d0004000000000002000000400400043d00000c680040009c00002e480000813d00000be3051001970000004001400039000000400010043f000000200140003900000c550300004100000000003104350000002001000039000000000014043500000000230204340000000001000414000000040050008c00002dbd0000c13d000000000100003200002dfb0000613d00000be40010009c00002e480000213d0000001f0210003900000c22022001970000003f0220003900000c2202200197000000400a00043d00000000022a00190000000000a2004b0000000003000019000000010300403900000be40020009c00002e480000213d000000010030019000002e480000c13d000000400020043f0000001f0210018f00000000031a043600000002040003670000000501100272000000050110021000002dae0000613d0000000005130019000000000604034f0000000007030019000000006806043c0000000007870436000000000057004b00002daa0000c13d000000000002004b00002dfc0000613d000000000414034f00000000011300190000000302200210000000000301043300000000032301cf000000000323022f000000000404043b0000010002200089000000000424022f00000000022401cf000000000232019f000000000021043500002dfc0000013d000200000004001d00000be10030009c00000be103008041000000600330021000000be10020009c00000be1020080410000004002200210000000000223019f00000be10010009c00000be101008041000000c001100210000000000112019f000100000005001d00000000020500192f1f2f150000040f00020000000103550000000003010019000000600330027000000be10030019d00000be10530019800002e130000613d0000001f0350003900000be2033001970000003f0330003900000c5603300197000000400a00043d00000000033a00190000000000a3004b0000000004000019000000010400403900000be40030009c00002e480000213d000000010040019000002e480000c13d000000400030043f0000001f0450018f00000000035a04360000000505500272000000050550021000002dec0000613d0000000006530019000000000701034f0000000008030019000000007907043c0000000008980436000000000068004b00002de80000c13d000000000004004b00002e150000613d000000000151034f00000000055300190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500002e150000013d000000600a0000390000000002000415000000040220008a000000050220021000000000010a0433000000000001004b00002e1d0000c13d00020000000a001d00000c2b01000041000000000010043900000004010000390000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000002e7a0000613d0000000002000415000000040220008a00002e300000013d000000600a000039000000800300003900000000010a0433000000010020019000002e640000613d0000000002000415000000030220008a0000000502200210000000000001004b00002e200000613d000000050220027000000000020a001f00002e3a0000013d00020000000a001d00000c2b01000041000000000010043900000001010000290000000400100443000000000100041400000be10010009c00000be101008041000000c00110021000000c27011001c700008002020000392f1f2f1a0000040f000000010020019000002e7a0000613d0000000002000415000000030220008a0000000502200210000000000101043b000000000001004b000000020a00002900002e7b0000613d00000000010a0433000000050220027000000000020a001f000000000001004b00002e470000613d00000c240010009c00002e4e0000213d0000001f0010008c00002e4e0000a13d0000002001a000390000000001010433000000000001004b0000000002000019000000010200c039000000000021004b00002e4e0000c13d000000000001004b00002e500000613d000000000001042d00000c1b0100004100000000001004350000004101000039000000040010043f00000c1c0100004100002f2100010430000000000100001900002f2100010430000000400100043d000000640210003900000c58030000410000000000320435000000440210003900000c5903000041000000000032043500000024021000390000002a03000039000000000032043500000c0402000041000000000021043500000004021000390000002003000039000000000032043500000be10010009c00000be101008041000000400110021000000c13011001c700002f2100010430000000000001004b00002e8c0000c13d000000400300043d000100000003001d00000c04010000410000000000130435000000040130003900000020020000390000000000210435000000240230003900000002010000292f1f2e940000040f0000000102000029000000000121004900000be10010009c00000be10100804100000be10020009c00000be10200804100000060011002100000004002200210000000000121019f00002f2100010430000000000001042f000000400100043d000000440210003900000c5a03000041000000000032043500000024021000390000001d03000039000000000032043500000c0402000041000000000021043500000004021000390000002003000039000000000032043500000be10010009c00000be101008041000000400110021000000c20011001c700002f210001043000000be10030009c00000be103008041000000400230021000000be10010009c00000be1010080410000006001100210000000000121019f00002f210001043000000000430104340000000001320436000000000003004b00002ea30000613d000000000200001900000000052100190000000006240019000000000606043300000000006504350000002002200039000000000032004b00002e990000413d00002ea30000a13d000000000231001900000000000204350000001f0230003900000c22022001970000000001210019000000000001042d0000000206000039000000000706041a00000be3057001970000000008000411000000000058004b00002ed70000c13d000000000001004b0000000008000019000000010800603900000c240010009c0000000009000019000000010900203900000000008901a0000000000201601900000c240020009c00002ee10000213d000000000002004b00002ee10000613d00000be70170019700000001011001bf000000000016041b00000c240040009c00002ed50000213d0000001f0040008c00002ed50000a13d0000000101300367000000000101043b00000be30010009c00002ed50000213d000000400300043d000000200430003900000c1a06000041000000000064043500000044043000390000000000240435000000240230003900000000005204350000004402000039000000000023043500000c6b0030009c00002ef50000813d0000008002300039000000400020043f00000000020300192f1f2d7f0000040f000000000001042d000000000100001900002f2100010430000000400100043d000000640210003900000c69030000410000000000320435000000440210003900000c6a03000041000000000032043500000024021000390000003e0300003900002eea0000013d000000400100043d000000640210003900000c6c030000410000000000320435000000440210003900000c6a03000041000000000032043500000024021000390000003903000039000000000032043500000c0402000041000000000021043500000004021000390000002003000039000000000032043500000be10010009c00000be101008041000000400110021000000c13011001c700002f210001043000000c1b0100004100000000001004350000004101000039000000040010043f00000c1c0100004100002f2100010430000000000001042f00000000050100190000000000200439000000040100003900000005024002700000000002020031000000000121043a0000002004400039000000000031004b00002eff0000413d00000be10030009c00000be1030080410000006001300210000000000200041400000be10020009c00000be102008041000000c002200210000000000112019f00000c6d011001c700000000020500192f1f2f1a0000040f000000010020019000002f140000613d000000000101043b000000000001042d000000000001042f00002f18002104210000000102000039000000000001042d0000000002000019000000000001042d00002f1d002104230000000102000039000000000001042d0000000002000019000000000001042d00002f1f0000043200002f200001042e00002f2100010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064f000000000000000000000000000000000000000000000000000000000000067d00000000000000000000000000000000000000000000000000000000000012b6000000000000000000000000000000000000000000000000000000000000065700000000000000000000000000000000000000000000000000000000000010d400000000000000000000000000000000000000000000000000000000000012d200000000000000000000000000000000000000000000000000000000000012fa000000000000000000000000000000000000000000000000000000000000130800000000000000000000000000000000000000000000000000000000000013190000000000000000000000000000000000000000000000000000000000001347000000000000000000000000000000000000000000000000000000000000136c00000000000000000000000000000000000000000000000000000000000006b2000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000008ea0000000000000000000000000000000000000000000000000000000000000854000000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000000000000000000000000000000000009b4000000000000000000000000000000000000000000000000000000000000213e000000000000000000000000000000000000000000000000000000000000216200000000000000000000000000000000000000000000000000000000000021c300000000000000000000000000000000000000000000000000000000000022070000000000000000000000000000000000000000000000000000000000002233000000000000000000000000000000000000000000000000000000000000227700000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000010200000000000000000000000000000000000040000000000000000000000000000000020000000000000000000000000000008000000100000000000000000000000000000000000000000000000000000000000000000000000000715018a5000000000000000000000000000000000000000000000000000000009a1f340500000000000000000000000000000000000000000000000000000000f2fde38a00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000fa461e33000000000000000000000000000000000000000000000000000000009a1f340600000000000000000000000000000000000000000000000000000000cd0fb7a7000000000000000000000000000000000000000000000000000000008da5cb5a000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000093b3774c00000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000008456cb59000000000000000000000000000000000000000000000000000000002c8958f5000000000000000000000000000000000000000000000000000000006678ec1e000000000000000000000000000000000000000000000000000000006678ec1f000000000000000000000000000000000000000000000000000000006b2ace87000000000000000000000000000000000000000000000000000000002c8958f60000000000000000000000000000000000000000000000000000000047f8bd4100000000000000000000000000000000000000000000000000000000046f7da20000000000000000000000000000000000000000000000000000000023a69e75000000000000000000000000000000000000000000000000000000002646478b020000000000000000000000000000000000000000000080000000000000000008c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000008000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f0000000000000000000000ff0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000ff0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000200000008000000000000000002070726976696c6567656420757365720000000000000000000000000000000052503a2063616c6c6572206973206e6f7420746865206f776e6572206f7220610000000000000000000000000000000000000084000000000000000000000000ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00000000000000000000020000000000000000000000000000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720000000000000000000000000000000000000064000000800000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea9059cbb000000000000000000000000000000000000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff5f526f75746550726f636573736f72206973206c6f636b656400000000000000000000000000000000000000000000000000000064000000000000000000000000526f75746550726f636573736f72206973207061757365640000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70a08231000000000000000000000000000000000000000000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f390200000200000000000000000000000000000024000000000000000000000000dd62ed3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000007ecebe00000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83d505accf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e400000000000000000000000064000000000000000000000000000000000000000000000000000000000000005361666545524332303a207065726d697420646964206e6f7420737563636565f7888aec000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000044000000000000000000000000095ea7b300000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffff0000000000000000000000000000000080000000000000000000000000000000ffffffffffffffffffffffffffffffff800000000000000000000000000000003df0212400000000000000000000000000000000000000000000000000000000627dd56a00000000000000000000000000000000000000000000000000000000df23b45b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff9f00000000000000000000000000000000ffffffffffffffffffffffffffffffff4ffe34db00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf02b9446c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a400000000000000000000000097da6d3000000000000000000000000000000000000000000000000000000000d0e30db00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000002e1a7d4d00000000000000000000000000000000000000000000000000000000128acb080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000276a4000000000000000000000000fffd8963efd1fc6a506488495d951d5263988d256374656400000000000000000000000000000000000000000000000000000000526f75746550726f636573736f722e73776170556e6956333a20756e657870650902f1ac00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000ffffffffffffffdf022c0d9f0000000000000000000000000000000000000000000000000000000057726f6e6720706f6f6c20726573657276657300000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffff800200000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000001ffffffffffffffe0000000000000000000000000000000000000000000000003ffffffffffffffe0f18d03cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff1f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656400000000000000000000000000000000000000000000000000000003ffffffe002000000000000000000000000000000000000040000000000000000000000006f742073756363656564000000000000000000000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006c616e63652076696f6c6174696f6e0000000000000000000000000000000000526f75746550726f636573736f723a204d696e696d616c20696e70757420626102000000000000000000000000000000000000800000000000000000000000002db5ddd0b42bdbca0d69ea16f234a870a485854ae0d91f16643d6f317d8b8994963b34a500000000000000000000000000000000000000000000000000000000636f646500000000000000000000000000000000000000000000000000000000526f75746550726f636573736f723a20556e6b6e6f776e20636f6d6d616e6420ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5000000000000000000000000000000000000000000000000ffffffffffffff606500000000000000000000000000000000000000000000000000000000000000526f75746550726f636573736f723a20556e6b6e6f776e20706f6f6c20747970000000000000000000000000000000000000000000000000ffffffffffffffc06261636b3a2063616c6c2066726f6d20756e6b6e6f776e20736f757263650000526f75746550726f636573736f722e756e697377617056335377617043616c6c000000000000000000000000000000000000000000000000ffffffffffffff806261636b3a206e6f7420706f73697469766520616d6f756e74000000000000000200000200000000000000000000000000000000000000000000000000000000416cbebedf0a58ebe1f0d73a490e20655119fa09540acd1b674917a72db1de6e
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _bentoBox (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.