code: def complete(self, uio, dropped=False):
          if self.dropped and not dropped:
              return
          for end in ['src', 'dst']:
              if getattr(self, end):
                  continue
              uio.show('\nEnter ' + end + ' for transaction:')
              uio.show('')
              uio.show(self.summary())
              try:
                  endpoints = []
                  remaining = self.amount
                  while remaining:
                      account = uio.text(' Enter account', None)
                      amount = uio.decimal(
                          ' Enter amount',
                          default=remaining,
                          lower=0,
                          upper=remaining
                      )
                      endpoints.append(Endpoint(account, amount))
                      remaining = self.amount \
                          - sum(map(lambda x: x.amount, endpoints))
              except ui.RejectWarning:
                  sys.exit("bye!")
              if end == 'src':
                  endpoints = map(
                      lambda x: Endpoint(x.account, -x.amount),
                      endpoints
                  )
              setattr(self, end, endpoints)