ETH Price: $2,542.77 (-0.07%)

Transaction Decoder

Block:
21045419 at Oct-25-2024 09:48:11 PM +UTC
Transaction Fee:
0.002730780907167038 ETH $6.94
Gas Used:
531,289 Gas / 5.139916142 Gwei

Account State Difference:

  Address   Before After State Difference Code
(Titan Builder)
10.144631092304537917 Eth10.145146442634537917 Eth0.00051535033
0xEd570ED0...4Ead4fa48
0.016228935165238036 Eth
Nonce: 127
0.013498154258070998 Eth
Nonce: 128
0.002730780907167038

Execution Trace

ETH 0.00009 UTB.swapAndExecute( instructions=[{name:swapInstructions, type:tuple, order:1, indexed:false, value:[{name:swapperId, type:uint8, order:1, indexed:false, value:0, valueString:0}, {name:swapParams, type:tuple, order:2, indexed:false, value:[{name:amountIn, type:uint256, order:1, indexed:false, value:35502132, valueString:35502132}, {name:amountOut, type:uint256, order:2, indexed:false, value:30000000000000000000, valueString:30000000000000000000}, {name:dustOut, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:tokenIn, type:address, order:4, indexed:false, value:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, valueString:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48}, {name:tokenOut, type:address, order:5, indexed:false, value:0x4d224452801ACEd8B2F0aebE155379bb5D594381, valueString:0x4d224452801ACEd8B2F0aebE155379bb5D594381}, {name:direction, type:uint8, order:6, indexed:false, value:1, valueString:1}, {name:refund, type:address, order:7, indexed:false, value:0xEd570ED02EDAe9ac499375d117966c94Ead4fa48, valueString:0xEd570ED02EDAe9ac499375d117966c94Ead4fa48}, {name:additionalArgs, type:bytes, order:8, indexed:false, value:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48, valueString:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48}], valueString:[{name:amountIn, type:uint256, order:1, indexed:false, value:35502132, valueString:35502132}, {name:amountOut, type:uint256, order:2, indexed:false, value:30000000000000000000, valueString:30000000000000000000}, {name:dustOut, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:tokenIn, type:address, order:4, indexed:false, value:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, valueString:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48}, {name:tokenOut, type:address, order:5, indexed:false, value:0x4d224452801ACEd8B2F0aebE155379bb5D594381, valueString:0x4d224452801ACEd8B2F0aebE155379bb5D594381}, {name:direction, type:uint8, order:6, indexed:false, value:1, valueString:1}, {name:refund, type:address, order:7, indexed:false, value:0xEd570ED02EDAe9ac499375d117966c94Ead4fa48, valueString:0xEd570ED02EDAe9ac499375d117966c94Ead4fa48}, {name:additionalArgs, type:bytes, order:8, indexed:false, value:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48, valueString:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48}]}], valueString:[{name:swapperId, type:uint8, order:1, indexed:false, value:0, valueString:0}, {name:swapParams, type:tuple, order:2, indexed:false, value:[{name:amountIn, type:uint256, order:1, indexed:false, value:35502132, valueString:35502132}, {name:amountOut, type:uint256, order:2, indexed:false, value:30000000000000000000, valueString:30000000000000000000}, {name:dustOut, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:tokenIn, type:address, order:4, indexed:false, value:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, valueString:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48}, {name:tokenOut, type:address, order:5, indexed:false, value:0x4d224452801ACEd8B2F0aebE155379bb5D594381, valueString:0x4d224452801ACEd8B2F0aebE155379bb5D594381}, {name:direction, type:uint8, order:6, indexed:false, value:1, valueString:1}, {name:refund, type:address, order:7, indexed:false, value:0xEd570ED02EDAe9ac499375d117966c94Ead4fa48, valueString:0xEd570ED02EDAe9ac499375d117966c94Ead4fa48}, {name:additionalArgs, type:bytes, order:8, indexed:false, value:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48, valueString:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48}], valueString:[{name:amountIn, type:uint256, order:1, indexed:false, value:35502132, valueString:35502132}, {name:amountOut, type:uint256, order:2, indexed:false, value:30000000000000000000, valueString:30000000000000000000}, {name:dustOut, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:tokenIn, type:address, order:4, indexed:false, value:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, valueString:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48}, {name:tokenOut, type:address, order:5, indexed:false, value:0x4d224452801ACEd8B2F0aebE155379bb5D594381, valueString:0x4d224452801ACEd8B2F0aebE155379bb5D594381}, {name:direction, type:uint8, order:6, indexed:false, value:1, valueString:1}, {name:refund, type:address, order:7, indexed:false, value:0xEd570ED02EDAe9ac499375d117966c94Ead4fa48, valueString:0xEd570ED02EDAe9ac499375d117966c94Ead4fa48}, {name:additionalArgs, type:bytes, order:8, indexed:false, value:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48, valueString:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48}]}]}, {name:target, type:address, order:2, indexed:false, value:0x4d224452801ACEd8B2F0aebE155379bb5D594381, valueString:0x4d224452801ACEd8B2F0aebE155379bb5D594381}, {name:paymentOperator, type:address, order:3, indexed:false, value:0x4d224452801ACEd8B2F0aebE155379bb5D594381, valueString:0x4d224452801ACEd8B2F0aebE155379bb5D594381}, {name:refund, type:address, order:4, indexed:false, value:0xEd570ED02EDAe9ac499375d117966c94Ead4fa48, valueString:0xEd570ED02EDAe9ac499375d117966c94Ead4fa48}, {name:executionFee, type:uint256, order:5, indexed:false, value:0, valueString:0}, {name:payload, type:bytes, order:6, indexed:false, value:0xA9059CBB000000000000000000000000ED570ED02EDAE9AC499375D117966C94EAD4FA48000000000000000000000000000000000000000000000001A055690D9DB80000, valueString:0xA9059CBB000000000000000000000000ED570ED02EDAE9AC499375D117966C94EAD4FA48000000000000000000000000000000000000000000000001A055690D9DB80000}, {name:txId, type:bytes32, order:7, indexed:false, value:328D32D495CDEC530B7B6B4BAAD867696B8A5D4501C502DAEA04C71B881C82EF, valueString:328D32D495CDEC530B7B6B4BAAD867696B8A5D4501C502DAEA04C71B881C82EF}], feeData=[{name:appId, type:bytes4, order:1, indexed:false, value:+ae5eA==, valueString:System.Byte[]}, {name:affiliateId, type:bytes4, order:2, indexed:false, value:AAAAAA==, valueString:System.Byte[]}, {name:bridgeFee, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:deadline, type:uint256, order:4, indexed:false, value:1729979226, valueString:1729979226}, {name:chainId, type:uint256, order:5, indexed:false, value:1, valueString:1}, {name:appFees, type:tuple[], order:6, indexed:false}], signature=0xB9900210B625217DA02499B9ACCB2D993B8186C439B936CB829ADE85187DF5F3185FC48BD3C77497769BAFC5E4384A5A8FC9682CEBC26C2E4338AC2A40392A761B )
  • UTBFeeManager.verifySignature( packedInfo=0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000000E00000000000000000000000004D224452801ACED8B2F0AEBE155379BB5D5943810000000000000000000000004D224452801ACED8B2F0AEBE155379BB5D594381000000000000000000000000ED570ED02EDAE9AC499375D117966C94EAD4FA48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A0328D32D495CDEC530B7B6B4BAAD867696B8A5D4501C502DAEA04C71B881C82EF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000021DB834000000000000000000000000000000000000000000000001A055690D9DB800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0B86991C6218B36C1D19D4A2E9EB0CE3606EB480000000000000000000000004D224452801ACED8B2F0AEBE155379BB5D5943810000000000000000000000000000000000000000000000000000000000000001000000000000000000000000ED570ED02EDAE9AC499375D117966C94EAD4FA48000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000424D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044A9059CBB000000000000000000000000ED570ED02EDAE9AC499375D117966C94EAD4FA48000000000000000000000000000000000000000000000001A055690D9DB8000000000000000000000000000000000000000000000000000000000000F9A7B978000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000671D635A000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000C0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000006DD843B78E6CC34744473176D8A61743EEFAA9A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, signature=0xB9900210B625217DA02499B9ACCB2D993B8186C439B936CB829ADE85187DF5F3185FC48BD3C77497769BAFC5E4384A5A8FC9682CEBC26C2E4338AC2A40392A761B )
    • Null: 0x000...001.c02531ab( )
    • GnosisSafeProxy.CALL( )
      • GnosisSafeL2.DELEGATECALL( )
      • FiatTokenProxy.23b872dd( )
        • FiatTokenV2_2.transferFrom( from=0xEd570ED02EDAe9ac499375d117966c94Ead4fa48, to=0x14036De12aC0C96d4d5eD03e150d6558A43bBeE5, value=35502132 ) => ( True )
        • FiatTokenProxy.095ea7b3( )
          • FiatTokenV2_2.approve( spender=0x2EeC08Fb9C0FcCCF64780c329cec64Ae12D7a28E, value=35502132 ) => ( True )
          • UniSwapper.swap( swapParams=[{name:amountIn, type:uint256, order:1, indexed:false, value:35502132, valueString:35502132}, {name:amountOut, type:uint256, order:2, indexed:false, value:30000000000000000000, valueString:30000000000000000000}, {name:dustOut, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:tokenIn, type:address, order:4, indexed:false, value:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, valueString:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48}, {name:tokenOut, type:address, order:5, indexed:false, value:0x4d224452801ACEd8B2F0aebE155379bb5D594381, valueString:0x4d224452801ACEd8B2F0aebE155379bb5D594381}, {name:direction, type:uint8, order:6, indexed:false, value:1, valueString:1}, {name:refund, type:address, order:7, indexed:false, value:0xEd570ED02EDAe9ac499375d117966c94Ead4fa48, valueString:0xEd570ED02EDAe9ac499375d117966c94Ead4fa48}, {name:additionalArgs, type:bytes, order:8, indexed:false, value:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48, valueString:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48}] ) => ( tokenOut=0x4d224452801ACEd8B2F0aebE155379bb5D594381, amountOut=30000000000000000000 )
            • FiatTokenProxy.23b872dd( )
              • FiatTokenV2_2.transferFrom( from=0x14036De12aC0C96d4d5eD03e150d6558A43bBeE5, to=0x2EeC08Fb9C0FcCCF64780c329cec64Ae12D7a28E, value=35502132 ) => ( True )
              • FiatTokenProxy.095ea7b3( )
                • FiatTokenV2_2.approve( spender=0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45, value=35502132 ) => ( True )
                • SwapRouter02.exactOutput( params=[{name:path, type:bytes, order:1, indexed:false, value:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48, valueString:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48}, {name:recipient, type:address, order:2, indexed:false, value:0x2EeC08Fb9C0FcCCF64780c329cec64Ae12D7a28E, valueString:0x2EeC08Fb9C0FcCCF64780c329cec64Ae12D7a28E}, {name:amountOut, type:uint256, order:3, indexed:false, value:30000000000000000000, valueString:30000000000000000000}, {name:amountInMaximum, type:uint256, order:4, indexed:false, value:35502132, valueString:35502132}] ) => ( amountIn=35154709 )
                  • Uniswap V3: APE 7.128acb08( )
                    • SimpleToken.transfer( recipient=0x2EeC08Fb9C0FcCCF64780c329cec64Ae12D7a28E, amount=30000000000000000000 ) => ( True )
                    • WETH9.balanceOf( 0xAc4b3DacB91461209Ae9d41EC517c2B9Cb1B7DAF ) => ( 144051590444223259288 )
                    • SwapRouter02.uniswapV3SwapCallback( amount0Delta=-30000000000000000000, amount1Delta=14130407641359566, _data=0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000002EEC08FB9C0FCCCF64780C329CEC64AE12D7A28E00000000000000000000000000000000000000000000000000000000000000424D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48000000000000000000000000000000000000000000000000000000000000 )
                      • Uniswap V3: USDC 4.128acb08( )
                        • WETH9.transfer( dst=0xAc4b3DacB91461209Ae9d41EC517c2B9Cb1B7DAF, wad=14130407641359566 ) => ( True )
                        • FiatTokenProxy.70a08231( )
                        • SwapRouter02.uniswapV3SwapCallback( amount0Delta=35154709, amount1Delta=-14130407641359566, _data=0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000002EEC08FB9C0FCCCF64780C329CEC64AE12D7A28E000000000000000000000000000000000000000000000000000000000000002BC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48000000000000000000000000000000000000000000 )
                        • FiatTokenProxy.70a08231( )
                        • WETH9.balanceOf( 0xAc4b3DacB91461209Ae9d41EC517c2B9Cb1B7DAF ) => ( 144065720851864618854 )
                        • FiatTokenProxy.a9059cbb( )
                          • FiatTokenV2_2.transfer( to=0xEd570ED02EDAe9ac499375d117966c94Ead4fa48, value=347423 ) => ( True )
                          • SimpleToken.transfer( recipient=0x14036De12aC0C96d4d5eD03e150d6558A43bBeE5, amount=30000000000000000000 ) => ( True )
                          • SimpleToken.approve( spender=0xc698b0F44454Dc630Cb800d0764367336b8608D7, amount=30000000000000000000 ) => ( True )
                          • UTBExecutor.execute( target=0x4d224452801ACEd8B2F0aebE155379bb5D594381, paymentOperator=0x4d224452801ACEd8B2F0aebE155379bb5D594381, payload=0xA9059CBB000000000000000000000000ED570ED02EDAE9AC499375D117966C94EAD4FA48000000000000000000000000000000000000000000000001A055690D9DB80000, token=0x4d224452801ACEd8B2F0aebE155379bb5D594381, amount=30000000000000000000, refund=0xEd570ED02EDAe9ac499375d117966c94Ead4fa48, executionFee=0 )
                            • SimpleToken.balanceOf( account=0xc698b0F44454Dc630Cb800d0764367336b8608D7 ) => ( 0 )
                            • SimpleToken.transferFrom( sender=0x14036De12aC0C96d4d5eD03e150d6558A43bBeE5, recipient=0xc698b0F44454Dc630Cb800d0764367336b8608D7, amount=30000000000000000000 ) => ( True )
                            • SimpleToken.approve( spender=0x4d224452801ACEd8B2F0aebE155379bb5D594381, amount=30000000000000000000 ) => ( True )
                            • SimpleToken.transfer( recipient=0xEd570ED02EDAe9ac499375d117966c94Ead4fa48, amount=30000000000000000000 ) => ( True )
                            • SimpleToken.balanceOf( account=0xc698b0F44454Dc630Cb800d0764367336b8608D7 ) => ( 0 )
                              File 1 of 11: UTB
                              1
                              2
                              3
                              4
                              5
                              6
                              7
                              8
                              9
                              10
                              11
                              12
                              13
                              14
                              15
                              16
                              // SPDX-License-Identifier: GPL-3.0
                              pragma solidity 0.8.24;
                              import {Roles} from "./utils/Roles.sol";
                              import {IUTB} from "./interfaces/IUTB.sol";
                              import {IUTBExecutor} from "./interfaces/IUTBExecutor.sol";
                              import {IERC20} from "@openzeppelin/contracts/interfaces/IERC20.sol";
                              import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
                              import {IWETH} from "./interfaces/IWETH.sol";
                              import {IUTBFeeManager} from "./interfaces/IUTBFeeManager.sol";
                              import {IBridgeAdapter} from "./interfaces/IBridgeAdapter.sol";
                              import {ISwapper} from "./interfaces/ISwapper.sol";
                              import {SwapInstructions, SwapParams, FeeData, Fee, BridgeInstructions, SwapAndExecuteInstructions} from "./CommonTypes.sol";
                              contract UTB is IUTB, Roles {
                              constructor() Roles(msg.sender) {}
                              IUTBExecutor public executor;
                              IUTBFeeManager public feeManager;
                              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                              File 2 of 11: UTBFeeManager
                              1
                              2
                              3
                              4
                              5
                              6
                              7
                              8
                              9
                              10
                              11
                              12
                              13
                              14
                              15
                              16
                              // SPDX-License-Identifier: GPL-3.0
                              pragma solidity 0.8.24;
                              import {IUTBFeeManager} from "./interfaces/IUTBFeeManager.sol";
                              import {Roles} from "./utils/Roles.sol";
                              contract UTBFeeManager is IUTBFeeManager, Roles {
                              address public signer;
                              string constant BANNER = "\\x19Ethereum Signed Message:\
                              32";
                              constructor(address _signer) Roles(msg.sender) {
                              signer = _signer;
                              }
                              /// @inheritdoc IUTBFeeManager
                              function setSigner(address _signer) public onlyAdmin {
                              signer = _signer;
                              emit SetSigner(_signer);
                              }
                              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                              File 3 of 11: GnosisSafeProxy
                              1
                              2
                              3
                              4
                              5
                              6
                              7
                              8
                              9
                              10
                              11
                              12
                              13
                              14
                              15
                              16
                              // SPDX-License-Identifier: LGPL-3.0-only
                              pragma solidity >=0.7.0 <0.9.0;
                              /// @title IProxy - Helper interface to access masterCopy of the Proxy on-chain
                              /// @author Richard Meissner - <richard@gnosis.io>
                              interface IProxy {
                              function masterCopy() external view returns (address);
                              }
                              /// @title GnosisSafeProxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.
                              /// @author Stefan George - <stefan@gnosis.io>
                              /// @author Richard Meissner - <richard@gnosis.io>
                              contract GnosisSafeProxy {
                              // singleton always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.
                              // To reduce deployment costs this variable is internal and needs to be retrieved via `getStorageAt`
                              address internal singleton;
                              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                              File 4 of 11: GnosisSafeL2
                              1
                              2
                              3
                              4
                              5
                              6
                              7
                              8
                              9
                              10
                              11
                              12
                              13
                              14
                              15
                              16
                              // SPDX-License-Identifier: LGPL-3.0-only
                              pragma solidity >=0.7.0 <0.9.0;
                              import "./base/ModuleManager.sol";
                              import "./base/OwnerManager.sol";
                              import "./base/FallbackManager.sol";
                              import "./base/GuardManager.sol";
                              import "./common/EtherPaymentFallback.sol";
                              import "./common/Singleton.sol";
                              import "./common/SignatureDecoder.sol";
                              import "./common/SecuredTokenTransfer.sol";
                              import "./common/StorageAccessible.sol";
                              import "./interfaces/ISignatureValidator.sol";
                              import "./external/GnosisSafeMath.sol";
                              /// @title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.
                              /// @author Stefan George - <stefan@gnosis.io>
                              /// @author Richard Meissner - <richard@gnosis.io>
                              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                              File 5 of 11: FiatTokenProxy
                              1
                              2
                              3
                              4
                              5
                              6
                              7
                              8
                              9
                              10
                              11
                              12
                              13
                              14
                              15
                              16
                              pragma solidity ^0.4.24;
                              // File: zos-lib/contracts/upgradeability/Proxy.sol
                              /**
                              * @title Proxy
                              * @dev Implements delegation of calls to other contracts, with proper
                              * forwarding of return values and bubbling of failures.
                              * It defines a fallback function that delegates all calls to the address
                              * returned by the abstract _implementation() internal function.
                              */
                              contract Proxy {
                              /**
                              * @dev Fallback function.
                              * Implemented entirely in `_fallback`.
                              */
                              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                              File 6 of 11: FiatTokenV2_2
                              1
                              2
                              3
                              4
                              5
                              6
                              7
                              8
                              9
                              10
                              11
                              12
                              13
                              14
                              15
                              16
                              /**
                              * SPDX-License-Identifier: Apache-2.0
                              *
                              * Copyright (c) 2023, Circle Internet Financial, LLC.
                              *
                              * Licensed under the Apache License, Version 2.0 (the "License");
                              * you may not use this file except in compliance with the License.
                              * You may obtain a copy of the License at
                              *
                              * http://www.apache.org/licenses/LICENSE-2.0
                              *
                              * Unless required by applicable law or agreed to in writing, software
                              * distributed under the License is distributed on an "AS IS" BASIS,
                              * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
                              * See the License for the specific language governing permissions and
                              * limitations under the License.
                              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                              File 7 of 11: UniSwapper
                              1
                              2
                              3
                              4
                              5
                              6
                              7
                              8
                              9
                              10
                              11
                              12
                              13
                              14
                              15
                              16
                              // SPDX-License-Identifier: GPL-3.0
                              pragma solidity 0.8.24;
                              import {SwapParams, SwapDirection} from "../CommonTypes.sol";
                              import {IERC20} from "@openzeppelin/contracts/interfaces/IERC20.sol";
                              import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
                              import {IWETH} from "../interfaces/IWETH.sol";
                              import {Swapper} from "../../src/swappers/Swapper.sol";
                              import {IV3SwapRouter} from "@uniswap/swap-router-contracts/contracts/interfaces/IV3SwapRouter.sol";
                              contract UniSwapper is Swapper {
                              uint8 public constant ID = 0;
                              address public uniswap_router;
                              function setRouter(address _router) public onlyAdmin {
                              uniswap_router = _router;
                              }
                              function swap(
                              SwapParams memory swapParams
                              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                              File 8 of 11: SwapRouter02
                              1
                              2
                              3
                              4
                              5
                              6
                              7
                              8
                              9
                              10
                              11
                              12
                              13
                              14
                              15
                              16
                              // SPDX-License-Identifier: GPL-2.0-or-later
                              pragma solidity =0.7.6;
                              pragma abicoder v2;
                              import '@uniswap/v3-periphery/contracts/base/SelfPermit.sol';
                              import '@uniswap/v3-periphery/contracts/base/PeripheryImmutableState.sol';
                              import './interfaces/ISwapRouter02.sol';
                              import './V2SwapRouter.sol';
                              import './V3SwapRouter.sol';
                              import './base/ApproveAndCall.sol';
                              import './base/MulticallExtended.sol';
                              /// @title Uniswap V2 and V3 Swap Router
                              contract SwapRouter02 is ISwapRouter02, V2SwapRouter, V3SwapRouter, ApproveAndCall, MulticallExtended, SelfPermit {
                              constructor(
                              address _factoryV2,
                              address factoryV3,
                              address _positionManager,
                              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                              File 9 of 11: SimpleToken
                              1
                              2
                              3
                              4
                              5
                              6
                              7
                              8
                              9
                              10
                              11
                              12
                              13
                              14
                              15
                              16
                              // SPDX-License-Identifier: MIT
                              pragma solidity ^0.8.10;
                              import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
                              contract SimpleToken is ERC20 {
                              constructor(
                              string memory name,
                              string memory symbol,
                              uint256 totalSupply_
                              ) ERC20(name, symbol) {
                              _mint(msg.sender, totalSupply_);
                              }
                              }
                              // SPDX-License-Identifier: MIT
                              // OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
                              pragma solidity ^0.8.0;
                              /**
                              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                              File 10 of 11: WETH9
                              1
                              2
                              3
                              4
                              5
                              6
                              7
                              8
                              9
                              10
                              11
                              12
                              13
                              14
                              15
                              16
                              // Copyright (C) 2015, 2016, 2017 Dapphub
                              // This program is free software: you can redistribute it and/or modify
                              // it under the terms of the GNU General Public License as published by
                              // the Free Software Foundation, either version 3 of the License, or
                              // (at your option) any later version.
                              // This program is distributed in the hope that it will be useful,
                              // but WITHOUT ANY WARRANTY; without even the implied warranty of
                              // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
                              // GNU General Public License for more details.
                              // You should have received a copy of the GNU General Public License
                              // along with this program. If not, see <http://www.gnu.org/licenses/>.
                              pragma solidity ^0.4.18;
                              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                              File 11 of 11: UTBExecutor
                              1
                              2
                              3
                              4
                              5
                              6
                              7
                              8
                              9
                              10
                              11
                              12
                              13
                              14
                              15
                              16
                              // SPDX-License-Identifier: GPL-3.0
                              pragma solidity 0.8.24;
                              import {IUTBExecutor} from "./interfaces/IUTBExecutor.sol";
                              import {IERC20} from "@openzeppelin/contracts/interfaces/IERC20.sol";
                              import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
                              import {Operable} from "./utils/Operable.sol";
                              import {Allowable} from "./utils/Allowable.sol";
                              import {Roles} from "./utils/Roles.sol";
                              contract UTBExecutor is IUTBExecutor, Operable, Allowable {
                              constructor() Roles(msg.sender) {}
                              /// @inheritdoc IUTBExecutor
                              function execute(
                              address target,
                              address paymentOperator,
                              bytes memory payload,
                              address token,
                              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX