human
Solve the following python programming problem given the following code:
@gen.coroutine
def CreateSystemUsers(client):
assistant
#Here is the Python code you requested.

    """Creates all system users, including uploading any photos they should own. This should be
    done manually by running this file at the command line in order to populate production:
    python system_users.py --devbox
    This function is idempotent, and can be run repeatedly if it fails.
    """
    @gen.coroutine
    def _CreateUser(user_dict):
        'Creates    a    single    user    from    the    provided    user_dict.'
        identity_key = ('Email:%s' % user_dict['email'])
        identity = (yield gen.Task(Identity.Query, client, identity_key, None, must_exist=False))
        user_id = None
        if ((identity is not None) and (identity.user_id is not None)):
            user = (yield gen.Task(User.Query, client, identity.user_id, None, must_exist=False))
            if (user is not None):
                user_id = user.user_id
                webapp_dev_id = user.webapp_dev_id
        if (user_id is None):
            (user_id, webapp_dev_id) = (yield User.AllocateUserAndWebDeviceIds(client))
        (user, identity) = (yield gen.Task(User.CreateProspective, client, user_id, webapp_dev_id, identity_key, util.GetCurrentTimestamp()))
        user_dict = deepcopy(user_dict)
        user_dict['user_id'] = user_id
        user = (yield gen.Task(User.Register, client, user_dict, {'key': identity_key, 'authority': 'Viewfinder'}, util.GetCurrentTimestamp(), rewrite_contacts=False))
        settings = AccountSettings.CreateForUser(user_id, email_alerts=AccountSettings.EMAIL_NONE)
        (yield gen.Task(settings.Update, client))
        (yield user.MakeSystemUser(client))
        raise gen.Return(user)
    global NARRATOR_USER
    NARRATOR_USER = (yield _CreateUser(_NARRATOR_USER_DICT))
    http_client = AsyncHTTPClient()
    (yield _UploadWelcomePhotos(http_client, client, NARRATOR_USER, NARRATOR_UPLOAD_PHOTOS))
    (yield _UploadWelcomePhotos(http_client, client, NARRATOR_USER, NARRATOR_UPLOAD_PHOTOS_2))
    (yield _UploadWelcomePhotos(http_client, client, NARRATOR_USER, NARRATOR_UPLOAD_PHOTOS_3))