/*******************************************************************************
 *  Copyright 2012-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *  Licensed under the Apache License, Version 2.0 (the "License"). You may not use
 *  this file except in compliance with the License. A copy of the License is located at
 *
 *  http://aws.amazon.com/apache2.0
 *
 *  or in the "license" file accompanying this file.
 *  This file 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.
 * *****************************************************************************
 *
 *  AWS Tools for Windows (TM) PowerShell (TM)
 *
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Management.Automation;
using System.Text;
using Amazon.PowerShell.Common;
using Amazon.Runtime;
using Amazon.Neptune;
using Amazon.Neptune.Model;

namespace Amazon.PowerShell.Cmdlets.NPT
{
    ///
    /// Deletes a specified DBParameterGroup. The DBParameterGroup to be deleted can't be
    /// associated with any DB instances.
    ///
    [Cmdlet("Remove", "NPTDBParameterGroup", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)]
    [OutputType("None")]
    [AWSCmdlet("Calls the Amazon Neptune DeleteDBParameterGroup API operation.", Operation = new[] {"DeleteDBParameterGroup"}, SelectReturnType = typeof(Amazon.Neptune.Model.DeleteDBParameterGroupResponse))]
    [AWSCmdletOutput("None or Amazon.Neptune.Model.DeleteDBParameterGroupResponse",
        "This cmdlet does not generate any output." +
        "The service response (type Amazon.Neptune.Model.DeleteDBParameterGroupResponse) can be referenced from properties attached to the cmdlet entry in the $AWSHistory stack."
    )]
    public partial class RemoveNPTDBParameterGroupCmdlet : AmazonNeptuneClientCmdlet, IExecutor
    {

        #region Parameter DBParameterGroupName
        ///
        /// <para>
        /// <para>The name of the DB parameter group.</para><para>Constraints:</para>

<para>Must be the name of an existing DB parameter group</para>

<para>You can't delete a default DB parameter group</para>

<para>Cannot be associated with any DB instances</para>

        /// </para>
        ///
        #if !MODULAR
        [System.Management.Automation.Parameter(Position = 0, ValueFromPipelineByPropertyName = true, ValueFromPipeline = true)]
        #else
        [System.Management.Automation.Parameter(Position = 0, ValueFromPipelineByPropertyName = true, ValueFromPipeline = true, Mandatory = true)]
        [System.Management.Automation.AllowEmptyString]
        [System.Management.Automation.AllowNull]
        #endif
        [Amazon.PowerShell.Common.AWSRequiredParameter]
        public System.String DBParameterGroupName { get; set; }
        #endregion

        #region Parameter Select
        ///
        /// Use the -Select parameter to control the cmdlet output. The cmdlet doesn't have a return value by default.
        /// Specifying -Select '*' will result in the cmdlet returning the whole service response (Amazon.Neptune.Model.DeleteDBParameterGroupResponse).
        /// Specifying -Select '^ParameterName' will result in the cmdlet returning the selected cmdlet parameter value.
        ///
        [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
        public string Select { get; set; } = "*";
        #endregion

        #region Parameter PassThru
        ///
        /// Changes the cmdlet behavior to return the value passed to the DBParameterGroupName parameter.
        /// The -PassThru parameter is deprecated, use -Select '^DBParameterGroupName' instead. This parameter will be removed in a future version.
        ///
        [System.Obsolete("The -PassThru parameter is deprecated, use -Select '^DBParameterGroupName' instead. This parameter will be removed in a future version.")]
        [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
        public SwitchParameter PassThru { get; set; }
        #endregion

        #region Parameter Force
        ///
        /// This parameter overrides confirmation prompts to force
        /// the cmdlet to continue its operation. This parameter should always
        /// be used with caution.
        ///
        [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
        public SwitchParameter Force { get; set; }
        #endregion

        protected override void ProcessRecord()
        {
            base.ProcessRecord();

            var resourceIdentifiersText = FormatParameterValuesForConfirmationMsg(nameof(this.DBParameterGroupName), MyInvocation.BoundParameters);
            if (!ConfirmShouldProceed(this.Force.IsPresent, resourceIdentifiersText, "Remove-NPTDBParameterGroup (DeleteDBParameterGroup)"))
            {
                return;
            }

            var context = new CmdletContext();

            // allow for manipulation of parameters prior to loading into context
            PreExecutionContextLoad(context);

            #pragma warning disable CS0618, CS0612 //A class member was marked with the Obsolete attribute
            if (ParameterWasBound(nameof(this.Select)))
            {
                context.Select = CreateSelectDelegate<Amazon.Neptune.Model.DeleteDBParameterGroupResponse, RemoveNPTDBParameterGroupCmdlet>(Select) ??
                    throw new System.ArgumentException("Invalid value for -Select parameter.", nameof(this.Select));
                if (this.PassThru.IsPresent)
                {
                    throw new System.ArgumentException("-PassThru cannot be used when -Select is specified.", nameof(this.Select));
                }
            }
            else if (this.PassThru.IsPresent)
            {
                context.Select = (response, cmdlet) => this.DBParameterGroupName;
            }
            #pragma warning restore CS0618, CS0612 //A class member was marked with the Obsolete attribute
            context.DBParameterGroupName = this.DBParameterGroupName;
            #if MODULAR
            if (this.DBParameterGroupName == null && ParameterWasBound(nameof(this.DBParameterGroupName)))
            {
                WriteWarning("You are passing $null as a value for parameter DBParameterGroupName which is marked as required. In case you believe this parameter was incorrectly marked as required, report this by opening an issue at https://github.com/aws/aws-tools-for-powershell/issues.");
            }
            #endif

            // allow further manipulation of loaded context prior to processing
            PostExecutionContextLoad(context);

            var output = Execute(context) as CmdletOutput;
            ProcessOutput(output);
        }

        #region IExecutor Members

        public object Execute(ExecutorContext context)
        {
            var cmdletContext = context as CmdletContext;
            // create request
            var request = new Amazon.Neptune.Model.DeleteDBParameterGroupRequest();

            if (cmdletContext.DBParameterGroupName != null)
            {
                request.DBParameterGroupName = cmdletContext.DBParameterGroupName;
            }

            CmdletOutput output;

            // issue call
            var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint);
            try
            {
                var response = CallAWSServiceOperation(client, request);
                object pipelineOutput = null;
                pipelineOutput = cmdletContext.Select(response, this);
                output = new CmdletOutput
                {
                    PipelineOutput = pipelineOutput,
                    ServiceResponse = response
                };
            }
            catch (Exception e)
            {
                output = new CmdletOutput { ErrorResponse = e };
            }

            return output;
        }

        public ExecutorContext CreateContext()
        {
            return new CmdletContext();
        }

        #endregion

        #region AWS Service Operation Call

        private Amazon.Neptune.Model.DeleteDBParameterGroupResponse CallAWSServiceOperation(IAmazonNeptune client, Amazon.Neptune.Model.DeleteDBParameterGroupRequest request)
        {
            Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "Amazon Neptune", "DeleteDBParameterGroup");
            try
            {
                #if DESKTOP
                return client.DeleteDBParameterGroup(request);
                #elif CORECLR
                return client.DeleteDBParameterGroupAsync(request).GetAwaiter().GetResult();
                #else
                        #error "Unknown build edition"
                #endif
            }
            catch (AmazonServiceException exc)
            {
                var webException = exc.InnerException as System.Net.WebException;
                if (webException != null)
                {
                    throw new Exception(Utils.Common.FormatNameResolutionFailureMessage(client.Config, webException.Message), webException);
                }
                throw;
            }
        }

        #endregion

        internal partial class CmdletContext : ExecutorContext
        {
            public System.String DBParameterGroupName { get; set; }
            public System.Func<Amazon.Neptune.Model.DeleteDBParameterGroupResponse, RemoveNPTDBParameterGroupCmdlet, object> Select { get; set; } =
                (response, cmdlet) => null;
        }

    }
}


package com.tencent.mm.protocal.b;

public final class agr
  extends com.tencent.mm.ax.a
{
  public String aez;
  public String fBO;

  protected final int a(int paramInt, Object... paramVarArgs)
  {
    if (paramInt == 0)
    {
      paramVarArgs = (a.a.a.c.a)paramVarArgs[0];
      if (fBO != null) {
        paramVarArgs.e(1, fBO);
      }
      if (aez != null) {
        paramVarArgs.e(2, aez);
      }
      return 0;
    }
    if (paramInt == 1) {
      if (fBO == null) {
        break label234;
      }
    }
    label234:
    for (paramInt = a.a.a.b.b.a.f(1, fBO) + 0;; paramInt = 0)
    {
      int i = paramInt;
      if (aez != null) {
        i = paramInt + a.a.a.b.b.a.f(2, aez);
      }
      return i;
      if (paramInt == 2)
      {
        paramVarArgs = new a.a.a.a.a((byte[])paramVarArgs[0], jrk);
        for (paramInt = com.tencent.mm.ax.a.a(paramVarArgs); paramInt > 0; paramInt = com.tencent.mm.ax.a.a(paramVarArgs)) {
          if (!super.a(paramVarArgs, this, paramInt)) {
            paramVarArgs.bve();
          }
        }
        break;
      }
      if (paramInt == 3)
      {
        a.a.a.a.a locala = (a.a.a.a.a)paramVarArgs[0];
        agr localagr = (agr)paramVarArgs[1];
        switch (((Integer)paramVarArgs[2]).intValue())
        {
        default:
          return -1;
        case 1:
          fBO = mMY.readString();
          return 0;
        }
        aez = mMY.readString();
        return 0;
      }
      return -1;
    }
  }
}

/* Location:
 * Qualified Name:     com.tencent.mm.protocal.b.agr
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */


/*
 * Copyright (C) 2015 Apple Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef JSModuleLoader_h
#define JSModuleLoader_h

#include <runtime/JSCJSValue.h>
#include <wtf/Noncopyable.h>

namespace JSC {

class ExecState;
class JSGlobalObject;
class JSInternalPromise;

}

namespace WebCore {

class Document;

class JSModuleLoader {
    WTF_MAKE_NONCOPYABLE(JSModuleLoader); WTF_MAKE_FAST_ALLOCATED;
public:
    explicit JSModuleLoader(Document&);

    Document& document() { return m_document; }

    JSC::JSInternalPromise* resolve(JSC::JSGlobalObject*, JSC::ExecState*, JSC::JSValue moduleName, JSC::JSValue importerModuleKey);
    JSC::JSInternalPromise* fetch(JSC::JSGlobalObject*, JSC::ExecState*, JSC::JSValue moduleKey);
    JSC::JSValue evaluate(JSC::JSGlobalObject*, JSC::ExecState*, JSC::JSValue moduleKey, JSC::JSValue moduleRecord);

private:
    Document& m_document;
};

} // namespace WebCore

#endif // JSModuleLoader_h


// Copyright (c) Microsoft Corporation.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

#include <algorithm>
#include <assert.h>
#include <iterator>
#include <list>
#include <vector>

using namespace std;

int main() {
    vector<int> v;

    for (int i = 0; i < 10; ++i) {
        v.push_back(i);
    }

    {
        vector<bool> b;

        transform(v.begin(), v.end(), back_inserter(b), [](int n) { return n < 5; });

        insert_iterator<vector<bool>> init(b, b.begin() + 9);

        *init++ = true;

        vector<bool> correct{true, true, true, true, true, false, false, false, false, true, false};

        assert(b == correct);
    }

    {
        list<int> l;

        transform(v.begin(), v.end(), back_inserter(l), [](int n) { return n * 10; });
        transform(v.begin(), v.end(), front_inserter(l), [](int n) { return n * 100; });
        transform(v.begin(), v.end(), inserter(l, next(l.begin(), 5)), [](int n) { return n * 1000; });

        const int c[] = {900, 800, 700, 600, 500, 0, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 400, 300,
            200, 100, 0, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90};

        const list<int> correct(begin(c), end(c));

        assert(l == correct);
    }
}


#!/bin/bash
echo "Running func tests"
echo "Starting server"

trap 'kill -TERM $SERVER_PID' TERM INT
./target/universal/stage/bin/scala-pet-store &

SERVER_PID=$!
PARENT_PID=$$

echo "Waiting for app to start...server pid is $SERVER_PID; parent pid is $PARENT_PID"
DATA=""
RETRY=30

while [ $RETRY -gt 0 ]
do
    DATA=$(nc -v -z localhost 8080)
    if [ $? -eq 0 ]
    then
        break
    else
        echo "Retrying Again" >&2

        let RETRY-=1
        sleep 1

        if [ $RETRY -eq 0 ]
        then
          echo "Exceeded retries waiting for app to be ready, failing"
          exit 1
        fi
    fi
done

echo "Server started, running func tests"
cd functional_test
python3 ./run.py live_tests -v
FUNC_TEST_RESULT=$?

echo "Functional tests completed with status $FUNC_TEST_RESULT, stopping server with PID $SERVER_PID, PPID $PARENT_PID"

kill $SERVER_PID
wait $SERVER_PID
trap - TERM INT
wait $SERVER_PID
# kill -9 $PARENT_PID

echo "DONE!"
exit $FUNC_TEST_RESULT


import { save } from './handler';

jest.mock('./fileSaver');

describe('handler', () => {
  const { saveFile } = require('./fileSaver');
  const response = {};
  const error = new Error('some error');

  const payload = {
    file_url:
      'https://assets-cdn.github.com/images/modules/open_graph/github-mark.png',
    key: 'github.png',
  };
  const event = { body: JSON.stringify(payload) };
  const context: any = null;

  beforeEach(() => {
    jest.clearAllMocks();
  });

  test('should call callback on response', async () => {
    saveFile.mockReturnValue(Promise.resolve({ response, error: null }));

    const callback = jest.fn();

    await save(event, context, callback);

    expect(saveFile).toHaveBeenCalledTimes(1);
    expect(saveFile).toHaveBeenCalledWith(JSON.stringify(payload));
    expect(callback).toHaveBeenCalledTimes(1);
    expect(callback).toHaveBeenCalledWith(null, response);
  });

  test('should call callback on error', async () => {
    saveFile.mockReturnValue(Promise.resolve({ response, error }));

    const callback = jest.fn();

    await save(event, context, callback);

    expect(saveFile).toHaveBeenCalledTimes(1);
    expect(saveFile).toHaveBeenCalledWith(JSON.stringify(payload));
    expect(callback).toHaveBeenCalledTimes(1);
    expect(callback).toHaveBeenCalledWith(error);
  });
});


# Event 217 - task_0
###### Version: 0

## Description
None

## Data Dictionary
|Standard Name|Field Name|Type|Description|Sample Value|
|---|---|---|---|---|
|TBD|HexInt1|HexInt32|None|`None`|
|TBD|HexInt2|HexInt32|None|`None`|

## Tags
* etw_level_Informational
* etw_task_task_0


#
border.chromaticity=Couleur
border.copies=Copies
border.jobattributes=Attributs de t\u00e2che
border.media=Support
border.orientation=Orientation
border.printrange=\u00c9tendue d'impression
border.printservice=Service d'impression
border.quality=Qualit\u00e9
border.sides=C\u00f4t\u00e9s
border.margins=Marges
#
button.cancel=Annuler
button.ok=OK
button.print=Imprimer
button.properties=Propri\u00e9t\u00e9s...
button.properties.mnemonic=R
#
checkbox.collate=Interclasser
checkbox.collate.mnemonic=L
checkbox.jobsheets=Page de garde
checkbox.jobsheets.mnemonic=P
checkbox.printtofile=Imprimer dans un fichier
checkbox.printtofile.mnemonic=F
#
dialog.printtitle=Imprimer
dialog.pstitle=Mise en page
dialog.overwrite=Ce fichier existe d\u00e9j\u00e0. Remplacer le fichier existant ?
dialog.owtitle=Imprimer dans un fichier
dialog.printtofile=Imprimer dans un fichier
dialog.noprintermsg=Service d'impression introuvable
dialog.writeerror=Impossible d'enregistrer dans le fichier :
#
label.info=Info :
label.jobname=Nom de t\u00e2che :
label.jobname.mnemonic=C
label.numcopies=Nombre de copies :
label.numcopies.mnemonic=O
label.priority=Priorit\u00e9 :
label.priority.mnemonic=R
label.psname=Nom :
label.psname.mnemonic=N
label.pstype=Type :
label.rangeto=Pour
label.size=Taille :
label.size.mnemonic=T
label.source=Source :
label.source.mnemonic=C
label.status=\u00c9tat :
label.username=Nom d'utilisateur :
label.username.mnemonic=O
label.millimetres=(mm)
label.inches=(in)
label.topmargin=sup\u00e9rieure
label.topmargin.mnemonic=U
label.bottommargin=inf\u00e9rieure
label.bottommargin.mnemonic=F
label.leftmargin=gauche
label.leftmargin.mnemonic=E
label.rightmargin=droite
label.rightmargin.mnemonic=R
#
radiobutton.color=Couleur
radiobutton.color.mnemonic=L
radiobutton.draftq=Brouillon
radiobutton.draftq.mnemonic=B
radiobutton.duplex=Duplex
radiobutton.duplex.mnemonic=D
radiobutton.highq=Haut
radiobutton.highq.mnemonic=H
radiobutton.landscape=Paysage
radiobutton.landscape.mnemonic=P
radiobutton.monochrome=Monochrome
radiobutton.monochrome.mnemonic=M
radiobutton.normalq=Normal
radiobutton.normalq.mnemonic=N
radiobutton.oneside=Un c\u00f4t\u00e9
radiobutton.oneside.mnemonic=U
radiobutton.portrait=Portrait
radiobutton.portrait.mnemonic=O
radiobutton.rangeall=Tout
radiobutton.rangeall.mnemonic=T
radiobutton.rangepages=Pages
radiobutton.rangepages.mnemonic=P
radiobutton.revlandscape=Paysage invers\u00e9
radiobutton.revlandscape.mnemonic=N
radiobutton.revportrait=Portrait invers\u00e9
radiobutton.revportrait.mnemonic=I
radiobutton.tumble=Culbuter
radiobutton.tumble.mnemonic=T
# The vkMnemonics correspond with the constants defined in KeyEvent, eg
# 65 = KeyEvent.VK_A
tab.appearance=Apparence
tab.appearance.vkMnemonic=65
tab.general=G\u00e9n\u00e9ral
tab.general.vkMnemonic=71
tab.pagesetup=Mise en page
tab.pagesetup.vkMnemonic=83
#
error.pagerange=Etendue de pages non valide ; sp\u00e9cifiez les valeurs de nouveau (p. ex., 1-3,5,7-10)
error.destination=Nom de fichier non valide ; recommencez
#
# The following keys match the Strings returned by MediaSizeName.toString()
# (in some cases the space character is replaced by '-' and the pound
# character is replaced with 'n')
#
iso-4a0=4A0 (ISO/DIN & JIS)
iso-2a0=2A0 (ISO/DIN & JIS)
iso-a0=A0 (ISO/DIN & JIS)
iso-a1=A1 (ISO/DIN & JIS)
iso-a2=A2 (ISO/DIN & JIS)1 (ISO/DIN & JIS)
iso-a3=A3 (ISO/DIN & JIS)
iso-a4=A4 (ISO/DIN & JIS)
iso-a5=A5 (ISO/DIN & JIS)
iso-a6=A6 (ISO/DIN & JIS)
iso-a7=A7 (ISO/DIN & JIS)
iso-a8=A8 (ISO/DIN & JIS)
iso-a9=A9 (ISO/DIN & JIS)
iso-a10=A10 (ISO/DIN & JIS)
iso-b0=B0 (ISO/DIN)
iso-b1=B1 (ISO/DIN)
iso-b2=B2 (ISO/DIN)
iso-b3=B3 (ISO/DIN)
iso-b4=B4 (ISO/DIN)
iso-b5=B5 (ISO/DIN)
iso-b6=B6 (ISO/DIN)
iso-b7=B7 (ISO/DIN)
iso-b8=B8 (ISO/DIN)
iso-b9=B9 (ISO/DIN)
iso-b10=B10 (ISO/DIN)
jis-b0=B0 (JIS)
jis-b1=B1 (JIS)
jis-b2=B2 (JIS)
jis-b3=B3 (JIS)
jis-b4=B4 (JIS)3 (JIS)
jis-b5=B5 (JIS)
jis-b6=B6 (JIS)
jis-b7=B7 (JIS)
jis-b8=B8 (JIS)
jis-b9=B9 (JIS)
jis-b10=B10 (JIS)
iso-c0=C0 (ISO/DIN)
iso-c1=C1 (ISO/DIN)
iso-c2=C2 (ISO/DIN)
iso-c3=C3 (ISO/DIN)
iso-c4=C4 (ISO/DIN)
iso-c5=C5 (ISO/DIN)
iso-c6=C6 (ISO/DIN)
iso-c7=C7 (ISO/DIN)
iso-c8=C8 (ISO/DIN)
iso-c9=C9 (ISO/DIN)
iso-c10=C10 (ISO/DIN)
na-letter=Lettre
na-legal=L\u00e9gal
executive=Administratif
ledger=Fiche
tabloid=Tablo\u00efd
invoice=Facture
folio=Folio
quarto=Quarto
japanese-postcard=Carte postale (JIS)
oufuko-postcard=Carte postale (JIS)
a=Ing\u00e9nierie A
b=Ing\u00e9nierie B
c=Ing\u00e9nierie C
d=Ing\u00e9nierie D
e=Ing\u00e9nierie E
iso-designated-long=Long ISO
italian-envelope=Enveloppe Italie
italy-envelope=Enveloppe Italie
invite-envelope=Enveloppe invitation
monarch-envelope=Enveloppe Monarch
personal-envelope=Enveloppe personnelle
na-number-9-envelope=Enveloppe no 9
na-number-10-envelope=Enveloppe no 10
na-number-11-envelope=Enveloppe no 11
na-number-12-envelope=Enveloppe no 12
na-number-14-envelope=Enveloppe no 14
na-6x9-envelope=Enveloppe 6x9
na-7x9-envelope=Enveloppe 6x7
na-9x11-envelope=Enveloppe 9x11
na-9x12-envelope=Enveloppe 9x12
na-10x13-envelope=Enveloppe 10x15
na-10x14-envelope=Enveloppe 10x15
na-10x15-envelope=Enveloppe 10x15
na-5x7=Papier 5 x 7 po
na-8x10=Papier 8 x 10 po
#
# The following keys match the Strings returned by MediaTray.toString()
#
auto-select=S\u00e9lection automatique
top=Haut
middle=Centre
bottom=Bas
envelope=Enveloppe
manual=Manuel
large-capacity=Grande capacit\u00e9
main=Principal
side=C\u00f4t\u00e9
# Add the additional standard bins defined by win32
Manual-Envelope=Enveloppe
Automatic-Feeder=Alimentation automatique
Tractor-Feeder=Alimentation en continu
Small-Format=Petit format
Large-Format=Grand format
Cassette=Cassette
Form-Source=Source du formulaire
#
# The following keys match the Strings returned by
# PrinterIsAcceptingJobs.toString()
#
accepting-jobs=Accepter les t\u00e2ches
not-accepting-jobs=Refuser les t\u00e2ches


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>yaml: Data Fields - Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>

Main Page

Modules

Data Structures

Files

Data Structures

Data Fields

All

Variables

a

b

c

d

e

f

h

i

k

l

m

n

o

p

q

r

s

t

u

v

w

- f -

file
: yaml_parser_s
, yaml_emitter_s

flow_level
: yaml_emitter_s
, yaml_parser_s

flow_plain_allowed
: yaml_emitter_s

<address class="footer">Generated on Mon May 30 2011 22:00:00 for yaml by

 1.7.1 </address>


// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

//------------------------------------------------
// Functions from libva-drm used in chromium code.
//------------------------------------------------
VADisplay vaGetDisplayDRM(int fd);


% Meridian 59, Copyright 1994-2012 Andrew Kirmse and Chris Kirmse.
% All rights reserved.
%
% This software is distributed under a license that is described in
% the LICENSE file that accompanies it.
%
% Meridian is a registered trademark.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Token is PassiveItem

% The token is a used in the faction games.  It drains vigor from the holder.
% The token takes both hand slots and the holder cannot cast spells while
%  holding it.  This is to prevent cheezy PvP tactics while holding a token.
%  Players holding a token at death take a no-peanlty death.

constants:

   include blakston.khd
   TOKEN_FATIGUE_TIME=10000
   LAZY_RESET_TIME=180000

resources:

   token_name_rsc = "Token"
   token_icon_rsc = rat.bgf
   token_desc_rsc = "A Token of the Meridian Council"
   token_used_desc_rsc = \
      "The token is very heavy, and you feel your vigor drain away as you hold it."

   token_use_rsc = \
      "You feel drained and out of breath from carrying the token."
   token_unuse_rsc = \
      "You are relieved to feel your vigor begin returning as you let go of the token."
   token_cantuse_rsc = \
      "You are unable to hold so many items in your hands, and the token slips to the ground."
   token_noteligible_rsc = \
      "The token recognizes you are beneath notice of the Royal Court, and writhes in your hands. You cannot hold it."

   token_realized_rsc = "~IYou are astonished to see %s%s in the loot from your kill.~n"
   token_was_realized_rsc = "~IYour nerves jangle, and you suddenly know that %s%s has recovered %s%s from %s%s.~n"

   token_was_delivered_rsc = "~IAll hail %s%s who has returned %s%s to the Meridian Council.~n"

   tok_faction_too_strong = "I am sorry, but my current followers provide all the support I need. Perhaps if you were to try again later, I will have need of you."

   token_drops = "%s%s slips from your grasp and falls to the ground!"

classvars:

   vrName = token_name_rsc
   vrIcon = token_icon_rsc
   vrDesc = token_desc_rsc

   viBulk = 50
   viWeight = 500
   viValue_average = 2500

   viUse_type = ITEM_USE_HAND
   viUse_Amount = 2

   viVigorDrop = 120000
   viInitialTimeval = 10000

   viItem_type = ITEMTYPE_TOKEN

   vrTokenOverlay = $

properties:

   pbIn_use = False
   pbRejectedOffer=False
   piVigorRestThresholdChange = 200
   ptTortureTimer = $
   ptLazyTimer = $
   ptGenerationTimer = $

messages:

   Constructor()
   {
      poOwner = $;
      ptGenerationTimer=CreateTimer(self,@TokenGenerationTimer,viInitialTimeval);

      propagate;
   }

   Delete()
   {
      if pbIn_use
      {
         Send(self,@NewUnused);
      }

      if ptTortureTimer <> $
      {
         DeleteTimer(ptTortureTimer);
         ptTortureTimer = $;
      }

      if ptLazyTimer <> $
      {
         DeleteTimer(ptLazyTimer);
         ptLazyTimer=$;
      }

      if ptGenerationTimer <> $
      {
         DeleteTimer(ptGenerationTimer);
         ptGenerationTimer=$;
      }

      if Send(SYS,@GetTokenGame) <> $
      {
         Send(Send(SYS,@GetTokenGame),@TokenDeleted,#what=self);
      }

      propagate;
   }

   GetInitialTimeval()
   {
      return viInitialTimeval;
   }

   NilOwner()
   {
      poOwner = $;

      return;
   }

   NewOwner(what = $)
   {
      if ptLazyTimer <> $
      {
         DeleteTimer(ptLazyTimer);
         ptLazyTimer = $;
      }

      if ptTortureTimer <> $
      {
         DeleteTimer(ptTortureTimer);
         ptTortureTimer = $;
      }

      if what = $
      {
         propagate;
      }

      if IsClass(what,&User)
         and NOT send(what,@PlayerIsImmortal)
      {
         post(self,@TryingToUse,#what=what);
      }

      if IsClass(what,&Room)
      {
         ptLazyTimer = CreateTimer(self,@LazyTokenTimer,LAZY_RESET_TIME);
      }

      propagate;
   }

   LazyTokenTimer()
   {
      ptLazyTimer = $;

      if IsClass(poOwner,&Room)
      {
         Send(self,@TeleportToken,#myroom=poOwner);
      }

      return;
   }

   TryingToUse(what = $)
   {
      local i,Temp;

      Temp = FALSE;

      Send(what,@TryUseItem,#what=self);

      if Send(what,@PlayerIsIntriguing)
      {
         for i in Send(what,@GetPlayerUsing)
         {
            if i = self
            {
               return;
            }
         }

         Send(what,@MsgSendUser,#message_rsc=token_cantuse_rsc);

         Post(Send(what,@GetOwner),@NewHold,#what=self,
              #new_row=Send(poOwner,@GetRow),#new_col=Send(poOwner,@GetCol));
      }
      else
      {
         for i in Send(what,@GetPlayerUsing)
         {
            if i=self
            {
               Send(what,@MsgSendUser,#message_rsc=token_noteligible_rsc);
               Send(self,@NewUnused);
               Temp = TRUE;

               break;
            }
         }

         if not Temp
         {
            Send(what,@MsgSendUser,#message_rsc=token_cantuse_rsc);
            Post(Send(what,@GetOwner),@NewHold,#what=self,
                 #new_row=Send(poOwner,@GetRow),#new_col=Send(poOwner,@GetCol));
         }
      }

      return;
   }

   NewUsed(what = $)
   "When the token is carried, the wearer's rest threshold goes down"
   {
      local iVigorRestThreshold;

      pbIn_use = TRUE;

      if Send(poOwner,@PlayerIsImmortal)
      {
         piVigorRestThresholdChange = 0;

         propagate;
      }

      iVigorRestThreshold = send(poOwner, @GetVigorRestThreshold);

      % This is to ensure both that the player's rest threshold does not drop below
      %   10 as well as to make sure we don't make it above maximum when the token is
      %   dropped.  (see player.kod for why)

      piVigorRestThresholdChange = iVigorRestThreshold - 10;

      Send(poOwner,@MsgSendUser,#message_rsc=token_used_desc_rsc);

      Send(poOwner,@SetVigorRestThreshold,#amount=iVigorRestThreshold-piVigorRestThresholdChange);
      send(poOwner,@AddExertion,#amount=viVigorDrop/2+Random(0,viVigorDrop/2));

      ptTortureTimer = CreateTimer(self,@TortureHolder,TOKEN_FATIGUE_TIME);

      % Cancels rescue and elusion when a player picks up a token
      Send(poOwner,@BreakTrance);
      Send(poOwner,@CancelRescue);

      if vrTokenOverlay <> $
      {
         post(poOwner,@SetOverlay,#what=self);
      }

      propagate;
   }

   TortureHolder()
   {
      if NOT pbIn_use
      {
         return;
      }

      if ptTortureTimer<>$
      {
         ptTortureTimer=$;
      }

      if Send(poOwner,@PlayerIsImmortal)
      {
         return;
      }

      send(poOwner,@MsgSendUser,#message_rsc=token_use_rsc);
      send(poOwner,@AddExertion,#amount = viVigorDrop/2+Random(0,viVigorDrop/2));

      ptTortureTimer = CreateTimer(self,@TortureHolder,TOKEN_FATIGUE_TIME);

      return;
   }

   OfferRejected()
   {
      pbRejectedOffer = TRUE;

      return;
   }

   NewUnused(what = $,where=$,death=FALSE)
   "Called when the token is dropped or unused (same thing). The special"
   "where flag is needed to handle guild hall enterings."
   {
      local iVigorRestThreshold,oldOwner,oldrow,oldcol,oldroom;

      if (not pbIn_use)
      {
         propagate;
      }

      pbIn_use = FALSE;

      iVigorRestThreshold = send(poOwner, @GetVigorRestThreshold);
      if ptTortureTimer<>$
      {
         DeleteTimer(ptTortureTimer);
         ptTortureTimer=$;
      }

      if NOT Send(poOwner,@PlayerIsImmortal)
      {
         send(poOwner,@MsgSendUser,#message_rsc=token_unuse_rsc);
      }

      send(poOwner,@SetVigorRestThreshold,#amount=iVigorRestThreshold+piVigorRestThresholdChange);
      piVigorRestThresholdChange = 200;

      if where<>$
      {
         Post(where,@NewHold,#what=self,#new_row=Send(poOwner,@GetRow),#new_col=Send(poOwner,@GetCol));
      }
      else
      {
         oldOwner = poOwner;
         oldRoom = send(poOwner,@getowner);
         oldCol = send(poOwner,@getcol);
         oldRow = send(poOwner,@getrow);
         Post(self,@CheckForDrop,#owned=oldOwner,#oldroom=oldroom,#oldrow=oldrow,#oldcol=oldcol);
      }

      if vrTokenOverlay <> $
      {
         Send(poOwner,@RemoveOverlay,#what=self);
      }

      propagate;
   }

   % This hack makes sure we are after any attempts to use the token,
   % especially needed for offering to players.... So, if were still
   % the owner when we get here, it means we unused it ourselves, and
   % need to drop it.

   CheckForDrop(owned=$, oldroom = $, oldrow = 20, oldcol = 20)
   {
      Post(self,@CheckForDropTwo,#owned=owned,#oldroom=oldroom, #oldrow=oldrow, #oldcol=oldcol);

      return;
   }

   CheckForDropTwo(owned=$, oldroom = $, oldrow= 20, oldcol = 20)
   {
      if poOwner = owned AND NOT pbRejectedOffer
      {
         if send(poOwner,@GetOwner) = $ AND oldroom <> $
         {
            Send(oldroom,@NewHold,#what=self,#new_row=oldrow,#new_col=oldcol);
         }
         else
         {
            Send(Send(poOwner,@GetOwner),@NewHold,#what=self,
                 #new_row=Send(poOwner,@GetRow),#new_col=Send(poOwner,@GetCol));
         }
      }

      pbRejectedOffer = FALSE;

      return;
   }

   UserLogoff()
   {
      send(poOwner,@MsgSendUser,#message_rsc=Token_drops,
           #parm1=send(self,@GetCapDef),#parm2=vrName);
      Send(poOwner,@TryUnuseItem,#what=self);

      propagate;
   }

   DestroyDisposable()
   {
      return;
   }

   TeleportToken(myroom=$)
   {
      if myroom = $ OR NOT IsClass(poOwner,&Room)
      {
         return;
      }

      Send(myroom,@teleport,#what=self);

      return;
   }

   TokenGenerationTimer()
   {
      local i;

      ptGenerationTimer = $;

      if Send(SYS,@GetTokenGame) = $
      {
         return;
      }

      if NOT Send(Send(SYS,@GetTokenGame),@ScandalCheck)
      {
         Send(Send(SYS,@GetTokenGame),@OpenToken,#mytoken=self);
      }
      else
      {
         ptGenerationTimer = CreateTimer(self,@TokenGenerationTimer,
                                         Send(Send(SYS,@GetTokenGame),@GetTimeval,#mytoken=self)/2);
      }

      return;
   }

   TokenDelivered(who=$,mob=$)
   {
      local i;

      for i in Send(SYS,@GetUsersLoggedOn)
      {
         if NOT send(i,@PlayerIsIntriguing)
         {
            continue;
         }

         if i <> who
         {
            Send(i,@MsgSendUser,#message_rsc=token_was_delivered_rsc,
                 #parm1=Send(who,@GetIndef),#parm2=Send(who,@GetName),
                 #parm3=Send(self,@GetIndef),#parm4=Send(self,@GetName));
         }
         else
         {
            if Send(who,@GetFaction) <> FACTION_NEUTRAL
               AND (isClass(mob,&Council)
                    OR Send(who,@GetFaction) = Send(mob,@GetFaction))
            {
               Send(who,@UpdateFactionService,#full=TRUE);
            }

            Send(who,@TokenDeliveryReward,#mob=mob);

            if isClass(mob,&Factions)
               AND Send(Send(SYS,@GetParliament),@GetPower,
                        #faction=Send(mob,@GetFaction)) = FACTION_STRONGLY_IN
            {
               Send(who,@MsgSendUser,#message_Rsc=tok_faction_too_strong);
            }
            else
            {
               if (isClass(mob,&Factions)
                   AND (Send(who,@GetFaction) <> Send(mob,@GetFaction)))
                  OR (isClass(mob,&ShalillePriestess)
                      AND (Send(who,@GetFaction) <> FACTION_NEUTRAL))
               {
                  Send(who,@ResignFaction);
                  Send(who,@JoinFaction,#new_faction=Send(mob,@GetFaction));
               }

               if Send(who,@GetFaction)=FACTION_NEUTRAL AND isClass(mob,&Factions)
               {
                  Send(who,@JoinFaction,#new_faction=Send(mob,@GetFaction));
               }
            }
         }
      }

      Send(Send(SYS,@GetTokenGame),@DeliveryEffects,
           #mob=mob,#who=who,#mytoken=self);
      ptGenerationTimer = CreateTimer(self,@TokenGenerationTimer,
                                      Send(Send(SYS,@GetTokenGame),@GetTimeval,#mytoken=self));

      return;
   }

   TokenRealized(who=$,mob=$)
   {
      local i;

      For i in Send(SYS,@GetUsersLoggedOn)
      {
         if (not send(i,@playerisintriguing)) {continue;}
         if i = who
         {
            Send(i,@MsgSendUser,#message_rsc=token_realized_rsc,
                 #parm1=Send(self,@GetIndef),#parm2=Send(self,@GetName));
         }
         else
         {
            Send(i,@MsgSendUser,#message_rsc=token_was_realized_rsc,
                 #parm1=Send(who,@GetIndef),
                 #parm2=Send(who,@GetName),
                 #parm3=Send(self,@GetIndef),#parm4=Send(self,@GetName),
                 #parm5=Send(mob,@GetIndef),#parm6=Send(mob,@GetName));
         }
      }
      if Send(SYS,@GetTokenGame) <> $
      {
         Send(Send(SYS,@GetTokenGame),@CloseToken,#mytoken=self);
      }

      return;
   }

   % Overlay stuff.

   GetOverlay()
   {
      return vrTokenOverlay;
   }

   GetOverlayHotspot()
   {
      return HS_TOKEN;
   }

   SendOverlayAnimation()
   {
      % group 1 is the player-overlay group
      if vrTokenOverlay <> $
      {
         AddPacket(1,ANIMATE_NONE,2,1);
      }

      return;
   }

   % Misc. infrastructure to keep the tokens in play.

   CanShatter()
   "Tokens may NOT be shattered."
   {
      return FALSE;
   }

   ReqDMDelete()
   "Tokens are not deleted with the DM CLear Ability command."
   {
      return FALSE;
   }

   CanBeStoredInVault()
   {
      return FALSE;
   }

   RandomTeleport()
   {
      local oGame, iRoom, oRoom;

      oGame = send(SYS,@GetTokenGame);
      iRoom = send(oGame,@ChooseTokenRoom);
      if iRoom <> $
      {
         oRoom = send(SYS,@FindRoomByNum,#num=iRoom);
         send(oRoom,@Teleport,#what=self);
      }

      return;
   }

end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


# frozen_string_literal: true

source 'https://rubygems.org'

gem 'rack', '~> 1.0'

gemspec path: '..'


//最佳销售单品
.index-categrory{
  .best {
    overflow: hidden;

    .title {
      font-size: 14px;
      text-align: center;
      margin: 15px 0;
    }

    .SalesGoods-box {

      .SalesGoods-item {
        text-align: center;
        display: inline-block;
        width: 33.33%;
        padding: 0 3px;
        box-sizing: border-box;
        vertical-align: middle;
        margin-bottom: 6px;

        .item {
          background: #FFFFFF;
        }
      }

      .slider-image {
        width: 100%;
      }
      .goods-name {
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        padding-left: 2px;
      }

      .money-box {
        display: flex;
        align-items: center;
        padding-left: 7px;
        .money-now {
          color: red;
          font-size: 12px;
        }
        .money-old {
          color: #c7c7c7;
          font-size: 13px;
          text-decoration: line-through;
        }
      }
    }
    .button-box {
      width: 100%;
      height: 44px;
      text-align: center;
      line-height: 44px;
      background: #FFFFFF;
      margin-bottom: 10px;

    }
  }

}


#
# Fluentd
#
#    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.
#

# The following Fluentd parser plugin, aims to simplify the parsing of multiline
# logs found in Kubernetes nodes. Since many log files shared the same format and
# in order to simplify the configuration, this plugin provides a 'kubernetes' format
# parser (built on top of MultilineParser).
#
# When tailing files, this 'kubernetes' format should be applied to the following
# log file sources:
#
#  - /var/log/kubelet.log
#  - /var/log/kube-proxy.log
#  - /var/log/kube-apiserver.log
#  - /var/log/kube-controller-manager.log
#  - /var/log/kube-scheduler.log
#  - /var/log/rescheduler.log
#  - /var/log/glbc.log
#  - /var/log/cluster-autoscaler.log
#
# Usage:
#
# ---- fluentd.conf ----
#
# <source>
#   @type tail
#   path ./kubelet.log
#   read_from_head yes
#   tag kubelet
#   <parse>
#     @type kubernetes
#   </parse>
# </source>
#
# ----   EOF       ---

require 'fluent/plugin/parser_regexp'

module Fluent
  module Plugin
    class KubernetesParser < RegexpParser
      Fluent::Plugin.register_parser("kubernetes", self)

      CONF_FORMAT_FIRSTLINE = %q{/^\w\d{4}/}
      CONF_FORMAT1 = %q{/^(?<severity>\w)(?<time>\d{4} [^\s]*)\s+(?<pid>\d+)\s+(?<source>[^ \]]+)\] (?<message>.*)/m}
      CONF_TIME_FORMAT = "%m%d %H:%M:%S.%N"

      def configure(conf)
        conf['expression'] = CONF_FORMAT1
        conf['time_format'] = CONF_TIME_FORMAT
        super
      end
    end
  end
end


; RUN: llvm-link %s -override %S/Inputs/override.ll -S | FileCheck %s
; RUN: llvm-link -override %S/Inputs/override.ll %s -S | FileCheck %s

; CHECK-LABEL: define i32 @foo
; CHECK-NEXT: entry:
; CHECK-NEXT: ret i32 4
define i32 @foo(i32 %i) {
entry:
  %add = add nsw i32 %i, %i
  ret i32 %add
}

; Function Attrs: nounwind ssp uwtable
define i32 @main(i32 %argc, i8** %argv) {
entry:
  %a = call i32 @foo(i32 2)
  ret i32 %a
}


msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-01-26T21:24:49.660Z\n"
"PO-Revision-Date: 2015-04-15 11:18+0000\n"
"Last-Translator: af-ZA09_Samuel <leuce.com+rubric@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: af\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Pootle 2.5.0\n"
"X-POOTLE-MTIME: 1429096704.0\n"

#: /templates/carrier.html:6 /media/js/views/carrier.js:14
msgid "Free Carrier Apps"
msgstr ""

#: /templates/carrier.html:8
msgid "Your carrier offers these free apps. You can download them at no charge."
msgstr ""

#: /templates/carrier.html:30 /templates/carrier.html:35
msgid "No apps found."
msgstr "Geen programme gevind nie."

#: /templates/carrier.html:37 /templates/category.html:49 /templates/langpacks.html:41 /templates/product_list.html:48 /templates/purchases.html:35 /templates/addon/list.html:33
msgid "An internal server error occurred. Please try again later."
msgstr "'n Interne bedienerfout het voorgekom. Probeer asseblief weer later."

#: /templates/category.html:9 /templates/category.html:19 /templates/product_list.html:9 /templates/product_list.html:14 /templates/purchases.html:7 /templates/search.html:9 /templates/search.html:16
msgid "Expand"
msgstr "Vou uit"

#: /templates/category.html:42 /templates/search.html:72
msgid "No results found"
msgstr "Geen resultate gevind nie"

#: /templates/category.html:47
msgid "The category you requested does not exist."
msgstr "Die kategorie wat jy versoek het, bestaan nie."

#: /templates/categories.html:3 /templates/categories.html:13 /templates/header.html:9 /templates/header.html:10 /templates/nav.html:38 /templates/app/index.html:176
msgid "Categories"
msgstr "Kategorieë"

#: /templates/footer.html:6 /templates/header.html:46 /templates/nav.html:93 /media/js/views/feedback.js:50 /media/js/views/feedback.js:53
msgid "Feedback"
msgstr "Terugvoer"

#: /templates/footer.html:9 /templates/footer.html:13 /templates/footer.html:17 /templates/nav.html:92
msgid "Support"
msgstr "Ondersteuning"

#: /templates/footer.html:20
msgid "Develop Apps"
msgstr "Ontwikkel programme"

#: /templates/footer.html:21
msgid "Develop Firefox OS Add-ons"
msgstr ""

#: /templates/footer.html:23 /templates/nav.html:78
msgid "My Submissions"
msgstr "My indienings"

#: /templates/footer.html:26 /templates/nav.html:81
msgid "Reviewer Tools"
msgstr "Resensiegereedskap"

#: /templates/footer.html:29 /templates/nav.html:84
msgid "Lookup Tool"
msgstr "Opsoekfunksie"

#: /templates/footer.html:35
msgid ""
"Except where otherwise noted, content on this site is licensed under the Creative Commons Attribution Share-"
"Alike License v3.0 or any later version."
msgstr ""
"Behalwe waar dit andersins aangeteken is, word die inhoud van hierdie werf kragtens die Creative Commons "
"Attribution Share-Alike-lisensie v3.0 of enige latere weergawe gelisensieer."

#: /templates/footer.html:40 /templates/nav.html:101 /templates/privacy.html:2 /templates/app/index.html:74 /templates/app/privacy.html:2 /media/js/views/privacy.js:9
msgid "Privacy Policy"
msgstr "Privaatheidsbeleid"

#: /templates/footer.html:41 /templates/nav.html:102 /templates/terms.html:2 /media/js/views/terms.js:12
msgid "Terms of Use"
msgstr "Gebruiksbepalings"

#: /templates/footer.html:43
msgid "Report Trademark Abuse"
msgstr "Rapporteer handelsmerkmisbruik"

#: /templates/feedback.html:5
msgid "We want to hear from you!"
msgstr "Ons wil van jou hoor!"

#: /templates/feedback.html:6
msgid "Give us your feedback. Let us know whether we are awesome or buggy."
msgstr "Gee vir ons terugvoer. Vertel ons of ons fantasties of 'n flater is."

#: /templates/feedback.html:7 /templates/app/abuse.html:16 /templates/addon/abuse.html:15
msgid "Let us know..."
msgstr "Laat ons weet..."

#: /templates/feedback.html:11 /templates/newsletter.html:38 /templates/app/abuse.html:21 /templates/addon/abuse.html:20 /templates/ratings/add.html:35 /templates/ratings/flag.html:17
#: /templates/website/issue.html:13
msgid "Cancel"
msgstr "Kanselleer"

#: /templates/feedback.html:12
msgid "Submit Feedback"
msgstr "Stuur terugvoer in"

#: /templates/fxos_only_banner.html:1
msgid "These applications can only be installed on devices running Firefox OS."
msgstr ""

#: /templates/fxos_only_banner.html:2
msgid "You may view the catalog but not be able to install or run these apps on your platform."
msgstr ""

#: /templates/header.html:19 /templates/header.html:34
msgid "Search Marketplace…"
msgstr "Deursoek Marketplace…"

#: /templates/header.html:21 /templates/nav.html:40
msgid "Search"
msgstr ""

#: /templates/header.html:44 /templates/nav.html:43 /templates/nav.html:68 /templates/settings.html:2 /media/js/views/settings.js:9
msgid "Settings"
msgstr "Instellings"

#: /templates/header.html:45 /templates/nav.html:74 /templates/purchases.html:6 /media/js/views/purchases.js:9
msgid "My Apps"
msgstr "My programme"

#: /templates/header.html:47
msgid "Sign Out"
msgstr "Meld af"

#: /templates/langpacks.html:34 /templates/langpacks.html:39
msgid "No language packs found."
msgstr "Geen taalpakke gevind nie."

#: /templates/marketplace-update.html:2
msgid "An update to Marketplace is available."
msgstr "Daar is 'n bywerking vir Markplek beskikbaar."

#: /templates/marketplace-update.html:4
msgid "Download"
msgstr "Laai af"

#: /templates/nav.html:9 /templates/nav.html:51
msgid "Apps"
msgstr ""

#: /templates/nav.html:14 /templates/nav.html:53 /templates/addon/list.html:5
msgid "Add-ons"
msgstr ""

#: /templates/nav.html:20 /templates/nav.html:56
msgid "Homescreens"
msgstr ""

#: /templates/nav.html:23
msgid "More"
msgstr ""

#: /templates/nav.html:32 /templates/nav.html:50
msgid "Home"
msgstr "Tuis"

#: /templates/nav.html:33 /templates/_macros/sort_toggle.html:4 /templates/_macros/sort_toggle.html:11
msgid "Popular"
msgstr "Gewild"

#: /templates/nav.html:34 /templates/_macros/sort_toggle.html:5 /templates/_macros/sort_toggle.html:12
msgid "New"
msgstr "Nuwe"

#: /templates/nav.html:36 /templates/nav.html:71 /media/js/views/recommended.js:15
msgid "Recommended Apps"
msgstr ""

#: /templates/nav.html:41 /templates/nav.html:62 /templates/purchases.html:42 /templates/settings.html:43
msgid "Register"
msgstr "Registreer"

#: /templates/nav.html:42 /templates/purchases.html:43 /templates/settings.html:44
msgid "Sign In"
msgstr "Meld aan"

#: /templates/nav.html:65
msgid "Sign in"
msgstr ""

#: /templates/nav.html:76
msgid "Sign out"
msgstr ""

#: /templates/nav.html:87
msgid "Add-on Tools"
msgstr ""

#: /templates/nav.html:95
msgid "Get Involved"
msgstr "Raak betrokke"

#: /templates/nav.html:97 /media/js/views/newsletter_signup.js:11
msgid "Newsletter Signup"
msgstr ""

#: /templates/newsletter.html:3
msgid "Sign up for our newsletter"
msgstr "Sluit aan vir ons nuusbrief"

#: /templates/newsletter.html:5
msgid "Get Firefox news! Sign up for our newsletter"
msgstr "Kry Firefox-nuus! Sluit aan vir ons nuusbrief"

#: /templates/newsletter.html:12 /templates/settings.html:13
msgid "Email Address"
msgstr "E-posadres"

#: /templates/newsletter.html:13
msgid "Email"
msgstr "E-pos"

#: /templates/newsletter.html:15 /templates/newsletter.html:37
msgid "Sign me up"
msgstr "Sluit my aan"

#: /templates/newsletter.html:18
msgid "Preferred Language"
msgstr ""

#: /templates/newsletter.html:32
msgid "I'm okay with Mozilla handling my info as explained in this Privacy Policy."
msgstr "Ek is tevrede as Mozilla my inligting hanteer soos uiteengesit in hierdie privaatheidbeleid."

#: /templates/newsletter.html:44
msgid "Thanks for signing up!"
msgstr "Dankie dat jy aangesluit het!"

#: /templates/newsletter.html:45
msgid "You'll receive an email from mozilla@e.mozilla.org, please check your inbox for your first email from us. If you don’t see it, check your spam filter."
msgstr "Kyk in jou e-pos vir 'n e-pos van mozilla@e.mozilla.org. As jy dit nie sien nie, kontroleer jou strooipos-filter."

#: /templates/shutdown_banner.html:1
msgid ""
"The Marketplace will shut down on March 30th, 2018. If there are any apps that you would like, and have not downloaded yet, please do so before that date. See the wiki for "
"more background."
msgstr ""

#: /templates/product_list.html:41 /templates/product_list.html:46
msgid "The list returned no results."
msgstr ""

#: /templates/purchases.html:41
msgid "You must be signed in to view your apps."
msgstr "Jy moet aangemeld wees om jou programme te bekyk."

#: /templates/purchases.html:30
msgid "You have no apps"
msgstr "Jy het geen programme nie"

#: /templates/purchases.html:34 /templates/errors/fragment.html:1 /media/js/views/app.js:47
msgid "Oh no!"
msgstr "Ag nee!"

#: /templates/search.html:8
msgid "{n} Result"
msgid_plural "{n} Results"
msgstr[0] "{n} resultaat"
msgstr[1] "{n} resultate"

#: /templates/search.html:12
msgid "\"{search_query}\" returned {n} result"
msgid_plural "\"{search_query}\" returned {n} results"
msgstr[0] "\"{search_query}\" lewer {n} resultaat op"
msgstr[1] "\"{search_query}\" lewer {n} resultate op"

#: /templates/search.html:78
msgid "No results found, try again later"
msgstr "Geen resultate gevind nie, probeer weer later"

#: /templates/settings.html:9
msgid "General settings"
msgstr "Algemene instellings"

#: /templates/settings.html:18
msgid "Display Name"
msgstr "Vertoonnaam"

#: /templates/settings.html:26
msgid "Recommendations"
msgstr "Aanbeveel"

#: /templates/settings.html:30
msgid "Yes, show me recommendations based on my installed apps. Learn more"
msgstr "Ja, wys aanbevelings vanweë my geïnstalleerde programme. Leer meer"

#: /templates/settings.html:42
msgid "Save Changes"
msgstr "Stoor veranderinge"

#: /templates/settings.html:36
msgid "Region"
msgstr "Streek"

#: /templates/usage.html:3 /media/js/views/usage.js:9
msgid "App Statistics"
msgstr "Programstatistiek"

#: /templates/usage.html:10
msgid "App usage statistics"
msgstr "Programgebruik-statistiek"

#: /templates/usage.html:11
msgid "Not enough statistics to show."
msgstr "Nie genoeg statistiek om te wys nie."

#: /templates/_includes/carrier_apps_banner.html:2
msgid "Your carrier offers some free apps."
msgstr ""

#. This is the link text for the carrier apps banner. "Your carrier offers some free apps. Get them now!"
#: /templates/_includes/carrier_apps_banner.html:6
msgid "Get them now!"
msgstr ""

#. (es) Classificacao Indicativa.
#: /templates/_includes/content_ratings.html:5
msgid "Content Rating"
msgstr "Inhoudbeoordeling"

#. (es) Classificacao Indicativa. Rating as in content rating.
#: /templates/_includes/content_ratings.html:45
msgid "Rating Details"
msgstr "Beoordeling-details"

#: /templates/_includes/post_install_message.html:2
msgid "Installed!"
msgstr "Geïnstalleer!"

#: /templates/_includes/post_install_message.html:5
msgid "Launch this app from your Applications directory."
msgstr "Begin hierdie program vanaf jou Applications-lêergids."

#: /templates/_includes/post_install_message.html:8
msgid "Launch this app from your Windows desktop or Start ► All Programs."
msgstr "Begin hierdie program vanaf jou Windows-werkskerm of Start ► All Programs."

#: /templates/_includes/post_install_message.html:11
msgid "Launch this app from your dash, Application picker, or Applications menu."
msgstr "Begin hierdie program vanaf jou ikoonstrook, program-keuseskerm, of program-kieslys."

#: /templates/_includes/reviews_summary.html:9
msgid "1 Review"
msgid_plural "{numReviews} Reviews"
msgstr[0] "1 resensie"
msgstr[1] "{numReviews} resensies"

#: /templates/_includes/reviews_sidebar.html:9
msgid "Edit your Review"
msgstr "Redigeer jou resensie"

#: /templates/_includes/reviews_sidebar.html:11
msgid "Edit your review"
msgstr "Redigeer jou resensie"

#: /templates/_includes/reviews_sidebar.html:18
msgid "Write a review"
msgstr "Skryf 'n resensie"

#: /templates/_includes/reviews_sidebar.html:18
msgid "Sign in to review"
msgstr "Meld aan om te resenseer"

#: /templates/_includes/reviews_sidebar.html:26
msgid "Read all reviews"
msgstr "Lees alle resensies"

#: /templates/_macros/app_tile.html:108
msgid "Review"
msgid_plural "Reviews"
msgstr[0] "Resensie"
msgstr[1] "Resensies"

#: /templates/_macros/app_tile.html:114
msgid "Not yet reviewed"
msgstr "Nog nie geresenseer nie"

#: /templates/_macros/feed_app_tile.html:14
msgid "— {attribution}"
msgstr "— {attribution}"

#: /templates/_macros/feed_item.html:82 /templates/_macros/feed_item.html:175
msgid "View all"
msgstr ""

#: /templates/_macros/feed_websites.html:16
msgid "Visit this top site!"
msgstr ""

#: /templates/_macros/feed_websites.html:50
msgid "Show me another site"
msgstr ""

#: /templates/_macros/more_button.html:3
msgid "Load more"
msgstr "Laai meer"

#: /templates/_macros/previews.html:42 /templates/_macros/previews.html:45
msgid "{app_name} screenshot"
msgstr "{app_name} skermskoot"

#: /templates/_macros/review.html:14
msgid "For previous version {version}"
msgstr "Vir vorige weergawe {version}"

#: /templates/_macros/review.html:25 /templates/_macros/review.html:29
msgid "Edit"
msgstr "Redigeer"

#: /templates/_macros/review.html:36
msgid "Delete"
msgstr "Skrap"

#: /templates/_macros/review.html:42
msgid "Report"
msgstr "Verslag"

#: /templates/_macros/review.html:44
msgid "Flagged for review"
msgstr "Gevlag vir resensering"

#: /templates/_macros/stars.html:5
msgid "Rated {stars} out of {maxstars} stars"
msgstr "Beoordeeld met {stars} uit {maxstars} sterre"

#: /templates/app/abuse.html:5
msgid "Need to report something?"
msgstr "Wil jy iets rapporteer?"

#: /templates/app/abuse.html:7
msgid "Let us know if this app is doing something that isn't allowed in the review criteria and should be removed from the Marketplace."
msgstr ""

#: /templates/app/abuse.html:12
msgid "Examples of issues to report here are if the app is broken, contains mature content, contains malware, etc. The app developer will not see your comments."
msgstr ""

#: /templates/app/abuse.html:22 /templates/addon/abuse.html:21
msgid "Submit Report"
msgstr "Stuur rapportering in"

#. delimiter to separate list of words (e.g., "eggs, ham, cheese").
#: /templates/app/index.html:19 /templates/addon/index.html:13 /templates/website/index.html:15
msgid "Description"
msgstr "Beskrywing"

#: /templates/app/index.html:25 /templates/app/index.html:39 /templates/addon/index.html:20 /templates/website/index.html:21
msgid "View All"
msgstr "Bekyk almal"

#: /templates/app/index.html:35
msgid "Updates"
msgstr "Bywerkings"

#: /templates/app/index.html:46
msgid "Last updated"
msgstr "Laas bygewerk"

#: /templates/app/index.html:55
msgid "Email Support"
msgstr "E-possteun"

#: /templates/app/index.html:62
msgid "Support Site"
msgstr "Ondersteun werf"

#: /templates/app/index.html:68
msgid "Homepage"
msgstr "Tuisblad"

#: /templates/app/index.html:81
msgid "Statistics"
msgstr "Statistiek"

#: /templates/app/index.html:88
msgid "Edit Listing"
msgstr "Redigeer lysting"

#: /templates/app/index.html:96
msgid "Approve / Reject"
msgstr "Keur goed / keur af"

#: /templates/app/index.html:97
msgid "Review History"
msgstr "Resensiegeskiedenis"

#: /templates/app/index.html:114 /media/js/views/app/ratings.js:11
msgid "Reviews"
msgstr "Resensies"

#: /templates/app/index.html:125
msgid "App not yet reviewed"
msgstr "Program is nog nie geresenseer nie"

#: /templates/app/index.html:144
msgid "Premium version available"
msgstr "Premieweergawe beskikbaar"

#: /templates/app/index.html:162
msgid "More Information"
msgstr "Meer inligting"

#: /templates/app/index.html:165
msgid "Developer"
msgstr "Ontwikkelaar"

#: /templates/app/index.html:169
msgid "Compatibility"
msgstr ""

#. delimiter to separate list of words (e.g., "eggs, ham, cheese").
#: /templates/app/index.html:172 /templates/app/index.html:179
msgid ","
msgstr ","

#: /templates/app/index.html:184
msgid "File Size"
msgstr "Lêergrootte"

#: /templates/app/index.html:189
msgid "Most Recent Version"
msgstr "Mees onlangse weergawe"

#: /templates/app/index.html:207 /media/js/views/app/abuse.js:54
msgid "Report Abuse"
msgstr "Rapporteer misbruik"

#: /templates/app/privacy.html:8
msgid "Back to app"
msgstr "Terug na program"

#: /templates/app/privacy.html:11
msgid "Loading Privacy Policy..."
msgstr "Laai tans privaatheidsbeleid..."

#: /templates/addon/abuse.html:6
msgid "Let us know if this add-on is doing something that isn't allowed in the review criteria and should be removed from the Marketplace."
msgstr ""

#: /templates/addon/abuse.html:11
msgid "Examples of issues to report here are if the add-on is completely broken, contains mature content, contains malware, etc. The add-on developer will not see your comments."
msgstr ""

#: /templates/app/receipt.html:2
msgid "Thank you for purchasing"
msgstr "Dankie vir jou aankope"

#: /templates/addon/index.html:25
msgid "version: {version}"
msgstr ""

#: /templates/addon/index.html:26
msgid "size: {size}"
msgstr ""

#: /templates/addon/index.html:29
msgid "last updated: {date}"
msgstr ""

#: /templates/addon/index.html:36 /media/js/views/addon/abuse.js:36
msgid "Report to Mozilla"
msgstr ""

#: /templates/addon/list.html:6
msgid "Customize your device with powerful features."
msgstr ""

#: /templates/addon/list.html:26 /templates/addon/list.html:31
msgid "No Firefox OS add-ons found."
msgstr ""

#: /templates/errors/fragment.html:2
msgid "An error occurred."
msgstr "'n Fout het voorgekom."

#: /templates/errors/404.html:2
msgid "Content Not Found"
msgstr ""

#: /templates/errors/404.html:3
msgid "Whoops! Something went wrong and you ended up here. Sorry!"
msgstr ""

#: /templates/errors/pagination.html:2
msgid "Try Again"
msgstr "Probeer weer"

#: /templates/ratings/add.html:8 /templates/ratings/edit.html:4 /media/js/views/app/ratings/edit.js:15
msgid "Edit Review"
msgstr "Redigeer resensie"

#: /templates/ratings/add.html:8 /media/js/views/app/ratings/add.js:20
msgid "Leave a Review"
msgstr "Laat 'n resensie"

#: /templates/ratings/add.html:10
msgid "Please select a star rating."
msgstr ""

#: /templates/ratings/add.html:12
msgid "Rate:"
msgstr "Beoordeel:"

#: /templates/ratings/add.html:23
msgid ""
"Please read the Review Guidelines for more details about rating apps. Reviews that do not meet these guidelines may be removed by our moderation team without "
"notice."
msgstr ""

#: /templates/ratings/add.html:28
msgid "Tell us what you like about this app. Write like you’re telling a friend about your experience with the app. Give specific details, for example, What features did you like or dislike?"
msgstr ""

#: /templates/ratings/add.html:32
msgid "Only users that are logged in may submit reviews."
msgstr "Net gebruikers wat aangemeld is, kan resensies stuur."

#: /templates/ratings/add.html:36
msgid "Update Review"
msgstr "Werk resensie by"

#: /templates/ratings/add.html:36
msgid "Submit Review"
msgstr "Stuur resensie"

#: /templates/ratings/flag.html:3 /templates/ratings/flag.html:26
msgid "Flag Review"
msgstr "Vlag vir resensie"

#: /templates/ratings/flag.html:4
msgid "See an issue with this review? Select a reason below."
msgstr "Is daar fout met hierdie resensie? Kies 'n rede hier onder."

#: /templates/ratings/flag.html:7
msgid "Spam or otherwise non-review content"
msgstr "Rommelpos of andersins nieresensie-inhoud"

#: /templates/ratings/flag.html:10
msgid "Inappropriate language/dialog"
msgstr "Onvanpaste taal/dialoog"

#: /templates/ratings/flag.html:13
msgid "Misplaced bug report or support request"
msgstr "Verlore foutverslag of ondersteuningsversoek"

#: /templates/ratings/main.html:36
msgid "This app has no reviews."
msgstr "Hierdie program het geen resensies."

#: /templates/website/index.html:34
msgid "Explore more in {category_one} and {category_two}."
msgstr ""

#: /templates/website/index.html:38
msgid "Explore more in {category}."
msgstr ""

#: /templates/website/index.html:47
msgid "Is there something wrong or out-of-date with this website listing?"
msgstr ""

#: /templates/website/index.html:49 /templates/website/issue.html:14
msgid "Report an issue"
msgstr ""

#: /templates/ratings/rating.html:4 /media/js/views/app/ratings/rating.js:13
msgid "App Review"
msgstr "Programresensie"

#: /templates/website/issue.html:5
msgid "Let us know if something is missing from this website listing or its information should be updated."
msgstr ""

#: /templates/website/issue.html:6
msgid "For information on show to report a copyright or trademark issue see here."
msgstr ""

#: /templates/website/issue.html:8
msgid "Describe the issue here. Please be specific."
msgstr ""

#: /media/js/apps.js:114
msgid "not available for your region"
msgstr ""

#: /media/js/apps.js:119
msgid "not available for your platform"
msgstr ""

#: /media/js/apps.js:123 /media/js/apps.js:128
msgid "not compatible with your device"
msgstr ""

#: /media/js/buttons.js:92 /media/js/buttons.js:167 /media/js/payments.js:134
msgid "Payment cancelled."
msgstr "Betaling gekanselleer."

#. App's install failed, but problem is temporary.
#: /media/js/buttons.js:250
msgid "Install failed. Please try again later."
msgstr "Installering het misluk. Probeer asseblief weer later."

#: /media/js/buttons.js:336 /media/js/buttons.js:341 /media/js/buttons.js:440 /media/js/buttons.js:444
msgid "Installed"
msgstr "Geïnstalleer"

#: /media/js/buttons.js:417
msgid "free"
msgstr ""

#: /media/js/buttons.js:417
msgid "Free"
msgstr "Gratis"

#: /media/js/buttons.js:422
msgid "Unavailable"
msgstr "Nie beskikbaar nie"

#: /media/js/buttons.js:440 /media/js/buttons.js:457 /media/js/buttons.js:467
msgid "Install"
msgstr "Installeer"

#: /media/js/buttons.js:445
msgid "Install Add-on"
msgstr ""

#: /media/js/buttons.js:450
msgid "Open website"
msgstr ""

#: /media/js/buttons.js:453
msgid "Open app"
msgstr ""

#: /media/js/buttons.js:455
msgid "Install for free"
msgstr ""

#: /media/js/buttons.js:459
msgid "Install for {price}"
msgstr ""

#: /media/js/buttons.js:465
msgid "Open"
msgstr ""

#: /media/js/categories.js:6
msgid "Games"
msgstr "Speletjies"

#: /media/js/categories.js:7
msgid "Books & Comics"
msgstr ""

#: /media/js/categories.js:8
msgid "Business"
msgstr "Besigheid"

#: /media/js/categories.js:9
msgid "Education"
msgstr "Opvoeding"

#: /media/js/categories.js:10
msgid "Entertainment"
msgstr "Vermaak"

#: /media/js/categories.js:11
msgid "Food & Drink"
msgstr ""

#: /media/js/categories.js:12
msgid "Health & Fitness"
msgstr "Gesondheid en fiksheid"

#: /media/js/categories.js:13
msgid "Humor"
msgstr ""

#: /media/js/categories.js:14
msgid "Internet"
msgstr ""

#: /media/js/categories.js:15
msgid "Kids"
msgstr ""

#: /media/js/categories.js:16
msgid "Lifestyle"
msgstr "Lewenstyl"

#: /media/js/categories.js:17
msgid "Maps & Navigation"
msgstr "Kaarte en navigasie"

#: /media/js/categories.js:18
msgid "Music"
msgstr "Musiek"

#: /media/js/categories.js:19
msgid "News"
msgstr ""

#: /media/js/categories.js:20
msgid "Personalization"
msgstr ""

#: /media/js/categories.js:21
msgid "Photo & Video"
msgstr "Foto en video"

#: /media/js/categories.js:22
msgid "Productivity"
msgstr "Produktiwiteit"

#: /media/js/categories.js:23
msgid "Reference"
msgstr "Naslaan"

#: /media/js/categories.js:24
msgid "Science & Tech"
msgstr ""

#: /media/js/categories.js:25
msgid "Shopping"
msgstr "Inkopies"

#: /media/js/categories.js:26
msgid "Social"
msgstr "Sosiaal"

#: /media/js/categories.js:27
msgid "Sports"
msgstr "Sport"

#: /media/js/categories.js:28
msgid "Travel"
msgstr "Reis"

#: /media/js/categories.js:29
msgid "Utilities"
msgstr "Nutsprogramme"

#: /media/js/categories.js:30
msgid "Weather"
msgstr ""

#: /media/js/compat_filter.js:42 /media/js/compat_filter.js:51
msgid "All Platforms"
msgstr "Alle platforms"

#: /media/js/compat_filter.js:43 /media/js/compat_filter.js:54
msgid "Android Mobile"
msgstr "Android-selfoon"

#: /media/js/compat_filter.js:44 /media/js/compat_filter.js:55
msgid "Android Tablet"
msgstr "Android-tablet"

#: /media/js/compat_filter.js:45 /media/js/compat_filter.js:52
msgid "Desktop"
msgstr "Rekenaar"

#: /media/js/compat_filter.js:46 /media/js/compat_filter.js:53
msgid "Firefox OS"
msgstr "Firefox OS"

#. For ages {0} and higher. (de) `ab {0} Jahren`.
#: /media/js/content-ratings.js:71
msgid "For ages {0}+"
msgstr "Vir ouderdomme {0}+"

#: /media/js/content-ratings.js:77
msgid "Generic"
msgstr "Generies"

#: /media/js/content-ratings.js:84
msgid "For all ages"
msgstr "Vir alle ouderdomme"

#: /media/js/content-ratings.js:93
msgid "Rating Pending"
msgstr "Beoordeling wagtend"

#: /media/js/content-ratings.js:94
msgid "Rating Refused"
msgstr "Beoordeling geweier"

#: /media/js/content-ratings.js:97
msgid "Everyone"
msgstr "Almal"

#: /media/js/content-ratings.js:98
msgid "Everyone 10+"
msgstr "Almal 10+"

#: /media/js/content-ratings.js:99
msgid "Teen"
msgstr "Tiener"

#: /media/js/content-ratings.js:100
msgid "Mature 17+"
msgstr "Volwasse 17+"

#: /media/js/content-ratings.js:101
msgid "Adults Only 18+"
msgstr "Slegs volwassenes 18+"

#: /media/js/edbrands.js:33
msgid "App for Albania"
msgid_plural "Apps for Albania"
msgstr[0] "Program vir Albanië"
msgstr[1] "Programme vir Albanië"

#: /media/js/edbrands.js:34
msgid "App for Argentina"
msgid_plural "Apps for Argentina"
msgstr[0] "Program vir Argentinië"
msgstr[1] "Programme vir Argentinië"

#: /media/js/edbrands.js:35
msgid "App for Bangladesh"
msgid_plural "Apps for Bangladesh"
msgstr[0] "Program vir Bangladesj"
msgstr[1] "Programme vir Bangladesj"

#: /media/js/edbrands.js:36
msgid "App for Brazil"
msgid_plural "Apps for Brazil"
msgstr[0] "Program vir Brasilië"
msgstr[1] "Programme vir Brasilië"

#: /media/js/edbrands.js:37
msgid "App for Bulgaria"
msgid_plural "Apps for Bulgaria"
msgstr[0] "Program vir Bulgarye"
msgstr[1] "Programme vir Bulgarye"

#: /media/js/edbrands.js:38
msgid "App for Chile"
msgid_plural "Apps for Chile"
msgstr[0] "Program vir Chili"
msgstr[1] "Programme vir Chili"

#: /media/js/edbrands.js:39
msgid "App for China"
msgid_plural "Apps for China"
msgstr[0] "Program vir Sjina"
msgstr[1] "Programme vir Sjina"

#: /media/js/edbrands.js:40
msgid "App for Colombia"
msgid_plural "Apps for Colombia"
msgstr[0] "Program vir Colombia"
msgstr[1] "Programme vir Colombia"

#: /media/js/edbrands.js:41
msgid "App for Costa Rica"
msgid_plural "Apps for Costa Rica"
msgstr[0] "Program vir Costa Rica"
msgstr[1] "Programme vir Costa Rica"

#: /media/js/edbrands.js:42
msgid "App for Croatia"
msgid_plural "Apps for Croatia"
msgstr[0] "Program vir Kroasië"
msgstr[1] "Programme vir Kroasië"

#: /media/js/edbrands.js:43
msgid "App for Czech Republic"
msgid_plural "Apps for Czech Republic"
msgstr[0] "Program vir die Tsjeggiese Republiek"
msgstr[1] "Programme vir die Tsjeggiese Republiek"

#: /media/js/edbrands.js:44
msgid "App for Ecuador"
msgid_plural "Apps for Ecuador"
msgstr[0] "Program vir Ecuador"
msgstr[1] "Programme vir Ecuador"

#: /media/js/edbrands.js:45
msgid "App for El Salvador"
msgid_plural "Apps for El Salvador"
msgstr[0] "Program vir El Salvador"
msgstr[1] "Programme vir El Salvador"

#: /media/js/edbrands.js:46
msgid "App for France"
msgid_plural "Apps for France"
msgstr[0] "Program vir Frankryk"
msgstr[1] "Program vir Frankryk"

#: /media/js/edbrands.js:47
msgid "App for Germany"
msgid_plural "Apps for Germany"
msgstr[0] "Program vir Duitsland"
msgstr[1] "Programme vir Duitsland"

#: /media/js/edbrands.js:48
msgid "App for Greece"
msgid_plural "Apps for Greece"
msgstr[0] "Program vir Griekeland"
msgstr[1] "Programme vir Griekeland"

#: /media/js/edbrands.js:49
msgid "App for Hungary"
msgid_plural "Apps for Hungary"
msgstr[0] "Program vir Hongarye"
msgstr[1] "Programme vir Hongarye"

#: /media/js/edbrands.js:50
msgid "App for India"
msgid_plural "Apps for India"
msgstr[0] "Program vir Indië"
msgstr[1] "Programme vir Indië"

#: /media/js/edbrands.js:51
msgid "App for Italy"
msgid_plural "Apps for Italy"
msgstr[0] "Program vir Italië"
msgstr[1] "Programme vir Italië"

#: /media/js/edbrands.js:52
msgid "App for Japan"
msgid_plural "Apps for Japan"
msgstr[0] "Program vir Japan"
msgstr[1] "Programme vir Japan"

#: /media/js/edbrands.js:53
msgid "App for Macedonia"
msgid_plural "Apps for Macedonia"
msgstr[0] "Program vir Masedonië"
msgstr[1] "Programme vir Masedonië"

#: /media/js/edbrands.js:54
msgid "App for Mexico"
msgid_plural "Apps for Mexico"
msgstr[0] "Program vir Mexiko"
msgstr[1] "Programme vir Mexiko"

#: /media/js/edbrands.js:55
msgid "App for Montenegro"
msgid_plural "Apps for Montenegro"
msgstr[0] "Program vir Montenegro"
msgstr[1] "Programme vir Montenegro"

#: /media/js/edbrands.js:56
msgid "App for Nicaragua"
msgid_plural "Apps for Nicaragua"
msgstr[0] "Program vir Nicaragua"
msgstr[1] "Programme vir Nicaragua"

#: /media/js/edbrands.js:57
msgid "App for Panama"
msgid_plural "Apps for Panama"
msgstr[0] "Program vir Panama"
msgstr[1] "Programme vir Panama"

#: /media/js/edbrands.js:58
msgid "App for Peru"
msgid_plural "Apps for Peru"
msgstr[0] "Program vir Peru"
msgstr[1] "Programme vir Peru"

#: /media/js/edbrands.js:59
msgid "App for Poland"
msgid_plural "Apps for Poland"
msgstr[0] "Program vir Pole"
msgstr[1] "Programme vir Pole"

#: /media/js/edbrands.js:60
msgid "App for Russia"
msgid_plural "Apps for Russia"
msgstr[0] "Program vir Rusland"
msgstr[1] "Programme vir Rusland"

#: /media/js/edbrands.js:61
msgid "App for Serbia"
msgid_plural "Apps for Serbia"
msgstr[0] "Program vir Serwië"
msgstr[1] "Programme vir Serwië"

#: /media/js/edbrands.js:62
msgid "App for South Africa"
msgid_plural "Apps for South Africa"
msgstr[0] "Program vir Suid-Afrika"
msgstr[1] "Programme vir Suid-Afrika"

#: /media/js/edbrands.js:63
msgid "App for Spain"
msgid_plural "Apps for Spain"
msgstr[0] "Program vir Spanje"
msgstr[1] "Programme vir Spanje"

#: /media/js/edbrands.js:64
msgid "App for Uruguay"
msgid_plural "Apps for Uruguay"
msgstr[0] "Program vir Uruguay"
msgstr[1] "Programme vir Uruguay"

#: /media/js/edbrands.js:65
msgid "App for Venezuela"
msgid_plural "Apps for Venezuela"
msgstr[0] "Program vir Venezuela"
msgstr[1] "Programme vir Venezuela"

#: /media/js/edbrands.js:66
msgid "Arts & Entertainment App"
msgid_plural "Arts & Entertainment Apps"
msgstr[0] "Program vir kuns en vermaak"
msgstr[1] "Programme vir kuns en vermaak"

#: /media/js/edbrands.js:67
msgid "Featured Book App"
msgid_plural "Featured Book Apps"
msgstr[0] "Uitgesoekte boekprogram"
msgstr[1] "Uitgesoekte boekprogramme"

#: /media/js/edbrands.js:68
msgid "Featured Creativity App"
msgid_plural "Featured Creativity Apps"
msgstr[0] "Uitgesoekte kreatiwiteitsprogram"
msgstr[1] "Uitgesoekte kreatiwiteitsprogramme"

#: /media/js/edbrands.js:69
msgid "Featured Education App"
msgid_plural "Featured Education Apps"
msgstr[0] "Uitgesoekte opvoedkundige program"
msgstr[1] "Uitgesoekte opvoedkundige programme"

#: /media/js/edbrands.js:70
msgid "Featured Game"
msgid_plural "Featured Games"
msgstr[0] "Uitgesoekte speletjie"
msgstr[1] "Uitgesoekte speletjies"

#: /media/js/edbrands.js:71
msgid "Groundbreaking App"
msgid_plural "Groundbreaking Apps"
msgstr[0] "Innoverende program"
msgstr[1] "Innoverende programme"

#: /media/js/edbrands.js:72
msgid "Health & Fitness App"
msgid_plural "Health & Fitness Apps"
msgstr[0] "Program vir gesondheid en fiksheid"
msgstr[1] "Programme vir gesondheid en fiksheid"

#: /media/js/edbrands.js:73
msgid "Hidden Gem"
msgid_plural "Hidden Gems"
msgstr[0] "Versteekte juweel"
msgstr[1] "Hidden Gems"

#: /media/js/edbrands.js:74
msgid "Featured Lifestyle App"
msgid_plural "Featured Lifestyle Apps"
msgstr[0] "Uitgesoekte lewenstylprogram"
msgstr[1] "Uitgesoekte lewenstylprogramme"

#: /media/js/edbrands.js:75
msgid "Local Favorite App"
msgid_plural "Local Favorite Apps"
msgstr[0] "Plaaslike gunstelingprogram"
msgstr[1] "Plaaslike gunstelingprogramme"

#: /media/js/edbrands.js:76
msgid "Maps & Navigation App"
msgid_plural "Maps & Navigation Apps"
msgstr[0] "Kaarte en navigasieprogram"
msgstr[1] "Kaarte en navigasieprogramme"

#: /media/js/edbrands.js:77
msgid "Featured Music App"
msgid_plural "Featured Music Apps"
msgstr[0] "Uitgesoekte musiekprogram"
msgstr[1] "Uitgesoekte musiekprogramme"

#: /media/js/edbrands.js:78
msgid "Mystery App!"
msgid_plural "Mystery Apps!"
msgstr[0] "Raaiselprogram!"
msgstr[1] "Raaiselprogramme!"

#: /media/js/edbrands.js:79
msgid "News & Weather App"
msgid_plural "News & Weather Apps"
msgstr[0] "Nuus- of weer-program"
msgstr[1] "Nuus- en weer-programme"

#: /media/js/edbrands.js:80
msgid "Photo & Video App"
msgid_plural "Photo & Video Apps"
msgstr[0] "Program vir foto's en video's"
msgstr[1] "Programme vir foto's en video's"

#: /media/js/edbrands.js:81
msgid "Featured Shopping App"
msgid_plural "Featured Shopping Apps"
msgstr[0] "Uitgesoekte inkopieprogram"
msgstr[1] "Uitgesoekte inkopieprogramme"

#: /media/js/edbrands.js:82
msgid "Featured Social App"
msgid_plural "Featured Social Apps"
msgstr[0] "Uitgesoekte sosiale program"
msgstr[1] "Uitgesoekte sosiale programme"

#: /media/js/edbrands.js:83
msgid "Featured Sports App"
msgid_plural "Featured Sports Apps"
msgstr[0] "Uitgesoekte sportprogram"
msgstr[1] "Uitgesoekte sportprogramme"

#: /media/js/edbrands.js:84
msgid "Tool & Time Saver"
msgid_plural "Tools & Time Savers"
msgstr[0] "Hulpmiddel en tydbespaarder"
msgstr[1] "Hulpmiddels en tydbespaarders"

#: /media/js/edbrands.js:85
msgid "Featured Travel App"
msgid_plural "Featured Travel Apps"
msgstr[0] "Uitgesoekte reisprogram"
msgstr[1] "Uitgesoekte reisprogramme"

#: /media/js/edbrands.js:86
msgid "Work & Business App"
msgid_plural "Work & Business Apps"
msgstr[0] "Werk-en-besigheid-program"
msgstr[1] "Werk-en-besigheid-programme"

#: /media/js/feed_websites.js:61
msgid "{current} of {count}"
msgstr ""

#: /media/js/helpers_local.js:137
msgid "works offline"
msgstr ""

#: /media/js/installer_iframe.js:111 /media/js/installer_direct.js:180
msgid "App install error: {error}"
msgstr "Programinstalleringsfout: {error}"

#: /media/js/installer_direct.js:140
msgid "Unable to install packaged apps"
msgstr "Kon nie verpakte programme installeer nie"

#: /media/js/installer_direct.js:178
msgid "Sorry, we had trouble fetching this app's data. Please try again later."
msgstr "Jammer, ons sukkel om hierdie program se data te haal. Probeer later weer."

#: /media/js/newsletter.js:73
msgid "There was an error submitting your newsletter sign up request"
msgstr "Kon nie jou nuusbrief-aansluitversoek indien nie."

#. This error is raised when we are unable to fetch a JWT from the payments API.
#: /media/js/payments.js:138
msgid "Error while communicating with server. Try again later."
msgstr "'n Fout het voorgekom tydens kommunikasie met die bediener. Probeer weer later."

#: /media/js/payments.js:141
msgid "Payment failed. Try again later."
msgstr "Betaling het misluk. Probeer weer later."

#. {n} is the number of stars
#: /media/js/ratingwidget.js:44
msgid "{n} star"
msgid_plural "{n} stars"
msgstr[0] "{n} ster"
msgstr[1] "{n} sterre"

#. The report is an abuse report for reviews.
#: /media/js/reviews.js:35
msgid "Flagging review..."
msgstr "Vlag tans resensie..."

#: /media/js/reviews.js:40
msgid "This review has been successfully flagged. Thanks!"
msgstr "Hierdie resensie is suksesvol gevlag. Dankie!"

#: /media/js/reviews.js:52
msgid "Sorry, there was an issue flagging the review. Please try again later."
msgstr "Jammer, kon nie die resensie vlag nie. Probeer weer later."

#: /media/js/reviews.js:62
msgid "This review has been successfully deleted"
msgstr "Hierdie resensie is suksesvol geskrap."

#: /media/js/reviews.js:93 /media/js/views/app/ratings/add.js:21
msgid "Write a Review"
msgstr "Skryf 'n resensie"

#: /media/js/reviews.js:96
msgid "Sorry, there was a problem deleting the review"
msgstr "Kon nie die resensie skrap nie"

#: /media/js/reviews.js:157 /media/js/views/addon.js:11 /media/js/views/addon.js:19 /media/js/views/addon.js:21 /media/js/views/app.js:16 /media/js/views/app.js:24 /media/js/views/app.js:25
#: /media/js/views/app.js:30 /media/js/views/app.js:31 /media/js/views/feed_landing.js:15 /media/js/views/website.js:10 /media/js/views/website.js:16 /media/js/views/website.js:17
#: /media/js/views/website.js:18
msgid "Loading..."
msgstr "Laai tans..."

#: /media/js/reviews.js:260
msgid "Your review was successfully posted. Thanks!"
msgstr "Jou resensie is suksesvol geplaas. Dankie!"

#: /media/js/reviews.js:265
msgid "Sorry, there was an error posting your review. Please try again later."
msgstr "Jammer, kon nie jou resensie plaas nie. Probeer weer later."

#: /media/js/reviews.js:293
msgid "Your review was successfully edited"
msgstr "Jou resensie is suksesvol geredigeer"

#: /media/js/reviews.js:298
msgid "Sorry, there was an issue editing your review. Please try again later"
msgstr "Jammer, kon nie jou resensie redigeer nie. Probeer weer later"

#: /media/js/settings_app.js:96
msgid "English"
msgstr "Engels"

#: /media/js/settings_app.js:97
msgid "French"
msgstr "Frans"

#: /media/js/settings_app.js:98
msgid "German"
msgstr "Duits"

#: /media/js/settings_app.js:99
msgid "Hungarian"
msgstr "Hongaars"

#: /media/js/settings_app.js:100
msgid "Indonesian"
msgstr "Indonesies"

#: /media/js/settings_app.js:101
msgid "Polish"
msgstr "Pools"

#: /media/js/settings_app.js:102
msgid "Portuguese"
msgstr "Portugees"

#: /media/js/settings_app.js:103
msgid "Russian"
msgstr "Russies"

#: /media/js/settings_app.js:104
msgid "Spanish"
msgstr "Spaans"

#: /media/js/settings_app.js:116
msgid "Sorry, you are currently offline. Please try again later."
msgstr "Jammer, jy is tans vanlyn. Probeer asseblief weer later."

#: /media/js/update_banner.js:24
msgid "The next time you start the Firefox Marketplace app, you’ll see the updated version!"
msgstr "Volgende keer wat jy die Firefox Marketplace-program begin, sal jy die nuwe weergawe sien!"

#: /media/js/views/addons.js:9 /media/js/views/addons.js:10
msgid "Firefox OS Add-ons"
msgstr ""

#: /media/js/views/app.js:17
msgid "App Detail"
msgstr ""

#: /media/js/views/feed_landing.js:16
msgid "Collection Detail"
msgstr ""

#: /media/js/views/homescreens.js:8
msgid "Popular Homescreens"
msgstr ""

#: /media/js/views/feedback.js:23
msgid "Feedback submitted. Thanks!"
msgstr "Terugvoer ingestuur. Dankie!"

#: /media/js/views/feedback.js:27
msgid "There was a problem submitting your feedback. Try again soon."
msgstr "Daar was 'n probleem om jou terugvoer in te stuur. Probeer gou weer."

#: /media/js/views/homepage.js:11
msgid "FirefoxOS Marketplace"
msgstr ""

#: /media/js/views/new_apps.js:8
msgid "New Apps"
msgstr ""

#: /media/js/views/new_websites.js:8
msgid "New Sites"
msgstr ""

#: /media/js/views/langpacks.js:30
msgid "Language Packs"
msgstr "Taalpakke"

#: /media/js/views/langpacks.js:42
msgid "Firefox OS {version}"
msgstr "Firefox OS {version}"

#: /media/js/views/popular_apps.js:9
msgid "Popular Apps"
msgstr ""

#: /media/js/views/popular_websites.js:8
msgid "Popular Sites"
msgstr ""

#: /media/js/views/settings.js:41
msgid "Your settings have been successfully saved"
msgstr "Jou instellings is suksesvol gestoor"

#: /media/js/views/settings.js:47
msgid "Settings could not be saved"
msgstr "Instellings kon nie gestoor word nie"

#: /media/js/views/search.js:176
msgid "Search Results"
msgstr "Soekresultate"

#: /media/js/views/search.js:189
msgid "Developer Listing"
msgstr ""

#: /media/js/views/website.js:11
msgid "Website Detail"
msgstr ""

#: /media/js/lib/marketplace-elements.js:119
msgid "Close"
msgstr ""

#: /media/js/views/addon/abuse.js:16 /media/js/views/app/abuse.js:18 /media/js/views/website/issue.js:17
msgid "Report submitted. Thanks!"
msgstr ""

#: /media/js/views/addon/abuse.js:21 /media/js/views/app/abuse.js:25 /media/js/views/website/issue.js:23
msgid "There was an issue submitting your report. Please try again later."
msgstr ""

#: /media/js/views/app/ratings.js:12
msgid "Read All Reviews"
msgstr ""

#: /media/js/views/app/receipt.js:14
msgid "Please sign in to view the receipt"
msgstr "Meld asseblief aan om die kwitansie te sien"

#: /media/js/views/app/receipt.js:24
msgid "Receipt"
msgstr "Kwitansie"

#: /media/js/views/website/issue.js:32
msgid "Report an Issue"
msgstr ""


#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

static int findMin(int* nums, int numsSize)
{
    int lo = 0;
    int hi = numsSize - 1;
    int min = INT_MAX;
    while (lo <= hi) {
        int mid = lo + (hi - lo) / 2;
        min = min < nums[mid] ? min : nums[mid];
        if (nums[mid] > nums[hi]) {
            lo = mid + 1;
        } else {
            hi = mid - 1;
        }
    }
    return min;
}

int main(int argc, char **argv)
{
    int i, count = argc - 1;
    int *nums = malloc(count * sizeof(int));
    for (i = 0; i < count; i++) {
        nums[i] = atoi(argv[i + 1]);
    }
    printf("%d\n", findMin(nums, count));
    return 0;
}


#include <openssl/bio.h>

#if BIO_FLAGS_UPLINK==0
/* Shortcut UPLINK calls on most platforms... */
# define UP_stdin        stdin
# define UP_stdout       stdout
# define UP_stderr       stderr
# define UP_fprintf      fprintf
# define UP_fgets        fgets
# define UP_fread        fread
# define UP_fwrite       fwrite
# undef  UP_fsetmod
# define UP_feof         feof
# define UP_fclose       fclose

# define UP_fopen        fopen
# define UP_fseek        fseek
# define UP_ftell        ftell
# define UP_fflush       fflush
# define UP_ferror       ferror
# ifdef _WIN32
#  define UP_fileno       _fileno
#  define UP_open         _open
#  define UP_read         _read
#  define UP_write        _write
#  define UP_lseek        _lseek
#  define UP_close        _close
# else
#  define UP_fileno       fileno
#  define UP_open         open
#  define UP_read         read
#  define UP_write        write
#  define UP_lseek        lseek
#  define UP_close        close
# endif
#endif


foo() ->
  fun<caret>


/*
 *
 */

#include "scriptPCH.h"

#define SAY_AGGRO                   -1189000
#define SAY_WHIRLWIND               -1189001
#define SAY_ENRAGE                  -1189002
#define SAY_KILL                    -1189003
#define EMOTE_ENRAGE                -1189004

#define SAY_TRAINEE_SPAWN           -1189022

#define SPELL_RUSHINGCHARGE         8260
#define SPELL_CLEAVE                15496
#define SPELL_WHIRLWIND             8989
#define SPELL_FRENZY                8269

enum
{
    NPC_SCARLET_MYRMIDON            = 4295,
    NPC_SCARLET_TRAINEE             = 6575,

    GO_HEROD_DOOR                   = 101854
};

struct Coords
{
    float x, y, z, o;
};

const Coords MyrmidonSpawn = { 1926.03f, -370.61f, 18.0f, 0.05f };
const Coords RoomCenter    = { 1965.09f, -431.61f, 6.79f, 0.0f };

struct boss_herodAI : ScriptedAI
{
    explicit boss_herodAI(Creature* pCreature) : ScriptedAI(pCreature)
    {
        boss_herodAI::Reset();
    }

    bool Enrage;
    bool TraineeSay;
    bool m_bWhirlwind;
    bool bMyrmidonsSpawned;
    uint8 NbTrainee;
    uint32 RushingCharge_Timer;
    uint32 Cleave_Timer;
    uint32 Whirlwind_Timer;
    uint32 m_uiRootTimer;
    uint32 uiRoomCheck;
    std::list<ObjectGuid> m_lMyrmidonGuids;

    void Reset() override
    {
        Enrage = false;
        TraineeSay = false;
        m_bWhirlwind = false;
        NbTrainee = 0;
        RushingCharge_Timer = 1500;
        Cleave_Timer = 12000;
        Whirlwind_Timer = urand(10000, 20000);
        m_uiRootTimer = 0;
        uiRoomCheck = 500;
        bMyrmidonsSpawned = false;
    }

    void Aggro(Unit* /*pWho*/) override
    {
        SpawnMyrmidons();
        DoScriptText(SAY_AGGRO, m_creature);
        DoCastSpellIfCan(m_creature, SPELL_RUSHINGCHARGE);
    }

    void KilledUnit(Unit* /*pVictim*/) override
    {
        DoScriptText(SAY_KILL, m_creature);
    }

    void JustSummoned(Creature* pSummoned) override
    {
        if (pSummoned->GetEntry() == NPC_SCARLET_TRAINEE)
        {
            if (!TraineeSay)
            {
                DoScriptText(SAY_TRAINEE_SPAWN, pSummoned);
                TraineeSay = true;
            }

            if (NbTrainee < 10)
                pSummoned->GetMotionMaster()->MovePoint(0, 1940.257080f, -434.454315f, 17.094456f);
            else
                pSummoned->GetMotionMaster()->MovePoint(100, 1940.508301f, -428.826080f, 17.095098f);

            NbTrainee++;
            return;
        }

        pSummoned->SetNoXP();
        m_lMyrmidonGuids.push_back(pSummoned->GetObjectGuid());
    }

    void EngageMyrmidons(Unit* victim)
    {
        if (!victim)
            return;

        for (const auto& guid : m_lMyrmidonGuids)
        {
            if (auto pMyrmidon = m_creature->GetMap()->GetCreature(guid))
            {
                if (!pMyrmidon->IsAlive() || pMyrmidon->GetVictim())
                    continue;
                if (victim->IsAlive())
                    pMyrmidon->SetInCombatWith(victim);
            }
        }
    }

    void SpawnMyrmidons()
    {
        bMyrmidonsSpawned = true;
        for (uint8 i = 0; i < 4; ++i)
        {
            m_creature->SummonCreature(NPC_SCARLET_MYRMIDON,
                MyrmidonSpawn.x + frand(-3.0, 3.0),
                MyrmidonSpawn.y + frand(-3.0, 3.0),
                MyrmidonSpawn.z,
                MyrmidonSpawn.o, TEMPSUMMON_DEAD_DESPAWN, 20000);
        }
    }

    void DespawnMyrmidons()
    {
        for (const auto& guid : m_lMyrmidonGuids)
        {
            if (auto pMyrmidon = m_creature->GetMap()->GetCreature(guid))
            {
                if (pMyrmidon->IsAlive() && !pMyrmidon->GetVictim())
                    pMyrmidon->ForcedDespawn();
            }
        }

        bMyrmidonsSpawned = false;
        m_lMyrmidonGuids.clear();
    }

    void EnterEvadeMode() override
    {
        m_creature->ClearUnitState(UNIT_STAT_ROOT);
        DespawnMyrmidons();
        ScriptedAI::EnterEvadeMode();
    }

    void JustDied(Unit* /*pKiller*/) override
    {
        DespawnMyrmidons();
        for (uint8 i = 0; i < 20; ++i)
            m_creature->SummonCreature(NPC_SCARLET_TRAINEE,
                                    1939.18f, -431.58f, 17.09f, 6.22f,
                                    TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 180000);

        if (auto pDoor = m_creature->FindNearestGameObject(GO_HEROD_DOOR, 100.0f))
        {
            if (pDoor->GetGoState() != GO_STATE_ACTIVE)
                pDoor->UseDoorOrButton();
        }
    }

    void UpdateAI(uint32 const diff) override
    {
        if (!m_creature->SelectHostileTarget() || !m_creature->GetVictim())
            return;

        // check if the target is still inside the room
        if (bMyrmidonsSpawned && uiRoomCheck <= diff)
        {
            if (!m_creature->IsWithinDist2d(RoomCenter.x, RoomCenter.y, 32.0f))
            {
                EngageMyrmidons(me->GetVictim());
            }
            uiRoomCheck = 500;
        }
        else uiRoomCheck -= diff;

        if (m_bWhirlwind)
        {
            if (m_uiRootTimer < diff)
            {
                m_creature->ClearUnitState(UNIT_STAT_ROOT);
                m_bWhirlwind = false;
            }
            else
            {
                m_uiRootTimer -= diff;
                return;
            }
        }

        //If we are <50% hp goes Enraged
        if (!Enrage && m_creature->GetHealthPercent() <= 50.0f && !m_creature->IsNonMeleeSpellCasted(false))
        {
            if (DoCastSpellIfCan(m_creature, SPELL_FRENZY) == CAST_OK)
            {
                DoScriptText(EMOTE_ENRAGE, m_creature);
                DoScriptText(SAY_ENRAGE, m_creature);
                Enrage = true;
            }
        }

        // Rushing Charge
        if (RushingCharge_Timer < diff)
        {
            auto pVictim = m_creature->GetVictim();

            if (pVictim && !pVictim->IsInRange(m_creature, 0.0f, MELEE_RANGE + 10.0f))
            {
                if (DoCastSpellIfCan(m_creature, SPELL_RUSHINGCHARGE) == CAST_OK)
                    RushingCharge_Timer = 4500;
            }
        }
        else
            RushingCharge_Timer -= diff;

        // Cleave
        if (Cleave_Timer < diff)
        {
            if (DoCastSpellIfCan(m_creature->GetVictim(), SPELL_CLEAVE) == CAST_OK)
                Cleave_Timer = 12000;
        }
        else
            Cleave_Timer -= diff;

        // Whirlwind
        if (Whirlwind_Timer < diff)
        {
            if (DoCastSpellIfCan(m_creature->GetVictim(), SPELL_WHIRLWIND) == CAST_OK)
            {
                m_creature->AddUnitState(UNIT_STAT_ROOT);
                m_bWhirlwind = true;
                m_uiRootTimer = 11000;
                DoScriptText(SAY_WHIRLWIND, m_creature);
                Whirlwind_Timer = urand(20000, 30000);
            }
        }
        else
            Whirlwind_Timer -= diff;

        DoMeleeAttackIfReady();
    }
};

CreatureAI* GetAI_boss_herod(Creature* pCreature)
{
    return new boss_herodAI(pCreature);
}

struct mob_scarlet_traineeAI : ScriptedAI
{
    explicit mob_scarlet_traineeAI(Creature* pCreature) : ScriptedAI(pCreature)
    {
        Start_Timer = urand(1000, 6000);
        group1 = false;
        group2 = false;
        mob_scarlet_traineeAI::Reset();
    }

    uint32 Start_Timer;
    bool group1;
    bool group2;

    void Reset() override { }

    void UpdateAI(uint32 const diff) override
    {
        if (Start_Timer)
        {
            if (Start_Timer <= diff)
            {
                m_creature->SetSpeedRate(MOVE_WALK, 2.20f);

                if (group1)
                    m_creature->GetMotionMaster()->MovePoint(1, 1946.433594f, -435.955109f, 16.367277f);
                else if (group2)
                    m_creature->GetMotionMaster()->MovePoint(101, 1940.257080f, -434.454315f, 17.094456f);

                Start_Timer = 0;
            }
            else
                Start_Timer -= diff;
        }

        if (!m_creature->SelectHostileTarget() || !m_creature->GetVictim())
            return;

        DoMeleeAttackIfReady();
    }

    void MovementInform(uint32 MovementType, uint32 id) override
    {
        if (MovementType == POINT_MOTION_TYPE)
        {
            switch (id)
            {
                case 0:
                    group1 = true;
                    break;
                case 100:
                    group2 = true;
                    break;
                case 1:
                    m_creature->GetMotionMaster()->MovePoint(2, 1952.834717f, -447.514130f, 13.804327f);
                    break;
                case 101:
                    m_creature->GetMotionMaster()->MovePoint(102, 1953.056763f, -416.109863f, 13.861217f);
                    break;
                case 2:
                    m_creature->GetMotionMaster()->MovePoint(3, 1965.592041f, -451.153778f, 11.272284f);
                    break;
                case 102:
                    m_creature->GetMotionMaster()->MovePoint(103, 1965.369629f, -412.147949f, 11.272387f);
                    break;
                case 3:
                    m_creature->GetMotionMaster()->MovePoint(4, 1982.692749f, -441.514343f, 11.272284f);
                    break;
                case 103:
                    m_creature->GetMotionMaster()->MovePoint(104, 1980.908081f, -421.008026f, 11.272387f);
                    break;
                case 4:
                    m_creature->GetMotionMaster()->MovePoint(5, 1978.061890f, -428.549500f, 11.272232f);
                    break;
                case 104:
                    m_creature->GetMotionMaster()->MovePoint(105, 1979.139038f, -434.856934f, 11.272370f);
                    break;
                case 5:
                    m_creature->GetMotionMaster()->MovePoint(6, 1971.447144f, -419.629272f, 8.087179f);
                    break;
                case 105:
                    m_creature->GetMotionMaster()->MovePoint(106, 1972.044800f, -442.568573f, 8.434578f);
                    break;
                case 6:
                    m_creature->GetMotionMaster()->MovePoint(7, 1964.354004f, -418.632904f, 6.177466f);
                    break;
                case 106:
                    m_creature->GetMotionMaster()->MovePoint(107, 1964.691162f, -444.223022f, 6.177622f);
                    break;
                case 7:
                case 107:
                    m_creature->GetMotionMaster()->MovePoint(116, 1965.039795f, -431.733856f, 6.177539f);
                    break;
            }
        }
    }
};

CreatureAI* GetAI_mob_scarlet_trainee(Creature* pCreature)
{
    return new mob_scarlet_traineeAI(pCreature);
}

/*
 *
 */

struct go_herod_leverAI : GameObjectAI
{
    explicit go_herod_leverAI(GameObject* pGo) : GameObjectAI(pGo)
    {

    }

    bool OnUse(Unit* /*pCaster*/) override
    {
        if (auto pDoor = me->FindNearestGameObject(GO_HEROD_DOOR, 40.0f))
        {
             if (pDoor->getLootState() == GO_READY || pDoor->getLootState() == GO_JUST_DEACTIVATED)
                 pDoor->UseDoorOrButton();
             else
                 pDoor->ResetDoorOrButton();
        }

        return true;
    }
};

GameObjectAI* GetAI_go_herod_lever(GameObject* pGo)
{
    return new go_herod_leverAI(pGo);
}

void AddSC_boss_herod()
{
    Script* newscript;
    newscript = new Script;
    newscript->Name = "boss_herod";
    newscript->GetAI = &GetAI_boss_herod;
    newscript->RegisterSelf();

    newscript = new Script;
    newscript->Name = "mob_scarlet_trainee";
    newscript->GetAI = &GetAI_mob_scarlet_trainee;
    newscript->RegisterSelf();

    newscript = new Script;
    newscript->Name = "go_herod_lever";
    newscript->GOGetAI = &GetAI_go_herod_lever;
    newscript->RegisterSelf();
}


// @ts-check
const {UnauthorizedError} = require('@tryghost/errors');

class SingleUseTokenProvider {
    /**
     * @param {import('../../models/base')} SingleUseTokenModel - A model for creating and retrieving tokens.
     * @param {number} validity - How long a token is valid for from it's creation in milliseconds.
     */
    constructor(SingleUseTokenModel, validity) {
        this.model = SingleUseTokenModel;
        this.validity = validity;
    }

    /**
     * @method create
     * Creates and stores a token, with the passed data associated with it.
     * Returns the created token value.
     *
     * @param {Object<string, any>} data
     *
     * @returns {Promise<string>}
     */
    async create(data) {
        const model = await this.model.add({
            data: JSON.stringify(data)
        });

        return model.get('token');
    }

    /**
     * @method validate
     * Validates a token, returning any parsable data associated.
     * If the token is invalid the returned Promise will reject.
     *
     * @param {string} token
     *
     * @returns {Promise<Object<string, any>>}
     */
    async validate(token) {
        const model = await this.model.findOne({token});

        if (!model) {
            throw new UnauthorizedError({
                message: 'Invalid token provided'
            });
        }

        const createdAtEpoch = model.get('created_at').getTime();

        const tokenLifetimeMilliseconds = Date.now() - createdAtEpoch;

        if (tokenLifetimeMilliseconds > this.validity) {
            throw new UnauthorizedError({
                message: 'Token expired'
            });
        }

        try {
            return JSON.parse(model.get('data'));
        } catch (err) {
            return {};
        }
    }
}

module.exports = SingleUseTokenProvider;