{"version":3,"file":"js/2023-42aa935a3102f03c441b.js","mappings":"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","sources":["webpack://AYTM/./app/_stock/webpack/app/survey/editor/styles/content/assets/AssetUploader.module.scss?9890","webpack://AYTM/./app/_stock/webpack/app/survey/editor/components/content/assets/AssetUploader.jsx","webpack://AYTM/./app/_stock/webpack/app/survey/editor/styles/content/assets/ImagePreview.module.scss?071c","webpack://AYTM/./app/_stock/webpack/app/survey/editor/components/content/assets/ImagePreview.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/base/modules/devlog/Module.ts","webpack://AYTM/./app/_stock/webpack/app/swidget/base/modules/locale/Locale.Context.ts","webpack://AYTM/./app/_stock/webpack/app/swidget/base/modules/locale/dicts/en_US.ts","webpack://AYTM/./app/_stock/webpack/app/swidget/base/modules/locale/loadDict.ts","webpack://AYTM/./app/_stock/webpack/app/swidget/base/modules/locale/state.ts","webpack://AYTM/./app/_stock/webpack/app/swidget/base/modules/locale/Module.ts","webpack://AYTM/./app/_stock/webpack/app/swidget/base/modules/locale/useSurveyLocale.ts","webpack://AYTM/./app/_stock/webpack/app/swidget/base/modules/types.ts","webpack://AYTM/./app/_stock/webpack/app/swidget/base/questions/_common/RotateDevice/Arrow.tsx","webpack://AYTM/./app/_stock/webpack/app/swidget/base/questions/_common/RotateDevice/Mobile.tsx","webpack://AYTM/./app/_stock/webpack/app/swidget/base/questions/_common/RotateDevice/style.module.scss?df9d","webpack://AYTM/./app/_stock/webpack/app/swidget/base/questions/_common/RotateDevice/RotateDevice.tsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/styles/_base.module.scss?80ff","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/_base.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/styles/common/notice.module.scss?d283","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/common/notice.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/styles/scx.module.scss?9828","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/scx.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/lib/functions.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locale.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/ar.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/bg.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/da.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/de.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/en_us.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/fi.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/fr.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/gr.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/he.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/hi.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/id.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/it.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/ja.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/ko.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/ma.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/nl.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/nor.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/pl.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/pt.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/pt_br.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/ro.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/ru.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/sp.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/sv.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/th.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/tr.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/ua.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/vi.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/zh_cn.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/zh_hk.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/locales/zh_tw.js","webpack://AYTM/./app/_stock/webpack/lib/common/assets.ts","webpack://AYTM/./app/_stock/webpack/lib/common/object.js","webpack://AYTM/./app/_stock/webpack/lib/common/subscription.ts","webpack://AYTM/./app/_stock/webpack/lib/csrf-token.js","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/styles/basic/image-popup.scss?806a","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/basic/image-popup.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/basic/light-box.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/styles/common.module.scss?090a"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"minPlaceholderHeight\":\"34\",\"indent0\":\"39\",\"indent1\":\"72\",\"indent2\":\"105\",\"indent3\":\"138\",\"component\":\"AssetUploader-module__component___1jn2G surveyeditor-AssetUploader\",\"component-readOnly\":\"AssetUploader-module__component-readOnly___1GBK0\",\"input\":\"AssetUploader-module__input___2umvZ\"};","// lib\nimport React from 'react'\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\nimport autobind from 'autobind-decorator'\nimport PropTypes from 'prop-types'\n\n// styles\nimport style from '@aytm/app/survey/editor/styles/content/assets/AssetUploader.module.scss'\n\n// <Component>\nexport default class AssetUploader extends ManagedRenderComponent {\n  static propTypes = {\n    readOnly: PropTypes.bool,\n    children: PropTypes.any,\n    accept: PropTypes.string,\n    onUploadFile: PropTypes.func\n  }\n  static updateOnProps(/*nextProps, prevProps*/) {\n    return true\n  }\n\n  @autobind\n  fileSelected() {\n    if (this.refUploadInput && this.refUploadInput.files && this.refUploadInput.files.length) {\n      this.uploadFile(this.refUploadInput.files[0])\n    }\n  }\n\n  @autobind\n  uploadFile(file) {\n    const { onUploadFile } = this.props\n    if ('function' == typeof onUploadFile) {\n      onUploadFile(file)\n    }\n  }\n\n  render() {\n    const { accept, readOnly, children } = this.props\n    return readOnly ? (\n      <label className={`${style.component} ${style['component-readOnly']}`}>{children}</label>\n    ) : (\n      <label className={style.component}>\n        <input\n          type=\"file\"\n          name=\"file\"\n          onChange={this.fileSelected}\n          accept={accept}\n          className={style.input}\n          tabIndex=\"-1\"\n          ref={this.saveRef('UploadInput')}\n        />\n        {children}\n      </label>\n    )\n  }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"minPlaceholderHeight\":\"34\",\"indent0\":\"39\",\"indent1\":\"72\",\"indent2\":\"105\",\"indent3\":\"138\",\"component\":\"ImagePreview-module__component___CgYZO surveyeditor-ImagePreview\",\"zoom\":\"ImagePreview-module__zoom___1TVio icon-aytmfd-zoom-in surveyeditor-ImagePreview-zoom\",\"uploadImage\":\"ImagePreview-module__uploadImage___2_jAZ rfd-highlight-hover-background-color\",\"deleteImage\":\"ImagePreview-module__deleteImage___1fHBa rfd-highlight-hover-background-color\",\"loading\":\"ImagePreview-module__loading___2HqjN\",\"loading-icon\":\"ImagePreview-module__loading-icon___PMkzk icon-aytmfd-spin aytmfd-spin\",\"imageHolder\":\"ImagePreview-module__imageHolder___2gNMf surveyeditor-ImagePreview-imageHolder\",\"image\":\"ImagePreview-module__image___hDIOm\",\"image-loading\":\"ImagePreview-module__image-loading___2ToMx\",\"image-loaded\":\"ImagePreview-module__image-loaded___3ArF2\",\"image-inactive\":\"ImagePreview-module__image-inactive___1j03Q\",\"loader\":\"ImagePreview-module__loader___1Zavk\"};","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\n\n// components\nimport ImagePopup from '@aytm//lib/rfd-ui/components/basic/image-popup'\nimport AssetUploader from '@aytm/app/survey/editor/components/content/assets/AssetUploader'\nimport Popup, { PopupContent } from '@aytm/lib/rfd-ui/components/basic/popup'\n\n// style\nimport style from '@aytm/app/survey/editor/styles/content/assets/ImagePreview.module.scss'\n\n// <Components>\nexport default class ImagePreview extends ManagedRenderComponent {\n  static propTypes = {\n    accept: PropTypes.string,\n    label: PropTypes.string,\n    imageUrl: PropTypes.string,\n    previewUrl: PropTypes.string,\n    maxHeight: PropTypes.string,\n    maxWidth: PropTypes.string,\n    minWidth: PropTypes.string,\n    minHeight: PropTypes.string,\n    openImageOnZoomButtonOnly: PropTypes.bool,\n    doubleBuffering: PropTypes.bool,\n    allowScrolling: PropTypes.bool,\n    onPreviewLoaded: PropTypes.func,\n    uploadImageLabel: PropTypes.string,\n    onUploadImage: PropTypes.func,\n    deleteImageLabel: PropTypes.string,\n    onDeleteImage: PropTypes.func,\n    onImageOpen: PropTypes.func,\n    onImageHide: PropTypes.func,\n    onImageLoaded: PropTypes.func\n  }\n  static updateOnProps(nextProps, prevProps) {\n    return (\n      nextProps.imageUrl != prevProps.imageUrl ||\n      nextProps.previewUrl != prevProps.previewUrl ||\n      nextProps.maxHeight != prevProps.maxHeight ||\n      nextProps.maxWidth != prevProps.maxWidth ||\n      nextProps.minWidth != prevProps.minWidth ||\n      nextProps.minHeight != prevProps.minHeight ||\n      nextProps.openImageOnZoomButtonOnly != prevProps.openImageOnZoomButtonOnly ||\n      nextProps.doubleBuffering != prevProps.doubleBuffering ||\n      nextProps.onImageLoaded != prevProps.onImageLoaded ||\n      nextProps.uploadImageLabel != prevProps.uploadImageLabel\n    )\n  }\n\n  static contextTypes = {\n    popup: PropTypes.instanceOf(Popup),\n    popupContent: PropTypes.instanceOf(PopupContent)\n  }\n\n  state = {\n    loading: true,\n    loaded: false,\n    previewUrl: null,\n    previewState: 'fetch',\n    showImage: false\n  }\n\n  constructor(props, context) {\n    super(props, context)\n    this.previewImage = null\n  }\n\n  componentDidMount() {\n    const { previewUrl } = this.props\n    this.setPreviewImage(previewUrl)\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps /*, nextContext*/) {\n    if (nextProps.previewUrl != this.props.previewUrl) {\n      this.setPreviewImage(nextProps.previewUrl)\n    }\n  }\n\n  @autobind\n  setPreviewImage(url) {\n    if (false === this.props.doubleBuffering) {\n      this.setState({ previewState: 'fetched', previewUrl: url }, () => {\n        this.reposition()\n      })\n    } else {\n      this.previewImage = document.createElement('img')\n      this.previewImage.addEventListener('load', () => {\n        const { onPreviewLoaded } = this.props\n        if ('function' == typeof onPreviewLoaded) {\n          onPreviewLoaded(url)\n        }\n        this.setState({ previewState: 'fetched', previewUrl: url }, () => {\n          this.reposition()\n        })\n      })\n      this.setState({ previewState: 'fetch' }, this.reposition)\n      setTimeout(() => {\n        if (this.mounted && 'fetch' == this.state.previewState) {\n          this.setState({ previewState: 'fetching' }, this.reposition)\n        }\n      }, 200)\n      this.previewImage.src = url\n    }\n  }\n\n  @autobind\n  reposition() {\n    const { popupContent } = this.context\n    if (popupContent) {\n      setTimeout(() => {\n        popupContent.reposition()\n      }, 0)\n      setTimeout(() => {\n        // control shot!\n        popupContent.reposition()\n      }, 100)\n    }\n  }\n\n  @autobind\n  onLoaded() {\n    const { onImageLoaded } = this.props\n    setTimeout(() => {\n      this.reposition()\n      if ('function' == typeof onImageLoaded) {\n        onImageLoaded()\n      }\n    }, 10)\n    this.setState({ loading: false, loaded: true })\n  }\n\n  @autobind\n  showImage() {\n    const { popup } = this.context\n    const { onImageOpen } = this.props\n    if (popup) popup.freeze()\n    if ('function' == typeof onImageOpen) onImageOpen()\n    this.setState({\n      showImage: true\n    })\n  }\n\n  @autobind\n  hideImage() {\n    const { popup } = this.context\n    const { onImageHide } = this.props\n    if (popup) {\n      popup.unfreeze()\n      popup.hide()\n    }\n    if ('function' == typeof onImageHide) onImageHide()\n    this.setState({\n      showImage: false\n    })\n  }\n\n  render() {\n    const {\n      label,\n      imageUrl,\n      maxHeight,\n      maxWidth,\n      minHeight,\n      minWidth,\n      allowScrolling,\n      openImageOnZoomButtonOnly,\n      accept,\n      onUploadImage,\n      uploadImageLabel,\n      onDeleteImage,\n      deleteImageLabel\n    } = this.props\n    const { loading, loaded, previewUrl, previewState, showImage } = this.state\n    return (\n      <div\n        className={`${style.component}${'fetched' != previewState ? ' ' + style.loading : ''}`}\n        style={{ maxHeight, maxWidth, minWidth, minHeight }}\n      >\n        {previewUrl && (\n          <div\n            className={`${style.image}${loading ? ' ' + style['image-loading'] : ''}${\n              loaded ? ' ' + style['image-loaded'] : ''\n            }${openImageOnZoomButtonOnly ? ' ' + style['image-inactive'] : ''}`}\n            onClick={openImageOnZoomButtonOnly ? null : this.showImage}\n            style={{ minWidth }}\n          >\n            <div className={style.imageHolder} style={{ maxHeight, minWidth, maxWidth }}>\n              <img role=\"presentation\" alt=\"\" src={previewUrl} onLoad={this.onLoaded} style={{ maxHeight, maxWidth }} />\n              {loading && !loaded && (\n                <div className={style.loader}>\n                  <i className=\"icon-aytmfd-spin aytmfd-spin\" />\n                </div>\n              )}\n              {'fetched' == previewState && <i className={style.zoom} onClick={this.showImage} />}\n              {'fetched' == previewState && 'function' == typeof onUploadImage && (\n                <div className={style.uploadImage}>\n                  <AssetUploader onUploadFile={onUploadImage} accept={accept}>\n                    <i className=\"icon-aytmfd-qimage\" /> {uploadImageLabel || 'CHANGE'}\n                  </AssetUploader>\n                </div>\n              )}\n              {'fetched' == previewState && 'function' == typeof onDeleteImage && (\n                <div className={style.deleteImage} onClick={onDeleteImage}>\n                  {deleteImageLabel || 'DELETE'}\n                </div>\n              )}\n            </div>\n          </div>\n        )}\n        {'fetching' == previewState && <i className={style['loading-icon']} />}\n        <ImagePopup\n          label={label}\n          src={imageUrl}\n          show={showImage}\n          scrolling={allowScrolling}\n          onClose={this.hideImage}\n          closeOnClick={true}\n        />\n      </div>\n    )\n  }\n}\n","import { ModuleID } from '../types'\nimport { IDevLogModule } from './types'\n\nimport exceptionReporter from '@aytm/lib/common/exception-reporter'\n\nlet moduleLoaded = false\nconst DevLog: IDevLogModule = {\n  get id() {\n    return ModuleID.DEV_LOG\n  },\n  config(_props) {\n    return DevLog\n  },\n  async load() {\n    moduleLoaded = true\n    return Promise.resolve(DevLog)\n  },\n  get loaded() {\n    return moduleLoaded\n  },\n  log(...details) {\n    exceptionReporter.sendTaggedMessage('swidget', String(details[0]), ...details.slice(1))\n  },\n  _log(...details) {\n    //TODO: kits\n    // if ('development' === process.env.NODE_ENV) {\n    // eslint-disable-next-line no-console\n    console.debug(...details)\n    // }\n  },\n  error(error, ...details) {\n    exceptionReporter(error, ...details)\n  },\n  moduleLog(module, ...details) {\n    DevLog.log(`SW[${module.id}]:`, ...details)\n  },\n  _moduleLog(module, ...details) {\n    DevLog._log(`SW[${module.id}]:`, ...details)\n  },\n  moduleError(module, error, ...details) {\n    DevLog.error(error, `SW[${module.id}]:`, String(error), ...details)\n  }\n}\n\nexport default DevLog\n","import React from 'react'\n\nimport { ILocaleContext } from './types'\n\nimport { DEFAULT_LOCALE_ID } from './Module'\n\nexport const DEFAULT_LOCALE_CONTEXT: ILocaleContext = {\n  surveyLocaleID: DEFAULT_LOCALE_ID,\n  interfaceLocaleID: DEFAULT_LOCALE_ID\n}\n\nexport const LocaleContext = React.createContext<ILocaleContext>(DEFAULT_LOCALE_CONTEXT)\nexport default LocaleContext\n","import { ILocaleDict } from '../types'\n\nconst dict: ILocaleDict = {\n  global: {\n    nth: (() => {\n      const below20 = [\n        'Zeroth',\n        'First',\n        'Second',\n        'Third',\n        'Fourth',\n        'Fifth',\n        'Sixth',\n        'Seventh',\n        'Eighth',\n        'Ninth',\n        'Tenth',\n        'Eleventh',\n        'Twelfth',\n        'Thirteenth',\n        'Fourteenth',\n        'Fifteenth',\n        'Sixteenth',\n        'Seventeenth',\n        'Eighteenth',\n        'Nineteenth'\n      ]\n      const decaPrefix = ['Twent', 'Thirt', 'Fort', 'Fift', 'Sixt', 'Sevent', 'Eight', 'Ninet']\n      return (number: number) =>\n        20 > number\n          ? below20[number]\n          : 0 == number % 10 && 100 > number\n          ? `${decaPrefix[number / 10 - 2]}ieth`\n          : 100 > number\n          ? `${decaPrefix[Math.floor(number / 10) - 2]}y ${below20[number % 10]}`\n          : 100 == number\n          ? 'Hundredth'\n          : 'Another'\n    })()\n  },\n  navigation: {\n    time: {\n      almostThere: 'Almost there!',\n      xrays: {\n        mobile: 'qtime:',\n        desktop: 'This question will take ~'\n      }\n    },\n    screenNumber: {\n      label: 'Screen #'\n    },\n    repeatVideos: {\n      buttonLabel: 'Repeat videos'\n    },\n    progressBar: {\n      label: 'Survey progress'\n    }\n  },\n  questions: {\n    noAnswers: 'No answer options, please click next to continue.',\n    placeholder: 'Please specify...',\n    pleaseSelect: 'Please select...',\n    noResults: 'No results found...',\n    rotateLandscape: 'Please rotate your phone from portrait to landscape to continue.',\n    rotatePortrait: 'Please rotate your phone from landscape to portrait to continue.',\n    exitSimulation: 'Exit simulation',\n    gotIt: 'Got it!',\n    ir: {\n      selectWebCam: \"Select webcam (if available) or click 'Browse' to upload from your device\",\n      uploadOnly: \"Click 'Browse' to upload from your device\",\n      noWebCam: 'No webcam detected',\n      selectFile: 'Please select a file',\n      uploadFile: 'PLEASE, UPLOAD THE FILE',\n      accessCamUpload: 'ACCESS CAMERA/UPLOAD',\n      browse: 'BROWSE',\n      uploadPhoto: 'Upload a photo',\n      camera: 'Web Camera',\n      instead: 'instead',\n      capture: 'CAPTURE',\n      somethingWrong: 'Sorry, something went wrong. Please, try again.',\n      couldntRead: \"Sorry, we couldn't read the code!\",\n      couldntProcess: \"Sorry, we couldn't process your image!\",\n      inValidCode: 'Please, submit the valid code',\n      moveOn: 'Please try again or submit your photo and move on',\n      tryAgain: 'Please try again',\n      dataReceived: 'Data received!',\n      enterManually: 'Please try again or enter the data manually below',\n      positionQR:\n        'Please position the QR code in front of your camera to fit it into the red frame or upload it from your computer.',\n      uploadQR: 'Upload the QR code from your computer',\n      uploadQRMobile: 'Upload the QR code from your device',\n      positionQRMobile: 'Please position the QR code in front of your camera or upload it from your device.',\n      analyzing: 'Analyzing image, please wait',\n      submit: 'SUBMIT',\n      startOver: 'START OVER',\n      allDone: 'ALL DONE!',\n      cantAnalyze:\n        \"Attention - we couldn't render this image. Please try resubmitting it or choose a more generic image format (JPG, PNG, GIF, BMP)\",\n      wrongFormat:\n        \"We're sorry - we don't support this file format. Please upload a supported image type (JPG, PNG, GIF, BMP, TIF, PDF, SVG)\"\n    },\n    vr_pre: {\n      question:\n        `VIDEO RESPONSE IS NEEDED.<br/><br/><span>As a part of this survey we invite you to record a short video clip if you have a working Web camera ` +\n        `& mic, a quiet and well-lit place and are ready to answer client's questions.</span>`,\n      answers: {\n        0: 'Yes, I have a working webcam & microphone.',\n        1: \"Yes, I'm in a well-lit quiet area and fully clothed.\",\n        2: 'Yes, I have a few extra minutes and ready to record my answers.',\n        3: \"No, I don't wish to do a video response at this time.\"\n      },\n      panels: {\n        pv: {\n          question: {\n            vr_optional:\n              `VIDEO RESPONSE IS NEEDED.<br/>We invite you to earn an extra \\${bonus} bonus in addition to your promised earnings, if you` +\n              `have a working web camera & mic, you are in a quiet and well-lit place, and are ready to record a short video clip answering a few questions ` +\n              `right now.<br/>Our team will review the video and deposit the earnings within 3-4 days. You’ll receive compensation only if the quality of ` +\n              `the video & audio you submitted is acceptable and all talking points are covered. If you choose to skip this step, you still will receive ` +\n              `the \\${regular_amount} for completing the regular questions of this survey. Please remember you are addressing our client, not PV. As ` +\n              ` always, your responses will remain anonymous (no need to mention your name). If you have any questions, comments, or concerns about this ` +\n              `opportunity, please reach out to <a href=\"mailto:support@PaidViewpoint.com\" target=\"_blank\">support@PaidViewpoint.com</a>.`,\n            vr_required:\n              `VIDEO RESPONSE IS NEEDED.<br/>We invite you to earn an extra \\${bonus} in addition to your promised earnings, if you have ` +\n              `a working web camera & mic, you are in a quiet and well-lit place, and are ready to record a short video clip answering a few questions ` +\n              `right now.<br/>A video recording screen will be followed by a set of regular questions. If you decide to participate, you must record ` +\n              `a video and also complete the rest of the survey.<br/>Our team will review the video and deposit the earnings within 3-4 days. You’ll ` +\n              `receive compensation only if the quality of the video & audio you submitted is acceptable and all talking points are covered. We’ll ` +\n              `send an email to confirm your video has been accepted. If you don’t wish to provide a video response because of technical or other reason, ` +\n              `you will not receive any compensation.<br/>Please remember you are addressing our client, not PV. As always, your responses will remain ` +\n              `anonymous (no need to mention your name). If you have any questions, comments, or concerns about this opportunity, please reach out to ` +\n              `<a href=\"mailto:support@PaidViewpoint.com\" target=\"_blank\">support@PaidViewpoint.com</a>.`\n          }\n        }\n      }\n    },\n    vr: {\n      noWebCam: 'No webcam detected',\n      uploadVideo: 'Upload a video',\n      skip: 'Skip?',\n      accessCamUpload: 'ACCESS CAMERA/UPLOAD',\n      browse: 'BROWSE',\n      instead: 'instead',\n      or: 'or',\n      stopRecording: 'Stop recording',\n      willBeStopped: 'Recording will stop at <b>5 minutes</b>',\n      stopOnDone: \"Stop recording when you're done!\",\n      record: 'RECORD',\n      somethingWrong: 'Sorry, something went wrong. Please, try again.',\n      dataReceived: 'Data received!',\n      microphone: 'Microphone',\n      camera: 'Web Camera',\n      selectMicrophone: 'Select your microphone',\n      selectCam: 'Select your web camera',\n      submit: 'SUBMIT',\n      upload: 'UPLOAD',\n      playback: 'PLAYBACK',\n      stopPlayback: 'STOP PLAYBACK',\n      startOver: 'START OVER',\n      allDone: 'ALL DONE!',\n      alternativeRecordSpan: 'Please, upload a video-clip from your computer-device.<br/>Alternatively, you can &nbsp;',\n      alrenativeRecordHref: 'record the video with a webcam',\n      cantAnalyze:\n        \"Attention - we couldn't render this video. Please try resubmitting it or choose a more generic video format (MP4, M4V, WEBPM)\",\n      wrongFormat:\n        \"We're sorry - we don't support this file format. Please upload a supported video type (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)\"\n    },\n    cjc: {\n      choose: 'CHOOSE',\n      pleaseChoose: 'Please choose',\n      this: 'THIS',\n      one: 'one',\n      myChoice: 'MY CHOICE',\n      none: 'None of the above',\n      colContent: 'Answer content: '\n    },\n    hm: {\n      addComment: 'Please add a comment below',\n      commentMandatoryPlaceHolder: 'Please, add mandatory comment... ',\n      commentOptionalPlaceHolder: 'Please, add optional comment... ',\n      dragPin: 'Drag to reposition (long click/tap for precision pinning). ',\n      removePin: 'Drag outside of the image to delete.  ',\n      editComment: 'Click/tap pin to edit comment. ',\n      addPin: 'Please drag the pin from the panel below and drop it at a spot of your choice on the image.',\n      addPins: 'Please drag the pins from the panel below and drop them at a spot of your choice on the image. ',\n      leavePins: (minPoints: number, maxPoints: number) =>\n        `Please leave at least ${minPoints} but no more than ${maxPoints} pins of every kind.`,\n      leavePinsAny: (minPoints: number, maxPoints: number) =>\n        `Please leave at least ${minPoints} but no more than ${maxPoints} pins of any kind. `,\n      leavePinsPerPage: (minPoints: number, maxPoints: number) =>\n        `Please leave at least ${minPoints} but no more than ${maxPoints} pins. `,\n      leavePinsWithOff: (maxPoints: number) =>\n        `Please leave no more than ${maxPoints} pins of every kind or click Next to skip. `,\n      leavePinsWithOffAny: (maxPoints: number) =>\n        `Please leave no more than ${maxPoints} pins of any kind or click Next to skip. `,\n      leavePinsPerPageWithOff: (maxPoints: number) =>\n        `Please leave no more than ${maxPoints} pins or click Next to skip. `,\n      leavePinWithOff: `Please leave no more than 1 pin of every kind or click Next to skip. `,\n      leavePinWithOffAny: `Please leave no more than 1 pin of any kind or click Next to skip. `,\n      leavePinPerPageWithOff: 'Please leave no more than 1 pin or click Next to skip. ',\n      leaveExactlyPin: `Please leave 1 pin of every kind. `,\n      leaveExactlyPinAny: `Please leave 1 pin of any kind. `,\n      leaveExactlyPinPerPage: 'Please leave 1 pin. ',\n      leaveExactlyPins: (maxPoints: number) => `Please leave ${maxPoints} pins of every kind. `,\n      leaveExactlyPinsAny: (maxPoints: number) => `Please leave ${maxPoints} pins of any kind. `,\n      leaveExactlyPinsPerPage: (maxPoints: number) => `Please leave ${maxPoints} pins. `,\n      leaveComment: 'Type below the image to leave comment. ',\n      noAnswers: 'No answer options, please click next to continue',\n      outOfPins: 'you are out of pins',\n      pinsBehavior: 'As you move across the image you’ll see areas that will be highlighted with a single pin drop.',\n      clusters: 'You’ll only be able to place pins in these highlighted areas.',\n      contentAware: 'You can drop pins inside or outside of the highlighted areas.'\n    },\n    mp: {\n      expand_note: 'Please hover over image(s) to expand',\n      rb_note: (rows: boolean) => `Please select only 1 response per item${rows ? ' below' : ''}:`,\n      cb_note: (min: number, max: number, rows: boolean) => {\n        if (min === max) {\n          return `Please select ${min !== 1 ? 'any' : 'only'} ${min} response${min !== 1 ? 's' : ''} per item${\n            rows ? ' below' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Please select at least ${min} response${min !== 1 ? 's' : ''} but no more than ${max} per item${\n            rows ? ' below' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Please select at least ${min} response${min !== 1 ? 's' : ''} per item${rows ? ' below' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Please select no more than ${max} response${max !== 1 ? 's' : ''} per item${rows ? ' below' : ''}:`\n        } else {\n          return 'Check all that apply:'\n        }\n      }\n    },\n    sh: {\n      note: \"Click a product to zoom in and add to your virtual cart if you'd buy it in the store\",\n      amazonNote: 'Click on a product to zoom in or add multiples of a product to your cart',\n      fullCart: 'Your cart is full!',\n      qty: 'QTY',\n      each: 'each',\n      items: 'items',\n      addToCart: 'ADD TO CART',\n      deleteFromCart: 'Delete',\n      emptyCard: 'Your cart is empty',\n      total: 'Cart',\n      clearCart: 'Clear Cart',\n      backToStore: 'Back To Store',\n      na: 'None of the above',\n      closedFullscreenLabel: 'LAUNCH FULLSCREEN SHELF TEST',\n      next: 'NEXT',\n      researcherWarning: 'Researcher mode warning: ',\n      xraysWarning: 'Ghost mode warning: ',\n      shelfError_out_of_shelves:\n        'Too many products, the width of the products exceeds the maximum allowed. Try to enable full-screen mode or reduce the number of products  to increase the width.',\n      shelfError_too_much_products:\n        'Too many products, the width of the products exceeds the maximum allowed. Try to enable full-screen mode or reduce the number of products to increase the width.',\n      shelfError_out_of_shelves_fullscreen:\n        'Too many products, the width of products exceeds the maximum allowed. Scale products down or reduce the number of products.',\n      shelfError_too_much_products_fullscreen:\n        'Too many products, the width of products exceeds the maximum allowed. Scale products down or reduce the number of products.',\n      shelfError_longWidget:\n        'To many shelves blocks. Try to enable full-screen mode or reduce the number of products to increase the width.',\n      shelfError_too_much_shelves: 'Too much shelves',\n      scrollError: 'You need to see all products before continue!',\n      emptyCartError: (min: number) => `Please add to cart at least ${min} product${min !== 1 ? 's' : ''}. `,\n      maxCartCountError: (max: number) => `Please add no more than ${max} products to your cart. `,\n      maxSpentError: (max: number) => `Please spend no more than ${max}. `,\n      maxProductCountError: (max: number) =>\n        `Please add no more than a quantity of ${max} to your cart for each product. `,\n      application: {\n        iosText:\n          '<h>The next section involves a virtual shopping exercise that can be experienced in augmented reality (AR).</h><br/><br/>' +\n          'If you are in a stable environment with enough room, and an unobstructed wall you can walk along and shop virtually without distraction, please download the app and check if your smartphone supports AR.<br/><br/>' +\n          'Otherwise, you may continue taking<br/>' +\n          'this exercise in your browser. ',\n        androidText:\n          '<h>The next section involves a virtual shopping exercise that can be experienced in augmented reality (AR).</h><br/><br/>' +\n          'If you are in a stable environment with enough room, and an unobstructed wall you can walk along and shop virtually without distraction, please download the app and check if your smartphone supports AR.<br/><br/>' +\n          'Otherwise, you may continue taking<br/>' +\n          'this exercise in your browser. ',\n        buttonYes: 'GO TO AR APP',\n        buttonNo: 'CONTINUE WITHOUT AR'\n      },\n      introBody: (store: string, checkout: string) =>\n        `In this exercise, imagine that you are shopping for a product as you would on <a>${store}.com</a> <br/><br/> Please browse the available options, add your selection(s) to the cart, and proceed to checkout by clicking “${checkout}”. Once you complete this step, you will be moved to the next question.`,\n      introFindabilityBody: (store: string) =>\n        `In this exercise, imagine that you are shopping for a product as you would on <a>${store}.com</a> <br/><br/> Please browse the available options and add your selection to the cart. Once you complete this step, you will be moved to the next question.`,\n      introHeader: `On the next screen, you will be taken to a simulated online shopping experience.`,\n      getDaysLeft: (days: number) => {\n        let phrase\n        switch (days) {\n          case 0:\n            phrase = 'today'\n            break\n          case 1:\n            phrase = 'tomorrow'\n            break\n          case 2:\n            phrase = 'in 2 days'\n            break\n          case 3:\n            phrase = 'in 3 days'\n            break\n          default:\n            phrase = 'in 3+ days'\n        }\n        return `<b>${phrase}</b>`\n      },\n      amazon: {\n        open: 'Open',\n        subtotal: (total: number, subtotal: boolean) =>\n          `${subtotal ? 'Subtotal' : 'Proceed'} (${total} item${total > 1 ? 's' : ''})`,\n        checkoutMobile: (total: number) => `Proceed to checkout (${total} item${total > 1 ? 's' : ''}) `,\n        subTotalPrice: 'Subtotal',\n        goToCart: 'Go to Cart',\n        sign: 'Sign in',\n        filters: 'Filters',\n        backToStoreNote: (store: string) => `Back to ${store} View`,\n        deliverTo: 'Deliver to',\n        myAddress: 'My Address',\n        top: 'Back to top',\n        simulation: 'Simulation modal',\n        exit: 'Exit simulation',\n        back: 'Back to results',\n        addToCart: 'Add to cart',\n        results: 'Results <br /> <span>Check each product page for other buying options.</span>',\n        freeShipping1: 'Your order qualifies for FREE Shipping',\n        freeShipping2: 'Choose this option at checkout.',\n        add1: 'Add',\n        add2: 'of eligible items to your order to qualify for FREE Shipping.',\n        seeDetails: 'See details',\n        sendGift: 'Send as a gift. Include custom message',\n        emptyCart: 'Your Cart is empty',\n        shoppingCart: 'Shopping Cart',\n        inStock: 'In Stock',\n        freeDelivery: 'FREE delivery',\n        freeReturns: 'FREE Returns',\n        isGift: 'This is a gift.',\n        learnMore: 'Learn more',\n        delete: 'Delete',\n        save: 'Save for later',\n        compare: 'Compare with similar items',\n        share: 'Share',\n        continueShopping: 'Continue shopping',\n        info1:\n          'The price and availability of items at Amazon.com are subject to change. The Cart is a temporary place to store a list of your items and reflects each item&#39;s most recent price.&nbsp;',\n        info2:\n          'Do you have a gift card or promotional code? We&#39;ll ask you to enter your claim code when it&#39;s time to pay.',\n        checkout: 'Proceed to checkout',\n        cart: 'Cart',\n        all: 'All',\n        signMobile: 'Hello, sign in',\n        lang: 'EN',\n        accounts: 'Account & Lists',\n        returns: 'Returns',\n        andOrders: '& Orders',\n        medical: 'Medical Care',\n        best: 'Best Sellers',\n        basics: 'Amazon Basics',\n        todayDeals: 'Today&#39;s Deals',\n        music: 'Music',\n        groceries: 'Groceries',\n        customerService: 'Customer Service',\n        amazonHome: 'Amazon Home',\n        registry: 'Registry',\n        condition: '1-48 of over 4,000 results for',\n        knowUs: 'Get to Know Us',\n        careers: 'Careers',\n        newsletter: 'Amazon Newsletter',\n        aboutAmazon: 'About Amazon',\n        axe: 'Accessibility',\n        sustain: 'Sustainability',\n        press: 'Press Center',\n        invest: 'Investor Relations',\n        devices: 'Amazon Devices',\n        science: 'Amazon Science',\n        money: 'Make Money with Us',\n        sellOn: 'Sell on Amazon',\n        sellApps: 'Sell apps on Amazon',\n        supply: 'Supply to Amazon',\n        protect: 'Protect & Build Your Brand',\n        affiliate: 'Become an Affiliate',\n        driver: 'Become a Delivery Driver',\n        packageDelivery: 'Start a Package Delivery Business',\n        advertise: 'Advertise Your Products',\n        selfPublish: 'Self-Publish with Us',\n        hubPartner: 'Become an Amazon Hub Partner',\n        moreWays: 'See More Ways to Make Money',\n        payment: 'Amazon Payment Products',\n        visa: 'Amazon Visa',\n        storeCard: 'Amazon Store Card',\n        secureCard: 'Amazon Secured Card',\n        businessCard: 'Amazon Business Card',\n        points: 'Shop with Points',\n        creditCard: 'Credit Card Marketplace',\n        reload: 'Reload Your Balance',\n        giftCards: 'Gift Cards',\n        converter: 'Amazon Currency Converter',\n        helpYou: 'Let Us Help You',\n        yourAccount: 'Your Account',\n        yourOrders: 'Your Orders',\n        shippingRates: 'Shipping Rates & Policies',\n        replacements: 'Returns & Replacements',\n        manage: 'Manage Your Content and Devices',\n        recalls: 'Recalls and Product Safety Alerts',\n        giftList: 'Registry & Gift List',\n        help: 'Help',\n        amazonCom: 'Amazon.com',\n        yourLists: 'Your lists',\n        sellOnAmazon: 'Sell products on Amazon',\n        findGift: 'Find a gift',\n        browsing: 'Browsing History',\n        note54: 'Your Returns',\n        getShip: 'Get <b>Fast, Free Shipping with</b> &nbsp;',\n        backToResults: '<span>‹</span>&nbsp;&nbsp;&nbsp;Back to results',\n        roll: 'Roll over image to zoom in',\n        ratings: 'ratings',\n        searchPage: 'Search this page',\n        listPrice: 'List price:',\n        list: 'List:',\n        prime: 'Amazon Prime',\n        getGift:\n          'Apply now and get a $10 Amazon Gift Card upon approval of the Amazon Store Card, or see if you pre-qualify with no impact to your credit bureau score.',\n        aboutItem: 'About this item',\n        delivery: 'Delivery',\n        pickup: 'Pickup',\n        fastDelivery: 'Or fastest delivery',\n        buyNow: 'Buy now',\n        seeMore: 'See more',\n        coupon: 'with coupon',\n        sold: 'Sold by Amazon',\n        tooltip: 'Action disabled',\n        ideas: 'Popular Shopping Ideas',\n        idea1: 'Fluoride Free',\n        idea2: 'Travel',\n        idea3: 'Baking Soda',\n        idea4: 'Foam',\n        aside1: 'Eligible for Free Shipping',\n        aside2: 'Free Shipping by Amazon',\n        aside3: 'Get FREE Shipping on eligible orders shipped by Amazon',\n        aside4: 'Delivery Day',\n        aside5: 'Get It by Tomorrow',\n        aside6: 'Brands',\n        aside7: 'Colgate',\n        aside8: 'Top Brands in Health & Household',\n        aside9: 'Top Brands',\n        aside10: 'Customer Reviews',\n        aside11: '& Up',\n        aside12: 'Deals & Discounts',\n        aside13: 'All Discounts',\n        aside14: 'From Our Brands',\n        aside15: 'Amazon Brands',\n        searchAmazon: 'Search Amazon',\n        shape: 'Shape',\n        getFast: 'Get It Fast',\n        getTomorrow: 'Get It Tomorrow',\n        overnight: 'Overnight by 11pm',\n        spendLess: 'Spend Less',\n        indoor: 'Indoor Outdoor Us...',\n        purchased: 'Most Purchased',\n        up25: 'Up to $25',\n        to25: '$25 to 50$',\n        to50: '$50 to $100',\n        to100: '$100 to $200',\n        to200: '$200 & above',\n        recommend: 'Recommended Use',\n        features: 'Features',\n        theme: 'Theme',\n        color: 'Color'\n      },\n      walmart: {\n        checkout: 'Continue to checkout',\n        noRating: 'No ratings yet',\n        freeShipping: 'Free shipping',\n        free90days: 'Free 90-day returns',\n        popularPick: 'Popular pick',\n        bestSeller: 'Best seller',\n        back: 'Back to results',\n        viewAll: 'View all',\n        oneItem: '<strong>Quantity:&nbsp;</strong><span>1 item</span>',\n        aboutItem: 'About this item',\n        viewMore: 'View more',\n        youSave: 'You save',\n        purchasedOnline: 'Price when purchased online',\n        buyNow: 'Buy now',\n        howGet: 'How you&apos;ll get this item:',\n        addToCart: 'Add to cart',\n        shipping: 'Shipping',\n        arrives: 'Arrives',\n        pickup: 'Pickup',\n        notAvailable: 'Not available',\n        delivery: 'Delivery',\n        myAddress: 'My Address, 95829',\n        change: 'change',\n        arrivesBy: 'Arrives by&nbsp;',\n        soldBy: 'Sold and shipped by Walmart.com',\n        details: 'Details',\n        quickView: 'Quick view:',\n        specifications: 'Specifications',\n        reviews: 'Reviews',\n        itemEligible: 'This item is gift eligible',\n        learnMore: 'Learn more',\n        addToList: 'Add to list',\n        addToRegistry: 'Add to registry',\n        filters: 'Filters',\n        inStore: 'In-store',\n        price: 'Price',\n        brand: 'Brand',\n        fullfillment: 'Fullfillment Speed',\n        sortBy: 'Sort by',\n        bestMatch: '| Best Match',\n        results: 'Results for&nbsp;',\n        external: 'Uses external data. Price when purchased online',\n        images: 'Images',\n        search: 'Search',\n        howYouWant: 'How do you want your items?',\n        zip: '| 95829',\n        reorder: 'Reorder',\n        myItems: 'My Items',\n        signIn: 'Sign in',\n        account: 'Account',\n        department: 'Department',\n        services: 'Services',\n        filter1: 'Savings',\n        filter2: 'Grocery & Essentials',\n        filter3: `Valentine's day`,\n        filter4: 'Game Time',\n        filter5: 'New & Trending',\n        filter6: 'Fashion',\n        filter7: 'Home',\n        filter8: 'Electronics',\n        filter9: 'Gift Ideas',\n        filter10: 'Registry',\n        filter11: 'ONE Cash',\n        filter12: 'Walmart+',\n        cart: 'Cart',\n        cartEmpty: 'Your cart is empty.',\n        continue: 'Continue shopping',\n        options: 'Pickup and delivery options',\n        itemsAvailible: 'All items availible',\n        orderWithin: 'Order within',\n        remove: 'Remove',\n        saveForLater: 'Save for later',\n        showDetails: 'Show details',\n        hideDetails: 'Hide details',\n        experience: 'For the best shopping experience,',\n        subtotal: 'Subtotal',\n        savings: 'Savings',\n        free: 'Free',\n        taxes: 'Taxes',\n        calcAndCheck: 'Calculated at checkout',\n        estimate: 'Estimated total',\n        monthlyPayments: 'Monthly payments available for eligible items.',\n        withAffirm: 'Continue with Affirm',\n        isGift: 'This order is a gift',\n        rightsReserved: '© 2025 Walmart. All Rights Reserved.',\n        giveFeedback: 'Give feedback',\n        caPrivacy: 'CA Privacy Rights',\n        privacyChoice: 'Your Privacy Choices',\n        noticeCollection: 'Notice at Collection',\n        requestPersonal: 'Request My Personal Information',\n        deleteAccount: 'Delete Account',\n        supplyChains: 'California Supply Chains Act',\n        add: 'Add',\n        sponsored: 'Sponsored',\n        now: 'Now',\n        shippingArrives: 'Shipping, arrives ',\n        subscription: 'Subscription',\n        availability: 'Availability',\n        specialOffers: 'Special Offers',\n        customerRating: 'Customer Rating',\n        features: 'Features',\n        recommendedLocation: 'Recommended Location',\n        category: 'Category',\n        retailer: 'Retailer',\n        gifting: 'Gifting',\n        type: 'Type',\n        thank1: 'We’d love to hear what you think!',\n        thank2: 'Give feedback',\n        allDepartments: 'All Departments',\n        storeDirectory: 'Store Directory',\n        careers: 'Careers',\n        ourCompany: 'Our Company',\n        sellOn: 'Sell on Walmart.com',\n        help: 'Help',\n        recalls: 'Product Recalls',\n        accessibility: 'Accessibility',\n        tax: 'Tax Exempt Program',\n        getApp: 'Get the Walmart App',\n        signUp: 'Sign-up for Email',\n        safety: 'Safety Data Sheet',\n        terms: 'Terms of Use',\n        privacy: 'Privacy & Security',\n        adChoices: 'AdChoices',\n        consumer: 'Consumer Health Data Privacy Notices',\n        brandShop: 'Brand Shop Directory',\n        pharmacy: 'Pharmacy',\n        business: 'Walmart Business',\n        iywyk: '#IYWYK',\n        shop: 'Shop',\n        items: (amount: number) => `${amount}&nbsp;${1 === amount ? 'item' : 'items'}`\n      },\n      target: {\n        checkout: 'Check out'\n      }\n    },\n    rb: {\n      note: 'Please select only 1 item:'\n    },\n    sr: {\n      current: (current: number, amount: number) =>\n        null === current\n          ? 'Please rate'\n          : current > amount\n          ? 'None of the above'\n          : `Stars: ${current} out of ${amount}`,\n      starLabel: (current: number, amount: number) => `${current} out of ${amount}`,\n      note: 'Please rate:'\n    },\n    sbs: {\n      switch: 'New pair displayed.',\n      select: 'Selected.',\n      progress: 'Question progress'\n    },\n    img: {\n      noAlt: 'Missing alternative text for this image'\n    },\n    vo: {\n      note: 'Please watch the video till the end'\n    },\n    cb: {\n      note: (min: number, max: number) => {\n        if (1 === min && 5000 === max) {\n          return 'Please select all that apply:'\n        } else if (min === max) {\n          return `Please select ${min !== 1 ? 'any' : 'only'} ${min} item${min !== 1 ? 's' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Please select at least ${min} item${min !== 1 ? 's' : ''} but no more than ${max}:`\n        } else if (5000 === max && min > 0) {\n          return `Please select at least ${min} item${min !== 1 ? 's' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Please select no more than ${max} item${max !== 1 ? 's' : ''}:`\n        } else {\n          return 'Please select all that apply:'\n        }\n      }\n    },\n    oe: {\n      note: (min: number, max: number, optional: boolean) => {\n        if (min === max) {\n          return `Please type ${1 !== min ? 'any' : 'exactly'} ${min} character${1 !== min ? 's' : ''}${\n            optional ? ' (optional)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Please type at least ${min} character${1 !== min ? 's' : ''} but no more than ${max}${\n            optional ? ' (optional)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Please type at least ${min} character${1 !== min ? 's' : ''}${optional ? ' (optional)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Please type no more than ${max} character${1 !== max ? 's' : ''}${optional ? ' (optional)' : ''}:`\n        } else {\n          return ''\n        }\n      },\n      hint: 'Press \"Tab\" to switch to textfield',\n      invalid: 'This field is required'\n    },\n    oex: {\n      note: 'Please fill in the following fields:'\n    },\n    it: {\n      note: 'Please read'\n    },\n    cn: {\n      placeholder: 'Start typing or click the mic icon to speak',\n      placeholderAudio: 'Click the mic icon to speak',\n      placeholderText: 'Start typing',\n      you: 'You',\n      skipper: 'Skipper',\n      typing: 'typing...',\n      thinking: 'thinking...',\n      sorry: \"Sorry, I didn't get that. Please, try one more time.\",\n      question: `On the next question, we'd like to ask you to chat with Skipper, our AI survey companion, using your <b>microphone</b>.<br/><br/>\n      Do you have <b>a few minutes in a quiet place</b> and are willing to turn on your mic to chat with your voice?`,\n      answers: {\n        0: '<b>Yes</b>, I am in a quiet place',\n        1: '<b>Yes</b>, I have a working microphone',\n        2: \"<b>Yes</b>, I'm happy to chat with an AI survey companion\",\n        3: \"<b>No</b>, I'm not ready to use my mic (it's not working / I'm in a noisy place)  and/or I'm not comfortable chatting with an AI)\"\n      },\n      sendMessage: 'Send message',\n      stopPlay: 'Stop audio',\n      startPlay: 'Play audio',\n      startRecording: 'Start record',\n      delete: 'Stop recording and delete message',\n      conersation: 'Conversation'\n    },\n    mx: {\n      note1: 'Please move the sliders to continue',\n      note: 'Please move the highlighted sliders to continue',\n      dragSlider: 'Drag left or right to answer'\n    },\n    psc: {\n      dragLeftRight: 'Drag left or right to answer',\n      choise: 'Selected: ',\n      note: (v1: string, v2: string) => `Please move the slider to select a value between ${v1} and ${v2}`\n    },\n    ps: {\n      note: (value: string, remaining: number) =>\n        `Please distribute ${remaining ? 'remaining' : ''} ${value} between the items below`,\n      allDone: `All done`,\n      total: `Total:`,\n      dragSlider: 'Drag left or right to answer',\n      input: (min: number, max: number) => `Please type value from ${min} to ${max} for `\n    },\n    cx: {\n      note: 'Open the drop-down menu and start typing your answer to autoscroll or select it manually'\n    },\n    ro: {\n      note: 'Drag up or down to reorder:',\n      onDragStart: 'Picked up sortable item \"{text}\". Sortable item is in position {position} of {total}.',\n      onDragOver: 'Sortable item \"{text}\" was moved into position {position} of {total}.',\n      onDragEnd: 'Sortable item \"{text}\" was dropped at position {position} of {total}.',\n      onDragCancel: 'Dragging was cancelled. Sortable item \"{text}\" was dropped at position {position}.'\n    },\n    md: {\n      note1: 'Please click/tap the item of your <b>first choice</b>.<br/>Click/tap again to clear the choice.',\n      note2: 'Now please click/tap the item of your <b>last choice</b>.<br/>Click/tap again to clear the choice.',\n      note3: 'Thanks! Continue to the next question or click/tap any unselected item to start over.',\n      selectLast: (value: string) => `Select as your last choice: ${value}`,\n      lastSelected: (value: string) => `Selected as the last choice: ${value}`,\n      selectFirst: (value: string) => `Select as your first choice: ${value}`,\n      firstSelected: (value: string) => `Selected as the first choice: ${value}`\n    },\n    aro: {\n      note: 'Please choose one item from each pair:'\n    },\n    wd: {\n      note: 'Make sure that each subsequent value is greater than the previous one.'\n    },\n    emd: {\n      note: 'Please watch the video till the end\\n',\n      noAnswers: 'No answer options, please click next to continue.',\n      start: 'Click and hold to start',\n      resume: 'Click and hold to resume',\n      continue: \"You're ready! <br />Click <strong>Next</strong> to continue\",\n      continueMobile: \"You're ready! <br />Click <strong>here</strong> to continue\",\n      training: {\n        session: 'training session',\n        note: 'Please finish training',\n        moveLeft: 'Please drag the dial all the way to the <strong>left</strong>',\n        moveBottom: 'Please drag the dial all the way to the <strong>bottom</strong>',\n        moveRight: 'Now, please drag the dial all the way to the <strong>right</strong>',\n        moveTop: 'Now, please drag the dial all the way to the <strong>top</strong>',\n        success: 'Great job!'\n      }\n    },\n    sft: {\n      noAnswers: 'No answer options, please click next to continue',\n      note: 'Please answer as quickly as you can with the answer that intuitively feels right',\n      imageError: 'No image exposure time chosen',\n      finish: 'You are all done! <br /> Please click Next to continue',\n      training: {\n        start:\n          '<p>This question will rapidly show you different words and will require your concentration. ' +\n          'You&apos;ll need to react quickly to answer.</p> <p>Ready to practice?</p>',\n        step1: (touch: boolean, mouse: boolean, key: boolean) =>\n          touch\n            ? `Tap \"{buttonLeft}\"`\n            : (mouse ? `Click \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Hit \"{keyBtnLeft}\" key` : ''),\n        step2: (touch: boolean, mouse: boolean, key: boolean) =>\n          touch\n            ? `Tap \"{buttonRight}\"`\n            : (mouse ? `Click \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Hit \"{keyBtnRight}\" key` : ''),\n        fail: () => 'Too slow',\n        success: () => 'Great!',\n        finish: () =>\n          '<p><strong> Excellent!</strong></p><p>Please make sure you are not<br />' +\n          'going to be distracted in the<br/> next 2-3 minutes</p><p>Click Next to start when ready.</p>'\n      },\n      buttons: {\n        start: 'Start',\n        yesno: {\n          left: 'Yes',\n          right: 'No'\n        },\n        matches: {\n          left: 'Match',\n          right: 'Not Match'\n        },\n        fits: {\n          left: 'Fit',\n          right: 'Not Fit'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        },\n        noyes: {\n          left: 'Yes',\n          right: 'No'\n        },\n        matchesRev: {\n          left: 'Match',\n          right: 'Not Match'\n        },\n        fitsRev: {\n          left: 'Fit',\n          right: 'Not Fit'\n        },\n        thumbsRev: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    },\n    se: {\n      groupLabel: 'Please select one of the following smileys:',\n      smileys: {\n        angry: 'Angry smiley',\n        sad: 'Sad smiley',\n        indifferent: 'Indifferent smiley',\n        happy: 'Happy smiley',\n        excited: 'Excited smiley'\n      }\n    },\n    ad: {\n      start: 'START',\n      open: 'OPEN',\n      next: 'NEXT',\n      finish: '<strong>{socialType}</strong> simulation is over.  <br /> Please, click Next to continue.',\n      scroll: 'Please scroll down the page to view the feed.',\n      back: 'Back to <strong>{socialType}</strong> view',\n      exit: 'Exit simulation',\n      instagram: {\n        suggested: 'Suggested for you',\n        all: 'See all',\n        new: 'New in Instagram',\n        follow: 'Follow',\n        footerMenu: [\n          'About',\n          'Help',\n          'Press',\n          'API',\n          'Jobs',\n          'Privacy',\n          'Terms',\n          'Locations',\n          'Language',\n          'Meta Verified'\n        ],\n        sidebarMenu: {\n          home: 'Home',\n          search: 'Search',\n          explore: 'Explore',\n          reels: 'Reels',\n          messages: 'Messages',\n          notifications: 'Notifications',\n          create: 'Create',\n          profile: 'Profile',\n          threads: 'Threads',\n          more: 'More'\n        },\n        simulation: 'Instagram Simulation'\n      },\n      facebook: {\n        search: 'Search Facebook',\n        create: {\n          placeholder: \"What's on your mind?\",\n          live: 'Live Video',\n          media: 'Photo/video',\n          photo: 'Photo',\n          feel: 'Feeling/activity'\n        },\n        footerMenu: ['Privacy', 'Terms', 'Advertising', 'Ad Choices', 'Cookies', 'More', 'Meta Simulation'],\n        sidebarMenu: {\n          video: 'Video',\n          market: 'Marketplace',\n          friends: 'Friends',\n          events: 'Events',\n          pages: 'Pages',\n          memories: 'Memories',\n          groups: 'Groups',\n          bookmarks: 'Saved',\n          feeds: 'Feeds'\n        },\n        more: 'See more',\n        createChat: 'Create group chat',\n        chats: 'Group chats',\n        contacts: 'Contacts'\n      }\n    }\n  },\n  end: {\n    title: 'Thank you!',\n    text: 'We sincerely appreciate your help!'\n  },\n  preview: {\n    title: 'Preview mode',\n    subtitle: 'Your answers will not be recorded',\n    collapse: 'Hide preview tools',\n    expand: 'Show preview tools',\n    close: 'Close preview',\n    texts: {\n      next: 'NEXT',\n      prev: 'PREVIOUS',\n      restart: 'RESTART',\n      privacy: 'Privacy',\n      poweredBy: 'Powered by '\n    },\n    controls: {\n      device: {\n        desktop: {\n          title: 'Desktop preview',\n          subtitle: 'Your answers will not be recorded'\n        },\n        tablet: {\n          title: 'Tablet preview',\n          subtitle: 'Your answers will not be recorded'\n        },\n        mobile: {\n          title: 'Mobile preview',\n          subtitle: 'Your answers will not be recorded',\n          qrCodeTitle: 'SCAN QR CODE',\n          qrCodeMessage: 'to test this survey on a physical mobile device'\n        }\n      },\n      mode: {\n        respondent: {\n          title: 'Respondent mode',\n          subtitle: 'Experience your survey as your respondent will'\n        },\n        researcher: {\n          title: 'Researcher mode',\n          subtitle: 'Enjoy full flexibility to thoroughly test your survey'\n        },\n        xrays: {\n          title: 'Ghost mode',\n          subtitle: 'Routing logic is disabled! Walk through the walls, see hidden items'\n        }\n      },\n      previewOptions: {\n        label: 'View/logic options',\n        options: {\n          suppressLogic: 'Suppress routing logic',\n          showNumbers: 'Show question labels',\n          showHints: 'Show navigation hints',\n          showLogic: 'Show AYTM logic',\n          showHidden: 'Show hidden items'\n        }\n      },\n      jumpToQuestion: {\n        label: 'JUMP TO QUESTION',\n        startOver: 'START OVER',\n        restartFromQuestion: 'Start over from question',\n        xrays: 'Switch to GHOST MODE'\n      }\n    },\n    redirect: {\n      text: 'At this point respondents will be redirected to&nbsp;<a href=\"{url}\" target=\"_blank\">this URL</a>',\n      textSurvey:\n        'Please click&nbsp;<a href=\"{url}\" target=\"_blank\">here</a> if you are not redirected within a few seconds',\n      open: 'OPEN IN NEW TAB',\n      dismiss: 'DISMISS',\n      title: 'Survey redirects to:'\n    }\n  },\n  sidebar: {\n    title: 'Welcome'\n  },\n  error: {\n    text: ['Sorry, something went wrong.', 'Please', 'try again', 'or contact support team.']\n  }\n}\n\nconst rtl = false\nexport { dict, rtl }\n","import { dict as en_us_dict, rtl as en_us_rlt } from './dicts/en_US'\n\nimport { ILocaleDict, LocaleID } from './types'\n\nexport default async function loadDict(localeID: LocaleID): Promise<{ dict: ILocaleDict; rtl: boolean }> {\n  switch (localeID?.toLowerCase()) {\n    case 'en':\n    case 'en_us':\n    case 'en_gb':\n    case 'en_ie': {\n      // PRELOAD DEFAULT LOCALE\n      return { dict: en_us_dict, rtl: en_us_rlt }\n    }\n    case 'ar':\n    case 'ar_ae': {\n      const localeDict = await import('./dicts/ar')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'bg':\n    case 'bg_bg': {\n      const localeDict = await import('./dicts/bg')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'da':\n    case 'da_da':\n    case 'da_dk': {\n      const localeDict = await import('./dicts/da')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'de':\n    case 'de_de': {\n      const localeDict = await import('./dicts/de')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'fi':\n    case 'fi_fi': {\n      const localeDict = await import('./dicts/fi')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'fr':\n    case 'fr_ca':\n    case 'fr_fr': {\n      const localeDict = await import('./dicts/fr')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'el':\n    case 'el_gr': {\n      const localeDict = await import('./dicts/el')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'es':\n    case 'es_es':\n    case 'es_mx':\n    case 'es_us': {\n      const localeDict = await import('./dicts/es')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'he':\n    case 'he_il': {\n      const localeDict = await import('./dicts/he')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'hi':\n    case 'hi_in': {\n      const localeDict = await import('./dicts/hi')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'id':\n    case 'id_id': {\n      const localeDict = await import('./dicts/id')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'it':\n    case 'it_it': {\n      const localeDict = await import('./dicts/it')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'ja':\n    case 'ja_jp': {\n      const localeDict = await import('./dicts/ja')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'ko':\n    case 'ko_kr': {\n      const localeDict = await import('./dicts/ko')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'ms':\n    case 'ms_ma':\n    case 'ms_my': {\n      const localeDict = await import('./dicts/ms')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'nl':\n    case 'nl_nl': {\n      const localeDict = await import('./dicts/nl')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'no':\n    case 'no_no': {\n      const localeDict = await import('./dicts/no')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'pl':\n    case 'pl_pl': {\n      const localeDict = await import('./dicts/pl')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'pt':\n    case 'pt_pt':\n    case 'pt_br': {\n      const localeDict = await import('./dicts/pt')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'ro':\n    case 'ro_ro': {\n      const localeDict = await import('./dicts/ro')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'ru':\n    case 'ru_ru': {\n      const localeDict = await import('./dicts/ru')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'sv':\n    case 'sv_se': {\n      const localeDict = await import('./dicts/sv')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'th':\n    case 'th_th': {\n      const localeDict = await import('./dicts/th')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'tr':\n    case 'tr_tr': {\n      const localeDict = await import('./dicts/tr')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'uk':\n    case 'uk_ua': {\n      const localeDict = await import('./dicts/uk')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'vi':\n    case 'vi_vi':\n    case 'vi_vn': {\n      const localeDict = await import('./dicts/vi')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'zh':\n    case 'zh_cn': {\n      const localeDict = await import('./dicts/zh_CN')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'zh_hk': {\n      const localeDict = await import('./dicts/zh_HK')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'zh_tw': {\n      const localeDict = await import('./dicts/zh_TW')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n    case 'zh_sg': {\n      const localeDict = await import('./dicts/zh_CN')\n      return { dict: localeDict.dict, rtl: localeDict.rtl }\n    }\n\n    default: {\n      const splitLocaleID = localeID?.split('_') || []\n      if (splitLocaleID.length > 1) {\n        // try for locale without country code if locale with country code is not found\n        return await loadDict(splitLocaleID[0])\n      } else {\n        throw new TypeError(`Locale ${localeID} is not supported`)\n      }\n    }\n  }\n}\n","// LocaleModule state is in separate module to prevent hot reload from resetting state\n\nimport { ILocale, ILocaleOptions, LocaleID } from './types'\n\nexport const DEFAULT_LOCALE_ID: LocaleID = 'en_US'\n\nexport const LOCALES: Record<LocaleID, ILocale> = {\n  [DEFAULT_LOCALE_ID]: EMPTY_LOCALE(DEFAULT_LOCALE_ID)\n}\n\n// eslint-disable-next-line immutablejs/no-native-map-set\nexport const PRELOAD_LOCALES = new Set<LocaleID>()\nPRELOAD_LOCALES.add(DEFAULT_LOCALE_ID)\n\n// eslint-disable-next-line immutablejs/no-native-map-set\nexport const LOCALE_DICT_LOADING = new Set<LocaleID>()\n\nexport function EMPTY_LOCALE_OPTIONS() {\n  const localeOptions: ILocaleOptions = {\n    rtl: false\n  }\n  return localeOptions\n}\nexport function EMPTY_LOCALE(localeID: LocaleID = DEFAULT_LOCALE_ID) {\n  const locale: ILocale = {\n    id: localeID,\n    loaded: false,\n    updatedFromServer: false,\n    dict: {},\n    options: EMPTY_LOCALE_OPTIONS()\n  }\n  return locale\n}\n\nexport function ensureLocale(localeID: LocaleID) {\n  return LOCALES[localeID] || ((LOCALES[localeID] = EMPTY_LOCALE(localeID)), LOCALES[localeID])\n}\n","import { deepEqual, deepFreeze, deepMergeCloneObject, getIn, hasOwn } from '@aytm/lib/common/object'\nimport Subscription from '@aytm/lib/common/subscription'\nimport DevLog from '../devlog/Module'\n\nimport { ModuleID } from '../types'\nimport loadDict from './loadDict'\nimport { ILocaleModule, LocaleID, LocaleValue } from './types'\n\nimport { DEFAULT_LOCALE_ID, LOCALES, LOCALE_DICT_LOADING, PRELOAD_LOCALES, ensureLocale } from './state'\nexport { DEFAULT_LOCALE_ID }\n\nconst DEBUG_LOCALE = 'development' === process.env.NODE_ENV\n\nlet moduleLoaded = false\nconst LocaleModule: ILocaleModule = {\n  get id() {\n    return ModuleID.LOCALE\n  },\n  config({ locales = {}, preload } = {}) {\n    for (const localeID in locales) {\n      if (hasOwn(locales, localeID)) {\n        LocaleModule.setLocale(localeID, locales[localeID], moduleLoaded)\n      }\n    }\n    if (Array.isArray(preload)) {\n      if (moduleLoaded) {\n        preload.forEach(localeID => {\n          void LocaleModule.loadLocaleDict(localeID)\n        })\n      } else {\n        preload.forEach(localeID => {\n          PRELOAD_LOCALES.add(localeID)\n        })\n      }\n    }\n    return LocaleModule\n  },\n  async load() {\n    if (PRELOAD_LOCALES.size) {\n      await Promise.all([...PRELOAD_LOCALES].map(localeID => LocaleModule.loadLocaleDict(localeID)))\n      PRELOAD_LOCALES.clear()\n    }\n    moduleLoaded = true\n    return LocaleModule\n  },\n  get loaded() {\n    return moduleLoaded\n  },\n  hasLoadedLocale(localeID, orLoading = false) {\n    return Boolean(LOCALES[localeID] && LOCALES[localeID].loaded) || (orLoading && LOCALE_DICT_LOADING.has(localeID))\n  },\n  hasUpdatedFromServerLocale(localeID) {\n    return Boolean(LOCALES[localeID] && LOCALES[localeID].updatedFromServer)\n  },\n  async loadLocaleDict(localeID) {\n    if (!LocaleModule.hasLoadedLocale(localeID) && !LOCALE_DICT_LOADING.has(localeID)) {\n      if (DEBUG_LOCALE) {\n        DevLog._moduleLog(LocaleModule, 'loadLocaleDict', localeID)\n      }\n      try {\n        LOCALE_DICT_LOADING.add(localeID)\n        const { dict, rtl } = await loadDict(localeID)\n        LOCALE_DICT_LOADING.delete(localeID)\n        LocaleModule.setLocale(localeID, { dict, options: { rtl: Boolean(rtl) }, setLoaded: true })\n      } catch (error) {\n        DevLog.moduleError(LocaleModule, error, 'Failed to load locale dict')\n      }\n    }\n    return LocaleModule\n  },\n  setLocale(localeID, { dict, options, setLoaded = false, setUpdatedFromServer = false } = {}, notify = true) {\n    if (DEBUG_LOCALE) {\n      DevLog._moduleLog(LocaleModule, 'setLocale', localeID, { dict, options, setLoaded, setUpdatedFromServer })\n    }\n    const locale = ensureLocale(localeID)\n    const localeBackupDict = locale.dict\n    const localeBackupOptions = locale.options\n    if (dict) {\n      locale.dict = deepFreeze(deepMergeCloneObject(locale.dict, dict))\n    }\n    if (options) {\n      locale.options = deepFreeze(deepMergeCloneObject(locale.options, options))\n    }\n    if (setLoaded) {\n      locale.loaded = true\n    }\n    if (setUpdatedFromServer) {\n      locale.updatedFromServer = true\n    }\n    if (\n      notify &&\n      locale.subscription &&\n      ((dict && !deepEqual(localeBackupDict, locale.dict)) ||\n        (options && !deepEqual(localeBackupOptions, locale.options)))\n    ) {\n      locale.subscription.update(localeID)\n    }\n    return LocaleModule\n  },\n  options(localeID) {\n    return ensureLocale(localeID).options\n  },\n  t(localeID = DEFAULT_LOCALE_ID, path, fallbackValue) {\n    const locale = ensureLocale(localeID)\n    return getIn<LocaleValue>(\n      locale.dict,\n      path,\n      'undefined' === typeof fallbackValue\n        ? localeID === DEFAULT_LOCALE_ID\n          ? DEFAULT_FALLBACK_VALUE\n          : DEFAULT_FALLBACK_VALUE_WITH_DEFAULT_LOCALE_LOOKUP\n        : fallbackValue\n    )\n  },\n  onChange(localeID = DEFAULT_LOCALE_ID, listener) {\n    if (!LOCALES[localeID]?.subscription) {\n      ensureLocale(localeID).subscription = Subscription<LocaleID, ILocaleModule>()\n    }\n    return LOCALES[localeID].subscription.listen(listener, LocaleModule)\n  }\n}\n\nexport default LocaleModule\n\nexport function DEFAULT_FALLBACK_VALUE(_target: object, path: Array<string | number | symbol>) {\n  DevLog._moduleLog(LocaleModule, 'Missing locale value', path)\n  return 'development' === process.env.NODE_ENV ? `!${path.join('.')}!` : ''\n}\n\nexport function DEFAULT_FALLBACK_VALUE_WITH_DEFAULT_LOCALE_LOOKUP(\n  _target: object,\n  path: Array<string | number | symbol>\n) {\n  return getIn<LocaleValue>(LOCALES[DEFAULT_LOCALE_ID].dict, path, DEFAULT_FALLBACK_VALUE)\n}\n","import { useContext, useMemo } from 'react'\n\nimport { ILocaleContext, IUseLocale, LocaleFallbackValue } from './types'\n\nimport LocaleContext from './Locale.Context'\nimport LocaleModule from './Module'\n\nconst useSurveyLocale: IUseLocale = () => {\n  const localeContext = useContext<ILocaleContext>(LocaleContext)\n  return useMemo<ReturnType<IUseLocale>>(() => {\n    function t<ValueType = string>(...path: string[]): ValueType {\n      return LocaleModule.t(localeContext.surveyLocaleID, path) as ValueType\n    }\n    function _t<ValueType = string>(fallbackValue: LocaleFallbackValue, ...path: string[]): ValueType {\n      return LocaleModule.t(localeContext.surveyLocaleID, path, fallbackValue) as ValueType\n    }\n    return {\n      t,\n      _t,\n      get localeID() {\n        return localeContext.surveyLocaleID\n      },\n      get localeOptions() {\n        return LocaleModule.options(localeContext.surveyLocaleID)\n      }\n    }\n  }, [localeContext.surveyLocaleID])\n}\n\nexport default useSurveyLocale\n","// !!! DON'T FORGET TO UPDATE index.ts IF YOU ADD A NEW MODULE\nexport enum ModuleID {\n  CLIENT = 'client',\n  LOCALE = 'locale',\n  TIMELINE = 'timeline',\n  IMAGES = 'images',\n  WEBCAM = 'webcam',\n  VIDEOS = 'videos',\n  VIEWPORT = 'viewport',\n  PREVIEW = 'preview',\n  THEME = 'theme',\n  THEME_EDITOR = 'theme_editor',\n  MODAL = 'modal',\n  DEV_LOG = 'dev_log',\n  SURVEY_LOG = 'survey_log',\n  HOOKS = 'hooks',\n  SUPERVISOR = 'supervisor',\n  VOID = 'void',\n  TOOLBAR = 'toolbar'\n}\n\nexport interface IModule {\n  get id(): ModuleID\n  config(props: unknown): IModule\n  load(): Promise<IModule>\n  get loaded(): boolean\n}\n","import React from 'react'\n\nexport default function Arrow() {\n  return (\n    <svg width=\"40\" height=\"40\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g clipPath=\"url(#clip0_1030_12)\">\n        <path\n          d=\"M22.7882 17.5437L19.6878 23.5393L16.0485 17.8512L18.2605 17.7524C17.4418 13.6511 15.3185 9.9245 12.2077 7.12918C9.0968 4.33386 5.16523 2.61971 1 2.2427L1.20908 0C5.91709 0.425476 10.3562 2.38114 13.8477 5.56797C17.3392 8.7548 19.6909 12.9974 20.5433 17.6471L22.7882 17.5437Z\"\n          fill=\"#697D93\"\n        />\n      </g>\n      <defs>\n        <clipPath id=\"clip0_1030_12\">\n          <rect width=\"24\" height=\"24\" fill=\"white\" />\n        </clipPath>\n      </defs>\n    </svg>\n  )\n}\n","import React from 'react'\n\nexport default function Mobile({\n  className,\n  width,\n  height,\n  color = '#000000'\n}: {\n  className?: string\n  width?: number\n  height?: number\n  color?: string\n}) {\n  return (\n    <svg\n      className={className}\n      width={width}\n      height={height}\n      viewBox=\"0 0 414.88 691.46698\"\n      version=\"1.1\"\n      id=\"svg1\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <defs id=\"defs1\" />\n      <path\n        d=\"m 414.87999,622.321 a 69.147,69.147 0 0 1 -69.147,69.146 H 69.145993 A 69.147,69.147 0 0 1 -6.8359375e-6,622.321 V 69.146998 A 69.147,69.147 0 0 1 69.145993,-2.4414063e-6 H 345.73299 A 69.147,69.147 0 0 1 414.87999,69.146998 Z m -51.722,-466.464 a 17.702,17.702 0 0 0 -17.286,-17.563 H 69.284993 a 17.702,17.702 0 0 0 -17.287,17.286 v 380.307 a 17.702,17.702 0 0 0 17.425,17.287 H 346.00999 a 17.702,17.702 0 0 0 17.287,-17.287 z m -112.294,-86.710002 h -86.848 a 8.6435,8.6435 0 0 0 0,17.287 h 86.433 a 8.6435,8.6435 0 1 0 0,-17.287 z M 207.57799,579.173 a 43.148,43.148 0 1 0 43.286,43.148 43.286,43.286 0 0 0 -43.286,-43.148 z\"\n        id=\"path1\"\n        fill={color}\n      />\n    </svg>\n  )\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"RotateDevice\":\"style-module__RotateDevice___2qY6a\",\"text\":\"style-module__text___1s8Nj\",\"rotate\":\"style-module__rotate___10KPm\",\"arrow\":\"style-module__arrow___1r3tv\",\"fade-in\":\"style-module__fade-in___2TMAq\",\"phone\":\"style-module__phone___3C6rE\",\"icon\":\"style-module__icon___3Kh9D\",\"animated\":\"style-module__animated___DVnsg\",\"horizontal\":\"style-module__horizontal___3mYh3 swidget-rotate-landscape\",\"phone-to-landscape\":\"style-module__phone-to-landscape___307_U\",\"vertical\":\"style-module__vertical___MUG9a\",\"phone-to-portrait\":\"style-module__phone-to-portrait___1awWY\"};","import React from 'react'\nimport useSurveyLocale from '../../../modules/locale/useSurveyLocale'\n\n// assets\nimport Arrow from './Arrow'\nimport Mobile from './Mobile'\n\n// styles\nimport style from './style.module.scss'\n\nexport interface RotateDeviceProps {\n  vertical?: boolean\n  locale?: string\n}\n\nexport default function RotateDevice({ vertical, locale }: RotateDeviceProps) {\n  const { t } = useSurveyLocale()\n  const text = locale || t('questions', vertical ? 'rotatePortrait' : 'rotateLandscape')\n\n  return (\n    <div className={`${style.RotateDevice} ${vertical ? style.vertical : style.horizontal}`} data-testid=\"SW-Rotate\">\n      <div className={style.rotate}>\n        <div className={style.arrow}>\n          <Arrow />\n        </div>\n        <div className={style.phone}>\n          <Mobile className={style.icon} height={80} width={48} />\n        </div>\n        <div className={`${style.phone} ${style.animated}`}>\n          <Mobile className={style.icon} height={80} width={48} />\n        </div>\n      </div>\n      {text && (\n        <div className={style.text} data-testid=\"SW-Rotate-Text\" dangerouslySetInnerHTML={{ __html: text }}></div>\n      )}\n    </div>\n  )\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"preloader\":\"_base-module__preloader___1fwtO\",\"rotating\":\"_base-module__rotating___31hU3\",\"header\":\"_base-module__header___3nFDB swidget-question-header\",\"desktop\":\"_base-module__desktop___3n1Cs\",\"title\":\"_base-module__title___cUe6c\",\"span\":\"_base-module__span___1IMQI\",\"image\":\"_base-module__image___2YJWr\",\"mobile\":\"_base-module__mobile___22Ly4 swidget-question-header-mobile\",\"rtl\":\"_base-module__rtl___2nUBT\",\"titleSpan\":\"_base-module__titleSpan___1Kk0N\",\"rtlContent\":\"_base-module__rtlContent___1iDnF\",\"fullsized\":\"_base-module__fullsized___1H28X\",\"content\":\"_base-module__content___3UNnU swidget-question-content\",\"questionImage\":\"_base-module__questionImage___2R2xh\",\"afd-spin\":\"_base-module__afd-spin___5B6W9\"};","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { Map, List } from 'immutable'\nimport getCSRFToken from '@aytm/lib/csrf-token'\nimport railsPostFetch from '@aytm/lib/common/rails-post-fetch'\n\nimport { PureDataComponent } from '@aytm/lib/common/components/pure-component'\nimport { SwidgetImage, SwidgetPinImage } from '@aytm/app/swidget/questions/components/common/swidget-image'\nimport { RTL_LOCALES, isRTL } from '@aytm/app/swidget/questions/lib/functions'\n\n// styles\nimport style from '@aytm/app/swidget/questions/styles/_base.module.scss'\nimport commonStyle from '@aytm/app/swidget/questions/styles/common.module.scss'\n\n//export default class Question extends Component {\nclass QuestionTheme extends PureDataComponent {\n  static propTypes = {\n    accentColorRGB: PropTypes.object,\n    accentColor: PropTypes.string,\n    columns: PropTypes.number\n  }\n  render() {\n    const accentColor = this.props.accentColor\n\n    this.currentAccentColor = accentColor\n\n    if (!this.props.accentColor) return null\n    return (\n      <style\n        type=\"text/css\"\n        dangerouslySetInnerHTML={{\n          __html: `\n          .rfd-ui-popup .rfd-ui-popup-content.rfd-ui-popup-content-thin-black {\n            background: ${accentColor};\n          }\n          .rfd-ui-popup .rfd-ui-popup-arrow.rfd-ui-popup-arrow-right {\n            border-color: transparent transparent transparent ${accentColor};\n            filter: drop-shadow(2px 2px 2px rgba(0, 0, 0, 0.2));\n          }\n          .rfd-ui-popup .rfd-ui-popup-arrow.rfd-ui-popup-arrow-bottom {\n            border-color: ${accentColor} transparent transparent transparent;\n            filter: drop-shadow(2px 2px 2px rgba(0, 0, 0, 0.2));\n          }`\n        }}\n      />\n    )\n  }\n}\n\nexport default class Question extends PureDataComponent {\n  static propTypes = {\n    questionSchema: PropTypes.instanceOf(Map).isRequired,\n    answer: PropTypes.instanceOf(Map),\n    theme: PropTypes.string,\n    width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    inFrame: PropTypes.bool,\n    part: PropTypes.number,\n    locale: PropTypes.string,\n    showErrors: PropTypes.bool,\n    accentColorRGB: PropTypes.object,\n    accentColor: PropTypes.string,\n    position: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    imageCallback: PropTypes.func,\n    sizeChanged: PropTypes.func,\n    actionAfterDidMount: PropTypes.func,\n    goNext: PropTypes.func,\n    onLogEvent: PropTypes.func,\n    answerChanged: PropTypes.func\n  }\n\n  constructor(props) {\n    super(props)\n    this.rootEl = React.createRef()\n    this.isPincherActive = 'ontouchstart' in document.documentElement\n    this.state = {\n      answer: props.answer || null,\n      imagesLoaded: List([]),\n      imagesFailed: List([]),\n      timeline: []\n    }\n    this.initTimeline()\n    this.loadBigImages(props)\n    this.waitForSmallImages(props)\n  }\n\n  componentDidMount() {\n    super.componentDidMount()\n    if ('function' === typeof this.props.actionResize) this.props.actionResize()\n    if ('function' === typeof this.props.actionAfterDidMount) this.props.actionAfterDidMount()\n\n    // set focus to the top of the question on question change\n    const progressBar = document.querySelector('#survey-pb-progressbar [tabindex]')\n    if (progressBar) {\n      progressBar.focus()\n    }\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    super.UNSAFE_componentWillReceiveProps(nextProps)\n    if (nextProps.answer != this.props.answer && nextProps.answer != this.state.answer) {\n      const validation = this.validate(nextProps.answer)\n      this.setState({ answer: nextProps.answer, validation })\n    }\n    if (nextProps.pair != this.props.pair) {\n      this.setState({ imagesLoaded: List([]) })\n      this.loadBigImages(nextProps)\n    }\n    if (nextProps.questionSchema != this.props.questionSchema) {\n      this.loadBigImages(nextProps)\n      this.waitForSmallImages(nextProps)\n    }\n  }\n\n  loadBigImages(props) {\n    if ('im' == props.questionSchema.get('type') || this.isPincherActive)\n      this.preLoadImage(props.questionSchema, 'original_url')\n    this.preLoadImage(props.questionSchema, 'big_thumbnail_path')\n    this.preLoadQuestionImages(props)\n  }\n\n  waitForSmallImages(props) {\n    const paths = List(\n      props.questionSchema.getIn(['picture', 'original_url']) && !props.questionSchema.getIn(['picture', 'pin_image'])\n        ? [props.questionSchema.getIn(['picture', 'thumbnail_path'])]\n        : []\n    ).concat(this.collectSmallImages(props))\n\n    Promise.all(\n      paths.map(\n        path =>\n          new Promise(resolve => {\n            if (!path) resolve()\n            if (path) {\n              const img = new Image()\n              img.onload = () => resolve({ path })\n\n              img.onerror = () => resolve({ path })\n              img.src = path\n            }\n          })\n      )\n    ).then(() => {\n      setTimeout(() => {\n        this.setState({ smallImagesReady: true })\n        if ('function' === typeof props.afterImage) props.afterImage()\n      }, 10)\n    })\n  }\n\n  collectSmallImages(__props) {\n    return List([])\n  }\n\n  preLoadQuestionImages(__props) {\n    return false\n  }\n\n  preLoadImage(item, path) {\n    if (item.get('picture') && item.getIn(['picture', path])) {\n      this.loadImage(item.getIn(['picture', path]))\n        .then(url => {\n          this.setState({ imagesLoaded: this.state.imagesLoaded.push(url) })\n          if ('function' === typeof this.props.afterImage) this.props.afterImage()\n        })\n        .catch(error => this.setState({ imagesFailed: this.state.imagesFailed.push(error) }))\n    }\n    // if (item.get('image') && item.getIn(['image', path])) {\n    //   this.loadImage(item.getIn(['image', path]))\n    //     .then(url => {\n    //       this.setState({ imagesLoaded: this.state.imagesLoaded.push(url) })\n    //       if ('function' === typeof this.props.afterImage) this.props.afterImage()\n    //     })\n    //     .catch(error => this.setState({ imagesFailed: this.state.imagesFailed.push(error) }))\n    // }\n  }\n\n  async loadImage(url) {\n    return new Promise((resolve, reject) => {\n      const img = new Image()\n      img.addEventListener('load', () => resolve(url))\n      img.addEventListener('error', () => {\n        reject(new Error(url))\n      })\n      img.src = url\n    })\n  }\n\n  @autobind\n  resizeForFrame() {\n    if (this.props.inFrame && 'function' === typeof this.props.actionResize) this.props.actionResize()\n  }\n\n  @autobind\n  updateAnswer(answerModel = null, timeline = null) {\n    const { answerChanged, answer } = this.props\n    if (answerModel !== this.state.answer || answerModel !== answer) {\n      const validation = this.validate(answerModel)\n      const response = this.backendResponse(answerModel)\n      response.timeline = timeline || this.state.timeline\n      this.setState({ answer: answerModel, validation })\n      if ('function' === typeof answerChanged) answerChanged(answerModel, validation, response)\n    }\n  }\n\n  @autobind\n  initAnswer(answerModel, force) {\n    const { answerChanged } = this.props\n    const validation = this.validate(answerModel)\n    const response = this.backendResponse(answerModel)\n    if (!this.state.answer || force) {\n      this.state.answer = answerModel\n    }\n    if ('function' === typeof answerChanged) answerChanged(answerModel, validation, response)\n  }\n\n  @autobind\n  initTimeline() {\n    this.state.timeline = []\n    this.startTime = Date.now()\n  }\n\n  @autobind\n  updateTimeline(event, oldTimeline) {\n    const timeline = oldTimeline || this.state.timeline\n    const { onLogEvent } = this.props\n    if (timeline) {\n      const time = Date.now()\n      const timeDif = Math.round((time - this.startTime) / 10) / 100\n      timeline.push({ ...event, time: timeDif })\n      this.setState({ timeline })\n    }\n    if (onLogEvent && 'function' == typeof onLogEvent) onLogEvent(event)\n    return timeline\n  }\n\n  @autobind\n  sendDebugLog(log, message = 'Swidget Question Log') {\n    if (log && log.length) {\n      // eslint-disable-next-line no-console\n      //console.log(log, 'this.debugLog')\n      // eslint-disable-next-line unicorn/no-lonely-if\n      if (window.Sentry && window.Sentry.withScope) {\n        window.Sentry.withScope(function (scope) {\n          scope.setLevel('log')\n          scope.setExtra('details', log)\n          window.Sentry.captureMessage(message)\n        })\n      }\n    }\n  }\n\n  @autobind\n  sendSurveyLogs(url, params, log = {}) {\n    // data should contain { proxy_params: this._options.action.proxyParams }\n    if (url && params && log) {\n      const data = {}\n      const csrfToken = getCSRFToken()\n      data[csrfToken[0]] = csrfToken[1]\n      for (const key in params) {\n        data[key] = params[key]\n      }\n      for (const key in log) {\n        data[key] = log[key]\n      }\n      railsPostFetch(url, {\n        body: JSON.stringify(data),\n        mode: 'cors'\n      }).catch(error => {\n        console.log(error) // eslint-disable-line no-console\n      })\n    }\n  }\n\n  @autobind\n  resizeText(text, width, height, options = {}) {\n    const isMobile = 'mobile' == this.props.theme\n    const h = document.querySelector('body')\n    const d = document.createElement('div')\n    const s = document.createElement('span')\n    let it = Math.min(height, 100)\n    d.style.display = 'block'\n    d.style.width = width - 5 + 'px'\n    d.style.height = height - 5 + 'px'\n    d.style.fontSize = it + 'px'\n    d.style.whiteSpace = 'normal'\n    d.style.lineHeight = it + 'px'\n    // eslint-disable-next-line unicorn/prefer-dom-node-append\n    h.appendChild(d)\n    s.style.display = 'inline'\n    s.style.fontSize = it + 'px'\n    s.style.fontFamily = 'Ubuntu, Calibri, Segoe, Helvetica, Arial'\n    s.style.lineHeight = it + 'px'\n    s.innerHTML = text\n    // eslint-disable-next-line unicorn/prefer-dom-node-append\n    d.appendChild(s)\n\n    let sw = s.offsetWidth\n    let sh = s.offsetHeight\n\n    const widthOffset = options && options.widthOffset ? options.widthOffset : 25\n    const heightOffset = options && options.heightOffset ? options.heightOffset : isMobile ? 10 : 25\n    const minFontSize = options && options.minFontSize ? options.minFontSize : 15\n\n    while ((sw > width - widthOffset || sh > height - heightOffset) && it > minFontSize) {\n      it -= Math.ceil(sw / (width - 5))\n      d.style.fontSize = it + 'px'\n      d.style.lineHeight = it + 'px'\n      s.style.fontSize = it + 'px'\n      s.style.lineHeight = it + 'px'\n      sw = s.offsetWidth\n      sh = s.offsetHeight\n    }\n\n    // eslint-disable-next-line unicorn/prefer-dom-node-remove\n    h.removeChild(d)\n    return {\n      fontSize: it + 'px',\n      lineHeight: it + 'px'\n    }\n  }\n\n  @autobind\n  getMinimumResizedStyle(items, width, height) {\n    return items.reduce((res, item) => {\n      const fontStyleItem = this.resizeText(item.get('text'), width, height)\n      return !res.fontSize ||\n        parseInt(fontStyleItem.fontSize.split('px')[0], 10) < parseInt(res.fontSize.split('px')[0], 10)\n        ? fontStyleItem\n        : res\n    }, {})\n  }\n\n  validate(_answer) {\n    return Map({ valid: true, canAdvance: false })\n  }\n\n  backendResponse(answer) {\n    return answer\n  }\n\n  renderDesktop() {\n    return null\n  }\n\n  renderMobile() {\n    return null\n  }\n\n  render() {\n    const {\n      theme,\n      width,\n      position,\n      questionSchema,\n      inFrame,\n      imageCallback,\n      accentColor,\n      accentColorRGB,\n      locale,\n      noHeader\n    } = this.props\n    const { imagesLoaded, smallImagesReady } = this.state\n    const expandImages = questionSchema.get('expand_all_images') && questionSchema.get('id')\n    const picture = questionSchema.get('picture')\n    const skipIcon = questionSchema.get('skipIcon')\n    const skipHtml = questionSchema.get('skipHtml')\n\n    const showHeaderPic = questionSchema.get('skipPic')\n      ? !questionSchema.get('skipPic')\n      : questionSchema.get('type') != 'im' && questionSchema.get('type') != 'sft'\n\n    let label = position ? position + '. ' : ''\n    if (0 === (questionSchema.get('text') || '').length && 'number' === typeof position) {\n      label = ''\n    }\n\n    const rtlStyle =\n      (isRTL(questionSchema.get('text') || '') || 'sft' === questionSchema.get('type')) && RTL_LOCALES.includes(locale)\n\n    return (\n      <Fragment>\n        {smallImagesReady ? (\n          <Fragment>\n            {noHeader ? (\n              <></>\n            ) : (\n              <Fragment key=\"header\">\n                <QuestionTheme accentColor={accentColor} accentColorRGB={accentColorRGB} />\n                <div className={`${style.header} ${style[theme]}` + (rtlStyle ? ` ${style.rtl}` : ``)}>\n                  {skipHtml && (\n                    <div className={`${commonStyle.hint} ${commonStyle['hint-skip']}`}>\n                      <i className={`${commonStyle['hint-icon']} ${skipIcon}`} />\n                      <div dangerouslySetInnerHTML={{ __html: skipHtml }} />\n                    </div>\n                  )}\n                  {showHeaderPic &&\n                    picture &&\n                    picture.get('original_url') &&\n                    !picture.get('pin_image') &&\n                    !expandImages && (\n                      <SwidgetImage\n                        text={(questionSchema.get('text') || '').replace('<br/><br/>', '<br/>')}\n                        picture={picture}\n                        accentColor={accentColor}\n                        theme={theme}\n                        inFrame={inFrame}\n                        imageCallback={imageCallback}\n                      />\n                    )}\n                  <span className={style.span}>\n                    {rtlStyle ? (\n                      <h2\n                        className={style.title}\n                        id=\"swidget-question-header-text\"\n                        style={{ maxWidth: width ? width - 30 : 'auto' }}\n                      >\n                        <span>{label}</span>\n                        <span\n                          className={style.titleSpan}\n                          dangerouslySetInnerHTML={{\n                            __html: questionSchema.get('text') || questionSchema.get('question_text') || ''\n                          }}\n                        />\n                      </h2>\n                    ) : (\n                      <h2\n                        className={style.title}\n                        id=\"swidget-question-header-text\"\n                        dangerouslySetInnerHTML={{\n                          __html: label + ' ' + (questionSchema.get('text') || '')\n                        }}\n                        style={{ maxWidth: width ? width - 30 : 'auto' }}\n                      />\n                    )}\n                  </span>\n                </div>\n              </Fragment>\n            )}\n            <div className=\"sq_content\" key=\"content\">\n              <div\n                ref={this.rootEl}\n                className={`${style.content} ${style[theme]}` + (rtlStyle ? ` ${style.rtlContent}` : ``)}\n                style={{ width: width ? width : 'auto' }}\n              >\n                {showHeaderPic &&\n                  picture &&\n                  picture.get('original_url') &&\n                  (expandImages || picture.get('pin_image')) && (\n                    <div className={style.questionImage}>\n                      <SwidgetPinImage\n                        picture={picture.set('pin_image', true)}\n                        onLoad={this.resizeForFrame}\n                        imageCallback={imageCallback}\n                        accentColor={accentColor}\n                        text={(questionSchema.get('text') || '').replace('<br/><br/>', '<br/>')}\n                        hasLoaded={imagesLoaded.includes(\n                          picture.get(this.isPincherActive ? 'original_url' : 'big_thumbnail_path')\n                        )}\n                      />\n                    </div>\n                  )}\n                {(() => {\n                  switch (theme) {\n                    case 'mobile':\n                      return this.renderMobile()\n                    default:\n                      // 'desktop'\n                      return this.renderDesktop()\n                  }\n                })()}\n              </div>\n            </div>\n          </Fragment>\n        ) : (\n          <div className=\"preloaderDiv\">\n            <div className={style.preloader}></div>\n          </div>\n        )}\n      </Fragment>\n    )\n  }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"notice\":\"notice-module__notice___3XpBH swidget-question-notice\",\"notice-warning\":\"notice-module__notice-warning___3aUV3\",\"notice-error\":\"notice-module__notice-error___2tzPx\"};","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { PureDataComponent } from '@aytm/lib/common/components/pure-component'\n\n//styles\nimport style from '@aytm/app/swidget/questions/styles/common/notice.module.scss'\n\nexport default class Notice extends PureDataComponent {\n  static propTypes = {\n    text: PropTypes.string.isRequired,\n    showErrors: PropTypes.bool,\n    hideVertically: PropTypes.bool\n  }\n\n  render() {\n    const { text, showErrors = false, hideVertically = false, className, ...restProps } = this.props\n\n    return (\n      <div\n        {...restProps}\n        className={`\n        ${style.notice}\n        ${showErrors ? style['notice-error'] : ''}\n        ${hideVertically ? 'swidget-hide-portrait' : ''}\n        ${className ? className : ''}`}\n        dangerouslySetInnerHTML={{ __html: text }}\n      ></div>\n    )\n  }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"scx-module__component___1ZUQC swidget-question-scx\",\"selectContainer\":\"scx-module__selectContainer___3-ndF\",\"mobile\":\"scx-module__mobile___31vBp\",\"notice\":\"scx-module__notice___3sZjN\",\"openEnded\":\"scx-module__openEnded___-qGVI\"};","import React, { Fragment } from 'react'\nimport { Map, List, fromJS } from 'immutable'\nimport autobind from 'autobind-decorator'\n\nimport Question from '@aytm/app/swidget/questions/components/_base'\nimport Select from '@aytm/lib/rfd-ui/components/basic/select'\nimport { escapeText } from '@aytm/app/swidget/questions/lib/functions'\n\nimport locale from '@aytm/app/swidget/questions/locale'\n\nimport style from '@aytm/app/swidget/questions/styles/scx.module.scss'\nimport PropTypes from 'prop-types'\nimport railsPostFetch from '@aytm/lib/common/rails-post-fetch'\nimport getCSRFToken from '@aytm/lib/csrf-token'\nimport TextField from '@aytm/lib/rfd-ui/components/basic/text-field'\nimport Notice from '@aytm/app/swidget/questions/components/common/notice'\n\nconst DEFAULT_ANSWER = fromJS({ id: false })\n\nexport default class SCX extends Question {\n  static propTypes = Object.assign(Question.propTypes, {\n    cxUrl: PropTypes.string,\n    validateUrl: PropTypes.string,\n    optionsID: PropTypes.string\n  })\n  constructor(props) {\n    super(props)\n    this.locale = locale(props.locale).get('questions')\n    this.firstTouch = true\n    this.state = {\n      options: List([List([])]),\n      fetching: List([true]),\n      ...this.state\n    }\n\n    this.initAnswer(List([DEFAULT_ANSWER]))\n  }\n\n  componentDidMount() {\n    super.componentDidMount()\n    const self = this\n    setTimeout(function () {\n      self.requestCxData(0)\n    }, 400)\n  }\n\n  requestCxData(i, id, callback) {\n    const { cxUrl, cxData, locale, questionSchema } = this.props\n    const url = cxUrl || questionSchema.getIn(['urls', 'cx_data'])\n    const { options, answer } = this.state\n    const csrfToken = getCSRFToken()\n    const data = { locale: locale }\n    const self = this\n    self.setState({\n      error: false\n    })\n    data[csrfToken[0]] = csrfToken[1]\n\n    for (const key in this.props.data) {\n      data[key] = this.props.data[key]\n    }\n    for (const key in cxData) {\n      data[key] = cxData[key]\n    }\n    if (i > 0) {\n      data['q_answers'] = answer\n        .setSize(i)\n        .reduce((prev, cur, j) => prev.push(i === j + 1 ? id : cur.get('id')), List([]))\n    }\n    data['uid'] = questionSchema.getIn(['selectoptions', 'uid'])\n\n    const dataToCx = data => {\n      const newOptions = options.set(\n        i,\n        data.v.reduce(\n          (prev, cur, i) =>\n            prev.push(\n              fromJS({\n                id: cur.id || 'a' + (i + 1),\n                value: i + 1,\n                text: cur.l.toString(),\n                oe: cur.o,\n                // eslint-disable-next-line no-useless-escape\n                skipFilter: Boolean(/^(other|n[/\\\\]a)/i.test(cur.l.toString())),\n                children: cur.v,\n                t: data.t,\n                placeholder: cur.t,\n                validate: true === cur.validate\n              })\n            ),\n          List([])\n        )\n      )\n      self.setState({\n        options: newOptions,\n        fetching: List([])\n      })\n      if ('function' == typeof callback) callback(newOptions)\n    }\n\n    if (questionSchema.get('sxc_data')) {\n      dataToCx(questionSchema.get('sxc_data').toJS())\n      return\n    }\n\n    this.setState({ fetching: List([]).set(i, true) })\n    railsPostFetch(url, {\n      body: JSON.stringify(data),\n      mode: 'cors'\n    })\n      .then(response => response.json())\n      .then(data => {\n        if ('ok' === data.status) {\n          dataToCx(data.data)\n          if (\n            self.props.theme != 'mobile' &&\n            self['refSelect' + i] &&\n            self['refSelect' + i].refFocusHolder &&\n            !this.firstTouch\n          )\n            self['refSelect' + i]?.refFocusHolder?.focus()\n        }\n      })\n      .catch(_error => {\n        const newOptions = options.setSize(i)\n        self.setState(\n          {\n            options: newOptions,\n            error: true\n          },\n          () => {\n            self.updateAnswer(answer.setSize(i))\n          }\n        )\n        // if ('function' == typeof callback) callback(newOptions)\n      })\n  }\n\n  validate(answerModel) {\n    const validateObj = answerModel.find(el => el && el.get('validate') && true !== el.get('validated'))\n\n    if (validateObj) {\n      return Map({ valid: false })\n    } else {\n      if (answerModel) {\n        // todo: comments, validated\n        return Map({\n          valid: answerModel.size && answerModel.reduce((prev, cur) => prev && Boolean(cur && cur.get('value')), true)\n        })\n      }\n\n      return Map({ valid: false })\n    }\n  }\n\n  // response: [{id: 'a1', c: 'hello world'}]\n  backendResponse(answerModel) {\n    if (!answerModel) return []\n\n    return answerModel.reduce((prev, cur) => {\n      prev.push(!cur.get('comment') ? { id: cur.get('id') } : { id: cur.get('id'), c: cur.get('comment') })\n      return prev\n    }, [])\n  }\n\n  @autobind\n  selectOption(v, i, newOptions, newAnswer) {\n    const { answer, options, fetching } = this.state\n    if (fetching.get(i)) return\n    this.firstTouch = false\n    const currentOptions = newOptions ? newOptions : options\n    const currentAnswer = newAnswer ? newAnswer : answer\n\n    const focus = () => {\n      const self = this\n      setTimeout(() => {\n        if (self.props.theme != 'mobile' && self['refSelect' + i]) self['refSelect' + i].refFocusHolder.focus()\n      }, 200)\n    }\n    const hotUpdateAnswer = newOptions => {\n      const newAnswer = currentAnswer\n        .setSize(i + 1)\n        .set(i, v.set('comment', ''))\n        .set(i + 1, DEFAULT_ANSWER)\n      this.updateAnswer(newAnswer)\n      focus()\n      if (1 == newOptions.get(i + 1).size) this.selectOption(newOptions.getIn([i + 1, 0]), i + 1, newOptions, newAnswer)\n    }\n    if (!v.get('children') || (!v.get('children').size && 'request' != v.get('children'))) {\n      this.updateAnswer(currentAnswer.setSize(i + 1).set(i, v.set('comment', '')))\n      this.setState({ placeholder: v.get('t') })\n      focus()\n    } else if ('request' == v.get('children')) {\n      this.requestCxData(i + 1, v.get('id'), newOptions => hotUpdateAnswer(newOptions))\n    } else {\n      const updatedOptions = currentOptions.set(\n        i + 1,\n        v.get('children').reduce(\n          (prev, cur, i) =>\n            prev.push(\n              fromJS({\n                id: cur.get('id') || 'a' + (i + 1),\n                value: i + 1,\n                text: cur.get('l').toString(),\n                oe: cur.get('o'),\n                children: cur.get('v'),\n                placeholder: cur.get('t'),\n                skipFilter: Boolean(\n                  /^(other|n[/\\\\]a)/i\n                    // eslint-disable-next-line no-useless-escape\n                    .test(cur.get('l').toString())\n                ),\n                t: v.get('placeholder')\n              })\n            ),\n          List([])\n        )\n      )\n      this.setState(\n        {\n          options: updatedOptions\n        },\n        () => {\n          hotUpdateAnswer(updatedOptions)\n        }\n      )\n    }\n  }\n\n  @autobind\n  changeText(text, i) {\n    const { answer } = this.state\n    this.updateAnswer(answer.setIn([i, 'comment'], text).setIn([i, 'validated'], null))\n  }\n\n  @autobind\n  renderContent() {\n    const { options, answer, error, fetching } = this.state\n    const { showErrors } = this.props\n\n    return (\n      <Fragment>\n        <Notice\n          showErrors={showErrors}\n          text={this.locale.getIn(['cx', 'note'])}\n          data-testid=\"SW-CX-ValidationMessage\"\n        />\n\n        {answer.map((answerItem, i) => {\n          const comment = answer.getIn([i, 'comment']) || ''\n          const commentRows = Math.max((comment.match(/\\n/g) || []).length + 1, 3, comment.length / 50)\n          return (\n            <div key={i} className={style.selectContainer} data-testid=\"SW-CX-Combobox\" style={{ zIndex: 110 - i }}>\n              {options.get(i) && (options.get(i).size > 1 || !answerItem.get('oe')) && (\n                <Select\n                  options={options.get(i) || List([])}\n                  newIcon={true}\n                  // width=\"100%\"\n                  value={answer.getIn([i, 'value']) || null}\n                  placeholder={escapeText(\n                    options.getIn([i, 0, 't']) ||\n                      options.getIn([i, 0, 'placeholder']) ||\n                      (options.get(i).size ? this.locale.getIn(['pleaseSelect']) : '')\n                  )}\n                  onSelect={v => this.selectOption(v, i)}\n                  showSelected={true}\n                  filterOptions={true}\n                  filterStrategy=\"firstChar\"\n                  ref={this.saveRef('Select' + i)}\n                  theme=\"swidget\"\n                  fetching={fetching.get(i)}\n                />\n              )}\n              {answerItem.get('oe') && (\n                <div className={style.openEnded} data-testid=\"SW-CX-OpenEnded\">\n                  <span\n                    className={style.placeholder}\n                    dangerouslySetInnerHTML={{\n                      __html: options.getIn([i, 0, 't']) || options.getIn([i, 0, 'placeholder'])\n                    }}\n                  />\n                  <TextField\n                    error={showErrors && !comment.length}\n                    rows={commentRows}\n                    onChange={v => this.changeText(v, i)}\n                    debounce={100}\n                    placeholder={escapeText(answerItem.get('text'))}\n                    value={comment}\n                    resizableHeight={true}\n                    ref={this.saveRef('Comment')}\n                    data-testid=\"SW-CX-Input\"\n                  />\n                </div>\n              )}\n            </div>\n          )\n        })}\n        {error && (\n          <Notice\n            data-testid=\"SW-CX-Error\"\n            text=\"Something went wrong, please refresh the page and try again\"\n            showErrors={true}\n          />\n        )}\n      </Fragment>\n    )\n  }\n\n  @autobind\n  renderDesktop() {\n    return (\n      <div data-testid=\"SW-CX\" className={style.component}>\n        {this.renderContent()}\n      </div>\n    )\n  }\n\n  @autobind\n  renderMobile() {\n    return (\n      <div data-testid=\"SW-CX\" className={`${style.component} ${style.mobile}`}>\n        {this.renderContent()}\n      </div>\n    )\n  }\n}\n","export const RTL_LOCALES = ['ar', 'he']\n\nexport function isRTL(s) {\n  const ltrChars =\n    'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF' +\n    '\\u2C00-\\uFB1C\\uFDFE-\\uFE6F\\uFEFD-\\uFFFF'\n  const rtlChars = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC'\n  // eslint-disable-next-line no-misleading-character-class\n  const rtlDirCheck = new RegExp('^[^' + ltrChars + ']*[' + rtlChars + ']')\n\n  const html = s\n  const div = document.createElement('div')\n  div.innerHTML = html\n  return rtlDirCheck.test(div.textContent || div.innerText || '')\n}\n\nexport function escapeText(t) {\n  return t.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&')\n}\n","import { Map } from 'immutable'\n\nconst locales = {\n  default: require('./locales/en_us').default,\n  en_us: require('./locales/en_us').default,\n  en_gb: require('./locales/en_us').default,\n  en_ie: require('./locales/en_us').default,\n  ru: require('./locales/ru').default,\n  ru_ru: require('./locales/ru').default,\n  ro: require('./locales/ro').default,\n  ro_ro: require('./locales/ro').default,\n  ua: require('./locales/ua').default,\n  uk_ua: require('./locales/ua').default,\n  fr: require('./locales/fr').default,\n  fr_fr: require('./locales/fr').default,\n  fr_ca: require('./locales/fr').default,\n  es: require('./locales/sp').default,\n  es_mx: require('./locales/sp').default,\n  es_us: require('./locales/sp').default,\n  es_es: require('./locales/sp').default,\n  de: require('./locales/de').default,\n  de_de: require('./locales/de').default,\n  da: require('./locales/da').default,\n  da_da: require('./locales/da').default,\n  da_dk: require('./locales/da').default,\n  it: require('./locales/it').default,\n  it_it: require('./locales/it').default,\n  pt_br: require('./locales/pt_br').default,\n  pt_pt: require('./locales/pt_br').default,\n  pt: require('./locales/pt').default,\n  tr: require('./locales/tr').default,\n  tr_tr: require('./locales/tr').default,\n  th: require('./locales/th').default,\n  th_th: require('./locales/th').default,\n  zh_cn: require('./locales/zh_cn').default,\n  zh_sg: require('./locales/zh_cn').default,\n  zh_tw: require('./locales/zh_tw').default,\n  zh_hk: require('./locales/zh_hk').default,\n  ko: require('./locales/ko').default,\n  ko_kr: require('./locales/ko').default,\n  ja: require('./locales/ja').default,\n  ja_jp: require('./locales/ja').default,\n  hi: require('./locales/hi').default,\n  hi_in: require('./locales/hi').default,\n  id: require('./locales/id').default,\n  id_id: require('./locales/id').default,\n  pl: require('./locales/pl').default,\n  pl_pl: require('./locales/pl').default,\n  sv: require('./locales/sv').default,\n  sv_se: require('./locales/sv').default,\n  nl: require('./locales/nl').default,\n  nl_nl: require('./locales/nl').default,\n  ar: require('./locales/ar').default,\n  ar_ae: require('./locales/ar').default,\n  he: require('./locales/he').default,\n  he_il: require('./locales/he').default,\n  gr: require('./locales/gr').default,\n  el_gr: require('./locales/gr').default,\n  no_no: require('./locales/nor').default,\n  nor: require('./locales/nor').default,\n  bg: require('./locales/bg').default,\n  bg_bg: require('./locales/bg').default,\n  vi: require('./locales/vi').default,\n  vi_vi: require('./locales/vi').default,\n  vi_vn: require('./locales/vi').default,\n  ma: require('./locales/ma').default,\n  ms_ma: require('./locales/ma').default,\n  ms_my: require('./locales/ma').default,\n  fi: require('./locales/fi').default,\n  fi_fi: require('./locales/fi').default\n}\n\nexport default function locale(locale = 'en_us') {\n  return 'en_us' == locale\n    ? locales.default\n    : locales.default\n        .mergeDeep(locales[locale.toLowerCase().slice(0, 2)] || Map())\n        .mergeDeep(locales[locale.toLowerCase()] || Map())\n}\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'لايوجد خيار للجواب، من فضلك اضغط التالي للمتابعة',\n    placeholder: 'حدد من فضلك',\n    pleaseSelect: 'اختر من فضلك',\n    rotateLandscape: 'يرجى إدارة الهاتف من الوضع الرأسي إلى الأفقي للمتابعة.',\n    rotatePortrait: 'يرجى إدارة الهاتف من الوضع الأفقي إلى الرأسي للمتابعة.',\n    ir: {\n      selectWebCam: 'اختر كاميرا الويب (إذا كانت متوفرة) أو اضغط (تصفح) لتحمل من جهازك',\n      noWebCam: 'لم يتم الكشف عن كاميرا الويب',\n      accessCamUpload: 'إمكانية الوصول إلى الكاميرا/ تحميل',\n      browse: 'تصفح',\n      uploadPhoto: 'حمل صورة',\n      camera: 'كاميرا ويب',\n      instead: 'عوضًا عن',\n      capture: 'التقاط',\n      somethingWrong: 'المعذرة، حدث خطأ ما. من فضلك حاول مرة ثانية لاحقًا',\n      couldntRead: 'المعذرة، لم نستطع قراءة الرمز!',\n      couldntProcess: 'المعذرة، لم نستطع معالجة صورتك!',\n      inValidCode: 'Please, submit the valid code', // !\n      moveOn: 'من فضلك حاول مرة ثانية أو أرسل صورتك وتابع',\n      tryAgain: 'من فضلك حاول مرة أخرى',\n      dataReceived: 'تم استلام البيانات!',\n      enterManually: 'من فضلك حاول مرة أخرى أو أدخل البيانات يدويًا أدناه',\n      positionQR: 'من فضلك ضع رمز الوصول السريع أمام كاميرتك لتلائمه ضمن الأطار الأحمر أو حمله من حاسوبك.',\n      positionQRMobile: 'يُرجى وضع رمز الاستجابة السريعة أمام الكاميرا أو تحميله من جهازك.',\n      analyzing: 'تحليل الصورة، انتظر من فضلك',\n      submit: 'ارسال',\n      startOver: 'ابدأ من جديد',\n      allDone: 'أُنجز كل شيئ!',\n      cantAnalyze:\n        'انتباه - لم نتمكن من تقديم هذه الصورة. الرجاء محاولة إعادة التقديم أو اختيار تنسيق صورة أكثر عمومية (JPG, PNG, GIF, BMP)',\n      wrongFormat: 'معذرةً - لا ندعم تنسيق الملف هذا. يُرجى تحميل نوع صورة مدعوم (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'لم يتم الكشف عن كاميرا الويب',\n      uploadVideo: 'رفع مقطع فيديو',\n      skip: 'تخطي؟',\n      accessCamUpload: 'إمكانية الوصول إلى الكاميرا/ تحميل',\n      browse: 'تصفح',\n      instead: 'عوضًا عن',\n      or: 'أو',\n      stopRecording: 'أوقف التسجيل',\n      willBeStopped: 'سيتوقف التسجيل بعد خمس دقائق',\n      stopOnDone: 'أوقف التسجيل عندما تنتهي!',\n      record: 'تسجيل',\n      somethingWrong: 'المعذرة، حدث خطأ ما. من فضلك حاول مرة ثانية لاحقًا',\n      dataReceived: 'تم استلام البيانات!',\n      microphone: 'ميكروفون',\n      camera: 'كاميرا ويب',\n      selectMicrophone: 'حدد الميكروفون الخاص بك',\n      selectCam: 'حدد كاميرا الويب الخاصة بك',\n      submit: 'ارسال',\n      upload: 'رفع',\n      playback: 'إعادة التشغيل',\n      stopPlayback: 'إيقاف استرجاع التشغيل',\n      startOver: 'ابدأ من جديد',\n      allDone: 'أُنجز كل شيئ!',\n      alternativeRecordSpan: '',\n      alrenativeRecordHref: 'من فضلك، حمل مقطع فيديو من حاسوبك.بدلًا من ذلك، تستطيع أن تسجيل فيديو عبر كاميرا الويب.',\n      cantAnalyze:\n        'انتباه - لم نتمكن من تقديم هذا الفيديو. يُرجى محاولة إعادة الإرسال أو اختيار تنسيق فيديو أكثر عمومية (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'معذرةً - لا ندعم تنسيق الملف هذا. يُرجى تحميل نوع فيديو مدعوم (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'اختر',\n      pleaseChoose: 'اختر من فضلك',\n      this: 'هذا',\n      one: 'واحد',\n      myChoice: 'خياري'\n    },\n    hm: {\n      addComment: 'من فضلك أضف تعليقًا أدناه',\n      commentMandatoryPlaceHolder: 'من فضلك أضف تعليقًا الزاميًا',\n      commentOptionalPlaceHolder: 'من فضلك أضف تعليقًا خياريًا',\n      dragPin: 'اسحب لإعادة التموضع (النقر الطويل / الضغط للتثبيت الدقيق).',\n      removePin: 'اسحب خارج الصورة للحذف',\n      editComment: 'انقر/ اضغط دبوس لتعديل التعليق.',\n      addPin: 'من فضلك اسحب الدبوس من اللوحة أدناه وأسقطه في المكان الذي تختاره على الصورة.',\n      addPins: 'من فضلك اسحب الدبابيس من اللوحة أدناه وأسقطهم في المكان الذي تختاره على الصورة.',\n      leavePins: (minPoints, maxPoints) =>\n        `من فضلك اترك على الأقل ${minPoints} لكن ليس أكثر من ${maxPoints} دبوس من كل نوع.`,\n      leavePinsAny: (minPoints, maxPoints) => `الرجاء ترك ${minPoints} ولكن ليس أكثر من ${maxPoints} دبابيس من أي نوع.`,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `من فضلك اترك على الأقل ${minPoints} لكن ليس أكثر من ${maxPoints} دبوس.`,\n      leavePinsWithOff: maxPoints => `من فضلك لا تترك أكثر من ${maxPoints} دبوس من كل نوع أو انقر على التالي للتخطي.`,\n      leavePinsWithOffAny: maxPoints =>\n        `من فضلك لا تترك أكثر من ${maxPoints} دبابيس من أي نوع أو انقر فوق \"التالي\" للتخطي.`,\n      leavePinsPerPageWithOff: maxPoints => `من فضلك لا تترك أكثر من ${maxPoints} دبوس أو انقر على التالي للتخطي.`,\n      leavePinWithOff: `من فضلك لا تترك أكثر من دبوس واحد من كل نوع أو انقر على التالي للتخطي.`,\n      leavePinWithOffAny: `الرجاء عدم ترك أكثر من دبوس واحد من أي نوع أو النقر فوق \"التالي\" للتخطي. `,\n      leavePinPerPageWithOff: 'من فضلك لا تترك أكثر من 1 دبوس أو انقر على التالي للتخطي.',\n      leaveExactlyPin: `من فضلك اترك دبوس واحد من كل نوع.`,\n      leaveExactlyPinAny: `الرجاء ترك دبوس واحد من أي نوع.`,\n      leaveExactlyPinPerPage: 'من فضلك اترك دبوس واحد.',\n      leaveExactlyPins: maxPoints => `من فضلك اترك ${maxPoints} دبوس من كل نوع.`,\n      leaveExactlyPinsAny: maxPoints => `الرجاء ترك ${maxPoints} دبابيس من أي نوع.`,\n      leaveExactlyPinsPerPage: maxPoints => `من فضلك اترك ${maxPoints} دبوس .`,\n      leaveComment: 'اكتب تحت الصورة لتترك تعليقًا.',\n      noAnswers: 'لا يوجد خيار للإجابة، من فضلك انقر على التالي للمتابعة.',\n      outOfPins: 'لقد فرغت من الدبابيس',\n      pinsBehavior: 'أثناء تنقلك عبر الصورة، سترى مناطق ستُحدد بوضع دبوس واحد.',\n      clusters: 'ستتمكن فقط من وضع الدبابيس في هذه المناطق المحددة.',\n      contentAware: 'يمكنك وضع الدبابيس داخل المناطق المحددة أو خارجها.'\n    },\n    mp: {\n      expand_note: 'يرجى تمرير مؤشر الماوس فوق الصورة (الصور) أو النقر عليها للتوسيع',\n      rb_note: rows => `يرجى اختيار إجابة واحدة فقط لكل عنصر ${rows ? 'أدناه' : ''}`,\n      cb_note: (min, max, rows) => {\n        if (min === max) {\n          return `يرجى تحديد ${min !== 1 ? 'أي' : 'فقط'} ${min} ${min !== 1 ? 'إجابات' : 'إجابة'} ${\n            rows ? 'أدناه' : ''\n          } لكل عنصر :`\n        } else if (min > 0 && max < 5000) {\n          return `يرجى اختيار ${min} ${min !== 1 ? 'إجابات' : 'إجابة'}  على الأقل، ولكن بما لا يزيد عن ${max} ${\n            rows ? 'أدناه' : ''\n          } لكل عنصر :`\n        } else if (5000 === max && min > 0) {\n          return `يرجى اختيار ${min} ${min !== 1 ? 'إجابات' : 'إجابة'} ${rows ? 'أدناه' : ''} على الأقل لكل عنصر :`\n        } else if (0 === min && max < 5000) {\n          return `يرجى اختيار ما لا يزيد عن ${max} ${max !== 1 ? 'إجابات' : 'إجابة'} ${rows ? 'أدناه' : ''} لكل عنصر :`\n        } else {\n          return 'تحقق من كل ما يُطبق:'\n        }\n      }\n    },\n    sh: {\n      note: 'انقر فوق منتج لتكبيره وإضافته إلى عربة التسوق الافتراضية الخاصة بك إذا كنت ستشتريه من المتجر',\n      amazonNote: 'انقر على المنتج لتكبير صورته وإضافته إلى سلة التسوق الافتراضية.',\n      fullCart: 'عربة التسوق الخاصة بك ممتلئة!',\n      qty: 'الكمية',\n      each: 'كل',\n      items: 'أغراض',\n      addToCart: 'أضف إلى السلة',\n      deleteFromCart: 'حذف',\n      emptyCard: 'سلة التسوق فارغة',\n      total: 'السلة',\n      next: 'التالي',\n      clearCart: 'تفريغ السلة',\n      backToStore: 'العودة إلى المتجر',\n      na: 'لاشيء مما سبق',\n      scrollError: `يرجى التمرير بالكامل إلى اليسار واليمين للمتابعة في الاستبيان.`,\n      maxCartCountError: max => `منتج إلى عربة التسوق${max}يُرجى عدم إضافة أكثر من `,\n      maxSpentError: max => `  يُرجى عدم إنفاق أكثر من${max} `,\n      maxProductCountError: max => `  يُرجى عدم إضافة كمية أكثر من${max}إلى عربة التسوق لكل منتج  `\n    },\n    rb: {\n      note: 'من فضلك اختر عنصرًا واحدًا فقط:'\n    },\n    vo: {\n      note: 'من فضلك شاهد الفيديو حتى نهايته\\n'\n    },\n    cb: {\n      note: (min, max) => {\n        if (1 === min && 5000 === max) {\n          return 'تحقق من كل مايُطبق:'\n        } else if (min === max) {\n          return `من فضلك اختر ${min !== 1 ? 'أي' : 'عنصر'} ${min} عناصر ${min !== 1 ? 'فقط' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `من فضلك اختر على الأقل ${min} عنصر ${min !== 1 ? 'عناصر' : ''} لكن ليس أكثر من ${max} لكل صف:`\n        } else if (5000 === max && min > 0) {\n          return `من فضلك اختر على الأقل ${min} عنصر ${min !== 1 ? 'عناصر' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `من فضلك اختر ما لا يزيد عن ${max} عنصر ${max !== 1 ? 'عناصر' : ''}:`\n        } else {\n          return 'تحقق من كل مايُطبق:'\n        }\n      }\n    },\n    oe: {\n      na: 'غير قابل للتطبيق',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `من فضلك اكتب ${1 !== min ? 'أي' : 'بالضبط'} ${min} رمز ${1 !== min ? 'رموز' : ''}${\n            optional ? ' (اختياري)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `من فضلك اكتب على الأقل ${min} رمز ${1 !== min ? 'رموز' : ''} لكن ليس أكثر من ${max}${\n            optional ? ' (اختياري)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `من فضلك اكتب على الأقل ${min} رمز ${1 !== min ? 'رموز' : ''}${optional ? ' (اختياري)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `من فضلك اكتب ما لا يزيد عن ${max} رمز ${1 !== min ? 'رموز' : ''}${optional ? ' (اختياري)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'من فضلك املأ الحقول التالية'\n    },\n    mx: {\n      note: 'من فضلك حرك أشرطة التمرير المميزة للمتابعة',\n      dragSlider: 'اسحب إلى اليسار أو اليمين للإجابة'\n    },\n    psc: {\n      dragLeftRight: 'اسحب إلى اليسار أو اليمين للإجابة'\n    },\n    ps: {\n      note: (value, remaining) => `من فضلك وزع بقية ${remaining ? 'المتبقية' : ''} ${value} بين العناصر أدناه`,\n      allDone: `أُنجز كل شيئ!`,\n      total: `مجموع:`,\n      dragSlider: 'اسحب إلى اليسار أو اليمين للإجابة'\n    },\n    cx: {\n      note: 'افتح القائمة المنسدلة وابدأ بكتابة جوابك عن طريق الممرر التلقائي أو حدده يدويًا'\n    },\n    ro: {\n      note: 'اسحب للأعلى أو الأسفل من أجل إعادة الترتيب:'\n    },\n    md: {\n      note1: 'من فضلك انقر/اضغط فوق عنصر خيارك الأول<br/>انقر/اضغط مرة ثانية لإزالة الاختيار.',\n      note2: 'من فضلك انقر/اضغط فوق عنصر خيارك الأخير<br/>انقر/اضغط مرة ثانية لإزالة الاختيار.',\n      note3: 'شكرًا! أكمل إلى السؤال التالي أو انقر/ اضغط على أي عنصر غير مختار للبدء من جديد.'\n    },\n    aro: {\n      note: 'من فضلك اختر عنصرًا واحدًا من كل زوج.'\n    },\n    wd: {\n      note: 'تأكد من أن كل قيمة لاحقة أكبر من القيمة السابقة.'\n    },\n    emd: {\n      note: 'من فضلك شاهد الفيديو حتى نهايته\\n',\n      noAnswers: 'لايوجد خيار للجواب، من فضلك اضغط التالي للمتابعة',\n      start: 'انقر مع الاستمرار للبدء',\n      resume: 'انقر مع الاستمرار للاستئناف',\n      continue: 'أنت جاهز! اضغط على التالي للمتابعة.',\n      continueMobile: 'أنت مستعد! انقر هنا للمتابعة',\n      training: {\n        session: 'دورة تدريبية',\n        note: 'الرجاء إنهاء التدريب',\n        moveLeft: 'من فضلك اسحب القرص على طول الطريق إلى اليسار',\n        moveBottom: 'من فضلك اسحب القرص حتى النهاية',\n        moveRight: 'الآن، من فضلك اسحب أيقونة الاتصال الهاتفي على طول الطريق إلى اليمين',\n        moveTop: 'من فضلك اسحب القرص على طول الطريق إلى الأعلى',\n        success: 'عمل رائع!'\n      }\n    },\n    sft: {\n      noAnswers: 'لايوجد خيار للجواب، من فضلك اضغط التالي للمتابعة',\n      note: 'يُرجى الإجابة بأسرع ما يمكن بالإجابة التي تشعر أنها صحيحة بشكل بديهي',\n      finish: 'لقد انتهيت! الرجاء النقر فوق \"موافق\" للمتابعة',\n      training: {\n        start:\n          '<p>سيُظهر لك هذا السؤال كلمات مختلفة بسرعة وسيتطلب تركيزك. ' +\n          'ستحتاج إلى الرد بسرعة للإجابة' +\n          '</p> <p>جاهز للتطبيق؟</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `مقبض \"{buttonLeft}\"`\n            : (mouse ? `انقر \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `اضغط على مفتاح \"{keyBtnLeft}\"` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `مقبض \"{buttonRight}\"`\n            : (mouse ? `انقر \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `اضغط على مفتاح \"{keyBtnRight}\"` : ''),\n        fail: () => 'بطيئ جدًا',\n        success: () => 'عظيم!',\n        finish: () =>\n          '<p><strong> رائع!</strong></p><p>يُرجى التأكد من أنك لن تشتت انتباهك في الدقائق 2-3 القادمة</p><p>انقر فوق \"التالي\" للبدء عندما تكون جاهزًا</p>'\n      },\n      buttons: {\n        start: 'البدء',\n        yesno: {\n          left: 'نعم',\n          right: 'لا'\n        },\n        matches: {\n          left: 'تطابق',\n          right: 'لا يوجد تطابق'\n        },\n        fits: {\n          left: 'مناسب',\n          right: 'غير مناسب'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Няма опция за отговор. Кликнете „Напред“, за да продължите.',\n    placeholder: 'Пояснете...',\n    pleaseSelect: 'Изберете...',\n    rotateLandscape: 'Завъртете телефона си от портретен в пейзажен режим.',\n    rotatePortrait: 'Завъртете телефона си от пейзажен в портретен режим.',\n    ir: {\n      selectWebCam:\n        'Изберете уебкамера (ако е налична) или кликнете върху „Преглед“, за да качите от Вашето устройство',\n      uploadOnly: \"Кликнете върху 'Преглед', за да качите от Вашето устройство\",\n      noWebCam: 'Не е открита уебкамера',\n      accessCamUpload: 'ДОСТЪП ДО КАМЕРА/КАЧВЕНЕ',\n      browse: 'ПРЕГЛЕД',\n      uploadPhoto: 'Качи снимка',\n      camera: 'Уебкамера',\n      instead: 'вместо',\n      capture: 'ЗАСНЕМАНЕ',\n      somethingWrong: 'За съжаление нещо се обърка. Опитайте отново по-късно',\n      couldntRead: 'За съжаление не успяхме да прочетем кода!',\n      couldntProcess: 'За съжаление не успяхме да обработим изображението Ви!',\n      inValidCode: 'Изпратете валидния код',\n      moveOn: 'Опитайте отново или изпратете снимката си и продължете напред',\n      tryAgain: 'Опитайте отново',\n      dataReceived: 'Данните са получени!',\n      enterManually: 'Опитайте отново или въведете данните ръчно по-долу',\n      positionQR:\n        'Поставете QR кода пред камерата си така, че да се побере в червената рамка, или го качете от компютъра си.',\n      positionQRMobile: 'Поставете QR кода пред камерата си или го качете от Вашето устройство.',\n      analyzing: 'Анализиране на изображението, моля, изчакайте',\n      submit: 'ИЗПРАЩАНЕ',\n      startOver: 'Започни отначало',\n      allDone: 'Готово!',\n      cantAnalyze:\n        'Внимание – не можахме да разпознаем това изображение. Опитайте да го изпратите повторно или изберете по-общ формат на изображението (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Съжаляваме – не поддържаме този файлов формат. Качете поддържан тип изображение (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Не е открита уебкамера',\n      uploadVideo: 'Качете видео',\n      skip: 'Пропусни?',\n      accessCamUpload: 'ДОСТЪП ДО КАМЕРА/КАЧВЕНЕ',\n      browse: 'ПРЕГЛЕД',\n      instead: 'вместо',\n      or: 'или',\n      stopRecording: 'Спрете записа',\n      willBeStopped: 'Записът ще спре след <b>5 минути</b>',\n      stopOnDone: 'Спрете да записвате, когато сте готови!',\n      record: 'ЗАПИС',\n      somethingWrong: 'За съжаление нещо се обърка. Опитайте отново по-късно.',\n      dataReceived: 'Данните са получени!',\n      microphone: 'Микрофон',\n      camera: 'Уебкамера',\n      selectMicrophone: 'Изберете микрофон',\n      selectCam: 'Изберете уебкамера',\n      submit: 'ИЗПРАЩАНЕ',\n      upload: 'КАЧЕТЕ',\n      playback: 'Възпроизвеждане',\n      stopPlayback: 'СПИРАНЕ НА ВЪЗПРОИЗВЕЖДАНЕТО',\n      startOver: 'ЗАПОЧНИ ОТНАЧАЛО',\n      allDone: 'Готово!',\n      alternativeRecordSpan: 'Качете видеоклип от Вашето компютърно устройство.<br/>Като алтернатива можете &nbsp;',\n      alrenativeRecordHref: 'да запишете видеоклипа с уебкамера.',\n      cantAnalyze:\n        'Внимание – не можахме да разпознаем това видео. Опитайте да го изпратите повторно или изберете по-общ видеоформат (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Съжаляваме – не поддържаме този файлов формат. Качете поддържан тип видео (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'ИЗБОР',\n      pleaseChoose: 'Изберете',\n      this: 'ТОВА',\n      one: ' eднн',\n      myChoice: 'Моят ИЗБОР'\n    },\n    hm: {\n      addComment: 'Добавете коментар по-долу',\n      commentMandatoryPlaceHolder: 'Добавете задължителен коментар... ',\n      commentOptionalPlaceHolder: 'Добавете коментар по избор... ',\n      dragPin: 'Плъзнете за препозициониране (дълго кликване/натискане за прецизно закачане). ',\n      removePin: 'Плъзнете извън изображението за изтриване.  ',\n      editComment: 'Кликнете/натиснете върху маркер за редактиране на коментар. ',\n      addPin: 'Плъзнете маркера от панела по-долу и го пуснете на избрано от Вас място върху изображението.',\n      addPins: 'Плъзнете маркерите от панела по-долу и ги пуснете на избрано от Вас място върху изображението. ',\n      leavePins: (minPoints, maxPoints) =>\n        `Оставете поне ${minPoints}, но не повече от ${maxPoints} маркера от всеки вид.`,\n      leavePinsAny: (minPoints, maxPoints) =>\n        `Оставете поне ${minPoints}, но не повече от ${maxPoints} маркера от който и да е вид. `,\n      leavePinsPerPage: (minPoints, maxPoints) => `Оставете поне ${minPoints}, но не повече от ${maxPoints} маркера. `,\n      leavePinsWithOff: maxPoints =>\n        `Оставете не повече от ${maxPoints} маркера от всеки вид или кликнете върху „Напред“ за пропускане. `,\n      leavePinsWithOffAny: maxPoints =>\n        `Оставете не повече от ${maxPoints} маркера от който и да е вид или кликнете върху „Напред“ за пропускане. `,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Оставете не повече от ${maxPoints} маркера или кликнете върху „Напред“ за пропускане. `,\n      leavePinWithOff: `Оставете не повече от 1 маркер от всеки вид или кликнете върху „Напред“ за пропускане. `,\n      leavePinWithOffAny: `Оставете не повече от 1 маркер от който и да е вид или кликнете върху „Напред“ за пропускане. `,\n      leavePinPerPageWithOff: 'Оставете не повече от 1 маркер или кликнете върху „Напред“ за пропускане. ',\n      leaveExactlyPin: `Оставете 1 маркер от всеки вид. `,\n      leaveExactlyPinAny: `Оставете 1 маркер от който и да е вид.. `,\n      leaveExactlyPinPerPage: 'Оставете 1 маркер. ',\n      leaveExactlyPins: maxPoints => `Оставете ${maxPoints} маркера от всеки вид. `,\n      leaveExactlyPinsAny: maxPoints => `Оставете ${maxPoints} маркера от който и да е вид. `,\n      leaveExactlyPinsPerPage: maxPoints => `Оставете ${maxPoints} маркера. `,\n      leaveComment: 'Въведете под изображението, за да оставите коментар. ',\n      noAnswers: 'Няма опция за отговор. Кликнете „Напред“, за да продължите.',\n      outOfPins: 'маркерите Ви се изчерпаха',\n      pinsBehavior: 'Когато се движите по изображението, ще видите области, които са маркирани с топче на маркерите.',\n      clusters: 'Ще можете да поставяте маркерите само в тези очертани области.',\n      contentAware: 'Можете да поставяте маркерите във или извън маркираните области.'\n    },\n    mp: {\n      expand_note:\n        'Моля, задръжте стрелката върху изображението(ята) или кликнете върху него(тях), за да го(ги) разтворите.',\n      rb_note: rows => `Изберете само 1 отговор за всеки елемент${rows ? ' по-долу' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (min === max) {\n          return `Изберете ${min !== 1 ? '' : 'само'} ${min} отговор${min !== 1 ? 'а' : ''} за всеки елемент${\n            rows ? ' по-долу' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Моля, изберете най-малко ${min} отговор${\n            min !== 1 ? 'а' : ''\n          }, но не повече от ${max} отговора на въпрос:`\n        } else if (5000 === max && min > 0) {\n          return `Моля, изберете поне ${min} отговор${min !== 1 ? 'а' : ''} на въпрос:`\n        } else if (0 === min && max < 5000) {\n          return `Моля, изберете не повече от ${max} отговор${max !== 1 ? 'а' : ''} на въпрос:`\n        } else {\n          return 'Маркирайте всички приложими:'\n        }\n      }\n    },\n    sh: {\n      note: 'Кликнете върху продукт, за да го увеличите и добавите към Вашата виртуална количка, ако бихте го купили в магазина',\n      amazonNote: 'Кликнете върху продукт, за да го увеличите и добавите към Вашата виртуална количка.',\n      fullCart: 'Количката Ви е пълна!',\n      qty: 'КОЛИЧЕСТВО',\n      addToCart: 'ДОБАВИ В КОЛИЧКАТА',\n      deleteFromCart: 'ИЗТРИЙ',\n      each: 'всеки',\n      items: 'елементи',\n      emptyCard: 'Количката Ви е празна',\n      total: 'Количка',\n      clearCart: 'Изчистване на количката',\n      backToStore: 'Обратно в магазина',\n      na: 'Нито едно от посочените',\n      next: 'НАПРЕД',\n      maxCartCountError: max => `Моля, не добавяйте повече от ${max} продукта във Вашата количка. `,\n      scrollError: `Моля, превъртете изцяло наляво и надясно, за да продължите анкетата. `,\n      maxSpentError: max => `Моля, не харчете повече от ${max}. `,\n      maxProductCountError: max => `Моля, не добавяйте във Вашата количка повече от ${max} за всеки продукт.`\n    },\n    rb: {\n      note: 'Изберете само 1 елемент:'\n    },\n    vo: {\n      note: 'Изгледайте видеото до края'\n    },\n    cb: {\n      note: (min, max) => {\n        if (1 === min && 5000 === max) {\n          return 'Маркирайте всички приложими:'\n        } else if (min === max) {\n          return `Изберете ${min !== 1 ? 'произволен' : 'само'} ${min} елемент${min !== 1 ? 'a' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Изберете поне ${min} елемент${min !== 1 ? 'а' : ''}, но не повече от ${max}:`\n        } else if (5000 === max && min > 0) {\n          return `Изберете поне ${min} елемент${min !== 1 ? 'а' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Изберете не повече от ${max} елемент${max !== 1 ? 'a' : ''}:`\n        } else {\n          return 'Маркирайте всички приложими:'\n        }\n      }\n    },\n    oe: {\n      na: 'Не е приложимо',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Въведете ${1 !== min ? 'произволен' : 'точно'} ${min} символ${1 !== min ? 'a' : ''}${\n            optional ? ' (по избор)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Въведете поне ${min} символ${1 !== min ? 'a' : ''} но не повече от ${max}${\n            optional ? ' (по избор)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Въведете поне ${min} символ${1 !== min ? 'a' : ''}${optional ? ' (по избор)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Въведете не повече от ${max} символ${1 !== min ? 'a' : ''}${optional ? ' (по избор)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Попълнете следните полета:'\n    },\n    mx: {\n      note: 'Преместете оцветените плъзгачи, за да продължите',\n      dragSlider: 'Плъзнете наляво или надясно, за да отговорите'\n    },\n    psc: {\n      dragLeftRight: 'Плъзнете наляво или надясно, за да отговорите'\n    },\n    ps: {\n      note: (value, remaining) => `Разпределете ${remaining ? 'останалите' : ''} ${value} между елементите по-долу`,\n      allDone: `Готово`,\n      total: `Общо:`,\n      dragSlider: 'Плъзнете наляво или надясно, за да отговорите'\n    },\n    cx: {\n      note: 'Отворете полето и започнете да пишете отговора си, за да превъртите автоматично или да го изберете ръчно'\n    },\n    ro: {\n      note: 'Плъзнете нагоре или надолу, за да пренаредите:'\n    },\n    md: {\n      note1:\n        'Кликнете/натиснете върху елемента по Вашия <b>първи избор</b>.<br/>Кликнете/натиснете отново, за да изчистите избора.',\n      note2:\n        'Сега кликнете/натиснете върху елемента по Вашия <b>последен избор</b>.<br/>Кликнете/натиснете отново, за да изчистите избора.',\n      note3:\n        'Благодаря! Продължете към следващия въпрос <br/ >или кликнете/натиснете върху всеки неизбран елемент, за да започнете отначало.'\n    },\n    aro: {\n      note: 'Изберете по един елемент от всяка двойка:'\n    },\n    wd: {\n      note: 'Уверете се, че всяка следваща стойност е по-голяма от предишната.'\n    },\n    emd: {\n      note: 'Изгледайте видеото до края',\n      noAnswers: 'Няма опция за отговор. Кликнете „Напред“, за да продължите.',\n      start: 'Кликнете и задръжте за започване',\n      resume: 'Кликнете и задръжте за продължаване',\n      continue: 'Готови сте! <br />Кликнете <strong>Напред</strong> за да продължите',\n      continueMobile: 'Готови сте! <br />Кликнете <strong>ТУК</strong> за да продължите',\n      training: {\n        session: 'Обучителна сесия',\n        note: 'Завършете обучението',\n        moveLeft: 'Плъзнете циферблата докрай <strong>наляво</strong>',\n        moveBottom: 'Плъзнете циферблата докрай <strong>надолу</strong>',\n        moveRight: 'Плъзнете циферблата докрай <strong>надясно</strong>',\n        moveTop: 'Плъзнете циферблата докрай <strong>нагоре</strong>',\n        success: 'Страхотно!'\n      }\n    },\n    sft: {\n      noAnswers: 'Няма опция за отговор. Кликнете „Напред“, за да продължите.',\n      note: 'Отговорете възможно най-бързо с отговора, който интуитивно изглежда правилен',\n      imageError: 'No image exposure time chosen',\n      finish: 'Готови сте! <br /> Кликнете „Напред“, за да продължите',\n      training: {\n        start:\n          '<p>Този въпрос ще Ви покаже бързо различни думи и ще изисква Вашата концентрация. ' +\n          'Ще трябва да реагирате бързо, за да отговорите. </p> <p>Готови ли сте да се упражнявате?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Натиснете \"{buttonLeft}\"`\n            : (mouse ? `Кликнете \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Натиснете клавиша \"{keyBtnLeft}\"` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Натиснете \"{buttonRight}\"`\n            : (mouse ? `Кликнете \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Натиснете клавиша \"{keyBtnRight}\"` : ''),\n        fail: () => 'Твърде бавно',\n        success: () => 'Страхотно!',\n        finish: () =>\n          '<p><strong> Отлично!</strong></p><p>Уверете се, че няма <br />' +\n          'да се разсейвате през<br/> следващите 2 – 3 минути</p><p>Кликнете „Напред“, за да започнете, когато сте готови.</p>'\n      },\n      buttons: {\n        start: 'Започни',\n        yesno: {\n          left: 'Да',\n          right: 'Не'\n        },\n        matches: {\n          left: 'Съвпадение',\n          right: 'Несъвпадение'\n        },\n        fits: {\n          left: 'Подходящо',\n          right: 'Неподходящо'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        },\n        noyes: {\n          left: 'Да',\n          right: 'Не'\n        },\n        matchesRev: {\n          left: 'Съвпадение',\n          right: 'Несъвпадение'\n        },\n        fitsRev: {\n          left: 'Подходящо',\n          right: 'Неподходящо'\n        },\n        thumbsRev: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Hvis du ikke har mulighed for at svare, skal du klikke på næste for at fortsætte.',\n    placeholder: 'Angiv venligst ...',\n    pleaseSelect: 'Vælg venligst ...',\n    rotateLandscape: 'Rotér din telefon fra portræt til landskab for at fortsætte.',\n    rotatePortrait: 'Rotér din telefon fra landskab til portræt for at fortsætte.',\n    ir: {\n      selectWebCam: 'Vælg webcam (hvis det er tilgængeligt), eller klik på \"Gennemse\" for at uploade fra din enhed',\n      noWebCam: 'Der er ikke registreret noget webcam',\n      accessCamUpload: 'ADGANG TIL KAMERA/UPLOAD',\n      browse: 'GENNEMSE',\n      uploadPhoto: 'Upload et foto',\n      instead: 'i stedet',\n      startOver: 'Start forfra',\n      capture: 'TAG BILLEDE',\n      allDone: 'Alt er klaret!',\n      somethingWrong: 'Beklager, der gik noget galt. Prøv venligst igen senere',\n      couldntRead: 'Beklager, vi kunne ikke læse koden!',\n      couldntProcess: 'Beklager, vi kunne ikke behandle dit billede!',\n      moveOn: 'Prøv igen, eller indsend dit billede, og gå videre',\n      tryAgain: 'Prøv venligst igen',\n      dataReceived: 'Data modtaget!',\n      enterManually: 'Prøv venligst igen eller indtast dataene manuelt nedenfor',\n      positionQR:\n        'Placer QR-koden foran dit kamera, så den passer ind i den røde ramme, eller upload den fra din computer.',\n      submit: 'INDSEND',\n      analyzing: 'Analyserer billede, vent venligst...',\n      cantAnalyze:\n        'Vær opmærksom - vi kunne ikke rendere dette billede. Prøv venligst at indsende igen eller vælg et mere generisk billedformat (JPG, PNG, GIF, BMP).',\n      wrongFormat:\n        'Vi beklager - vi understøtter ikke dette filformat. Upload venligst en understøttet billedtype (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Der er ikke registreret noget webcam',\n      uploadVideo: 'Upload en video',\n      skip: 'Spring over?',\n      accessCamUpload: 'ADGANG TIL KAMERA/UPLOAD',\n      browse: 'GENNEMSE',\n      instead: 'i stedet',\n      or: 'eller',\n      stopRecording: 'Stop optagelse',\n      willBeStopped: 'Optagelsen stopper efter 5 minutter',\n      stopOnDone: 'Stop optagelsen, når du er færdig!',\n      record: 'OPTAG',\n      somethingWrong: 'Beklager, der gik noget galt. Prøv venligst igen senere',\n      microphone: 'Mikrofon',\n      camera: 'Webkamera',\n      selectMicrophone: 'Vælg din mikrofon',\n      selectCam: 'Vælg dit webkamera',\n      upload: 'Upload',\n      playback: 'Afspilning',\n      stopPlayback: 'Stop optagelse',\n      submit: 'INDSEND',\n      startOver: 'Start forfra',\n      allDone: 'Alt er klaret!',\n      alternativeRecordSpan:\n        'Du bedes uploade et videoklip fra din computer-enhed. Alternativt kan du optage videoen med et webcam.',\n      alrenativeRecordHref: ' optag videoen med et webcam.',\n      cantAnalyze:\n        'Vær opmærksom - vi kunne ikke rendere denne video. Prøv venligst at indsende igen eller vælg et mere generisk videoformat (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Vi beklager - vi understøtter ikke dette filformat. Upload venligst en understøttet videotype (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'VÆLG',\n      pleaseChoose: 'Vælg venligst',\n      this: 'DETTE',\n      one: 'en',\n      myChoice: 'Mit VALG'\n    },\n    hm: {\n      addComment: 'Tilføj venligst en kommentar nedenfor',\n      commentMandatoryPlaceHolder: 'Tilføj venligst obligatorisk kommentar...',\n      commentOptionalPlaceHolder: 'Tilføj venligst valgfri kommentar... ',\n      dragPin: 'Træk for at flytte positionen (klik/tap længe for præcis fastgørelse).',\n      removePin: 'Træk uden for billedet for at slette det.',\n      editComment: 'Klik/tryk på markeringen for at redigere kommentaren.',\n      addPin: 'Træk markeringer fra panelet nedenfor, og placer den på et sted på billedet, som du selv vælger.',\n      addPins: 'Træk markeringer fra panelet nedenfor, og placer dem på et sted på billedet, som du selv vælger.',\n      leavePins: (minPoints, maxPoints) =>\n        `Efterlad mindst ${minPoints} men ikke mere end ${maxPoints} markeringer af hver slags.`,\n      leavePinsAny: (minPoints, maxPoints) =>\n        `Efterlad mindst ${minPoints}, men ikke mere end ${maxPoints} markeringer af enhver art.`,\n      leavePinsPerPage: (minPoints, maxPoints) => `Efterlad mindst ${minPoints} og højst ${maxPoints} markeringer.`,\n      leavePinsWithOff: maxPoints =>\n        `Efterlad højst ${maxPoints} markeringer af hver slags, eller klik på Næste for at springe over.`,\n      leavePinsWithOffAny: maxPoints =>\n        `Efterlad højst ${maxPoints} markeringer af enhver art, eller klik på Næste for at springe over for at springe over.`,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Efterlad højst ${maxPoints} markeringer, eller klik på Næste for at springe over.`,\n      leavePinWithOff: 'Efterlad højst 1 markering af enhver art, eller klik på Næste for at springe over.',\n      leavePinWithOffAny: 'Efterlad højst 1 markering af enhver art, eller klik på Næste for at springe over.',\n      leavePinPerPageWithOff: 'Efterlad højst 1 markering af enhver art, eller klik på Næste for at springe over.',\n      leaveExactlyPin: 'Efterlad venligst 1 markering af hver slags.',\n      leaveExactlyPinAny: 'Efterlad venligst 1 markering af enhver art.',\n      leaveExactlyPinPerPage: 'Efterlad venligst 1 markering.',\n      leaveExactlyPins: maxPoints => `Efterlad venligst ${maxPoints} markeringer af enhver art.`,\n      leaveExactlyPinsAny: maxPoints => `Efterlad venligst ${maxPoints} markeringer af enhver art.`,\n      leaveExactlyPinsPerPage: maxPoints => `Efterlad venligst ${maxPoints} markeringer.`,\n      leaveComment: 'Skriv under billedet for at efterlade en kommentar.',\n      noAnswers: '',\n      outOfPins: 'Du er løbet tør for markeringer',\n      pinsBehavior:\n        'Når du bevæger dig hen over billedet, vil du se områder, som vil blive fremhævet med et enkelt markeringspunkt.',\n      clusters: 'Du kan kun placere markeringer i disse markerede områder.',\n      contentAware: 'Du kan placere markeringer inden for eller uden for de markerede områder.'\n    },\n    mp: {\n      expand_note: 'Hold musen hen over eller klik på billedet for at forstørre',\n      rb_note: rows => `Vælg kun 1 svar pr. punkt ${rows ? ' nedenfor' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (min === max) {\n          return `Vælg ${min !== 1 ? '' : 'kun'} ${min} svar pr. punkt ${rows ? ' nedenfor' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Vælg mindst ${min} svar , men ikke mere end ${max} pr. punkt${rows ? ' nedenfor' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Vælg venligst mindst ${min} svar 1 svar pr. punkt${rows ? ' nedenfor' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Vælg venligst ikke mere end ${max} svar pr. punkt${rows ? ' nedenfor' : ''}:`\n        } else {\n          return 'Sæt kryds i alt, hvad der er relevant:'\n        }\n      }\n    },\n    sh: {\n      note: 'Klik på et produkt for at zoome ind og lægge det i din virtuelle indkøbskurv, hvis du ønsker at købe det i butikken',\n      amazonNote: 'Klik på et produkt for at zoome ind og lægge det i din virtuelle indkøbskurv.',\n      fullCart: 'Din indkøbskurv er fuld!',\n      qty: 'ANTAL',\n      each: 'hver',\n      items: 'genstande',\n      addToCart: 'LÆG I KURVEN',\n      deleteFromCart: 'SLET',\n      next: 'NÆSTE',\n      emptyCard: 'Din indkøbskurv er tom',\n      total: 'Indkøbskurv',\n      clearCart: 'Ryd indkøbskurv',\n      backToStore: 'Tilbage til butik',\n      scrollError: `Scroll helt ud til venstre og helt ud højre for at fortsætte i undersøgelsen. `,\n      na: 'Ingen af ovennævnte'\n    },\n    rb: {\n      note: 'Vælg venligst kun 1 vare:'\n    },\n    vo: {\n      note: 'Se venligst videoen til slut'\n    },\n    cb: {\n      note: (min, max) => {\n        if (1 === min && 5000 === max) {\n          return 'Vælg venligst alle relevante:'\n        } else if (min === max) {\n          return `Vælg venligst ${min !== 1 ? 'any' : 'kun'} ${min} item${min !== 1 ? 's' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Vælg venligst mindst ${min} item${min !== 1 ? 's' : ''} men ikke mere end ${max}:`\n        } else if (5000 === max && min > 0) {\n          return `Vælg venligst mindst ${min} item${min !== 1 ? 's' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Vælg ikke mere end ${max} item${max !== 1 ? 's' : ''}:`\n        } else {\n          return 'Vælg venligst alle relevante:'\n        }\n      }\n    },\n    oe: {\n      na: 'Ikke anvendelig',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Skriv venligst ${1 !== min ? 'any' : 'præcis'} ${min} tegn${1 !== min ? 's' : ''}${\n            optional ? ' (valgfri)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Skriv venligst mindst ${min} tegn${1 !== min ? 's' : ''} men ikke mere end ${max}${\n            optional ? ' (valgfri)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Skriv venligst mindst ${min} tegn${1 !== min ? 's' : ''}${optional ? ' (valgfrit)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Indtast ikke mere end ${max} tegn${1 !== min ? 's' : ''}${optional ? ' (valgfrit)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Udfyld venligst følgende felter:'\n    },\n    mx: {\n      note: 'Flyt de markerede skydere for at fortsætte',\n      dragSlider: 'Træk til venstre eller højre for at svare'\n    },\n    psc: {\n      dragLeftRight: 'Træk til venstre eller højre for at svare'\n    },\n    ps: {\n      note: (value, remaining) =>\n        `Venligst fordel ${remaining ? 'resterende' : ''} ${value} mellem nedenstående elementer`,\n      allDone: `Alt er klaret`,\n      total: `Всего:`,\n      dragSlider: 'Arrastre hacia la izquierda o la derecha para responder'\n    },\n    cx: {\n      note: 'Åbn dropbox og begynd at skrive dit svar for at autoscrolle eller vælg det manuelt'\n    },\n    ro: {\n      note: 'Træk op eller ned for at ændre rækkefølgen:'\n    },\n    md: {\n      note1: 'Klik/tryk venligst på det emne, du vælger først.<br/>Klik/tryk igen for at fjerne valget.',\n      note2: 'Klik/tryk venligst nu på det emne, du sidst har valgt.<br/>Klik/tryk igen for at fjerne valget.',\n      note3: 'Tak! Fortsæt til næste spørgsmål, eller klik/tryk på et element, der ikke er valgt, for at starte forfra.'\n    },\n    aro: {\n      note: 'Vælg venligst et element fra hvert par.'\n    },\n    wd: {\n      note: 'Sørg for, at hver efterfølgende værdi er større end den foregående.'\n    },\n    emd: {\n      note: 'Se venligst videoen til slut',\n      noAnswers: 'Hvis du ikke har mulighed for at svare, skal du klikke på næste for at fortsætte.',\n      start: 'Klik og hold nede for at starte',\n      resume: 'Klik og hold nede for at genoptage',\n      continue: 'Du er klar!<br /> Klik på Næste for at fortsætte',\n      continueMobile: 'Du er klar!<br />Klik HER for at fortsætte',\n      training: {\n        session: 'Træningssession',\n        note: 'Afslut venligst træningen',\n        moveLeft: 'Træk drejeskiven helt til venstre',\n        moveBottom: 'Træk drejeskiven helt ned til bunden',\n        moveRight: 'Træk nu drejeskiven helt til højre',\n        moveTop: 'Træk nu drejeskiven helt op til toppen',\n        success: 'Godt arbejde!'\n      }\n    },\n    sft: {\n      noAnswers: 'Hvis du ikke har mulighed for at svare, skal du klikke på næste for at fortsætte.',\n      note: 'Svar venligst så hurtigt som muligt med det svar, der intuitivt føles rigtigt',\n      finish: 'Du er klar!<br />Klik HER for at fortsætte',\n      training: {\n        start:\n          '<p>Dette spørgsmål vil hurtigt vise dig forskellige ord og vil kræve din koncentration.' +\n          'Du skal reagere hurtigt for at besvare.</p> <p>Er du klar til at øve dig?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Tryk på \"{buttonLeft}\"`\n            : (mouse ? `Klik \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Hit \"{keyBtnLeft}\" nøgle` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Tryk på \"{buttonRight}\"`\n            : (mouse ? `Klik \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Hit \"{keyBtnRight}\" nøgle` : ''),\n        fail: () => 'For langsom',\n        success: () => 'Fantastisk!',\n        finish: () =>\n          '<p><strong>Fremragende!</strong></p><p>Sørg for, at du ikke vil blive distraheret i de næste 2-3 minutter</p><p>Klik på Næste for at starte, når du er klar</p>'\n      },\n      buttons: {\n        start: 'Start',\n        yesno: {\n          left: 'Ja',\n          right: 'Nej'\n        },\n        matches: {\n          left: 'Match',\n          right: 'Ikke et match'\n        },\n        fits: {\n          left: 'Passer',\n          right: 'Passer ikke'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Keine Antwortmöglichkeit, bitte klicken Sie auf ‚Weiter‘, um fortzufahren.',\n    placeholder: 'Bitte erläutern Sie ...',\n    pleaseSelect: 'Bitte auswählen Sie...',\n    rotateLandscape: 'Bitte drehen Sie Ihr Handy von Hoch- in Querformat.',\n    rotatePortrait: 'Bitte drehen Sie Ihr Handy von Quer- in Hochformat.',\n    ir: {\n      selectWebCam:\n        'Wählen Sie die Webcam aus (falls verfügbar) oder klicken Sie auf ‚Durchsuchen‘, um von Ihrem Gerät hochzuladen',\n      noWebCam: 'Keine Webcam gefunden',\n      accessCamUpload: 'ZUGRIFF KAMERA / UPLOAD',\n      browse: 'DURCHSUCHEN',\n      uploadPhoto: 'Laden Sie ein Foto hoch',\n      instead: 'stattdessen',\n      capture: 'ERFASSUNG',\n      somethingWrong: 'Sorry, etwas ist schiefgelaufen. Bitte versuchen Sie es später erneut',\n      couldntRead: 'Leider wir konnten den Code nicht lesen!',\n      couldntProcess: 'Leider konnten wir Ihr Bild nicht bearbeiten!',\n      moveOn: 'Bitte versuchen Sie es erneut oder reichen Sie Ihr Foto ein und machen Sie weiter',\n      tryAgain: 'Bitte versuchen Sie es erneut',\n      dataReceived: 'Daten erhalten!',\n      enterManually: 'Bitte versuchen Sie es erneut oder geben Sie die Daten manuell ein',\n      positionQR:\n        'Bitte positionieren Sie den QR-Code vor Ihrer Kamera, damit er in den roten Rahmen passt oder laden Sie ihn von Ihrem Computer hoch.',\n      analyzing: 'Bild wird analysiert, bitte warten',\n      submit: 'EINREICHEN',\n      startOver: 'Von vorn anfangen',\n      allDone: 'Fertig!',\n      cantAnalyze:\n        'Achtung - wir konnten dieses Bild nicht rendern. Bitte versuchen Sie, es erneut hochzuladen oder wählen Sie ein üblicheres Bildformat (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Es tut uns leid - dieses Dateiformat wird von uns nicht unterstützt. Bitte laden Sie ein unterstütztes Bildformat hoch (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Keine Webcam gefunden',\n      uploadVideo: 'Ein Video hochladen',\n      skip: 'Überspringen?',\n      accessCamUpload: 'ZUGRIFF KAMERA / LADEN',\n      browse: 'DURCHSUCHEN',\n      instead: 'stattdessen',\n      or: 'oder',\n      stopRecording: 'Aufnahme anhalten',\n      willBeStopped: 'Die Aufnahme stoppt nach 5 Minuten.',\n      stopOnDone: 'Stoppen Sie die Aufnahme, wenn Sie fertig sind!',\n      record: 'AUFZEICHNEN',\n      somethingWrong: 'Sorry, etwas ist schiefgelaufen. Bitte versuchen Sie es später erneut',\n      microphone: 'Mikrofon',\n      camera: 'Webcam',\n      selectMicrophone: 'Wählen Sie Ihr Mikrofon aus',\n      selectCam: 'Wählen Sie Ihre Webcam aus',\n      submit: 'EINREICHEN',\n      upload: 'HOCHLADEN',\n      playback: 'Abspielen',\n      stopPlayback: 'STOPPEN',\n      startOver: 'Von vorn anfangen',\n      allDone: 'Fertig!',\n      alternativeRecordSpan:\n        'Bitte laden Sie einen Videoclip von Ihrem Computer hoch.<br/>Alternativ können Sie &nbsp;',\n      alrenativeRecordHref: 'das Video auch mit einer Webcam aufnehmen.',\n      cantAnalyze:\n        'Achtung - wir konnten dieses Video nicht rendern. Bitte versuchen Sie, es erneut hochzuladen oder wählen Sie ein üblicheres Videoformat (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Es tut uns leid - dieses Dateiformat wird von uns nicht unterstützt. Bitte laden Sie ein unterstütztes Videoformat hoch (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'WÄHLEN',\n      pleaseChoose: 'Bitte wählen',\n      this: 'DIES',\n      one: 'eins',\n      myChoice: 'Meine AUSWAHL'\n    },\n    hm: {\n      addComment: 'Bitte fügen Sie im Folgenden einen Kommentar hinzu',\n      commentMandatoryPlaceHolder: 'Bitte fügen Sie den erforderlichen Kommentar hinzu ... ',\n      commentOptionalPlaceHolder: 'Bitte fügen Sie ggf. einen Kommentar hinzu ... ',\n      dragPin: 'Zur Repositionierung ziehen (für präzisen Pin-Einsatz anklicken/antippen und festhalten). ',\n      removePin: 'Zum Löschen außerhalb des Bildes ziehen.  ',\n      editComment: 'Klicken/Tippen Sie auf den Pin, um den Kommentar zu bearbeiten. ',\n      addPin:\n        'Bitte ziehen Sie den Pin vom nachstehenden Bedienfeld an eine Bildstelle Ihrer Wahl und setzen Sie ihn dort. ',\n      addPins:\n        'Bitte ziehen Sie die Pins vom nachstehenden Bedienfeld an eine Bildstelle Ihrer Wahl und setzen Sie sie dort. ',\n      leavePins: (minPoints, maxPoints) =>\n        `Bitte setzen Sie mindestens ${minPoints}, aber nicht mehr als ${maxPoints} Pins pro Sorte. `,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `Bitte setzen Sie mindestens ${minPoints}, aber nicht mehr als ${maxPoints} Pins. `,\n      leavePinsWithOff: maxPoints =>\n        `Bitte setzen Sie nicht mehr als ${maxPoints} Pins pro Sorte oder klicken Sie zum Überspringen auf „Weiter“. `,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Bitte setzen Sie nicht mehr als ${maxPoints} Pins oder klicken Sie zum Überspringen auf „Weiter“. `,\n      leavePinWithOff:\n        'Bitte setzen Sie nicht mehr als 1 Pin pro Sorte oder klicken Sie zum Überspringen auf „Weiter“.',\n      leavePinPerPageWithOff: 'Bitte setzen Sie nicht mehr als 1 Pin oder klicken Sie zum Überspringen auf „Weiter“. ',\n      leaveExactlyPin: 'Bitte setzen Sie 1 Pin pro Sorte. ',\n      leaveExactlyPinPerPage: 'Bitte setzen Sie 1 Pin. ',\n      leaveExactlyPins: maxPoints => `Bitte setzen Sie ${maxPoints} Pins pro Sorte. `,\n      leaveExactlyPinsPerPage: maxPoints => `Bitte setzen Sie ${maxPoints} Pins. `,\n      leaveComment: 'Geben Sie unterhalb des Bilds Ihren Kommentar ein. ',\n      noAnswers: 'Keine Antwortmöglichkeit. Bitte klicken Sie auf „Weiter“, um fortzufahren.',\n      outOfPins: 'Sie haben keine Pins mehr',\n      pinsBehavior:\n        'Wenn Sie über das Bild navigieren, sehen Sie Bereiche, die mit einer einzelnen Pin-Markierung hervorgehoben werden.',\n      clusters: 'Sie können Pins nur in diesen hervorgehobenen Bereichen platzieren.',\n      contentAware: 'Sie können Pins innerhalb oder außerhalb der hervorgehobenen Bereiche platzieren.'\n    },\n    mp: {\n      expand_note: 'Zum Vergrößern bitte mit dem Mauszeiger über das/die Bild/er fahren oder darauf klicken',\n      rb_note: rows => `Bitte wählen Sie nur 1 Antwort für jeden ${rows ? 'nachstehenden' : ''} Punkt auswählen:`,\n      cb_note: (min, max, _rows) => {\n        if (min === max) {\n          return `Bitte wählen Sie ${min !== 1 ? 'beliebige' : 'nur'} ${min} Antwort${\n            min !== 1 ? 'en' : ''\n          } pro Punkt aus:`\n        } else if (min > 0 && max < 5000) {\n          return `Bitte wählen Sie mindestens ${min} Antwort${\n            min !== 1 ? 'en' : ''\n          } aus, aber nicht mehr als ${max} pro Punkt aus:`\n        } else if (5000 === max && min > 0) {\n          return `Bitte wählen Sie mindestens ${min} Antwort${min !== 1 ? 'en' : ''} pro Punkt aus:`\n        } else if (0 === min && max < 5000) {\n          return `Bitte wählen Sie nicht mehr als ${max} Antwort${max !== 1 ? 'en' : ''} pro Punkt aus:`\n        } else {\n          return 'Bitte alle Zutreffenden auswählen:'\n        }\n      }\n    },\n    sh: {\n      note: 'Klicken Sie auf ein Produkt, um es zu vergrößern und zu Ihrem virtuellen Einkaufskorb hinzuzufügen, wenn Sie es im Geschäft kaufen würden',\n      amazonNote: 'Klicken Sie ein Produkt an, um es zu vergrößern und in Ihren virtuellen Warenkorb zu legen.',\n      fullCart: 'Ihr Einkaufskorb ist voll!',\n      qty: 'MGE',\n      each: 'jede',\n      items: 'artikel',\n      next: 'WEITER',\n      addToCart: 'ZUM EINKAUFSKORB HINZUFÜGEN',\n      deleteFromCart: 'LÖSCHEN',\n      emptyCard: 'Ihr Einkaufskorb ist leer',\n      total: 'Einkaufskorb',\n      clearCart: 'Einkaufskorb leeren',\n      backToStore: 'Zurück zum Geschäft',\n      na: 'Keine der obigen',\n      maxCartCountError: max => `Bitte legen Sie nicht mehr als ${max} Produkte in Ihren Warenkorb`,\n      scrollError: `Scrollen Sie bitte ganz nach links und rechts, um mit der Umfrage fortzufahren. `,\n      maxSpentError: max => `Bitte geben Sie nicht mehr als ${max} aus.`,\n      maxProductCountError: max =>\n        `Bitte legen Sie für jedes Produkt nicht mehr als die Menge ${max} in Ihren Warenkorb.`\n    },\n    rb: {\n      note: 'Bitte wählen Sie nur 1 Punkt:'\n    },\n    vo: {\n      note: 'Bitte schauen Sie sich das Video bis zum Ende an'\n    },\n    cb: {\n      note: (min, max) => {\n        if (1 === min && 5000 === max) {\n          return 'Bitte alle Zutreffenden auswählen:'\n        } else if (min === max) {\n          return `Bitte wählen Sie ${min !== 1 ? 'any' : 'nur'} ${min} Punkt${min !== 1 ? 'e' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Bitte wählen Sie mindestens ${min} Punkt${min !== 1 ? 'e' : ''} aus, aber nicht mehr als ${max}:`\n        } else if (5000 === max && min > 0) {\n          return `Bitte wählen Sie mindestens ${min} Punkt${min !== 1 ? 'e' : ''} aus:`\n        } else if (0 === min && max < 5000) {\n          return `Bitte wählen Sie nicht mehr als ${max} Punkt${max !== 1 ? 'e' : ''}:`\n        } else {\n          return 'Bitte alle Zutreffenden auswählen:'\n        }\n      }\n    },\n    oe: {\n      na: 'Unzutreffend',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Bitte geben Sie ${1 !== min ? 'beliebiges' : 'genau'} ${min} Zeichen${optional ? ' (optional)' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Bitte geben Sie mindestens ${min} Zeichen ein, aber nicht mehr als ${max}${\n            optional ? ' (optional)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Bitte geben Sie mindestens ${min} Zeichen ${optional ? ' ein (optional)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Bitte geben Sie nicht mehr als ${max} Zeichen ${optional ? ' ein (optional)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Bitte füllen Sie die folgenden Felder aus:'\n    },\n    mx: {\n      note: 'Bitte verschieben Sie die markierten Schieberegler, um fortzufahren',\n      dragSlider: 'Zum Beantworten nach links oder rechts ziehen'\n    },\n    psc: {\n      dragLeftRight: 'Zum Beantworten nach links oder rechts ziehen'\n    },\n    ps: {\n      note: value => `Bitte verteilen Sie die verbleibenden ${value} auf die unten gezeigten Möglichkeiten`,\n      allDone: 'Fertig!',\n      total: `Gesamt:`,\n      dragSlider: 'Zum Beantworten nach links oder rechts ziehen'\n    },\n    cx: {\n      note: 'Bitte tragen Sie Ihren Antwort ein, um die automatische Bildlauffunktion zu aktiveren oder wählen Sie sie manuell aus.'\n    },\n    ro: {\n      note: 'Zur Neueinordnung nach oben oder unten ziehen:'\n    },\n    md: {\n      note1:\n        'Bitte klicken/tippen Sie auf das Element, das Ihnen am meisten zusagt<br/>Bei erneutem Anklicken/Antippen wird dieses gelöscht.',\n      note2:\n        'Bitte klicken/tippen Sie jetzt auf das Element, das Ihnen am wenigsten zusagt<br/>Bei erneutem Anklicken/Antippen wird dieses gelöscht.',\n      note3:\n        'Vielen Dank! Gehen Sie zur nächsten Frage über oder klicken/tippen<br/>Sie auf ein beliebiges, noch nicht ausgewähltes Element, um neu zu beginnen.'\n    },\n    aro: {\n      note: 'Bitte wählen Sie für jedes Paar einen Artikel.'\n    },\n    wd: {\n      note: 'Bitte achten Sie darauf, dass jeder folgende Wert größer ist als der vorherige.'\n    },\n    emd: {\n      note: 'Bitte schauen Sie sich das Video bis zum Ende an',\n      noAnswers: 'Keine Antwortmöglichkeit, bitte klicken Sie auf ‚Weiter‘, um fortzufahren.',\n      start: 'Zum Starten klicken und halten',\n      resume: 'Zum Fortsetzen klicken und gedrückt halten',\n      continue: 'Sie sind bereit! <br /> Klicken Sie auf <strong>Weiter</strong>, um fortzufahren',\n      continueMobile: 'Sie sind bereit! <br /> Zum Fortfahren HIER klicken',\n      training: {\n        session: 'Trainingssitzung',\n        note: 'Bitte schließen Sie das Training ab',\n        moveLeft: 'Bitte ziehen Sie das Rad ganz nach links',\n        moveBottom: 'Bitte ziehen Sie das Rad nach ganz unten',\n        moveRight: 'Bitte ziehen Sie jetzt das Rad ganz nach rechts',\n        moveTop: 'Bitte ziehen Sie jetzt das Rad ganz nach oben',\n        success: 'Gut gemacht!'\n      }\n    },\n    sft: {\n      noAnswers: 'Keine Antwortmöglichkeit, bitte klicken Sie auf ‚Weiter‘, um fortzufahren.',\n      note: 'Bitte antworten Sie so schnell wie möglich mit der Antwort, die sich intuitiv richtig anfühlt',\n      finish: 'Sie sind bereit! <br /> Bitte klicken Sie auf Weiter, um fortzufahren',\n      training: {\n        start:\n          '<p>Bei dieser Frage werden Ihnen schnell verschiedene Wörter angezeigt und Ihre Konzentration ist gefragt. ' +\n          'Sie müssen beim Antworten schnell reagieren.</p> <p>Bereit zum Trainieren?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Tippen Sie auf \"{buttonLeft}\"`\n            : (mouse ? `Klicken Sie auf \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Drücken Sie die \"{keyBtnLeft}\"-Taste` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Tippen Sie auf \"{buttonRight}\"`\n            : (mouse ? `Klicken Sie auf \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Drücken Sie die \"{keyBtnRight}\"-Taste` : ''),\n        fail: () => 'Zu langsam',\n        success: () => 'Toll!',\n        finish: () =>\n          '<p><strong> Ausgezeichnet!</strong></p><p> Bitte stellen Sie sicher, <br />' +\n          ' dass Sie in den nächsten <br/> 2-3 Minuten nicht abgelenkt werden. </p><p>Klicken Sie auf Weiter, um zu starten, wenn Sie bereit sind. </p>'\n      },\n      buttons: {\n        start: 'Start',\n        yesno: {\n          left: 'Ja',\n          right: 'Nein'\n        },\n        matches: {\n          left: 'Match',\n          right: 'Kein Match'\n        },\n        fits: {\n          left: 'Passend',\n          right: 'Nicht passend'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  global: {\n    nth: (() => {\n      const below20 = [\n        'Zeroth',\n        'First',\n        'Second',\n        'Third',\n        'Fourth',\n        'Fifth',\n        'Sixth',\n        'Seventh',\n        'Eighth',\n        'Ninth',\n        'Tenth',\n        'Eleventh',\n        'Twelfth',\n        'Thirteenth',\n        'Fourteenth',\n        'Fifteenth',\n        'Sixteenth',\n        'Seventeenth',\n        'Eighteenth',\n        'Nineteenth'\n      ]\n      const decaPrefix = ['Twent', 'Thirt', 'Fort', 'Fift', 'Sixt', 'Sevent', 'Eight', 'Ninet']\n      return number =>\n        20 > number\n          ? below20[number]\n          : 0 == number % 10 && 100 > number\n          ? `${decaPrefix[number / 10 - 2]}ieth`\n          : 100 > number\n          ? `${decaPrefix[Math.floor(number / 10) - 2]}y ${below20[number % 10]}`\n          : 100 == number\n          ? 'Hundredth'\n          : 'Another'\n    })()\n  },\n  questions: {\n    noAnswers: 'No answer option, please click next to continue.',\n    placeholder: 'Please specify...',\n    pleaseSelect: 'Please select...',\n    rotateLandscape: 'Please rotate your phone from portrait to landscape to continue.',\n    rotatePortrait: 'Please rotate your phone from landscape to portrait to continue.',\n    cn: {\n      placeholder: 'Start typing or click the mic icon to speak'\n    },\n    ir: {\n      selectWebCam: \"Select webcam (if available) or click 'Browse' to upload from your device\",\n      uploadOnly: \"Click 'Browse' to upload from your device\",\n      noWebCam: 'No webcam detected',\n      selectFile: 'Please select a file',\n      uploadFile: 'PLEASE, UPLOAD THE FILE',\n      accessCamUpload: 'ACCESS CAMERA/UPLOAD',\n      browse: 'BROWSE',\n      uploadPhoto: 'Upload a photo',\n      camera: 'Web Camera',\n      instead: 'instead',\n      capture: 'CAPTURE',\n      somethingWrong: 'Sorry, something went wrong. Please, try again.',\n      couldntRead: \"Sorry, we couldn't read the code!\",\n      couldntProcess: \"Sorry, we couldn't process your image!\",\n      inValidCode: 'Please, submit the valid code',\n      moveOn: 'Please try again or submit your photo and move on',\n      tryAgain: 'Please try again',\n      dataReceived: 'Data received!',\n      enterManually: 'Please try again or enter the data manually below',\n      positionQR:\n        'Please position the QR code in front of your camera to fit it into the red frame or upload it from your computer.',\n      uploadQR: 'Upload the QR code from your computer',\n      uploadQRMobile: 'Upload the QR code from your device',\n      positionQRMobile: 'Please position the QR code in front of your camera or upload it from your device.',\n      analyzing: 'Analyzing image, please wait',\n      submit: 'SUBMIT',\n      startOver: 'START OVER',\n      allDone: 'ALL DONE!',\n      cantAnalyze:\n        \"Attention - we couldn't render this image. Please try resubmitting it or choose a more generic image format (JPG, PNG, GIF, BMP)\",\n      wrongFormat:\n        \"We're sorry - we don't support this file format. Please upload a supported image type (JPG, PNG, GIF, BMP, TIF, PDF, SVG)\"\n    },\n    vr: {\n      noWebCam: 'No webcam detected',\n      uploadVideo: 'Upload a video',\n      skip: 'Skip?',\n      accessCamUpload: 'ACCESS CAMERA/UPLOAD',\n      browse: 'BROWSE',\n      instead: 'instead',\n      or: 'or',\n      stopRecording: 'Stop recording',\n      willBeStopped: 'Recording will stop at <b>5 minutes</b>',\n      stopOnDone: \"Stop recording when you're done!\",\n      record: 'RECORD',\n      somethingWrong: 'Sorry, something went wrong. Please, try again.',\n      dataReceived: 'Data received!',\n      microphone: 'Microphone',\n      camera: 'Web Camera',\n      selectMicrophone: 'Select your microphone',\n      selectCam: 'Select your web camera',\n      submit: 'SUBMIT',\n      upload: 'UPLOAD',\n      playback: 'PLAYBACK',\n      stopPlayback: 'STOP PLAYBACK',\n      startOver: 'START OVER',\n      allDone: 'ALL DONE!',\n      alternativeRecordSpan: 'Please, upload a video-clip from your computer-device.<br/>Alternatively, you can &nbsp;',\n      alrenativeRecordHref: 'record the video with a webcam',\n      cantAnalyze:\n        \"Attention - we couldn't render this video. Please try resubmitting it or choose a more generic video format (MP4, M4V, WEBPM)\",\n      wrongFormat:\n        \"We're sorry - we don't support this file format. Please upload a supported video type (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)\"\n    },\n    cjc: {\n      choose: 'CHOOSE',\n      pleaseChoose: 'Please choose',\n      this: 'THIS',\n      one: 'one',\n      myChoice: 'MY CHOICE'\n    },\n    hm: {\n      addComment: 'Please add a comment below',\n      commentMandatoryPlaceHolder: 'Please, add mandatory comment... ',\n      commentOptionalPlaceHolder: 'Please, add optional comment... ',\n      dragPin: 'Drag to reposition (long click/tap for precision pinning). ',\n      removePin: 'Drag outside of the image to delete.  ',\n      editComment: 'Click/tap pin to edit comment. ',\n      addPin: 'Please drag the pin from the panel below and drop it at a spot of your choice on the image.',\n      addPins: 'Please drag the pins from the panel below and drop them at a spot of your choice on the image. ',\n      leavePins: (minPoints, maxPoints) =>\n        `Please leave at least ${minPoints} but no more than ${maxPoints} pins of every kind.`,\n      leavePinsAny: (minPoints, maxPoints) =>\n        `Please leave at least ${minPoints} but no more than ${maxPoints} pins of any kind. `,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `Please leave at least ${minPoints} but no more than ${maxPoints} pins. `,\n      leavePinsWithOff: maxPoints =>\n        `Please leave no more than ${maxPoints} pins of every kind or click Next to skip. `,\n      leavePinsWithOffAny: maxPoints =>\n        `Please leave no more than ${maxPoints} pins of any kind or click Next to skip. `,\n      leavePinsPerPageWithOff: maxPoints => `Please leave no more than ${maxPoints} pins or click Next to skip. `,\n      leavePinWithOff: `Please leave no more than 1 pin of every kind or click Next to skip. `,\n      leavePinWithOffAny: `Please leave no more than 1 pin of any kind or click Next to skip. `,\n      leavePinPerPageWithOff: 'Please leave no more than 1 pin or click Next to skip. ',\n      leaveExactlyPin: `Please leave 1 pin of every kind. `,\n      leaveExactlyPinAny: `Please leave 1 pin of any kind. `,\n      leaveExactlyPinPerPage: 'Please leave 1 pin. ',\n      leaveExactlyPins: maxPoints => `Please leave ${maxPoints} pins of every kind. `,\n      leaveExactlyPinsAny: maxPoints => `Please leave ${maxPoints} pins of any kind. `,\n      leaveExactlyPinsPerPage: maxPoints => `Please leave ${maxPoints} pins. `,\n      leaveComment: 'Type below the image to leave comment. ',\n      noAnswers: 'No answer option, please click next to continue',\n      outOfPins: 'you are out of pins',\n      pinsBehavior: 'As you move across the image you’ll see areas that will be highlighted with a single pin drop.',\n      clusters: 'You’ll only be able to place pins in these highlighted areas.',\n      contentAware: 'You can drop pins inside or outside of the highlighted areas.'\n    },\n    mp: {\n      expand_note: 'Please hover over or click on image(s) to expand',\n      rb_note: rows => `Please select only 1 response per item${rows ? ' below' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (min === max) {\n          return `Please select ${min !== 1 ? 'any' : 'only'} ${min} response${min !== 1 ? 's' : ''} per item${\n            rows ? ' below' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Please select at least ${min} response${min !== 1 ? 's' : ''} but no more than ${max} per item${\n            rows ? ' below' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Please select at least ${min} response${min !== 1 ? 's' : ''} per item${rows ? ' below' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Please select no more than ${max} response${max !== 1 ? 's' : ''} per item${rows ? ' below' : ''}:`\n        } else {\n          return 'Check all that apply:'\n        }\n      }\n    },\n    sh: {\n      note: \"Click a product to zoom in and add to your virtual cart if you'd buy it in the store\",\n      amazonNote: 'Click on a product to zoom in or add multiples of a product to your cart',\n      fullCart: 'Your cart is full!',\n      qty: 'QTY',\n      addToCart: 'ADD TO CART',\n      deleteFromCart: 'Delete',\n      each: 'each',\n      items: 'items',\n      emptyCard: 'Your cart is empty',\n      total: 'Cart',\n      clearCart: 'Clear Cart',\n      backToStore: 'Back To Store',\n      na: 'None of the above',\n      closedFullscreenLabel: 'LAUNCH FULLSCREEN SHELF TEST',\n      next: 'NEXT',\n      researcherWarning: 'Researcher mode warning: ',\n      xraysWarning: 'Ghost mode warning: ',\n      shelfError_out_of_shelves:\n        'Too many products, the width of the products exceeds the maximum allowed. Try to enable full-screen mode or reduce the number of products  to increase the width.',\n      shelfError_too_much_products:\n        'Too many products, the width of the products exceeds the maximum allowed. Try to enable full-screen mode or reduce the number of products to increase the width.',\n      shelfError_out_of_shelves_fullscreen:\n        'Too many products, the width of products exceeds the maximum allowed. Scale products down or reduce the number of products.',\n      shelfError_too_much_products_fullscreen:\n        'Too many products, the width of products exceeds the maximum allowed. Scale products down or reduce the number of products.',\n      shelfError_longWidget:\n        'To many shelves blocks. Try to enable full-screen mode or reduce the number of products to increase the width.',\n      shelfError_too_much_shelves: 'Too much shelves',\n      emptyCartError: min => `Please add to cart at least ${min} product${min !== 1 ? 's' : ''}. `,\n      maxCartCountError: max => `Please add no more than ${max} products to your cart. `,\n      maxSpentError: max => `Please spend no more than ${max}. `,\n      scrollError: `Please scroll fully left and right to proceed in the survey. `,\n      maxProductCountError: max => `Please add no more than a quantity of ${max} to your cart for each product. `,\n      application: {\n        iosText:\n          '<h>The next section involves a virtual shopping exercise that can be experienced in augmented reality (AR).</h><br/><br/>' +\n          'If you are in a stable environment with enough room, and an unobstructed wall you can walk along and shop virtually without distraction, please download the app and check if your smartphone supports AR.<br/><br/>' +\n          'Otherwise, you may continue taking<br/>' +\n          'this exercise in your browser. ',\n        androidText:\n          '<h>The next section involves a virtual shopping exercise that can be experienced in augmented reality (AR).</h><br/><br/>' +\n          'If you are in a stable environment with enough room, and an unobstructed wall you can walk along and shop virtually without distraction, please download the app and check if your smartphone supports AR.<br/><br/>' +\n          'Otherwise, you may continue taking<br/>' +\n          'this exercise in your browser. ',\n        buttonYes: 'GO TO AR APP',\n        buttonNo: 'CONTINUE WITHOUT AR'\n      }\n    },\n    rb: {\n      note: 'Please select only 1 item:'\n    },\n    vo: {\n      note: 'Please watch the video till the end'\n    },\n    cb: {\n      note: (min, max) => {\n        if (1 === min && 5000 === max) {\n          return 'Please select all that apply:'\n        } else if (min === max) {\n          return `Please select ${min !== 1 ? 'any' : 'only'} ${min} item${min !== 1 ? 's' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Please select at least ${min} item${min !== 1 ? 's' : ''} but no more than ${max}:`\n        } else if (5000 === max && min > 0) {\n          return `Please select at least ${min} item${min !== 1 ? 's' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Please select no more than ${max} item${max !== 1 ? 's' : ''}:`\n        } else {\n          return 'Please select all that apply:'\n        }\n      }\n    },\n    oe: {\n      na: 'Not applicable',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Please type ${1 !== min ? 'any' : 'exactly'} ${min} character${1 !== min ? 's' : ''}${\n            optional ? ' (optional)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Please type at least ${min} character${1 !== min ? 's' : ''} but no more than ${max}${\n            optional ? ' (optional)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Please type at least ${min} character${1 !== min ? 's' : ''}${optional ? ' (optional)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Please type no more than ${max} character${1 !== min ? 's' : ''}${optional ? ' (optional)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Please fill in the following fields:'\n    },\n    mx: {\n      note: 'Please move the highlighted sliders to continue',\n      dragSlider: 'Drag left or right to answer'\n    },\n    psc: {\n      dragLeftRight: 'Drag left or right to answer'\n    },\n    ps: {\n      note: (value, remaining) => `Please distribute ${remaining ? 'remaining' : ''} ${value} between the items below`,\n      allDone: `All done`,\n      total: `Total:`,\n      dragSlider: 'Drag left or right to answer'\n    },\n    cx: {\n      note: 'Open the drop-down menu and start typing your answer to autoscroll or select it manually'\n    },\n    ro: {\n      note: 'Drag up or down to reorder:'\n    },\n    md: {\n      note1: 'Please click/tap the item of your <b>first choice</b>.<br/>Click/tap again to clear the choice.',\n      note2: 'Now please click/tap the item of your <b>last choice</b>.<br/>Click/tap again to clear the choice.',\n      note3: 'Thanks! Continue to the next question<br/>or click any unselected item to start over.'\n    },\n    aro: {\n      note: 'Please choose one item from each pair:'\n    },\n    wd: {\n      note: 'Make sure that each subsequent value is greater than the previous one.'\n    },\n    emd: {\n      note: 'Please watch the video till the end\\n',\n      noAnswers: 'No answer option, please click next to continue.',\n      start: 'Click and hold to start',\n      resume: 'Click and hold to resume',\n      continue: \"You're ready! <br />Click <strong>Next</strong> to continue\",\n      continueMobile: \"You're ready! <br />Click <strong>here</strong> to continue\",\n      training: {\n        session: 'training session',\n        note: 'Please finish training',\n        moveLeft: 'Please drag the dial all the way to the <strong>left</strong>',\n        moveBottom: 'Please drag the dial all the way to the <strong>bottom</strong>',\n        moveRight: 'Now, please drag the dial all the way to the <strong>right</strong>',\n        moveTop: 'Now, please drag the dial all the way to the <strong>top</strong>',\n        success: 'Great job!'\n      },\n      tap: `tap anywhere <br /> to unmute`\n    },\n    sft: {\n      noAnswers: 'No answer option, please click next to continue',\n      note: 'Please answer as quickly as you can with the answer that intuitively feels right',\n      imageError: 'No image exposure time chosen',\n      finish: 'You are all done! <br /> Please click Next to continue',\n      training: {\n        start:\n          '<p>This question will rapidly show you different words and will require your concentration. ' +\n          'You&apos;ll need to react quickly to answer.</p> <p>Ready to practice?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Tap \"{buttonLeft}\"`\n            : (mouse ? `Click \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Hit \"{keyBtnLeft}\" key` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Tap \"{buttonRight}\"`\n            : (mouse ? `Click \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Hit \"{keyBtnRight}\" key` : ''),\n        fail: () => 'Too slow',\n        success: () => 'Great!',\n        finish: () =>\n          '<p><strong> Excellent!</strong></p><p>Please make sure you are not<br />' +\n          'going to be distracted in the<br/> next 2-3 minutes</p><p>Click Next to start when ready.</p>'\n      },\n      buttons: {\n        start: 'Start',\n        yesno: {\n          left: 'Yes',\n          right: 'No'\n        },\n        matches: {\n          left: 'Match',\n          right: 'Not Match'\n        },\n        fits: {\n          left: 'Fit',\n          right: 'Not Fit'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        },\n        noyes: {\n          left: 'Yes',\n          right: 'No'\n        },\n        matchesRev: {\n          left: 'Match',\n          right: 'Not Match'\n        },\n        fitsRev: {\n          left: 'Fit',\n          right: 'Not Fit'\n        },\n        thumbsRev: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Ei vastausvaihtoehtoa, jatka napsauttamalla Seuraava...',\n    placeholder: 'Tarkenna...',\n    pleaseSelect: 'Valitse...',\n    rotateLandscape: 'Käännä puhelin vaaka-asentoon jatkaaksesi.',\n    rotatePortrait: 'Käännä puhelin vaaka-asennosta pystyasentoon jatkaaksesi.',\n    ir: {\n      selectWebCam: \"Valitse web-kamera (jos saatavilla) tai napsauta 'Selaa' ladataksesi kuvan laitteestasi\",\n      uploadOnly: 'Napsauta Selaa ladataksesi kuvan laitteestasi',\n      noWebCam: 'Web-kameraa ei havaittu',\n      accessCamUpload: 'AVAA KAMERA/LATAA',\n      browse: 'SELAA',\n      uploadPhoto: 'Lataa valokuva',\n      camera: 'Web-kamera',\n      instead: 'sen sijaan',\n      capture: 'TALLENNA',\n      somethingWrong: 'Pahoittelut, jotain meni pieleen. Yritä uudelleen.',\n      couldntRead: 'Valitettavasti emme voineet lukea koodia!',\n      couldntProcess: 'Valitettavasti emme voineet käsitellä kuvaasi!',\n      inValidCode: 'Ole hyvä ja lähetä kelvollinen koodi',\n      moveOn: 'Yritä uudelleen tai lähetä valokuvasi ja siirry eteenpäin',\n      tryAgain: 'Yritä uudelleen',\n      dataReceived: 'Tiedot vastaanotettu!',\n      enterManually: 'Yritä uudelleen tai syötä tiedot manuaalisesti alle',\n      positionQR:\n        'Aseta QR-koodi kamerasi eteen niin, että se istuu punaiseen kehykseen, tai lataa se tietokoneeltasi.',\n      uploadQR: 'Lataa QR-koodi tietokoneeltasi',\n      uploadQRMobile: 'Lataa QR-koodi laitteeltasi.',\n      positionQRMobile:\n        'Aseta QR-koodi kamerasi eteen niin, että se istuu punaiseen kehykseen, tai lataa se tietokoneeltasi.',\n      analyzing: 'Analysoidaan kuvaa, odota',\n      submit: 'LÄHETÄ',\n      startOver: 'Aloitta alusta',\n      allDone: 'Valmis!',\n      cantAnalyze:\n        'Huomio – emme voineet renderoida tätä kuvaa. Yritä lähettää se uudelleen tai valitse yleisempi kuvamuoto (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Valitettavasti emme tue tätä tiedostomuotoa. Lataa tuettu kuvatyyppi (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Web-kameraa ei havaittu',\n      uploadVideo: 'Lataa video',\n      skip: 'Ohita?',\n      accessCamUpload: 'AVAA KAMERA/LATAA',\n      browse: 'SELAA',\n      instead: 'sen sijaan',\n      or: 'tai',\n      stopRecording: 'Lopeta tallennus',\n      willBeStopped: 'Tallennus pysähtyy <b>5 minuutin</b> kohdalla',\n      stopOnDone: 'Lopeta tallennus, kun olet valmis! ',\n      record: 'TALLENNA',\n      somethingWrong: 'Pahoittelut, jotain meni pieleen. Yritä uudelleen.',\n      dataReceived: 'Tiedot vastaanotettu!',\n      microphone: 'Valitse mikrofonisi',\n      camera: 'Valitse web-kamerasi',\n      selectMicrophone: 'Valitse mikrofonisi',\n      selectCam: 'Valitse web-kamerasi',\n      submit: 'LÄHETÄ',\n      upload: 'LATAA',\n      playback: 'Toisto',\n      stopPlayback: 'PYSÄYTÄ TOISTO',\n      startOver: 'Aloitta alusta',\n      allDone: 'Valmis!',\n      alternativeRecordSpan: 'Ole hyvä ja lataa videoleike tietokonelaitteeltasi. <br/>Vaihtoehtoisesti voit &nbsp;',\n      alrenativeRecordHref: 'tallentaa videon web-kameralla.',\n      cantAnalyze:\n        'Huomio – emme voineet renderoida tätä kuvaa. Yritä lähettää se uudelleen tai valitse yleisempi kuvamuoto (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Valitettavasti emme tue tätä tiedostomuotoa. Lataa tuettu kuvatyyppi (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    cjc: {\n      choose: 'VALITSE',\n      pleaseChoose: 'Valitse',\n      this: 'TÄMÄ',\n      one: 'yksi',\n      myChoice: 'MINUN VALINTANI'\n    },\n    hm: {\n      addComment: 'Lisää kommentti alle',\n      commentMandatoryPlaceHolder: 'Lisää pakollinen kommentti... ',\n      commentOptionalPlaceHolder: 'Lisää valinnainen kommentti... ',\n      dragPin: 'Vedä sijoittaaksesi uudelleen (pitkä klikkaus/napautus tarkkuutta varten). ',\n      removePin: 'Vedä kuvan ulkopuolelle poistaaksesi.  ',\n      editComment: 'Klikkaa/napauta merkkiä muokataksesi kommenttia. ',\n      addPin: 'Vedä merkki alla olevasta paneelista ja pudota se haluamaasi kohtaan kuvassa.',\n      addPins: 'Vedä merkit alla olevasta paneelista ja pudota ne haluamaasi kohtaan kuvassa. ',\n      leavePins: (minPoints, maxPoints) =>\n        `Jätä vähintään ${minPoints} mutta enintään ${maxPoints} minkälaista merkkiä tahansa. `,\n      leavePinsAny: (minPoints, maxPoints) =>\n        `Jätä vähintään ${minPoints} mutta enintään ${maxPoints} minkälaista merkkiä tahansa.`,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `Jätä vähintään ${minPoints} mutta enintään ${maxPoints} minkälaista merkkiä tahansa.`,\n      leavePinsWithOff: maxPoints =>\n        `Jätä korkeintaan ${maxPoints} minkälaista tahansa merkkiä tai napsauta Seuraava ohittaaksesi. `,\n      leavePinsWithOffAny: maxPoints =>\n        `Jätä korkeintaan ${maxPoints} minkälaista tahansa merkkiä tai napsauta Seuraava ohittaaksesi.`,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Jätä korkeintaan ${maxPoints} merkkiä tai napsauta Seuraava ohittaaksesi. `,\n      leavePinWithOff: `Jätä korkeintaan 1 minkälainen tahansa merkki tai napsauta Seuraava ohittaaksesi. `,\n      leavePinWithOffAny: `Jätä korkeintaan 1 minkälainen tahansa laista merkkiä tai napsauta Seuraava ohittaaksesi.`,\n      leavePinPerPageWithOff: 'Jätä korkeintaan 1 merkkiä tai napsauta Seuraava ohittaaksesi..',\n      leaveExactlyPin: `Jätä 1 minkälaista tahansa merkkiä. `,\n      leaveExactlyPinAny: `Jätä 1 minkälainen tahansa merkki. `,\n      leaveExactlyPinPerPage: 'Jätä 1 merkki. ',\n      leaveExactlyPins: maxPoints => `Jätä ${maxPoints} minkälaista tahansa merkkiä. `,\n      leaveExactlyPinsAny: maxPoints => `Jätä ${maxPoints} minkälaista tahansa merkkiä. `,\n      leaveExactlyPinsPerPage: maxPoints => `Jätä ${maxPoints} merkkiä.`,\n      leaveComment: 'Kirjoita kuvan alle jättääksesi kommentin.',\n      noAnswers: 'Ei vastausvaihtoehtoa, jatka napsauttamalla Seuraava.',\n      outOfPins: 'Merkkisi ovat loppu',\n      pinsBehavior: 'Kun liikut kuvan poikki, näet alueita, jotka korostetaan yhdellä merkin pudotuksella.',\n      clusters: 'Voit asettaa merkkejä vain näille korostetuille alueille.',\n      contentAware: 'Voit pudottaa merkkejä korostettujen alueiden sisään tai ulkopuolelle.'\n    },\n    mp: {\n      expand_note: 'Laajenna viemällä hiiren osoitin kuvien päälle tai napsauttamalla niitä',\n      rb_note: rows => `Valitse${rows ? ' alta' : ''} vain 1 vastaus per kohde:`,\n      cb_note: (min, max, rows) => {\n        if (min === max) {\n          return `Valitse ${rows ? 'alta' : ''} ${min !== 1 ? 'mikä tahansa' : 'vain'} ${min} vastaus${\n            min !== 1 ? 'ta' : ''\n          } per kohde:`\n        } else if (min > 0 && max < 5000) {\n          return `Valitse vähintään ${min} vastaus${min !== 1 ? 'ta' : ''} mutta enintään ${max} vastausta ${\n            rows ? 'alla' : ''\n          } oleviin kohtiin:`\n        } else if (5000 === max && min > 0) {\n          return `Valitse vähintään ${min} vastaus${min !== 1 ? 'ta' : ''}${rows ? 'alla' : ''} oleviin kohtiin:`\n        } else if (0 === min && max < 5000) {\n          return `Valitse enintään ${max} vastaus${max !== 1 ? 'ta' : ''}${rows ? 'alla' : ''} oleviin kohtiin:`\n        } else {\n          return 'Valitse kaikki sopivat:'\n        }\n      }\n    },\n    sh: {\n      note: 'Napsauta tuotetta zoomataksesi ja lisätäksesi sen virtuaalikoriisi, jos ostaisit sen kaupasta',\n      amazonNote: 'Napsauta tuotetta zoomataksesi ja lisätäksesi sen virtuaalikoriisi',\n      fullCart: 'Ostoskorisi on täynnä!',\n      qty: 'KPL',\n      each: 'jokainen',\n      items: 'kohteita',\n      addToCart: 'LISÄÄ OSTOSKORIIN',\n      deleteFromCart: 'POISTA',\n      emptyCard: 'Ostoskorisi on tyhjä',\n      total: 'Ostoskori',\n      clearCart: 'Tyhjennä ostoskori',\n      backToStore: 'Takaisin kauppaan',\n      na: 'Ei mikään ylläolevista',\n      scrollError: `Ole hyvä ja vieritä kokonaan vasemmalle ja oikealle jatkaaksesi kyselyssä. `,\n      next: 'SEURAAVA'\n    },\n    rb: {\n      note: 'Valitse vain 1 kohde:'\n    },\n    vo: {\n      note: 'Katso video loppuun asti'\n    },\n    cb: {\n      note: (min, max) => {\n        if (1 === min && 5000 === max) {\n          return 'Valitse kaikki sopivat:'\n        } else if (min === max) {\n          return `Valitse ${min !== 1 ? 'mikä tahansa' : 'vain'} ${min} kohde${min !== 1 ? 'tta' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Valitse vähintään ${min} kohde${min !== 1 ? 'tta' : ''} mutta enintään ${max} riviä kohden:`\n        } else if (5000 === max && min > 0) {\n          return `Valitse vähintään ${min} kohde${min !== 1 ? 'tta' : ''}`\n        } else if (0 === min && max < 5000) {\n          return `Valitse enintään  ${max} kohde${max !== 1 ? 'tta' : ''}:`\n        } else {\n          return 'Valitse kaikki sopivat:'\n        }\n      }\n    },\n    oe: {\n      na: 'Ei sovellettavissa',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Kirjoita ${1 !== min ? 'mikä tahansa' : 'tasan'} ${min} merkki${1 !== min ? 'ä' : ''}${\n            optional ? ' (valinnainen)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Kirjoita vähintään ${min} merkki${1 !== min ? 's' : ''} mutta enintään ${max}${\n            optional ? ' (valinnainen)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Kirjoita vähintään ${min} merkki${1 !== min ? 'ä' : ''}${optional ? ' (valinnainen)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Kirjoita enintään ${max} merkki${1 !== min ? 'ä' : ''}${optional ? ' (valinnainen)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Täytä seuraavat kentät:'\n    },\n    mx: {\n      note: 'Jatka siirtämällä korostettuja liukusäätimiä',\n      dragSlider: 'Vastaa vetämällä vasemmalle tai oikealle'\n    },\n    psc: {\n      dragLeftRight: 'Vastaa vetämällä vasemmalle tai oikealle'\n    },\n    ps: {\n      note: (value, remaining) => `Jaa ${remaining ? 'loput' : ''} ${value} alla olevien kohteiden kesken`,\n      allDone: `Valmis`,\n      total: `kaikki yhteensä:`,\n      dragSlider: 'Vastaa vetämällä vasemmalle tai oikealle'\n    },\n    cx: {\n      note: 'Avaa pudotusvalikko ja ala kirjoittaa vastausta automaattista selausta varten tai valitse se manuaalisesti'\n    },\n    ro: {\n      note: 'Järjestä uudelleen vetämällä ylös tai alas:'\n    },\n    md: {\n      note1: 'Napsauta/napauta ensimmäistä valitsemaasi kohdetta. <br/> Napsauta uudelleen poistaaksesi valinnan.',\n      note2: 'Napsauta/napauta nyt viimeistä valitsemaasi kohdetta. <br/>Napsauta uudelleen poistaaksesi valinnan.',\n      note3:\n        'Kiitos! Jatka seuraavaan kysymykseen<br/>tai napsauta/napauta mitä tahansa valitsematonta kohdetta aloittaaksesi alusta.'\n    },\n    aro: {\n      note: 'Valitse yksi kohde jokaisesta parista:'\n    },\n    wd: {\n      note: 'Varmista, että jokainen seuraava arvo on suurempi kuin edellinen.'\n    },\n    emd: {\n      note: 'Katso video loppuun asti\\n',\n      noAnswers: 'Ei vastausvaihtoehtoa, jatka napsauttamalla Seuraava.',\n      start: 'Napsauta ja pidä painettuna aloittaaksesi',\n      resume: 'Napsauta ja pidä painettuna jatkaaksesi',\n      continue: 'Olet valmis! <br />Napsauta <strong>SEURAAVA</strong> jatkaaksesi',\n      continueMobile: 'Olet valmis!<br />Napsauta <strong>TÄSTÄ</strong> jatkaaksesi',\n      training: {\n        session: 'Koulutussessio',\n        note: 'Lopeta koulutus',\n        moveLeft: 'Vedä valitsin kokonaan <strong>vasemmalle</strong>',\n        moveBottom: 'Vedä valitsin kokonaan <strong>alhaalle</strong>',\n        moveRight: 'Nyt, ole hyvä ja Vedä valitsin kokonaan <strong>oikealle</strong>',\n        moveTop: 'Nyt, ole hyvä ja Vedä valitsin kokonaan <strong>ylhäälle</strong>',\n        success: 'Hyvää työtä!'\n      }\n    },\n    sft: {\n      noAnswers: 'Ei vastausvaihtoehtoa, jatka napsauttamalla Seuraava.',\n      note: 'Vastaa mahdollisimman nopeasti intuitiivisesti oikealta tuntuvalla vastauksella',\n      finish: 'Olet valmis! <br /> Jatka napsauttamalla Seuraava.',\n      training: {\n        start:\n          '<p>Tämä kysymys näyttää sinulle nopeasti erilaisia sanoja ja vaatii keskittymistäsi. ' +\n          'Sinun on reagoitava nopeasti vastataksesi. </p> <p>Oletko valmis harjoittelemaan?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Napauta \"{buttonLeft}\"`\n            : (mouse ? `Napsauta \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Paina \"{keyBtnLeft}\" näppäintä` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Napauta \"{buttonRight}\"`\n            : (mouse ? `Napsauta \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Paina \"{keyBtnRight}\" näppäintä` : ''),\n        fail: () => 'Liian hidas',\n        success: () => 'Mahtavaa!',\n        finish: () =>\n          '<p><strong> Erinomaista!</strong></p><p>Varmista, että sinua<br />' +\n          'ei häiritä seuraavien<br/> 2–3 minuutin aikana</p><p>Kun olet valmis, napsauta Seuraava aloittaaksesi.</p>'\n      },\n      buttons: {\n        start: 'Aloita',\n        yesno: {\n          left: 'Kyllä',\n          right: 'Ei'\n        },\n        matches: {\n          left: 'Osuma',\n          right: 'Ei osumaa'\n        },\n        fits: {\n          left: 'Sopiva',\n          right: 'Ei sopiva'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        },\n        noyes: {\n          left: 'Kyllä',\n          right: 'Ei'\n        },\n        matchesRev: {\n          left: 'Osuma',\n          right: 'Ei osumaa'\n        },\n        fitsRev: {\n          left: 'Sopiva',\n          right: 'Ei sopiva'\n        },\n        thumbsRev: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Option Pas de réponse, veuillez cliquer sur Suivant pour continuer.',\n    placeholder: 'Veuillez préciser...',\n    pleaseSelect: 'Veuillez sélectionner...',\n    rotateLandscape: 'Veuillez faire pivoter votre téléphone du mode portrait au mode paysage pour continuer.',\n    rotatePortrait: 'Veuillez faire pivoter votre téléphone du mode paysage au mode portrait pour continuer.',\n    ir: {\n      selectWebCam:\n        'Sélectionner la webcam (si disponible) ou cliquer sur \"Rechercher\" pour télécharger depuis votre appareil',\n      noWebCam: 'Pas de webcam détectée',\n      accessCamUpload: 'ACCÈS À LA CAMÉRA/TÉLÉCHARGEMENT',\n      browse: 'RECHERCHER',\n      uploadPhoto: 'Télécharger une photo',\n      instead: 'à la place',\n      capture: 'CAPTURER',\n      somethingWrong: \"Désolé, quelque chose n'a pas fonctionné. Veuillez réessayer plus tard.\",\n      couldntRead: 'Désolé, nous ne sommes pas parvenus à lire le code !',\n      couldntProcess: \"Désolé, nous n'avons pas pu traiter votre image !\",\n      moveOn: 'Veuillez essayer de nouveau ou soumettre votre photo et continuer',\n      tryAgain: 'Veuillez réessayer',\n      dataReceived: 'Données reçues !',\n      enterManually: 'Veuillez réessayer ou entrer les données manuellement ci-dessous',\n      positionQR:\n        \"Veuillez positionner le code QR en face de la caméra pour qu'il rentre dans le cadre rouge ou télécharger-le depuis votre ordinateur.\",\n      analyzing: \"Analyse de l'image, veuillez patienter\",\n      submit: 'SOUMETTRE',\n      startOver: 'Recommencer',\n      allDone: 'Terminé !',\n      cantAnalyze:\n        \"Attention - nous n'avons pas pu rendre cette image. Veuillez réessayer ou choisir un format d'image plus générique (JPG, PNG, GIF, BMP)\",\n      wrongFormat:\n        \"Nous sommes désolés, nous ne prenons pas en charge ce format de fichier. Veuillez télécharger un type d'image pris en charge (JPG, PNG, GIF, BMP, TIF, PDF, SVG)\"\n    },\n    vr: {\n      noWebCam: 'Pas de webcam détectée',\n      uploadVideo: 'Charger une vidéo', // !\n      skip: 'Passer ?',\n      accessCamUpload: 'ACCÈS À LA CAMÉRA/TÉLÉCHARGEMENT',\n      browse: 'RECHERCHER',\n      instead: 'à la place',\n      or: 'ou',\n      stopRecording: \"Arrêter l'enregistrement\",\n      willBeStopped: \"L'enregistrement s'arrêtera après 5 minutes\",\n      stopOnDone: \"Arrêtez d'enregistrer quand vous aurez fini !\",\n      record: 'ENREGISTRER',\n      somethingWrong: \"Désolé, quelque chose n'a pas fonctionné. Veuillez réessayer plus tard.\",\n      microphone: 'Microphone',\n      camera: 'Web de travail',\n      selectMicrophone: 'Sélectionnez votre microphone.',\n      selectCam: 'Sélectionnez votre webcam',\n      submit: 'SOUMETTRE',\n      upload: 'TÉLÉCHARGER',\n      playback: 'Lecture',\n      stopPlayback: 'ARRÊTER',\n      startOver: 'Recommencer',\n      allDone: 'Terminé !',\n      alternativeRecordSpan: 'Veuillez télécharger un clip vidéo depuis votre ordinateur.<br/>Vous pouvez &nbsp;',\n      alrenativeRecordHref: 'aussi enregistrer la vidéo avec une webcam.',\n      cantAnalyze:\n        \"Attention - nous n'avons pas pu rendre cette vidéo. Veuillez réessayer ou choisir un format vidéo plus générique (MP4, M4V, WEBPM)\",\n      wrongFormat:\n        'Nous sommes désolés, nous ne prenons pas en charge ce format de fichier. Veuillez télécharger un type de vidéo pris en charge (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'CHOISIR',\n      pleaseChoose: 'Veuillez choisir',\n      this: 'CECI',\n      one: 'un',\n      myChoice: 'MON CHOIX'\n    },\n    hm: {\n      addComment: 'Veuillez ajouter un commentaire ci-dessous',\n      commentMandatoryPlaceHolder: 'Veuillez ajouter un commentaire obligatoire... ',\n      commentOptionalPlaceHolder: 'Veuillez ajouter un commentaire facultatif... ',\n      dragPin: 'Faites glisser pour repositionner (cliquer/appuyer long pour un épinglage précis). ',\n      removePin: \"Faites glisser à l'extérieur de l'image pour supprimer.  \",\n      editComment: \"Cliquez/appuyez sur l'épingle pour modifier le commentaire. \",\n      addPin:\n        \"Veuillez faire glisser l'épingle du panneau ci-dessous et la déposer à l'endroit de votre choix sur l'image. \",\n      addPins:\n        \"Veuillez faire glisser les épingles du panneau ci-dessous et les déposer à l'endroit de votre choix sur l'image. \",\n      leavePins: (minPoints, maxPoints) =>\n        `Veuillez laisser au moins ${minPoints} mais pas plus de ${maxPoints} épingles de chaque type. `,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `Veuillez laisser au moins ${minPoints} mais pas plus de ${maxPoints} épingles. `,\n      leavePinsWithOff: maxPoints =>\n        `Veuillez ne pas laisser plus de ${maxPoints} épingles de chaque type ou cliquez sur Suivant pour passer. `,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Veuillez ne pas laisser plus de ${maxPoints} broches ou cliquez sur Suivant pour passer. `,\n      leavePinWithOff: \"Veuillez ne pas laisser plus d'une épingle de chaque type ou cliquez sur Suivant pour passer. \",\n      leavePinPerPageWithOff: \"Veuillez ne pas laisser plus d'une épingle ou cliquez sur Suivant pour passer.\",\n      leaveExactlyPin: 'Veuillez laisser 1 épingle de chaque type. ',\n      leaveExactlyPinPerPage: 'Veuillez laisser 1 épingle. ',\n      leaveExactlyPins: maxPoints => `Veuillez laisser ${maxPoints} épingles de chaque type. `,\n      leaveExactlyPinsPerPage: maxPoints => `Veuillez laisser ${maxPoints} épingles. `,\n      leaveComment: \"Appuyez sous l'image pour laisser un commentaire.\",\n      noAnswers: 'Option sans réponse, veuillez cliquer sur Suivant pour continuer. ',\n      outOfPins: \"Vous n'avez plus d'épingles \",\n      pinsBehavior:\n        \"Lorsque vous vous déplacez à travers l'image, vous verrez des zones qui seront en surbrillance avec une seule broche.\",\n      clusters: 'Vous ne pourrez placer des broches que dans ces zones en surbrillance.',\n      contentAware: \"Vous pouvez déposer des broches à l'intérieur ou à l'extérieur des zones en surbrillance.\"\n    },\n    mp: {\n      expand_note: \"Veuillez glisser ou cliquer sur l'image(s) pour agrandir\",\n      rb_note: rows => `Veuillez sélectionner 1 réponse par élément${rows ? ' ci-dessous' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (1 === min && 5000 === max) {\n          return \"Cochez toutes les réponses qui s'appliquent:\"\n        } else if (min === max) {\n          return `Veuillez sélectionner ${min} réponse${min !== 1 ? 's' : ''} seulement par article${\n            rows ? ' ci-dessous' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Veuillez sélectionner au moins ${min} réponse${\n            min !== 1 ? 's' : ''\n          } mais pas plus que ${max} par article${rows ? ' ci-dessous' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Veuillez sélectionner au moins ${min} réponse${min !== 1 ? 's' : ''} par article${\n            rows ? ' ci-dessous' : ''\n          }:`\n        } else if (0 === min && max < 5000) {\n          return `Veuillez ne pas sélectionner plus de ${max} réponse${max !== 1 ? 's' : ''} par article${\n            rows ? ' ci-dessous' : ''\n          }:`\n        } else {\n          return \"Cochez toutes les réponses qui s'appliquent:\"\n        }\n      }\n    },\n    sh: {\n      note: \"Cliquez sur un produit pour zoomer et ajoutez-le à votre panier virtuel si vous l'achetiez à la boutique\",\n      amazonNote: 'Cliquez sur un produit pour zoomer et l’ajouter à votre panier virtuel.',\n      fullCart: 'Votre panier est plein !',\n      qty: 'QTÉ',\n      addToCart: 'AJOUTER AU PANIER',\n      deleteFromCart: 'SUPPRIMER',\n      each: 'chaque',\n      items: 'articles',\n      next: 'SUIVANT',\n      emptyCard: 'Votre panier est vide',\n      total: 'Panier',\n      clearCart: 'Vider le panier',\n      backToStore: 'Retour à la boutique',\n      na: 'Aucune de ces réponses',\n      maxCartCountError: max => `Veuillez ne pas ajouter plus de ${max} produits à votre panier`,\n      scrollError: `Veuillez faire défiler l’écran entièrement vers la gauche et vers la droite pour poursuivre l’enquête. `,\n      maxSpentError: max => `Veuillez ne pas dépenser plus de ${max}.`,\n      maxProductCountError: max => `Veuillez ne pas ajouter à votre panier plus de ${max} articles du même produit.`\n    },\n    rb: {\n      note: 'Veuillez sélectionner 1 point seulement:'\n    },\n    vo: {\n      note: \"Veuillez regarder la vidéo jusqu'à la fin\"\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `Veuillez sélectionner ${min !== 1 ? 'articles' : 'point'} ${min} seulement:`\n        } else if (min > 0 && max < 5000) {\n          return `Veuillez sélectionner au moins ${min} article${min !== 1 ? 's' : ''} mais pas plus que ${max}:`\n        } else if (5000 === max && min > 0) {\n          return `Veuillez sélectionner au moins ${min} article${min !== 1 ? 's' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Veuillez ne pas sélectionner plus de ${max} article${max !== 1 ? 's' : ''}:`\n        } else {\n          return \"Cochez toutes les réponses qui s'appliquent:\"\n        }\n      }\n    },\n    oe: {\n      na: \"N'est pas applicable\",\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Veuillez taper exactement ${min} caractère${1 !== min ? 's' : ''}${optional ? ' (facultatif)' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Veuillez taper au moins ${min} caractère${1 !== min ? 's' : ''} mais pas plus que ${max}${\n            optional ? ' (facultatif)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Veuillez taper au moins ${min} caractère${1 !== min ? 's' : ''}${optional ? ' (facultatif)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Veuillez taper un maximum de ${max} caractère${1 !== min ? 's' : ''}${\n            optional ? ' (facultatif)' : ''\n          }:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Veuillez renseigner les champs suivants :'\n    },\n    mx: {\n      note: 'Veuillez faire bouger les barres surlignées pour continuer',\n      dragSlider: 'Faites glisser vers la gauche ou la droite pour répondre'\n    },\n    psc: {\n      dragLeftRight: 'Faites glisser vers la gauche ou la droite pour répondre'\n    },\n    ps: {\n      note: value => `Veuillez distribute ${value} restants entre les éléments ci-dessous`,\n      allDone: 'Terminé !',\n      total: `Total:`,\n      dragSlider: 'Faites glisser vers la gauche ou la droite pour répondre'\n    },\n    cx: {\n      note: 'Commencez à taper votre réponse à défilement automatique ou sélectionnez-la manuellement'\n    },\n    ro: {\n      note: 'Faites glisser vers le haut ou le bas pour réorganiser:'\n    },\n    md: {\n      note1:\n        \"Veuillez cliquer/appuyer sur l'élément que vous souhaitez sélectionner en premier<br/>Cliquez/appuyez à nouveau pour effacer votre sélection\",\n      note2:\n        \"Maintenant, veuillez cliquer/appuyer sur l'élément que vous souhaitez sélectionner en dernier<br/>Cliquez/appuyez à nouveau pour effacer votre sélection.\",\n      note3:\n        'Merci ! Passez à la question suivante<br/>ou cliquez/appuyez sur un élément non sélectionné pour recommencer.'\n    },\n    aro: {\n      note: 'Veuillez choisir un élément pour chaque paire'\n    },\n    wd: {\n      note: 'Assurez-vous que chaque valeur ultérieure est supérieure à la précédente.'\n    },\n    emd: {\n      note: \"Veuillez regarder la vidéo jusqu'à la fin\",\n      noAnswers: 'Option Pas de réponse, veuillez cliquer sur Suivant pour continuer.',\n      start: 'Cliquez et maintenez pour commencer',\n      resume: 'Cliquez et maintenez pour reprendre',\n      continue: 'Vous avez terminé ! <br /> Cliquez sur suivant pour continuer',\n      continueMobile: 'Vous êtes prête ! <br /> Cliquez ICI pour continuer',\n      training: {\n        session: 'session de formation',\n        note: \"Veuillez terminer l'entraînement\",\n        moveLeft: 'Veuillez faire glisser le cadran complètement vers la gauche',\n        moveBottom: 'Veuillez faire glisser le cadran complètement vers le bas',\n        moveRight: 'Maintenant faites glisser le cadran complètement vers la droite',\n        moveTop: 'Maintenant faites glisser le cadran complètement vers le haut',\n        success: 'Excellent !'\n      }\n    },\n    sft: {\n      noAnswers: 'Option Pas de réponse, veuillez cliquer sur Suivant pour continuer.',\n      note: 'Donnez aussi vite que possible réponse qui vous semble intuitivement la plus juste',\n      finish: \"C'est fait !<br />  Veuillez cliquer sur Suivant pour continuer\",\n      training: {\n        start:\n          '<p>Cette question vous montrera rapidement différents mots et exigera votre concentration. ' +\n          'Tout doit maintenant aller très vite.</p> <p>Prêt à pratiquer ?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Appuyez sur \"{buttonLeft}\"`\n            : (mouse ? `Cliquez sur \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Appuyez sur la touche « F »` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Appuyez sur \"{buttonRight}\"`\n            : (mouse ? `Cliquez sur \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Appuyez sur la touche « J »` : ''),\n        fail: () => 'Trop lent',\n        success: () => 'Super !',\n        finish: () =>\n          '<p><strong> Excellent !</strong></p><p>Veuillez vous assurer que rien<br />' +\n          'ne va vous distraire <br/> dans les 2-3 prochaines minutes</p><p>Cliquez sur Suivant lorsque vous serez prêt.</p>'\n      },\n      buttons: {\n        start: 'Démarrer',\n        yesno: {\n          left: 'Oui',\n          right: 'No'\n        },\n        matches: {\n          left: 'Correspond',\n          right: 'Ne correspond pas'\n        },\n        fits: {\n          left: 'Convient',\n          right: 'Ne convient pas'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Δεν υπάρχει επιλογή απάντησης, κάντε κλικ στο επόμενο για να συνεχίσετε.',\n    placeholder: 'Παρακαλώ προσδιορίστε...',\n    pleaseSelect: 'Παρακαλώ επιλέξτε...',\n    rotateLandscape: 'Περιστρέψτε το τηλέφωνό σας από την κατακόρυφη στην οριζόντια θέση για να συνεχίσετε.',\n    rotatePortrait: 'Περιστρέψτε το τηλέφωνό σας από την οριζόντια στην κατακόρυφη θέση για να συνεχίσετε.',\n    ir: {\n      selectWebCam:\n        'Επιλέξτε την κάμερα (αν υπάρχει) ή κάντε κλικ στο «Αναζήτηση» για να ανεβάσετε από τη συσκευή σας.',\n      uploadOnly: 'Επιλέξτε την κάμερα (αν υπάρχει) ή κάντε κλικ στο «Αναζήτηση» για να ανεβάσετε από τη συσκευή σας.',\n      noWebCam: 'Δεν εντοπίστηκε κάμερα',\n      accessCamUpload: 'ΠΡΟΣΒΑΣΗ ΣΤΗΝ ΚΑΜΕΡΑ/ΜΕΤΑΦΟΡΤΩΣΗ',\n      browse: 'ΠΕΡΙΗΓΗΣΗ',\n      uploadPhoto: 'Ανεβάστε μια φωτογραφία',\n      camera: 'Διαδικτυακή Κάμερα',\n      instead: 'αντί να την',\n      capture: 'ΤΡΑΒΗΞΕΤΕ',\n      somethingWrong: 'Λυπάμαι, κάτι πήγε στραβά. Προσπαθήστε ξανά αργότερα',\n      couldntRead: 'Λυπάμαι, δεν μπορέσαμε να διαβάσουμε τον κωδικό!',\n      couldntProcess: 'Λυπάμαι, δεν μπορέσαμε να επεξεργαστούμε την εικόνα σας!',\n      inValidCode: 'Παρακαλώ, υποβάλετε τον έγκυρο κωδικό',\n      moveOn: 'Προσπαθήστε ξανά ή στείλτε τη φωτογραφία σας και συνεχίστε',\n      tryAgain: 'Προσπαθήστε ξανά',\n      dataReceived: 'Data received!',\n      enterManually: 'Προσπαθήστε ξανά ή εισάγετε τα δεδομένα χειροκίνητα παρακάτω',\n      positionQR:\n        'Τοποθετήστε τον κωδικό QR μπροστά από την κάμερά σας για να χωρέσει στο κόκκινο πλαίσιο ή ανεβάστε τον από τον υπολογιστή σας.',\n      positionQRMobile: 'Τοποθετήστε τον κωδικό QR μπροστά από την κάμερά σας ή ανεβάστε τον από την συσκευή σας.',\n      analyzing: 'Ανάλυση εικόνας, παρακαλώ περιμένετε',\n      submit: 'ΥΠΟΒΟΛΗ',\n      startOver: 'Ξεκινήστε',\n      allDone: 'Όλα εντάξει!',\n      cantAnalyze:\n        'Προσοχή - δεν μπορέσαμε να εμφανίσουμε αυτή την εικόνα. Προσπαθήστε να επαναλάβετε την υποβολή ή επιλέξτε μια πιο γενική μορφή εικόνας. (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Λυπούμαστε - δεν υποστηρίζουμε αυτή τη μορφή αρχείου. Μεταφορτώστε έναν υποστηριζόμενο τύπο εικόνας (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Δεν εντοπίστηκε κάμερα',\n      uploadVideo: 'Ανεβάστε ένα βίντεο',\n      skip: 'Παράλειψη;',\n      accessCamUpload: 'ΠΡΟΣΒΑΣΗ ΣΤΗΝ ΚΑΜΕΡΑ/ΜΕΤΑΦΟΡΤΩΣΗ',\n      browse: 'ΠΕΡΙΗΓΗΣΗ',\n      instead: 'αντί να την',\n      or: 'ή',\n      stopRecording: 'Διακοπή της καταγραφής',\n      willBeStopped: 'Η καταγραφή θα σταματήσει σε <b>5 λεπτά</b>',\n      stopOnDone: 'Σταματήστε την καταγραφή όταν τελειώσετε!',\n      record: 'ΚΑΤΑΓΡΑΦΗ',\n      somethingWrong: 'Λυπάμαι, κάτι πήγε στραβά. Προσπαθήστε ξανά αργότερα.',\n      dataReceived: 'Τα δεδομένα ελήφθησαν!',\n      microphone: 'μικρόφωνο',\n      camera: 'Διαδικτυακή Κάμερα',\n      selectMicrophone: 'Παρακαλώ επιλέξτε микрофон',\n      selectCam: 'Παρακαλώ επιλέξτε уебкамера',\n      submit: 'ΥΠΟΒΟΛΗ',\n      upload: 'Ανεβάστε',\n      playback: 'Αναπαραγωγή',\n      stopPlayback: 'ΔΙΑΚΟΠΗ ΤΗΣ ΑΝΑΠΑΡΑΓΩΓΗΣ',\n      startOver: 'Ξεκινήστε',\n      allDone: 'Όλα εντάξει!',\n      alternativeRecordSpan:\n        'Παρακαλούμε, ανεβάστε ένα βίντεο από τον υπολογιστή σας. <br/>Εναλλακτικά, μπορείτε να καταγράψετε το βίντεο με μια κάμερα. &nbsp;',\n      alrenativeRecordHref: 'καταγράψετε το βίντεο με μια κάμερα.',\n      cantAnalyze:\n        'Προσοχή - δεν μπορέσαμε να εμφανίσουμε αυτό το βίντεο. Προσπαθήστε να επαναλάβετε την υποβολή ή επιλέξτε μια πιο γενική μορφή βίντεο (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Λυπούμαστε - δεν υποστηρίζουμε αυτή τη μορφή αρχείου. Μεταφορτώστε έναν υποστηριζόμενο τύπο βίντεο (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'ΕΠΙΛΕΞΤΕ',\n      pleaseChoose: 'Παρακαλώ επιλέξτε',\n      this: 'Αυτό',\n      one: ' από εδώ',\n      myChoice: 'Η ΕΠΙΛΟΓΗ ΜΟΥ'\n    },\n    hm: {\n      addComment: 'Προσθέστε ένα σχόλιο παρακάτω',\n      commentMandatoryPlaceHolder: 'Προσθέστε υποχρεωτικά ένα σχόλιο... ',\n      commentOptionalPlaceHolder: 'Προσθέστε προαιρετικά ένα σχόλιο... ',\n      dragPin: 'Σύρετε για επανατοποθέτηση (παρατεταμένο κλικ/πατήστε στην ακίδα με ακρίβεια). ',\n      removePin: 'Σύρετε έξω από την εικόνα για διαγραφή.  ',\n      editComment: 'Κάντε κλικ/πατήστε στην ακίδα για να επεξεργαστείτε το σχόλιο.',\n      addPin:\n        'Σύρετε την ακίδα από τον παρακάτω πίνακα και αφήστε την σε ένα σημείο της επιλογής σας επάνω στην εικόνα.',\n      addPins:\n        'Σύρετε τις ακίδες από τον παρακάτω πίνακα και αφήστε τις σε ένα σημείο της επιλογής σας επάνω στην εικόνα. ',\n      leavePins: (minPoints, maxPoints) =>\n        `Αφήστε τουλάχιστον ${minPoints}, αλλά όχι περισσότερες από ${maxPoints} ακίδες κάθε είδους.`,\n      leavePinsAny: (minPoints, maxPoints) =>\n        `Αφήστε τουλάχιστον ${minPoints}, αλλά όχι περισσότερες από ${maxPoints} ακίδες κάθε είδους. `,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `Αφήστε τουλάχιστον ${minPoints}, αλλά όχι περισσότερες από ${maxPoints} ακίδες. `,\n      leavePinsWithOff: maxPoints =>\n        `Αφήστε το πολύ ${maxPoints} ακίδες κάθε είδους ή κάντε κλικ στο κουμπί Επόμενο για παράλειψη. `,\n      leavePinsWithOffAny: maxPoints =>\n        `Αφήστε το πολύ ${maxPoints} ακίδες κάθε είδους ή κάντε κλικ στο κουμπί Επόμενο για παράλειψη `,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Αφήστε το πολύ ${maxPoints} ακίδες ή κάντε κλικ στο κουμπί Επόμενο για παράλειψη. `,\n      leavePinWithOff: `Αφήστε το πολύ 1 ακίδα κάθε είδους ή κάντε κλικ στο κουμπί Επόμενο για παράλειψη. `,\n      leavePinWithOffAny: `Αφήστε το πολύ 1 ακίδα κάθε είδους ή κάντε κλικ στο κουμπί Επόμενο για παράλειψη `,\n      leavePinPerPageWithOff: 'Αφήστε το πολύ 1 ακίδα ή κάντε κλικ στο κουμπί Επόμενο για παράλειψη ',\n      leaveExactlyPin: `Αφήστε 1 ακίδα κάθε είδους. `,\n      leaveExactlyPinAny: `Αφήστε 1 ακίδα κάθε είδους.. `,\n      leaveExactlyPinPerPage: 'Αφήστε 1 ακίδα. ',\n      leaveExactlyPins: maxPoints => `Αφήστε ${maxPoints} ακίδες κάθε είδους. `,\n      leaveExactlyPinsAny: maxPoints => `Αφήστε ${maxPoints} ακίδες κάθε είδους. `,\n      leaveExactlyPinsPerPage: maxPoints => `Αφήστε ${maxPoints} ακίδες. `,\n      leaveComment: 'Πληκτρολογήστε κάτω από την εικόνα για να αφήσετε ένα σχόλιο. ',\n      noAnswers: 'Δεν υπάρχει επιλογή απάντησης, κάντε κλικ στο επόμενο για να συνεχίσετε.',\n      outOfPins: 'Έχετε ξεμείνει από ακίδες',\n      pinsBehavior: 'Καθώς μετακινείστε σε όλη την εικόνα, θα δείτε περιοχές που θα επισημαίνονται με μια απλή ακίδα.',\n      clusters: 'Θα μπορείτε να τοποθετήσετε τις ακίδες μόνο σε αυτές τις επισημασμένες περιοχές.',\n      contentAware: 'Μπορείτε να τοποθετήσετε τις ακίδες μέσα ή έξω από τις επισημασμένες περιοχές.'\n    },\n    mp: {\n      expand_note: 'Περάστε με το ποντίκι ή κάντε κλικ στην εικόνα(ες) για επέκταση.',\n      rb_note: rows => `Παρακαλώ επιλέξτε μόνο 1 απάντηση ανά στοιχείο${rows ? ' παρακάτω' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (min === max) {\n          return `Παρακαλώ επιλέξτε ${min !== 1 ? 'οποιαδήποτε' : 'μόνο'} ${min} ${\n            min !== 1 ? 'απαντήσεις ' : 'απάντηση'\n          } ανά στοιχείο${rows ? ' παρακάτω' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Παρακαλούμε επιλέξτε τουλάχιστον ${min} ${\n            min !== 1 ? 'απαντήσεις ' : 'απάντηση'\n          } αλλά όχι περισσότερα από ${max} ανά στοιχείο${rows ? ' παρακάτω' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Παρακαλούμε επιλέξτε τουλάχιστον ${min} ${min !== 1 ? 'απαντήσεις ' : 'απάντηση'} ανά στοιχείο${\n            rows ? ' παρακάτω' : ''\n          }:`\n        } else if (0 === min && max < 5000) {\n          return `Παρακαλούμε επιλέξτε όχι περισσότερα από ${max} ${\n            max !== 1 ? 'απαντήσεις ' : 'απάντηση'\n          } ανά στοιχείο${rows ? ' παρακάτω' : ''}:`\n        } else {\n          return 'Επιλέξτε όλα όσα ισχύουν:'\n        }\n      }\n    },\n    sh: {\n      note: 'Κάντε κλικ σε ένα προϊόν για να το μεγεθύνετε και να το προσθέσετε στο εικονικό σας καλάθι, αν το αγοράζατε στο κατάστημα.',\n      amazonNote: 'Κάντε κλικ σε ένα προϊόν για να το μεγεθύνετε και να το προσθέσετε στο εικονικό σας καλάθι.',\n      fullCart: 'Το καλάθι σας είναι γεμάτο!',\n      qty: 'ΠΟΣΟΤΗΤΑ',\n      addToCart: 'ΠΡΟΣΘΗΚΗ ΣΤΟ ΚΑΛΑΘΙ',\n      deleteFromCart: 'ΔΙΑΓΡΑΦΗ',\n      each: 'καθε',\n      items: 'είδη',\n      emptyCard: 'Το καλάθι σας είναι άδειο',\n      total: 'Καλάθι',\n      clearCart: 'Διαγραφή καλαθιού',\n      backToStore: 'Πίσω στο κατάστημα',\n      scrollError: `Κάντε κύλιση πλήρως προς τα αριστερά και προς τα δεξιά για να προχωρήσετε στην έρευνα. `,\n      na: 'Τίποτα από τα παραπάνω',\n      next: 'ΕΠΟΜΕΝΟ'\n    },\n    rb: {\n      note: 'Παρακαλώ επιλέξτε μόνο 1 στοιχείο'\n    },\n    vo: {\n      note: 'Παρακολουθήστε το βίντεο μέχρι το τέλος'\n    },\n    cb: {\n      note: (min, max) => {\n        if (1 === min && 5000 === max) {\n          return 'Επιλέξτε όλα όσα ισχύουν:'\n        } else if (min === max) {\n          return `Παρακαλώ επιλέξτε ${min !== 1 ? 'επακριβώς' : 'μόνο'} ${min} στοιχεί${min !== 1 ? 'α' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Παρακαλώ επιλέξτε τουλάχιστον ${min} στοιχεί${\n            min !== 1 ? 'α' : ''\n          }, αλλά όχι περισσότερες από ${max}:`\n        } else if (5000 === max && min > 0) {\n          return `Παρακαλώ επιλέξτε τουλάχιστον ${min} στοιχεί${min !== 1 ? 'α' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Παρακαλώ επιλέξτε όχι περισσότερα από ${max} στοιχεί${max !== 1 ? 'α' : ''}:`\n        } else {\n          return 'Επιλέξτε όλα όσα ισχύουν:'\n        }\n      }\n    },\n    oe: {\n      na: 'Δεν εφαρμόζεται',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Πληκτρολογήστε ${1 !== min ? 'επακριβώς' : 'οποιουσδήποτε'} ${min} χαρακτήρε${1 !== min ? 'α' : ''}${\n            optional ? ' (προαιρετικά)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Πληκτρολογήστε τουλάχιστον ${min} χαρακτήρε${1 !== min ? 'α' : ''} αλλά όχι περισσότερες από ${max}${\n            optional ? ' (προαιρετικά)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Πληκτρολογήστε τουλάχιστον ${min} χαρακτήρε${1 !== min ? 'α' : ''}${\n            optional ? ' (προαιρετικά)' : ''\n          }:`\n        } else if (0 === min && max < 5000) {\n          return `Πληκτρολογήστε όχι περισσότερα από ${max} χαρακτήρε${1 !== min ? 'α' : ''}${\n            optional ? ' (προαιρετικά)' : ''\n          }:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Συμπληρώστε τα ακόλουθα πεδία:'\n    },\n    mx: {\n      note: 'Μετακινήστε τα επισημασμένα ρυθμιστικά για να συνεχίσετε',\n      dragSlider: 'Σύρετε αριστερά ή δεξιά για να απαντήσετε'\n    },\n    psc: {\n      dragLeftRight: 'Σύρετε αριστερά ή δεξιά για να απαντήσετε'\n    },\n    ps: {\n      note: value => `Κατανείμετε το ${value} μεταξύ των παρακάτω στοιχείων`,\n      allDone: `Όλα εντάξει!`,\n      total: `σύνολο:`,\n      dragSlider: 'Σύρετε αριστερά ή δεξιά για να απαντήσετε'\n    },\n    cx: {\n      note: 'Ανοίξτε το πλαίσιο επιλογών και αρχίστε να πληκτρολογείτε την απάντησή σας στην αυτόματη κύλιση ή επιλέξτε την χειροκίνητα'\n    },\n    ro: {\n      note: 'Σύρετε προς τα πάνω ή προς τα κάτω για αναδιάταξη:'\n    },\n    md: {\n      note1:\n        'Κάντε κλικ/πατήστε στο στοιχείο της πρώτης <b>σας επιλογής</b>.<br/>' +\n        ' Κάντε κλικ/πατήστε ξανά για να ακυρώσετε την επιλογή.',\n      note2:\n        'Τώρα κάντε κλικ/πατήστε στο στοιχείο της τελευταίας <b>σας επιλογής</b>.<br/>' +\n        ' Κάντε κλικ/πατήστε ξανά για να ακυρώσετε την επιλογή.',\n      note3:\n        'Ευχαριστούμε! Συνεχίστε στην επόμενη ερώτηση ή κάντε κλικ/πατήστε σε οποιοδήποτε μη επιλεγμένο στοιχείο για να ξεκινήσετε από την αρχή.'\n    },\n    aro: {\n      note: 'Επιλέξτε ένα στοιχείο από κάθε ζεύγος.'\n    },\n    wd: {\n      note: 'Βεβαιωθείτε ότι κάθε επόμενη τιμή είναι μεγαλύτερη από την προηγούμενη.'\n    },\n    emd: {\n      note: 'Παρακολουθήστε το βίντεο μέχρι το τέλος',\n      noAnswers: 'Δεν υπάρχει επιλογή απάντησης, κάντε κλικ στο επόμενο για να συνεχίσετε.',\n      start: 'Κάντε κλικ και κρατήστε το πατημένο για να ξεκινήσετε',\n      resume: 'Κάντε κλικ και κρατήστε το πατημένο για να συνεχίσετε',\n      continue: 'Είστε έτοιμοι! <br />Κάντε κλικ <strong>Επόμενο</strong> για να συνεχίσετε',\n      continueMobile: 'Είστε έτοιμοι! <br />Κάντε κλικ <strong>ΕΔΩ</strong> για να συνεχίσετε',\n      training: {\n        session: 'Εκπαιδευτική συνεδρία',\n        note: 'Παρακαλώ ολοκληρώστε την εκπαίδευση',\n        moveLeft: 'Σύρετε τον επιλογέα μέχρι τέρμα προς τα αριστερά',\n        moveBottom: 'Σύρετε τον επιλογέα μέχρι κάτω',\n        moveRight: 'Τώρα, σύρετε τον επιλογέα μέχρι τέρμα προς τα δεξιά',\n        moveTop: 'Τώρα, σύρετε τον επιλογέα προς τα επάνω',\n        success: 'Μπράβο!'\n      }\n    },\n    sft: {\n      noAnswers: 'Δεν υπάρχει επιλογή απάντησης, κάντε κλικ στο επόμενο για να συνεχίσετε.',\n      note: 'Απαντήστε όσο πιο γρήγορα μπορείτε με την απάντηση που αισθάνεστε διαισθητικά ως σωστή.',\n      finish: 'Είστε έτοιμοι! <br /> Κάντε κλικ Επόμενο για να συνεχίσετε.',\n      training: {\n        start:\n          '<p>Αυτή η ερώτηση θα σας εμφανίσει γρήγορα διάφορες λέξεις και θα απαιτήσει τη συγκέντρωσή σας. ' +\n          'Θα πρέπει να αντιδράσετε γρήγορα για να απαντήσετε. </p> <p>Έτοιμοι για εξάσκηση;</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Πατήστε στο \"{buttonLeft}\"`\n            : (mouse ? `Κάντε κλικ \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Πατήστε στο πλήκτρο \"{keyBtnLeft}\"` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Πατήστε στο \"{buttonRight}\"`\n            : (mouse ? `Κάντε κλικ \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Πατήστε στο πλήκτρο \"{keyBtnRight}\"` : ''),\n        fail: () => 'Πολύ αργά',\n        success: () => 'Μπράβο!',\n        finish: () =>\n          '<p><strong> Εξαιρετικά!</strong></p><p>Βεβαιωθείτε ότι δεν πρόκειται να σας αποσπάσουν την προσοχή για τα επόμενα 2-3 λεπτά. <br />' +\n          '</p><p>Κάντε κλικ στο Επόμενο για να ξεκινήσετε όταν είστε έτοιμοι</p>'\n      },\n      buttons: {\n        start: 'Εκκίνηση',\n        yesno: {\n          left: 'Ναί',\n          right: 'όχι'\n        },\n        matches: {\n          left: 'Ταιριάζει',\n          right: 'Δεν Ταιριάζει'\n        },\n        fits: {\n          left: 'Ισχύει',\n          right: 'Δεν Ισχύει'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        },\n        noyes: {\n          left: 'Ναί',\n          right: 'όχι'\n        },\n        matchesRev: {\n          left: 'Ταιριάζει',\n          right: 'Δεν Ταιριάζει'\n        },\n        fitsRev: {\n          left: 'Ισχύει',\n          right: 'Δεν Ισχύει'\n        },\n        thumbsRev: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'אין אפשרות לתשובה, יש ללחוץ ״הבא״ כדי להמשיך.',\n    placeholder: 'יש לציין',\n    pleaseSelect: 'יש לבחור',\n    rotateLandscape: 'אנא סובב את הטלפון שלך ממצב לרוחב כדי להמשיך.',\n    rotatePortrait: 'אנא סובב את הטלפון שלך מרוחב לפורטרייט כדי להמשיך.',\n    ir: {\n      selectWebCam: 'יש לבחור מצלמת רשת (אם זמינה) או ללחוץ ׳עיון׳ כדי להעלות קובץ מהמכשיר שלכם',\n      // uploadOnly: \"Кликнете върху 'עיון', за да качите от Вашето устройство\",\n      noWebCam: 'לא נמצאה מצלמת רשת',\n      accessCamUpload: 'גישה למצלמה/העלאת קובץ',\n      browse: 'עיון',\n      uploadPhoto: 'העלאת תמונה',\n      camera: 'מצלמת רשת',\n      instead: 'במקום',\n      capture: 'צילום',\n      somethingWrong: 'סליחה, משהו השתבש. יש לנסות שוב מאוחר יותר',\n      couldntRead: 'מצטערים, לא הצלחנו לקרוא את הקוד!',\n      couldntProcess: 'מצטערים, לא הצלחנו לעבד את התמונה שלכם!',\n      inValidCode: 'יש לשלוח את הקוד התקין',\n      moveOn: 'יש לנסות שוב או לשלוח את התמונה שלכם ולהמשיך הלאה',\n      tryAgain: 'יש לנסות שוב',\n      dataReceived: 'המידע התקבל!',\n      enterManually: 'יש לנסות שוב או להכניס את המידע למטה באופן ידני',\n      positionQR: 'יש למקם את קוד ה-QR מול המצלמה שלכם ולהכניס אותו למסגרת האדומה, או להעלות מהמחשב שלכם.',\n      positionQRMobile: 'יש למקם את קוד ה-QR מול המצלמה שלכם או להעלות מהמחשב שלכם.',\n      analyzing: 'מתבצע ניתוח לתמונה, אנא המתינו',\n      submit: 'שליחה',\n      startOver: 'התחילו מחדש',\n      allDone: 'סיימנו!',\n      cantAnalyze:\n        'שימו לב - לא הצלחנו לעבד את התמונה הזאת. יש לנסות לשלוח מחדש או לבחור תמונה בפורמט יותר גנרי (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'אנחנו מצטערים - אנחנו לא תומכים בסוג הקובץ הזה. יש להעלות תמונה בפורמט נתמך (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'לא נמצאה מצלמת רשת',\n      uploadVideo: 'העלאת סרטון',\n      skip: 'לדלג?',\n      accessCamUpload: 'גישה למצלמה/העלאת קובץ',\n      browse: 'עיון',\n      instead: 'במקום',\n      or: 'או',\n      stopRecording: 'עצרו את הקלטה',\n      willBeStopped: 'ההקלטה תיעצר בעוד 5 דקות',\n      stopOnDone: 'עצרו את ההקלטה כשתסיימו!',\n      record: 'הקלטה',\n      somethingWrong: 'סליחה, משהו השתבש. יש לנסות שוב מאוחר יותר',\n      dataReceived: 'המידע התקבל!',\n      microphone: 'המיקרופון',\n      camera: 'מצלמת רשת',\n      selectMicrophone: 'יש לבחור את המיקרופון שלכם',\n      selectCam: 'יש לבחור את מצלמת הרשת שלכם',\n      submit: 'שליחה',\n      upload: 'העלו',\n      playback: 'הפעלה',\n      stopPlayback: 'עצרו את ההפעלה',\n      startOver: 'התחילו מחדש',\n      allDone: 'סיימנו!',\n      alternativeRecordSpan: 'יש להעלות את הסרטון מהמחשב שלכם. לחלופין, תוכלו לצלם את הסרטון  &nbsp;',\n      alrenativeRecordHref: 'עם מצלמת רשת',\n      cantAnalyze:\n        'שימו לב - לא הצלחנו לעבד את הסרטון הזה. יש לנסות לשלוח מחדש או לבחור סרטון בפורמט יותר גנרי (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'אנחנו מצטערים - אנחנו לא תומכים בסוג הקובץ הזה. יש להעלות סרטון בפורמט נתמך (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'בחירה',\n      pleaseChoose: 'יש לבחור',\n      this: 'זה',\n      one: ' אחד',\n      myChoice: 'הבחירה שלי'\n    },\n    hm: {\n      addComment: 'יש להוסיף תגובה מתחת',\n      commentMandatoryPlaceHolder: 'יש להוסיף תגובת חובה... ',\n      commentOptionalPlaceHolder: 'יש להוסיף תגובה אופציונלית...',\n      dragPin: 'יש לגרור כדי למקם מחדש לחיצה ארוכה הקשה עבוד נעיצה מדויקת. ',\n      removePin: 'יש לגרור אל מחוץ לתמונה כדי למחוק. ',\n      editComment: 'לחצו הקישו על סיכה כדי לערוך את התגובה. ',\n      addPin: 'יש לגרור את הסיכה מהלוח שלמטה ולהניח אותה בנקודה שתבחרו על התמונה. ',\n      addPins: 'יש לגרור את הסיכות מהלוח שלמטה ולהניח אותן בנקודה שתבחרו על התמונה. ',\n      leavePins: (minPoints, maxPoints) => `סיכות מכל סוג. ${maxPoints} ולא יותר מ- ${minPoints} יש להשאיר לפחות`,\n      leavePinsAny: (minPoints, maxPoints) => `סיכות מכל סוג. ${maxPoints} ולא יותר מ- ${minPoints} יש להשאיר לפחות`,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `סיכות מכל סוג. ${maxPoints} ולא יותר מ ${minPoints} יש להשאיר לפחות `,\n      leavePinsWithOff: maxPoints => `סיכות מכל סוג או ללחוץ ׳הבא׳ כדי לדלג. ${maxPoints} יש להשאיר לא יותר מ `,\n      leavePinsWithOffAny: maxPoints => `סיכות מכל סוג או ללחוץ ׳הבא׳ כדי לדלג. ${maxPoints} יש להשאיר לא יותר מ- `,\n      leavePinsPerPageWithOff: maxPoints => `סיכות מכל סוג או ללחוץ ׳הבא׳ כדי לדלג. ${maxPoints} יש להשאיר לא יותר מ `,\n      leavePinWithOff: `יש להשאיר לא יותר מסיכה אחת מכל סוג או ללחוץ ׳הבא׳ כדי לדלג. `,\n      leavePinWithOffAny: `יש להשאיר לא יותר מסיכה אחת מכל סוג או ללחוץ ׳הבא׳ כדי לדלג.`,\n      leavePinPerPageWithOff: 'יש להשאיר סיכה אחת. ',\n      leaveExactlyPin: `יש להשאיר סיכה אחת מכל סוג.`,\n      leaveExactlyPinAny: `יש להשאיר לא יותר מסיכה אחת מכל סוג או ללחוץ ׳הבא׳ כדי לדלג. `,\n      leaveExactlyPinPerPage: 'יש להשאיר סיכה אחת מכל סוג.',\n      leaveExactlyPins: maxPoints => `סיכות מכל סוג. ${maxPoints} יש להשאיר `,\n      leaveExactlyPinsAny: maxPoints => `סיכות מכל סוג. ${maxPoints} ייש להשאיר `,\n      leaveExactlyPinsPerPage: maxPoints => `סיכות. ${maxPoints} יש להשאיר `,\n      leaveComment: 'הקלידו מתחת לתמונה כדי להשאיר תגובה.',\n      noAnswers: 'אין אפשרות לתשובה, יש ללחוץ ״הבא״ כדי להמשיך.',\n      outOfPins: 'נגמרו לך הסיכות',\n      pinsBehavior: 'כשתתקדמו לאורך התמונה תראו אזורים שמסומנים על ידי סיכה נעוצה אחת.',\n      clusters: 'תוכלו למקם סיכות רק באזורים המסומנים האלה.',\n      contentAware: 'אתם יכולים למקם סיכות בתוך ומחוץ לאזורים המסומנים.'\n    },\n    mp: {\n      expand_note: 'יש להעביר את הסמן מעל או ללחוץ על תמונה/תמונות כדי להגדיל',\n      rb_note: rows => `${rows ? 'למטה' : ''} יש לבחור רק תגובה אחת לכל פריט :`,\n      cb_note: (min, max, rows) => {\n        if (min === max) {\n          return ` יש לבחור ${min !== 1 ? 'כלשהן' : 'בלבד'} ${min} ${min !== 1 ? 'תגובות' : 'תגובה'} עבור כל פריט מטה:`\n        } else if (min > 0 && max < 5000) {\n          return ` יש לבחור לפחות ${min} ${min !== 1 ? 'תגובות' : 'תגובה'} אך לא יותר מ- ${max} ${\n            rows ? 'למטה' : ''\n          } עבור כל פריט : `\n        } else if (5000 === max && min > 0) {\n          return ` יש לבחור לפחות ${min} ${min !== 1 ? 'תגובות' : 'תגובה'} ${rows ? 'למטה' : ''} עבור כל פריט :`\n        } else if (0 === min && max < 5000) {\n          return ` ש לבחור לא יותר מ- ${max} ${max !== 1 ? 'תגובות' : 'תגובה'} ${rows ? 'למטה' : ''} עבור כל פריט :`\n        } else {\n          return 'יש לסמן את כל מה שמתאים:'\n        }\n      }\n    },\n    sh: {\n      note: 'יש ללחוץ על מוצר כדי להגדיל אותו וכדי להוסיף אותו לעגלת הקניות הוירטואלית שלכם אם תרצו לקנות אותו בחנות',\n      amazonNote:\n        'יש ללחוץ על מוצר כדי להגדיל אותו וכדי להוסיף אותו לעגלת הקניות הוירטואלית שלכם אם תרצו לקנות אותו ברשת',\n      fullCart: 'עגלת הקניות שלכם מלאה!',\n      qty: 'כמות',\n      each: 'יעדער',\n      items: 'זאכן',\n      addToCart: 'הוסיפו לעגלת הקניות',\n      deleteFromCart: 'מחיקה',\n      emptyCard: 'עגלת הקניות שלכם ריקה',\n      total: 'עגלת הקניות',\n      clearCart: 'רוקנו את עגלת הקניות',\n      backToStore: 'בחזרה לחנות',\n      na: 'אף אחד מהללו',\n      scrollError: `נא לגלול שמאלה וימינה עד הסוף כדי להמשיך בסקר. `,\n      next: 'הבא'\n    },\n    rb: {\n      note: 'יש לבחור פריט אחד בלבד:'\n    },\n    vo: {\n      note: 'יש לצפות בסרטון עד הסוף'\n    },\n    cb: {\n      note: (min, max) => {\n        if (1 === min && 5000 === max) {\n          return 'יש לסמן את כל מה שמתאים:'\n        } else if (min === max) {\n          return ` יש לבחור לפחות ${min !== 1 ? 'כל' : 'בדיוק'} ${min} תו ${min !== 1 ? 'כלשהם' : 'בלבד'}:`\n        } else if (min > 0 && max < 5000) {\n          return ` יש לבחור לפחות ${min} פריט ${min !== 1 ? 'ים' : ''}  אך לא יותר מ- ${max} בכל שורה: `\n        } else if (5000 === max && min > 0) {\n          return ` יש לבחור לפחות ${min} פריט ${min !== 1 ? 'ים' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return ` יש לבחור לא יותר מ ${max} פריט ${max !== 1 ? 'ים' : ''}:`\n        } else {\n          return 'יש לסמן את כל מה שמתאים:'\n        }\n      }\n    },\n    oe: {\n      na: 'לא ישי',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `יש להקליד ${1 !== min ? 'כל' : 'בדיוק'} ${min} תו${1 !== min ? 'וים' : ''}${\n            optional ? ' (אופציונלי)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `יש להקליד לפחות ${min} תו ${1 !== min ? 'וים' : ''} אך לא יותר מ ${max}${\n            optional ? ' (אופציונלי)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `יש להקליד לפחות ${min} תו ${1 !== min ? 'וים' : ''}${optional ? ' (אופציונלי)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `יש להקליד לא יותר מ ${max} תו ${1 !== min ? 'וים' : ''}${optional ? ' (אופציונלי)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'יש למלא את השדות הבאים:'\n    },\n    mx: {\n      note: 'יש להזיז את המחוונים המודגשים כדי להמשיך',\n      dragSlider: 'יש לגרור שמאלה או ימינה כדי לענות'\n    },\n    psc: {\n      dragLeftRight: 'יש לגרור שמאלה או ימינה כדי לענות'\n    },\n    ps: {\n      note: value => `יש לחלק  ${value} בין הפריטים שלמטה `,\n      allDone: `סיימנו`,\n      total: `Общо:`,\n      dragSlider: 'יש לגרור שמאלה או ימינה כדי לענות'\n    },\n    cx: {\n      note: 'פתחו את שדה הטקסט והחלו להקליד את התשובה שלכם כדי לגלול באופן אוטומטי, או בחרו באופן ידני'\n    },\n    ro: {\n      note: 'יש לגרור למעלה או למטה כדי לסדר מחדש:'\n    },\n    md: {\n      // eslint-disable-next-line no-useless-concat\n      note1: 'יש ללחוץ/להקיש על הפריט הראשון שתרצו לבחור<br/>' + ' יש ללחוץ/להקיש שוב כדי לנקות את הבחירה.',\n      // eslint-disable-next-line no-useless-concat\n      note2: 'כעת יש ללחוץ/להקיש על הפריט האחרון שתרצו לבחור<br/>' + ' יש ללחוץ/להקיש שוב כדי לנקות את הבחירה.',\n      note3: 'תודה! המשיכו לשאלה הבאה או לחצו/הקישו על כל פריט שלא נבחר כדי להתחיל מחדש.'\n    },\n    aro: {\n      note: 'יש לבחור פריט אחד מכל צמד.'\n    },\n    wd: {\n      note: 'יש לוודא שכל ערך עוקב גדול יותר מזה שלפניו.'\n    },\n    emd: {\n      note: 'יש לצפות בסרטון עד הסוף',\n      noAnswers: 'אין אפשרות לתשובה, יש ללחוץ ״הבא״ כדי להמשיך.',\n      start: 'יש ללחוץ ולהחזיק כדי להתחיל',\n      resume: 'יש ללחוץ ולהחזיק כדי להמשיך',\n      continue: 'אתם מוכנים! יש ללחוץ ׳הבא׳ כדי להמשיך',\n      continueMobile: 'אתם מוכנים! לחצו כאן כדי להמשיך',\n      training: {\n        session: 'אימון',\n        note: 'יש לסיים את ההכשרה',\n        moveLeft: 'יש לגרור את החוגה עד הסוף לצד שמאל',\n        moveBottom: 'יש לגרור את החוגה עד הסוף לחלק התחתון',\n        moveRight: 'עכשיו, בבקשה יש לגרור את החוגה עד הסוף לצדימין',\n        moveTop: 'עכשיו, בבקשה יש לגרור את החוגה עד הסוף לחלק העליון',\n        success: 'עבודה מעולה!'\n      }\n    },\n    sft: {\n      noAnswers: 'אין אפשרות לתשובה, יש ללחוץ ״הבא״ כדי להמשיך.',\n      note: 'יש לענות כמה שיותר מהר תשובה שמרגישה נכונה באופן אינטואיטיבי',\n      imageError: 'No image exposure time chosen',\n      finish: 'סיימתם! יש ללחוץ ׳הבא׳ כדי להמשיך.',\n      training: {\n        start:\n          '<p>בשאלה הזו יוצגו לכם מילים שונות במהירות ותידרשו להתרכז. תצטרכו להגיב במהירות כדי לענות </p>' +\n          ' <p> מוכנים להתאמן?  </p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `הקישו \"{buttonLeft}\"`\n            : (mouse ? `לחצו \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `הקישו על המקש  \"{keyBtnLeft}\"` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `הקישו \"{buttonRight}\"`\n            : (mouse ? `לחצו \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `הקישו על המקש  \"{keyBtnRight}\"` : ''),\n        fail: () => 'לאט מדי',\n        success: () => 'עבודה מעולה!',\n        finish: () =>\n          '<p><strong> מצוין!</strong></p><p>יש לוודא שדעתכם לא תהיה מוסחת ב-2-3 הדקות הבאות <br />' +\n          '</p><p>לחצו ׳הבא׳ כדי להתחיל כשתהיו מוכנים</p>'\n      },\n      buttons: {\n        start: 'התחלה',\n        yesno: {\n          left: 'כן',\n          right: 'לא'\n        },\n        matches: {\n          left: 'התאמה',\n          right: 'לא התאמה'\n        },\n        fits: {\n          left: 'מתאים',\n          right: 'לא מתאים'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        },\n        noyes: {\n          left: 'Да',\n          right: 'Не'\n        },\n        matchesRev: {\n          left: 'התאמה',\n          right: 'לא התאמה'\n        },\n        fitsRev: {\n          left: 'מתאים',\n          right: 'לא מתאים'\n        },\n        thumbsRev: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: \"जवाब हेतु कोई विकल्प उपलब्ध नहीं, कृपया जारी रखने हेतु 'अगला' पर क्लिक करें\",\n    placeholder: 'कृपया निर्दिष्ट करें...',\n    pleaseSelect: 'कृपया चुनें...',\n    rotateLandscape: 'कृपया जारी रखने के लिए आलेख से आलेख पर फोन घुमाएं।',\n    rotatePortrait: 'कृपया जारी रखने के लिए आलेख से आलेख पर फोन घुमाएं।',\n    ir: {\n      selectWebCam: \"अपने डिवाइस से अपलोड करने हेतु (अगर उपलब्ध हो तो) वेबकैम का चयन करें या 'ब्राउज़' पर क्लिक करें\",\n      noWebCam: 'वेबकैम उपलब्ध नहीं है',\n      accessCamUpload: 'कैमरा का उपयोग करें/अपलोड करें',\n      browse: 'ब्राउज़',\n      uploadPhoto: 'कोई फोटो अपलोड करें',\n      instead: 'इसके बजाय',\n      capture: 'खीचें',\n      somethingWrong: 'क्षमा करें, कुछ गलत हो गया। कृपया, बाद में पुनः प्रयास करें',\n      couldntRead: 'क्षमा करें, हम कोड नहीं पढ़ सकें!',\n      couldntProcess: 'क्षमा करें, हम आपकी तस्वीर को संसाधित नहीं कर सके!',\n      moveOn: 'कृपया पुनः प्रयास करें या अपनी फोटो सबमिट करें और आगे बढ़ें',\n      tryAgain: 'कृपया पुनः प्रयास करें',\n      dataReceived: 'देटा प्राप्त हुआ!',\n      enterManually: 'कृपया पुनः प्रयास करें या नीचे स्वयं डेटा प्रविष्ट करें',\n      positionQR:\n        'कृपया लाल फ्रेम में ठीक से आ सके इसके लिए क्यूआर कोड को अपने कैमरा के सामने रखें या इसे अपने कंप्यूटर से अपलोड करें।',\n      analyzing: 'तस्वीर का विश्लेषण कर रहे हैं, कृपया प्रतीक्षा करें',\n      submit: 'सबमिट करें',\n      startOver: 'प्रारंभ करें',\n      allDone: 'सब कुछ हो गया!',\n      cantAnalyze:\n        'ध्यान दें - हम इस छवि को प्रस्तुत नहीं कर सके। कृपया फिर से सबमिट करने का प्रयास करें या अधिक सामान्य इमेज फॉर्मेट (JPG, PNG, GIF, BMP) चुनें',\n      wrongFormat:\n        'हमें खेद है - हम इस फ़ाइल प्रारूप का समर्थन नहीं करते हैं। कृपया समर्थित इमेज प्रकार (JPG, PNG, GIF, BMP, TIF, PDF, SVG) अपलोड करें'\n    },\n    vr: {\n      noWebCam: 'वेबकैम उपलब्ध नहीं है',\n      uploadVideo: 'एक वीडियो अपलोड करें',\n      skip: 'छोड़ दें?',\n      accessCamUpload: 'कैमरा का उपयोग करें/अपलोड करें',\n      browse: 'ब्राउज़',\n      instead: 'इसके बजाय',\n      or: 'या',\n      stopRecording: 'रिकॉर्डिंग बंद करें',\n      willBeStopped: 'रिकॉर्डिंग 5 मिनट पर बंद हो जाएगी',\n      stopOnDone: 'जब आप पूरा कर लेंगे तब रिकॉर्डिंग बंद करें!',\n      record: 'रिकॉर्ड',\n      somethingWrong: 'क्षमा करें, कुछ गलत हो गया। कृपया, बाद में पुनः प्रयास करें',\n      microphone: 'माइक्रोफ़ोन',\n      camera: 'वेब कैमेरा',\n      selectMicrophone: 'अपना माइक्रोफ़ोन चुनें',\n      selectCam: 'अपना वेब कैमरा चुनें',\n      upload: 'अपलोड',\n      playback: 'प्लेबैक',\n      stopPlayback: 'खेल को रोकें',\n      submit: 'सबमिट करें',\n      startOver: 'प्रारंभ करें',\n      allDone: 'सब कुछ हो गया!',\n      alternativeRecordSpan: 'कृपया, अपने कंप्यूटर से वीडियो-क्लिप अपलोड करें। वैकल्पिक<br/>&nbsp;',\n      alrenativeRecordHref: 'रूप से आप एक वेबकैम के साथ वीडियो रिकॉर्ड कर सकते हैं।',\n      cantAnalyze:\n        'ध्यान दें - हम इस वीडियो को प्रस्तुत नहीं कर सके। कृपया फिर से सबमिट करने का प्रयास करें या अधिक सामान्य वीडियो फॉर्मेट (MP4, M4V, WEBPM) चुनें',\n      wrongFormat:\n        'हमें खेद है - हम इस फ़ाइल प्रारूप का समर्थन नहीं करते हैं। कृपया एक समर्थित वीडियो प्रकार (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV) अपलोड करें'\n    },\n    cjc: {\n      choose: 'चुनें',\n      pleaseChoose: 'कृपया चुनें',\n      this: 'यह',\n      one: 'एक',\n      myChoice: 'मेरी पसंद'\n    },\n    hm: {\n      addComment: 'कृपया नीचे एक टिप्पणी जोड़ें ',\n      commentMandatoryPlaceHolder: 'कृपया अनिवार्य टिप्पणी जोड़ें ... ',\n      commentOptionalPlaceHolder: 'कृपया वैकल्पिक टिप्पणी जोड़ें ... ',\n      dragPin: 'स्थिति बदलने के लिए ड्रैग करें (सटीक पिन करने के लिए देर तक क्लिक / टैप करें)।  ',\n      removePin: 'मिटाने के लिए इमेज के बाहर ड्रैग करें।  ',\n      editComment: 'टिप्पणी बदलने के लिए पिन पर क्लिक/टैप करें। ',\n      addPin: 'कृपया नीचे दिए गए पैनल में से पिन ड्रैग करें और इसे इमेज पर अपनी पसंद की जगह पर छोड़ दें। ',\n      addPins: 'कृपया नीचे दिए गए पैनल में से पिन ड्रैग करें और उन्हें इमेज पर अपनी पसंद की जगह पर छोड़ दें। ',\n      leavePins: (minPoints, maxPoints) =>\n        `कृपया हर तरह की कम से कम ${minPoints} पिन छोड़ दें लेकिन ${maxPoints} पिन से अधिक नहीं। `,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `कृपया कम से कम ${minPoints} पिन छोड़ दें लेकिन ${maxPoints} से अधिक नहीं। `,\n      leavePinsWithOff: maxPoints =>\n        `कृपया हर प्रकार की ${maxPoints} पिन से अधिक न छोड़ें या स्किप करने के लिए अगला पर क्लिक करें। `,\n      leavePinsPerPageWithOff: maxPoints =>\n        `कृपया ${maxPoints} पिन से अधिक न छोड़ें या स्किप करने के लिए अगला पर क्लिक करें। `,\n      leavePinWithOff: 'कृपया हर प्रकार की 1 से अधिक पिन न छोड़ें या स्किप करने के लिए अगला पर क्लिक करें। ',\n      leavePinPerPageWithOff: 'कृपया 1 पिन से अधिक न छोड़ें या स्किप करने के लिए अगला पर क्लिक करें। . ',\n      leaveExactlyPin: 'कृपया हर तरह की 1 पिन छोड़ें। ',\n      leaveExactlyPinPerPage: 'कृपया 1 पिन छोड़ें। ',\n      leaveExactlyPins: maxPoints => `कृपया हर तरह की ${maxPoints}  पिन छोड़ें। `,\n      leaveExactlyPinsPerPage: maxPoints => `कृपया ${maxPoints}  पिन छोड़ें। `,\n      leaveComment: 'टिप्पणी छोड़ने के लिए इमेज के नीचे टाइप करें। ',\n      noAnswers: 'कोई उत्तर विकल्प नहीं, कृपया जारी रखने के लिए अगला पर क्लिक करें।',\n      outOfPins: 'आप पिंनों से बाहर हैं',\n      pinsBehavior:\n        'जैसे-जैसे आप इमेज के साथ आगे बढ़ते हैं, आपको वो जगहें दिखेंगी जिन्हें एक पिन ड्रॉप के साथ हाइलाइट किया जाएगा।',\n      clusters: 'आप केवल इन हाइलाइट की गई जगहों में ही पिन लगा पाएंगे।',\n      contentAware: 'आप इन हाइलाइट की गई जगहों के अंदर या बाहर पिन ड्रॉप सकते हैं।'\n    },\n    mp: {\n      expand_note: 'विस्तृत करने के लिए कृपया ऊपर होवर करें या छवि (छवियों) पर क्लिक करें',\n      rb_note: rows =>\n        `कृपया ${rows ? 'नीचे ' : ''}दिए गए प्रत्येक आइटम के लिए केवल 1 प्रतिक्रिया/प्रतिक्रियाएं चुनें:`,\n      cb_note: (min, max, rows) => {\n        if (1 === min && 5000 === max) {\n          return 'लागू होने वाले सभी की जाँच करें:'\n        } else if (min === max) {\n          return `कृपया ${rows ? 'नीचे ' : ''}दिए गए प्रत्येक आइटम के लिए${min !== 1 ? 'कोई भी' : 'केवल'} ${min} ${\n            min !== 1 ? 'प्रतिक्रियाएं' : 'प्रतिक्रिया'\n          } चुनें:`\n        } else if (min > 0 && max < 5000) {\n          return `कृपया ${rows ? 'नीचे ' : ''}प्रति आइटम कम से कम ${min} ${\n            min !== 1 ? 'प्रतिक्रियाएं' : 'प्रतिक्रिया'\n          } चुनें लेकिन ${max} से अधिक नहीं:`\n        } else if (5000 === max && min > 0) {\n          return `कृपया ${rows ? 'नीचे ' : ''}प्रति आइटम कम से कम ${min} ${\n            min !== 1 ? 'प्रतिक्रियाएं' : 'प्रतिक्रिया'\n          } चुनें:`\n        } else if (0 === min && max < 5000) {\n          return `कृपया ${rows ? 'नीचे ' : ''}प्रति आइटम ${max} से अधिक ${\n            max !== 1 ? 'प्रतिक्रियाएं' : 'प्रतिक्रिया'\n          } न चुनें:`\n        } else {\n          return 'लागू होने वाले सभी की जाँच करें:'\n        }\n      }\n    },\n    sh: {\n      note: 'यदि आप किसी उत्पाद को स्टोर से खरीदना चाहते हैं तो उसे ज़ूम इन करने और अपने वर्चुअल कार्ट में जोड़ने के लिए उस पर क्लिक करें',\n      amazonNote: 'ज़ूम इन करने के लिए किसी उत्पाद पर क्लिक करें और अपनी वर्चुअल कार्ट में जोड़ें.',\n      fullCart: 'आपका कार्ट भर गया है!',\n      qty: 'मात्रा',\n      addToCart: 'कार्ट में जोड़ें',\n      deleteFromCart: 'हटाएं',\n      each: 'प्रत्येक',\n      items: 'सामान',\n      emptyCard: 'आपका कार्ट खाली है!',\n      next: 'अगला',\n      total: 'कार्ट',\n      clearCart: 'कार्ट खाली करें',\n      backToStore: 'स्टोर पर वापस जाएं',\n      na: 'उपरोक्त में से कोई भी नहीं',\n      maxCartCountError: max => `कृपया अपनी कार्ट में ${max} उत्पादों से अधिक नहीं जोड़ें `,\n      scrollError: `इस सर्वे में आगे बढ़ने के लिए कृपया बाएं और दाएं पूरी तरह से स्क्रॉल करें। `,\n      maxSpentError: max => `कृपया ${max} से अधिक नहीं खर्चें।`,\n      maxProductCountError: max => `कृपया हर उत्पाद के लिए अपनी कार्ट में ${max} से अधिक की मात्रा नहीं जोड़ें।`\n    },\n    rb: {\n      note: 'कृपया कम से कम 1 वर्ण लिखें।'\n    },\n    vo: {\n      note: 'कृपया वीडियो को अंत तक देखें'\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `कृपया ${min !== 1 ? 'किसी भी' : 'केवल'} ${min} वस्तु का चयन करें:`\n        } else if (min > 0 && max < 5000) {\n          return `कृपया कम से कम ${min} वस्तु पर चुनें, लेकिन ${max} प्रति कॉलम से अधिक नहीं चुनें:`\n        } else if (5000 === max && min > 0) {\n          return `कृपया कम से कम ${min} कवर्ण लिखें।:`\n        } else if (0 === min && max < 5000) {\n          return `कृपया ${max} वस्तु से अधिक नहीं चुनें:`\n        } else {\n          return 'लागू होने वाले सभी की जाँच करें:'\n        }\n      }\n    },\n    oe: {\n      na: 'लागू नहीं',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `कृपया टाइप करें ${1 !== min ? 'कोई भी' : 'बिल्कुल'} ${min} वर्ण${optional ? ' (वैकल्पिक)' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `?कृपया कम से कम ${min} वर्ण टाइप करें लेकिन ${max}${optional ? ' (वैकल्पिक)' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `कृपया कम से कम ${min} वर्ण टाइप करें${optional ? ' (वैकल्पिक)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `कृपया ${max} वर्ण से अधिक टाइप न करें${optional ? ' (वैकल्पिक)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'कृपया निम्नलिखित कोष्टकों को भरें:'\n    },\n    mx: {\n      note: 'कृपया जारी रखने हेतु विशिष्ट रूप से दर्शाए गए स्लाइडर्स को सरकाएं',\n      dragSlider: 'जवाब देने के लिए बाएं या दाएं खींचें'\n    },\n    psc: {\n      dragLeftRight: 'जवाब देने के लिए बाएं या दाएं खींचें'\n    },\n    ps: {\n      note: value => `कृपया नीचे दिए गए मदों के बीच शेष  ${value} को वितरित करें`,\n      allDone: 'सब कुछ हो गया!',\n      total: `संपूर्ण:`,\n      dragSlider: 'जवाब देने के लिए बाएं या दाएं खींचें'\n    },\n    cx: {\n      note: 'ड्रॉपबॉक्स खोलें और स्वत: स्क्रॉल करने के लिए अपना जवाब टाइप करना प्रारंभ करें या मैन्युअल रूप से उसका चयन करें'\n    },\n    ro: {\n      note: 'पुनर्क्रमित करने के लिए ऊपर या नीचे खींचें:'\n    },\n    md: {\n      note1:\n        'कृपया अपनी पहली पसंद के आइटम पर क्लिक / टैप करें पसंद स्पष्ट करने के लिए फिर से क्लिक / टैप करें। अब कृपया अपनी अंतिम पसंद के आइटम पर क्लिक / टैप करें',\n      note2: 'अब कृपया अपनी आख़िरी पसंद के आइटम पर क्लिक / टैप करें पसंद स्पष्ट करने के लिए फिर से क्लिक/टैप करें।',\n      note3: 'धन्यवाद! अगले प्रश्न के लिए जाएं या शुरू करने के लिए किसी भी अचयनित आइटम पर क्लिक / टैप करें।'\n    },\n    aro: {\n      note: 'कृपया प्रत्येक जोड़ी के लिए एक वस्तु चुनें।'\n    },\n    wd: {\n      note: 'सुनिश्चित करें कि प्रत्येक अनुवर्ती मूल्य पिछले से अधिक है।'\n    },\n    emd: {\n      note: 'कृपया वीडियो को अंत तक देखें',\n      noAnswers: \"जवाब हेतु कोई विकल्प उपलब्ध नहीं, कृपया जारी रखने हेतु 'अगला' पर क्लिक करें\",\n      start: 'शुरू करने के लिए क्लिक करें और दबाए रखें',\n      resume: 'फिर से शुरू करने के लिए क्लिक करें और दबाए रखें',\n      continue: 'आप तैयार हैं! <br/> जारी रखने के लिए आगे को दबाएं',\n      continueMobile: 'आप तैयार हैं! <br/> जारी रखने के लिए यहां क्लिक करें',\n      training: {\n        session: 'प्रशिक्षण सत्र',\n        note: 'कृपया प्रशिक्षण समाप्त करें',\n        moveLeft: 'कृपया डायल को खींच कर पूरी तरह से बाईं ओर ले जाएं',\n        moveBottom: 'कृपया डायल को खींच कर पूरी तरह से तल तक ले जाएं',\n        moveRight: 'कृपया डायल को खींच कर पूरी तरह से दाईं ओर ले जाएं',\n        moveTop: 'कृपया डायल को खींच कर पूरी तरह से शीर्ष पर ले जाएं',\n        success: 'बहुत बढ़िया!'\n      }\n    },\n    sft: {\n      noAnswers: \"जवाब हेतु कोई विकल्प उपलब्ध नहीं, कृपया जारी रखने हेतु 'अगला' पर क्लिक करें\",\n      note: 'कृपया जो विकल्प आपको सहज रूप से सही लगता है उसका जल्द से जल्द उत्तर के रूप में चयन करें',\n      finish: 'आपने इसे पूरा कर लिया हैं! <br /> जारी रखने के लिए कृपया आगे पर क्लिक करें',\n      training: {\n        start:\n          '<p>यह प्रश्न आपको तेजी से अलग-अलग शब्द दिखाएगा और इसके लिए आपकी एकाग्रता की आवश्यकता होगी। ' +\n          'जवाब देने के लिए आपको तुरंत प्रतिक्रिया देनी होगी.</p> <p>क्या आप अभ्यास करने के लिए तैयार हैं?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `\"{buttonLeft}\" पर टैप करें`\n            : (mouse ? `\"{buttonLeft}\" पर क्लिक करे` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `\"{keyBtnLeft}\" कुंजी दबाएं` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `\"{buttonRight}\" पर टैप करें`\n            : (mouse ? `\"{buttonRight}\" पर क्लिक करें` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `\"{keyBtnRight}\" कुंजी दबाएं` : ''),\n        fail: () => 'बहुत धीमा',\n        success: () => 'बहुत बढ़िया!',\n        finish: () =>\n          '<p><strong> अति उत्तम!</strong></p><p>कृपया सुनिश्चित करें कि आप अगले </p><p>2-3 मिनट बिना विचलित हुए इस पर एकाग्रता से काम कर सकते हैं</p><p>तैयार होने पर शुरू करने के लिए आगे पर क्लिक करें</p>'\n      },\n      buttons: {\n        start: 'शुरू करें',\n        yesno: {\n          left: 'हाँ',\n          right: 'नहीं'\n        },\n        matches: {\n          left: 'मेल खा रहा है',\n          right: 'मेल नहीं खा रहा है'\n        },\n        fits: {\n          left: 'उपयुक्त है',\n          right: 'उपयुक्त नहीं है'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Tidak ada pilihan jawaban, silakan klik berikutnya untuk melanjutkan.',\n    placeholder: 'Mohon sebutkan…',\n    pleaseSelect: 'Mohon pilih…',\n    rotateLandscape: 'Putar ponsel Anda dari potret ke lanskap untuk melanjutkan.',\n    rotatePortrait: 'Putar ponsel Anda dari lanskap ke potret untuk melanjutkan.',\n    ir: {\n      selectWebCam: \"Pilih webcam (jika tersedia) atau klik 'Cari' untuk mengunggah dari perangkat Anda\",\n      noWebCam: 'Tidak ada webcam terdeteksi',\n      accessCamUpload: 'AKSES KAMERA/UNGGAH',\n      browse: 'CARI',\n      uploadPhoto: 'Unggah foto',\n      instead: 'sebaliknya',\n      capture: 'AMBIL FOTO',\n      somethingWrong: 'Maaf, terjadi kesalahan. Silakan coba lagi nanti.',\n      couldntRead: 'Maaf, kode tidak dapat dibaca!',\n      couldntProcess: 'Maaf, gambar tidak dapat diproses!',\n      moveOn: 'Silakan coba lagi atau kirim foto Anda dan lanjutkan',\n      tryAgain: 'Silakan coba lagi',\n      dataReceived: 'Data diterima!',\n      enterManually: 'Silakan coba lagi atau masukkan data secara manual di bawah ini',\n      positionQR:\n        'Posisikan kode QR di depan kamera untuk memuatnya di dalam bingkai merah atau unggah dari komputer Anda.',\n      analyzing: 'Menganalisis gambar, mohon tunggu',\n      submit: 'KIRIM',\n      startOver: 'Rekam ulang',\n      allDone: 'Selesai!',\n      cantAnalyze:\n        'Perhatian - kami tidak dapat menggabungkan gambar ini. Cobalah untuk mengirim ulang atau pilih format gambar yang lebih umum (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Maaf - kami tidak mendukung format fail ini. Unggah tipe gambar yang didukung (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Tidak ada webcam terdeteksi',\n      uploadVideo: 'Unggah video',\n      skip: 'Lewati?',\n      accessCamUpload: 'AKSES KAMERA/UNGGAH',\n      browse: 'CARI',\n      instead: 'sebaliknya',\n      or: 'atau',\n      stopRecording: 'Berhenti merekam',\n      willBeStopped: 'Perekaman akan berhenti setelah 5 menit',\n      stopOnDone: 'Berhentilah merekam saat Anda selesai!',\n      record: 'REKAM',\n      somethingWrong: 'Maaf, terjadi kesalahan. Silakan coba lagi nanti.',\n      microphone: 'Mikropon',\n      camera: 'Kamera Web',\n      selectMicrophone: 'Pilih mikrofon Anda',\n      selectCam: 'Pilih kamera web Anda',\n      upload: 'Unggah',\n      playback: 'Pemutaran',\n      stopPlayback: 'BERHENTI',\n      submit: 'KIRIM',\n      startOver: 'Rekam ulang',\n      allDone: 'Selesai!',\n      alternativeRecordSpan: 'Mohon unggah klip video dari komputer<br/>Anda,  &nbsp;',\n      alrenativeRecordHref: ' atau Anda dapat merekam video dengan kamera web.',\n      cantAnalyze:\n        'Perhatian - kami tidak dapat menggabungkan video ini. Cobalah untuk mengirim ulang atau pilih format video yang lebih umum (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Maaf - kami tidak mendukung format fail ini. Unggah tipe video yang didukung (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'PILIH',\n      pleaseChoose: 'Silakan pilih',\n      this: 'Yang',\n      one: 'INI',\n      myChoice: 'PILIHAN Saya'\n    },\n    hm: {\n      addComment: 'Silakan tambahkan komentar di bawah ini',\n      commentMandatoryPlaceHolder: 'Silakan tambahkan komentar wajib... ',\n      commentOptionalPlaceHolder: 'Silakan tambahkan komentar opsional... ',\n      dragPin: 'Seret untuk memposisikan ulang (klik lama/ketuk untuk pemberian pin presisi). ',\n      removePin: 'Seret ke luar gambar untuk menghapus.  ',\n      editComment: 'Klik/ketuk pin untuk mengedit komentar. ',\n      addPin: 'Seret pin dari panel di bawah ini dan letakkan di tempat pilihan Anda pada gambar. ',\n      addPins: 'Seret pin dari panel di bawah ini dan letakkan di tempat pilihan Anda pada gambar. ',\n      leavePins: (minPoints, maxPoints) =>\n        `Silakan tinggalkan setidaknya ${minPoints} tetapi tidak lebih dari ${maxPoints} pin dari semua jenis. `,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `Silakan tinggalkan setidaknya ${minPoints} tetapi tidak lebih dari ${maxPoints} pin. `,\n      leavePinsWithOff: maxPoints =>\n        `Silakan tinggalkan tidak lebih dari ${maxPoints} pin dari segala jenis atau klik Berikutnya untuk melewati. `,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Silakan tinggalkan tidak lebih dari ${maxPoints} pin atau klik Berikutnya untuk melewati. `,\n      leavePinWithOff:\n        'Silakan tinggalkan tidak lebih dari 1 pin dari setiap jenis atau klik Berikutnya untuk melewati. ',\n      leavePinPerPageWithOff: 'Silakan tinggalkan tidak lebih dari 1 pin atau klik Berikutnya untuk melewati.  ',\n      leaveExactlyPin: 'Silakan tinggalkan 1 pin dari setiap jenis. ',\n      leaveExactlyPinPerPage: 'Silakan tinggalkan 1 pin. ',\n      leaveExactlyPins: maxPoints => `Silakan tinggalkan ${maxPoints} pin dari segala jenis. `,\n      leaveExactlyPinsPerPage: maxPoints => `Silakan tinggalkan ${maxPoints} pin `,\n      leaveComment: 'Ketik di bawah gambar untuk meninggalkan komentar. ',\n      noAnswers: 'Tidak ada pilihan jawaban, silakan klik selanjutnya untuk melanjutkan.',\n      outOfPins: 'Anda kehabisan pin',\n      pinsBehavior: 'Saat bergerak melewati gambar, Anda akan melihat area yang akan disorot dengan satu pin drop.',\n      clusters: 'Anda hanya bisa menempatkan pin pada area yang disorot.',\n      contentAware: 'Anda bisa menjatuhkan pin di dalam atau di luar area yang disorot.'\n    },\n    mp: {\n      expand_note: 'Arahkan kursor atau klik pada gambar untuk memperbesar',\n      rb_note: rows => `Silakan pilih hanya 1 tanggapan per item${rows ? ' di bawah ini' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (1 === min && 5000 === max) {\n          return 'Pilih semua yang berlaku:'\n        } else if (min === max) {\n          return `Silakan pilih ${1 !== min ? 'setiap' : 'hanya'} ${min} tanggapan per item${\n            rows ? ' di bawah ini' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Pilih minimal ${min} tanggapan dan maksimal ${max} per item${rows ? ' di bawah ini' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Pilih minimal ${min} tanggapan per item${rows ? ' di bawah ini' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Pilih maksimal ${max} tanggapan per item${rows ? ' di bawah ini' : ''}:`\n        } else {\n          return 'Pilih semua yang berlaku:'\n        }\n      }\n    },\n    sh: {\n      note: 'Klik produk untuk memperbesar dan menambahkan ke keranjang virtual jika Anda akan membelinya di toko',\n      amazonNote: 'Klik produk untuk memperbesar dan menambahkan ke keranjang virtual Anda.',\n      fullCart: 'Keranjang Anda penuh!',\n      qty: 'JUMLAH',\n      addToCart: 'MASUKKAN KE KERANJANG',\n      each: 'setiap',\n      items: 'item',\n      deleteFromCart: 'HAPUS',\n      emptyCard: 'Keranjang Anda kosong',\n      total: 'Keranjang',\n      clearCart: 'Kosongkan keranjang',\n      backToStore: 'Kembali ke toko',\n      next: 'BERIKUT',\n      na: 'Tidak satu pun dari yang di atas',\n      maxCartCountError: max => `Tambahkan maksimal ${max} produk ke keranjang Anda`,\n      scrollError: `Gulir sepenuhnya ke kiri dan kanan untuk melanjutkan survei. `,\n      maxSpentError: max => `Lakukan pembelanjaan maksimal ${max}.`,\n      maxProductCountError: max => `Tambahkan maksimal ${max} kuota ke keranjang Anda untuk setiap produk.`\n    },\n    rb: {\n      note: 'Silahkan pilih hanya 1 item:'\n    },\n    vo: {\n      note: 'Silakan tonton videonya sampai akhir'\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `Mohon pilih ${min} item ${1 !== min ? 'yang mana saja' : 'saja'}:`\n        } else if (min > 0 && max < 5000) {\n          return `Mohon pilih paling tidak ${min} item tetapi tidak lebih dari ${max}:`\n        } else if (5000 === max && min > 0) {\n          return `Mohon pilih paling tidak ${min} item:`\n        } else if (0 === min && max < 5000) {\n          return `Mohon pilih tidak lebih dari ${max} item:`\n        } else {\n          return 'Pilih semua yang berlaku:'\n        }\n      }\n    },\n    oe: {\n      na: 'Tak dapat diterapkan',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Mohon ketikkan ${min} karakter ${1 !== min ? 'yang mana saja' : 'saja'}${\n            optional ? ' (opsional)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Mohon ketikkan paling tidak ${min} karakter tetapi tidak lebih dari ${max}${\n            optional ? ' (opsional)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Mohon ketikkan paling tidak ${min} karakter${optional ? ' (opsional)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Mohon ketikkan tidak lebih dari ${max}${optional ? ' (opsional)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Silakan isi kolom-kolom berikut ini:'\n    },\n    mx: {\n      note: 'Gerakkan slider yang disoroti untuk melanjutkan',\n      dragSlider: 'Tarik ke kiri atau kanan untuk menjawab'\n    },\n    psc: {\n      dragLeftRight: 'Tarik ke kiri atau kanan untuk menjawab'\n    },\n    ps: {\n      note: value => `Mohon distribusikan  ${value} yang tersisa di antara item-item di bawah ini`,\n      allDone: 'Selesai!',\n      total: `Total:`,\n      dragSlider: 'Tarik ke kiri atau kanan untuk menjawab'\n    },\n    cx: {\n      note: 'Buka dropbox dan mulailah ketikkan jawaban Anda untuk bergulir otomatis atau pilih secara manual.'\n    },\n    ro: {\n      note: 'Tarik ke atas atau ke bawah untuk mengubah urutannya:'\n    },\n    md: {\n      note1: 'Silakan klik/ketuk item pilihan pertama Anda<br/>Klik/ketuk lagi untuk menghapus pilihan.',\n      note2: 'Sekarang silakan klik/ketuk item pilihan terakhir Anda<br/>Klik/ketuk lagi untuk menghapus pilihan.',\n      note3:\n        'Terima kasih! Lanjutkan ke pertanyaan berikutnya<br/>atau klik/ketuk item yang tidak dipilih untuk memulai kembali.'\n    },\n    aro: {\n      note: 'Silakan pilih satu item untuk setiap pasang.'\n    },\n    wd: {\n      note: 'Pastikan setiap nilai yang berikutnya lebih besar dari nilai yang sebelumnya.'\n    },\n    emd: {\n      note: 'Silakan tonton videonya sampai akhir',\n      noAnswers: 'Tidak ada pilihan jawaban, silakan klik berikutnya untuk melanjutkan.',\n      start: 'Klik dan tahan untuk memulai',\n      resume: 'Klik dan tahan untuk melanjutkan',\n      continue: 'Anda sudah siap! <br />Klik berikutnya untuk melanjutkan',\n      continueMobile: 'Anda siap! <br /> Klik DI SINI untuk melanjutkan',\n      training: {\n        session: 'sesi Pelatihan',\n        note: 'Selesaikan pelatihan',\n        moveLeft: 'Seret tombol ke kiri',\n        moveBottom: 'Seret tombol ke bawah',\n        moveRight: 'Sekarang, seret tombol ke kanan',\n        moveTop: 'Sekarang, seret tombol ke atas',\n        success: 'Kerja bagus!'\n      }\n    },\n    sft: {\n      noAnswers: 'Tidak ada pilihan jawaban, silakan klik berikutnya untuk melanjutkan.',\n      note: 'Jawab secepat mungkin dengan jawaban yang secara intuitif dianggap benar',\n      finish: 'Anda sudah selesai! <br /> Klik Berikutnya untuk melanjutkan',\n      training: {\n        start:\n          '<p>Pertanyaan ini akan menunjukkan kata-kata yang berbeda secara cepat dan membutuhkan konsentrasi Anda. ' +\n          'Anda harus bereaksi secepat mungkin untuk menjawabnya. </p> <p>Siap berlatih?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Ketuk \"{buttonLeft}\"`\n            : (mouse ? `Klik \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Tekan tombol \"{keyBtnLeft}\"` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Ketuk \"{buttonRight}\"`\n            : (mouse ? `Klik \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Tekan tombol \"{keyBtnRight}\"` : ''),\n        fail: () => 'Terlalu lambat',\n        success: () => 'Bagus!',\n        finish: () =>\n          '<p><strong> Luar biasa!</strong></p><p>Pastikan Anda tidak akan terganggu dalam 2-3 menit ke depan<br />' +\n          'dalam 2-3 menit ke depan</p><p>Klik Berikutnya untuk memulai jika sudah siap.</p>'\n      },\n      buttons: {\n        start: 'Mulai',\n        yesno: {\n          left: 'Ya',\n          right: 'Tidak'\n        },\n        matches: {\n          left: 'Cocok',\n          right: 'Tidak Cocok'\n        },\n        fits: {\n          left: 'Pas',\n          right: 'Tidak Pas'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Nessuna opzione di risposta, clicca per continuare.',\n    placeholder: 'Specifichi...',\n    pleaseSelect: 'Effettui una selezione...',\n    rotateLandscape: 'Ruota il telefono dalla modalità verticale a quella orizzontale per continuare.',\n    rotatePortrait: 'Ruota il telefono dalla modalità orizzontale a quella verticale per continuare.',\n    ir: {\n      selectWebCam: 'Seleziona la webcam (se disponibile) o fai clic su \"sfoglia\" per caricare dal tuo profilo',\n      noWebCam: 'Nessuna webcam rilevata',\n      accessCamUpload: 'ACCEDI ALLA FOTOCAMERA/CARICAMENTO',\n      browse: 'SFOGLIA',\n      uploadPhoto: 'Carica una foto',\n      instead: 'invece',\n      capture: 'SCATTA',\n      somethingWrong: 'Spiacenti, si è verificato un errore. Riprova più tardi',\n      couldntRead: 'Spiacenti, non è possibile leggere il codice!',\n      couldntProcess: 'Spiacenti, non abbiamo potuto elaborare la tua immagine!',\n      moveOn: 'Riprova o invia la tua foto e prosegui',\n      tryAgain: 'Riprova',\n      dataReceived: 'Dati ricevuti!',\n      enterManually: 'Riprova o inserisci i dati manualmente qui di seguito',\n      positionQR:\n        'Posiziona il codice QR davanti alla tua fotocamera in modo che rientri nella cornice rossa o caricala dal tuo computer.',\n      analyzing: \"Stiamo analizzando l'immagine, attendi prego\",\n      submit: 'INVIA',\n      startOver: 'Inizia da capo',\n      allDone: 'Fatto!',\n      cantAnalyze:\n        'Attenzione: non è possibile visualizzare questa immagine. Prova a inviarla di nuovo o scegli un formato immagine più generico (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Purtroppo questo formato di file non è supportato. Carica un tipo di immagine supportato (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Nessuna webcam rilevata',\n      uploadVideo: 'Carica un video',\n      skip: 'Saltare?',\n      accessCamUpload: 'ACCEDI ALLA FOTOCAMERA/CARICAMENTO',\n      browse: 'SFOGLIA',\n      instead: 'invece',\n      or: 'o',\n      stopRecording: 'Sospendi la registrazione',\n      willBeStopped: \"La registrazione s'interromperà al quinto minuto.\",\n      stopOnDone: 'Smetti di registrare quando hai finito!',\n      record: 'REGISTRA',\n      somethingWrong: 'Spiacenti, si è verificato un errore. Riprova più tardi',\n      microphone: 'Microfono',\n      camera: 'Telecamera',\n      selectMicrophone: 'Seleziona il microfono',\n      selectCam: 'Seleziona la fotocamera',\n      upload: 'Carica',\n      playback: 'PLAYBACK',\n      stopPlayback: 'INTERROMPERE',\n      submit: 'INVIA',\n      startOver: 'Inizia da capo',\n      allDone: 'Fatto!',\n      alternativeRecordSpan: 'Carica un videoclip dal tuo computer o dispositivo.<br/> In alternativa,  &nbsp;',\n      alrenativeRecordHref: 'potrai registrare il video con una webcam.',\n      cantAnalyze:\n        'Attenzione: non è possibile visualizzare questo video. Prova a inviarlo di nuovo o scegli un formato video più generico (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Purtroppo questo formato di file non è supportato. Carica un tipo di video supportato (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'SCEGLI',\n      pleaseChoose: 'Seleziona',\n      this: 'QUESTO',\n      one: 'uno',\n      myChoice: 'La mia SCELTA'\n    },\n    hm: {\n      addComment: 'Aggiungi un commento di seguito',\n      commentMandatoryPlaceHolder: 'Aggiungi commento obbligatorio… ',\n      commentOptionalPlaceHolder: 'Aggiungi commento facoltativo…',\n      dragPin: 'Trascina per riposizionare (tieni premuto il pulsante del mouse/tocca per collocare precisamente). ',\n      removePin: \"Trascina all'esterno dell'immaginare per eliminare. \",\n      editComment: 'Clicca/tocca la puntina per modificare il commento. ',\n      addPin: \"Trascina la puntina fuori dal pannello di seguito e fissala a un punto a tua scelta dell'immagine. \",\n      addPins: \"Trascina le puntine fuori dal pannello di seguito e fissale a un punto a tua scelta dell'immagine. \",\n      leavePins: (minPoints, maxPoints) =>\n        `Per favore, metti almeno ${minPoints}, ma non oltre ${maxPoints} puntine di ogni tipo. `,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `Per favore, metti almeno ${minPoints}, ma non oltre ${maxPoints} puntine. `,\n      leavePinsWithOff: maxPoints =>\n        `Per favore, metti al massimo ${maxPoints} puntine di ogni tipo o clicca su \"Avanti\" per saltare. `,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Per favore, metti al massimo ${maxPoints} puntine o clicca su \"Avanti\" per saltare. `,\n      leavePinWithOff: 'Per favore, metti al massimo 1 puntina di ogni tipo o clicca su \"Avanti\" per saltare. ',\n      leavePinPerPageWithOff: 'Per favore, metti al massimo 1 puntina o clicca su \"Avanti\" per saltare. ',\n      leaveExactlyPin: 'Per favore, metti 1 puntina di ogni tipo. ',\n      leaveExactlyPinPerPage: 'Per favore, metti 1 puntina. ',\n      leaveExactlyPins: maxPoints => `Per favore, metti ${maxPoints} puntine di ogni tipo. `,\n      leaveExactlyPinsPerPage: maxPoints => `Per favore, metti ${maxPoints} puntine. `,\n      leaveComment: \"Digita sotto l'immagine per lasciare un commento. \",\n      noAnswers: 'Nessuna opzione di risposta, clicca su \"Avanti\" per proseguire.',\n      outOfPins: 'Hai finito le puntine',\n      pinsBehavior:\n        \"Man mano che ti sposti sull'immagine, vedrai aree che verranno evidenziate rilasciando un singolo segnaposto.\",\n      clustersOnly: 'Potrai posizionare i segnaposto solo in queste aree evidenziate.',\n      contentAware: \"È possibile rilasciare i segnaposti all'interno o all'esterno delle aree evidenziate.\"\n    },\n    mp: {\n      expand_note: \"Clicca sull'immagine, o passaci sopra con il cursore del mouse, per ingrandirla\",\n      rb_note: rows => `Seleziona solo 1 risposta per ogni voce${rows ? ' sottostante' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (1 === min && 5000 === max) {\n          return 'Seleziona tutte le opzioni pertinenti:'\n        } else if (min === max) {\n          return `Seleziona ${1 !== min ? 'almeno' : 'solo'} ${min} rispost${\n            1 !== min ? 'e' : 'a'\n          } per ciascun articolo${rows ? ' qui sotto' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Seleziona almeno ${min} rispost${1 !== min ? 'e' : 'a'} ma non più di ${max} per ciascun articolo${\n            rows ? ' qui sotto' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Seleziona almeno ${min} rispost${1 !== min ? 'e' : 'a'} per ciascun articolo${\n            rows ? ' qui sotto' : ''\n          }:`\n        } else if (0 === min && max < 5000) {\n          return `Seleziona non più di ${max} rispost${1 !== max ? 'e' : 'a'} per ciascun articolo${\n            rows ? ' qui sotto' : ''\n          }:`\n        } else {\n          return 'Selezioni tutte le opzioni pertinenti:'\n        }\n      }\n    },\n    sh: {\n      note: 'Clicca su un prodotto per ingrandirlo e inseriscilo nel tuo carrello virtuale se lo acquisteresti in negozio',\n      amazonNote: 'Clicca su un prodotto per allargare e aggiungere al tuo carrello virtuale.',\n      fullCart: 'Il tuo carrello è pieno!',\n      qty: 'QUANT.',\n      addToCart: 'AGGIUNGI AL CARRELLO',\n      deleteFromCart: 'ELIMINA',\n      emptyCard: 'Il tuo carrello è vuoto',\n      each: 'ogni',\n      items: 'elementi',\n      total: 'Carrello',\n      clearCart: 'Svuota il carrello',\n      backToStore: 'Torna al negozio',\n      na: 'Nessuno dei precedenti',\n      next: 'AVANTI',\n      maxCartCountError: max => `Non aggiungere più di ${max} prodotti al tuo carrello`,\n      scrollError: `Scorri completamente verso sinistra e a destra per procedere con il sondaggio. `,\n      maxSpentError: max => `Non spendere più di ${max}.`,\n      maxProductCountError: max => `Aggiungi al carrello una quantità non superiore a ${max} per ogni prodotto.`\n    },\n    rb: {\n      note: 'Selezioni solo 1 voce:'\n    },\n    vo: {\n      note: 'Per favore, guarda il video fino alla fine'\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `Selezioni ${1 !== min ? 'tutto' : 'solo'} ${min} voc${1 !== min ? 'e' : 'i'}:`\n        } else if (min > 0 && max < 5000) {\n          return `Selezioni almeno ${min} voc${1 !== min ? 'e' : 'i'} ma non più di ${max}:`\n        } else if (5000 === max && min > 0) {\n          return `Selezioni almeno ${min} voc${1 !== min ? 'e' : 'i'}:`\n        } else if (0 === min && max < 5000) {\n          return `Selezioni non più di ${max} voc${1 !== max ? 'e' : 'i'}:`\n        } else {\n          return 'Selezioni tutte le opzioni pertinenti:'\n        }\n      }\n    },\n    oe: {\n      na: 'Non applicabile',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Digiti ${1 !== min ? 'tutto' : 'esattamente'} ${min} caratteri${optional ? ' (opzionale)' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Digiti almeno ${min} caratteri, ma non più di ${max}${optional ? ' (opzionale)' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Digiti almeno ${min} caratteri${optional ? ' (opzionale)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Digiti non più di ${max} caratteri${1 !== min ? 's' : ''}${optional ? ' (opzionale)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Compila i seguenti campi:'\n    },\n    mx: {\n      note: 'Sposta i cursori evidenziati per continuare',\n      dragSlider: 'Per rispondere, trascini la selezione a sinistra o a destra.'\n    },\n    psc: {\n      dragLeftRight: 'Per rispondere, trascini la selezione a sinistra o a destra.'\n    },\n    ps: {\n      note: value => `Distribuisca i rimanenti ${value} tra gli articoli elencati di seguito.`,\n      allDone: 'Fatto!',\n      total: `Totale:`,\n      dragSlider: 'Per rispondere, trascini la selezione a sinistra o a destra.'\n    },\n    cx: {\n      note: 'Cominci a digitare la Sua risposta per attivare lo scorrimento automatico oppure effettui la selezione manualmente.'\n    },\n    ro: {\n      note: \"Per modificare l'ordine, trascinare in alto o in basso:\"\n    },\n    md: {\n      note1:\n        \"Clicca/tocca l'elemento che costituisce la tua prima scelta<br/>Clicca/tocca di nuovo per annullare la selezione.\",\n      note2:\n        \"Ora clicca/tocca l'elemento che costituisce la tua ultima scelta<br/>Clicca/tocca di nuovo per annullare la selezione.\",\n      note3:\n        'Grazie! Prosegui andando alla prossima domanda<br/>o clicca/tocca un elemento non selezionato per ricominciare.'\n    },\n    aro: {\n      note: 'Sceglie una voce per ogni coppia.'\n    },\n    wd: {\n      note: 'Assicurati che ogni valore successivo sia superiore a quello precedente.'\n    },\n    emd: {\n      note: 'Per favore, guarda il video fino alla fine',\n      noAnswers: 'Nessuna opzione di risposta, clicca per continuare.',\n      start: 'Clicca e tieni premuto per avviare',\n      resume: 'Clicca e tieni premuto per riprendere',\n      continue: 'Sei pronto! <br /> Clicca su Avanti per continuare',\n      continueMobile: 'Sei pronto! <br /> Clicca QUI per continuare',\n      training: {\n        session: 'sessione di adestramento',\n        note: \"Concludi l'apprendimento\",\n        moveLeft: 'Trascina il quadrante completamente a sinistra',\n        moveBottom: 'Trascina il quadrante fino al punto più basso',\n        moveRight: 'Adesso trascina il quadrante completamente a destra',\n        moveTop: 'Adesso trascina il quadrante fino al punto più alto',\n        success: 'Ottimo lavoro!'\n      }\n    },\n    sft: {\n      noAnswers: 'Nessuna opzione di risposta, clicca per continuare.',\n      note: 'Rispondi nel più breve tempo possibile, nel modo che intuitivamente ti sembra corretto',\n      finish: 'Hai finito! <br /> Clicca su Avanti per continuare',\n      training: {\n        start:\n          '<p>Questa domanda ti mostrerà diverse parole in rapida sequenza e richiederà concentrazione da parte tua. ' +\n          'Per rispondere dovrai reagire velocemente. </p> <p> Sei pronto per esercitarti?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Tocca \"{buttonLeft}\"`\n            : (mouse ? `Clicca \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Premi il tasto \"{keyBtnLeft}\"` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Tocca \"{buttonRight}\"`\n            : (mouse ? `Clicca \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Premi il tasto \"{keyBtnRight}\"` : ''),\n        fail: () => 'Troppo lento',\n        success: () => 'Ottimo!',\n        finish: () =>\n          '<p><strong> Eccellente!</strong></p><p>Assicurati di non distrarti <br />' +\n          'nei prossimi 2-3 minuti. </p><p>Quando sei pronto, clicca su Avanti per iniziare.</p>'\n      },\n      buttons: {\n        start: 'Inizia',\n        yesno: {\n          left: 'Sì',\n          right: 'No'\n        },\n        matches: {\n          left: 'Corrisponde',\n          right: 'Non corrisponde'\n        },\n        fits: {\n          left: 'Si adatta',\n          right: 'Non si adatta'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: '回答オプションがありません。次へをクリックして続行してください。',\n    placeholder: '入力してください:',\n    pleaseSelect: '以下を選択してください:',\n    rotateLandscape: 'お使いの端末を縦から横に回転させてください。',\n    rotatePortrait: 'お使いの端末を横から縦に回転させてください。',\n    ir: {\n      selectWebCam:\n        'ウェブカメラ(利用可能な場合)を選択するか「参照」をクリックしてデバイスからアップロードしてください',\n      noWebCam: 'ウェブカメラが検出されませんでした',\n      accessCamUpload: 'カメラにアクセス/アップロード',\n      browse: '参照',\n      uploadPhoto: '写真をアップロード',\n      instead: '(代替)',\n      capture: 'キャプチャ',\n      somethingWrong: '申し訳ありませんがエラーが発生しました。 しばらくしてから再度お試しください',\n      couldntRead: '申し訳ありませんが、コードを読み取ることができませんでした。',\n      couldntProcess: '申し訳ありませんが、画像を処理できませんでした。',\n      moveOn: 'もう一度やり直すか写真を投稿してください',\n      tryAgain: 'もう一度お試しください',\n      dataReceived: 'データを受信しました!',\n      enterManually: 'もう一度お試しいただくか下記に情報を手動で入力してください',\n      positionQR: 'カメラの前にQRコードを配置して赤い枠組みに合わせるか、コンピュータからアップロードしてください。',\n      analyzing: '画像の解析中です。お待ちください',\n      submit: '送信',\n      startOver: '撮り直す',\n      allDone: '終了です!',\n      cantAnalyze:\n        'ご注意 - この画像はレンダリングできませんでした。再送信するか、より一般的な画像形式(JPG、PNG、GIF、BMP)を選択してください',\n      wrongFormat:\n        '申し訳ありませんが、このファイル形式はサポートされていません。サポートされている画像タイプ(JPG、PNG、GIF、BMP、TIFF、PDF、SVG)をアップロードしてください'\n    },\n    vr: {\n      noWebCam: 'ウェブカメラが検出されませんでした',\n      uploadVideo: '動画をアップロード',\n      skip: 'スキップしますか?',\n      accessCamUpload: 'カメラにアクセス/アップロード',\n      browse: '参照',\n      instead: '(代替)',\n      or: 'または',\n      stopRecording: '録画を停止する',\n      willBeStopped: '録画は5分後に停止します',\n      stopOnDone: '回答を終えたら録画を停止してください。',\n      record: 'レコーディング',\n      somethingWrong: '申し訳ありませんがエラーが発生しました。 しばらくしてから再度お試しください',\n      microphone: 'マイクロフォン',\n      camera: 'ウェブカメラ',\n      selectMicrophone: 'マイクを選択します',\n      selectCam: 'ウェブカメラを選択します',\n      upload: 'アップロード',\n      playback: '再生',\n      stopPlayback: '再生を停止',\n      submit: '送信',\n      startOver: '撮り直す',\n      allDone: '終了です!',\n      alternativeRecordSpan: 'お使いのコンピュータからビデオをアップロードしてください。<br/>',\n      alrenativeRecordHref: 'Webカメラを使って録画することもできます',\n      cantAnalyze:\n        'ご注意 - この動画はレンダリングできませんでした。再送信するか、より一般的な画像形式(JPG、PNG、GIF、BMP)を選択してください',\n      wrongFormat:\n        '申し訳ありませんが、このファイル形式はサポートされていません。再送信するか、より一般的な動画形式(MP4、M4V、WEBPM)を選択してください'\n    },\n    cjc: {\n      choose: '選択',\n      pleaseChoose: '選択:',\n      this: 'こちら',\n      one: 'の項目',\n      myChoice: 'これにする'\n    },\n    hm: {\n      addComment: '下にコメントを追加してください。',\n      commentMandatoryPlaceHolder: '必須のコメントを追加してください... ',\n      commentOptionalPlaceHolder: '任意のコメントを追加してください... ',\n      dragPin: '位置を変えたい場合ピンをドラッグしてください(長押しのクリック・タップしたら精密な位置)。 ',\n      removePin: '画像以外のエリアにドラッグしたらピンを消せます。 ',\n      editComment: 'ピンをクリック/タップしてコメントを編集します。 ',\n      addPin: '下のパネルからピンをドラッグして選びたい部分にピンをドロップしてください。',\n      addPins: '下のパネルから複数のピンをドラッグして、画像上のお好きな場所にドロップしてください。 ',\n      leavePins: (minPoints, maxPoints) => `各種のピンを${minPoints}個以上${maxPoints}個以下にしてください。`,\n      leavePinsPerPage: (minPoints, maxPoints) => `ピンを${minPoints}個以上${maxPoints}個以下にしてください。`,\n      leavePinsWithOff: maxPoints => `各種のピンを最大${maxPoints}個残し、[次へ]をクリックしてスキップします。 `,\n      leavePinsPerPageWithOff: maxPoints =>\n        `それぞれのピンを最大 ${maxPoints}つのピンをドロップしてください。スキップしたい場合「次へ」をクリックしてください。 `,\n      leavePinWithOff: '各種のピンを1個だけ残し、[次へ]をクリックしてスキップします。 ',\n      leavePinPerPageWithOff: `ピンを最大1個残し、[次へ]をクリックしてスキップします。`,\n      leaveExactlyPin: '各種のピンを1個残してください。 ',\n      leaveExactlyPinPerPage: 'ピンを1個残してください。 ',\n      leaveExactlyPins: maxPoints => `各種のピンを最大${maxPoints}個残してください。 `,\n      leaveExactlyPinsPerPage: maxPoints => `最大${maxPoints}個のピンを残してください。`,\n      leaveComment: '画像の下に入力してコメントを残します。 ',\n      noAnswers: '回答のオプションがありません。[次へ]をクリックして続行してください。',\n      outOfPins: 'ピンがない',\n      pinsBehavior: '画像を横切って移動すると、1つのピンドロップでハイライトされたエリアが現れます。',\n      clusters: 'それらのハイライトされたエリアのみにピンを置くことができます。',\n      contentAware: 'ハイライトされたエリアの内側または外側にピンをドロップできます。'\n    },\n    mp: {\n      expand_note: 'カーソルを合わせるか、画像をクリックして展開してください',\n      rb_note: _rows => '以下の項目について{X}個の回答を選択してください: ',\n      cb_note: (min, max, _rows) => {\n        if (1 === min && 5000 === max) {\n          return '該当するものをすべてチェックしてください:'\n        } else if (min === max) {\n          return `以下の項目について${min}個の回答のみを選択してください`\n        } else if (min > 0 && max < 5000) {\n          return `選択肢の中から当てはまるものを、1つの項目につき${min}つ) 〜${max}つ選んでください:`\n        } else if (5000 === max && min > 0) {\n          return `選択肢の中から当てはまるものを、1つの項目につき少なくとも ${min}つ 選んでくださ:`\n        } else if (0 === min && max < 5000) {\n          return `選択肢の中から当てはまるものを、1つの項目につき最大${max}つまで 選んでください:`\n        } else {\n          return '該当するものをすべてチェックしてください:'\n        }\n      }\n    },\n    sh: {\n      note: '商品をクリックしてズームインし、ストアで購入する場合は仮想カートに追加します',\n      amazonNote: '製品をクリックしてズームインし、仮想カートに追加します',\n      fullCart: 'カートがいっぱいです!',\n      qty: '数量',\n      addToCart: 'カートに追加',\n      each: '各',\n      items: 'アイテム',\n      deleteFromCart: '削除',\n      next: '次へ',\n      emptyCard: 'カートが空です',\n      total: 'カート',\n      clearCart: 'カートを空にする',\n      backToStore: 'ストアに戻る',\n      na: 'あてはまるものはない',\n      maxCartCountError: max => `カートに追加する製品は、${max} 個以下にしてください`,\n      scrollError: `アンケートで先に進むには、完全に左右にスクロールするようにしてください。 `,\n      maxSpentError: max => `費やすのは、${max} 以下にしてください。`,\n      maxProductCountError: max => `カートに追加するのは、製品あたり${max}個以下にしてください。`\n    },\n    rb: {\n      note: '回答を 1 つだけ選択してください: '\n    },\n    vo: {\n      note: '最後まで動画をご覧ください。'\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `${min}つ選択してください:`\n        } else if (min > 0 && max < 5000) {\n          return `1行につき${min}つ以上${max}つまで選択してください:`\n        } else if (5000 === max && min > 0) {\n          return `${min}つ以上選択してください:`\n        } else if (0 === min && max < 5000) {\n          return `${max}つまで選択してください:`\n        } else {\n          return '該当するものをすべてチェックしてください:'\n        }\n      }\n    },\n    oe: {\n      na: '適用できない',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `${1 !== min ? 'いずれか' : 'ちょうど'}${min}文字 で入力してください${\n            optional ? ' (オプション)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `${min}文字 以上${max}文字以内で入力してください${optional ? ' (オプション)' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `${min}文字 以上で入力してください${optional ? ' (オプション)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `${max}文字 以内で入力してください${optional ? ' (オプション)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: '次のフィールドに入力してください:'\n    },\n    mx: {\n      note: '強調表示されたスライダを移動して続行してください',\n      dragSlider: '右か左にドラッグして回答してくださいr'\n    },\n    psc: {\n      dragLeftRight: '右か左にドラッグして回答してくださいr'\n    },\n    ps: {\n      note: value => `残りの ${value} を以下の項目に配分してください`,\n      allDone: '終了です!',\n      total: `合計:`,\n      dragSlider: '右か左にドラッグして回答してくださいr'\n    },\n    cx: {\n      note: 'ドロップボックスを開いて回答を入力し、自動スクロールまたは手動で選択してください'\n    },\n    ro: {\n      note: '上下にドラッグして並び替えてください:'\n    },\n    md: {\n      note1: '最初に選択する項目をクリック/タップしてください。もう一度クリック/タップして選択を解除します。',\n      note2: '次は、最後に選択する項目をクリック/タップしてください。もう一度クリック/タップして選択を解除します。',\n      note3: 'ありがとうございます!次の質問に進むか、最初からやり直すには選択されていない項目をクリック/タップます。'\n    },\n    aro: {\n      note: '各組から1つ選択してください。'\n    },\n    wd: {\n      note: '後の値が前の値よりも大きくなるようにしてください。'\n    },\n    emd: {\n      note: '最後まで動画をご覧ください。',\n      noAnswers: '回答オプションがありません。次へをクリックして続行してください。',\n      start: '開始するには、クリックして長押しします',\n      resume: '再開するには、クリックして長押しします',\n      continue: '準備完了です! <br />[次へ]をクリックして続行します',\n      continueMobile: '準備ができました!<br /> ここをクリックして続行',\n      training: {\n        session: 'トレーニングセッション',\n        note: 'トレーニングを終了してください',\n        moveLeft: 'ダイヤルを左端までドラッグしてください',\n        moveBottom: 'ダイヤルを一番下までドラッグしてください',\n        moveRight: '次に、ダイヤルを右端までドラッグしてください',\n        moveTop: '次に、ダイヤルを一番上までドラッグしてください',\n        success: '上出来です'\n      }\n    },\n    sft: {\n      noAnswers: '回答オプションがありません。次へをクリックして続行してください。',\n      note: '直感的に正しいと思える答えをできるだけ早く回答してください',\n      finish: 'これですべて完了です!<br/ >[次へ]をクリックして続行します',\n      training: {\n        start:\n          '<p>この質問では異なる言葉が素早く表示されるので、集中力が要されます。 ' +\n          '回答するには、迅速に反応する必要があります</p> <p>練習の準備ができましたか?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `\"{buttonLeft}\" をタップします`\n            : (mouse ? `\"{buttonLeft}\" をクリックします` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `「F」キーを押します` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `\"{buttonRight}\" をタップします`\n            : (mouse ? `\"{buttonRight}\" をクリックします` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `「J」キーを押します` : ''),\n        fail: () => '遅すぎます',\n        success: () => 'ばっちりです!',\n        finish: () =>\n          '<p><strong> 素晴らしい!</strong></p><p>次の2〜3分は気が散らないようにしてください</p><p>準備ができたら、[次へ]をクリックして開始します.</p>'\n      },\n      buttons: {\n        start: '開始',\n        yesno: {\n          left: 'はい',\n          right: 'いいえ'\n        },\n        matches: {\n          left: '一致します',\n          right: '一致しません'\n        },\n        fits: {\n          left: 'フィットします',\n          right: 'フィットしません'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: '답변 옵션이 없습니다. 계속하려면 다음을 클릭하세요.',\n    placeholder: '기입해주십시오…',\n    pleaseSelect: '선택해주십시오…',\n    rotateLandscape: '휴대폰을 세로에서 가로로 회전하십시오.',\n    rotatePortrait: '휴대폰을 가로에서 세로로 회전하십시오.',\n    ir: {\n      selectWebCam: \"웹캠(사용 가능한 경우)을 선택하거나 '검색'을 클릭하여 기기에서 업로드하세요\",\n      noWebCam: '웹캠을 찾을 수 없습니다',\n      accessCamUpload: '카메라 액세스/업로드',\n      browse: '검색',\n      uploadPhoto: '사진 업로드',\n      instead: '대신',\n      capture: '캡처',\n      somethingWrong: '죄송합니다, 문제가 발생했습니다. 나중에 다시 시도해 주세요',\n      couldntRead: '죄송합니다, 코드를 판독하지 못했습니다!',\n      couldntProcess: '죄송합니다, 이미지를 처리하지 못했습니다!',\n      moveOn: '다시 시도하시거나 사진을 제출하시고 계속 진행하세요',\n      tryAgain: '다시 시도해 주세요',\n      dataReceived: '데이터를 수신했습니다!',\n      enterManually: '다시 시도하시거나 아래에서 수동으로 데이터를 입력하세요',\n      positionQR: 'QR 코드를 빨간색 프레임 안에 들어오도록 카메라 앞에 배치하거나 컴퓨터에서 업로드해 주세요.',\n      analyzing: '이미지 분석 중입니다, 기댜려 주세요',\n      submit: '제출하기',\n      startOver: '다시 시작',\n      allDone: '완료!',\n      cantAnalyze:\n        '주의 - 이 이미지를 렌더링할 수 없습니다. 다시 제출하거나 더 일반적인 이미지 형식(JPG, PNG, GIF, BMP)을 선택하세요.',\n      wrongFormat:\n        '죄송합니다. 이 파일 형식은 지원하지 않습니다. 지원되는 이미지 유형(JPG, PNG, GIF, BMP, TIF, PDF, SVG)을 업로드하세요.'\n    },\n    vr: {\n      noWebCam: '웹캠을 찾을 수 없습니다',\n      uploadVideo: '비디오 업로드',\n      skip: '건너뛸까요?',\n      accessCamUpload: '카메라 액세스/업로드',\n      browse: '검색',\n      instead: '대신',\n      or: '또는',\n      stopRecording: '녹화 중지',\n      willBeStopped: '5분에 녹화가 멈출 것입니다.',\n      stopOnDone: '끝나면 촬영을 멈춰 주십시오!',\n      record: '기록하기',\n      somethingWrong: '죄송합니다, 문제가 발생했습니다. 나중에 다시 시도해 주세요',\n      microphone: '마이크로폰',\n      camera: '웹 카메라',\n      selectMicrophone: '마이크 선택',\n      selectCam: '웹 카메라 선택',\n      upload: '업로드',\n      playback: '다시 재생',\n      stopPlayback: '재생 중지',\n      submit: '제출하기',\n      startOver: '다시 시작',\n      allDone: '완료!',\n      alternativeRecordSpan: '컴퓨터 장치에서 당신의 영상을 업로드 해주십시오.<br/>',\n      alrenativeRecordHref: ' 당신의 웹캠으로 영상을 녹화할 수도 있습니다.',\n      cantAnalyze:\n        '주의 - 이 비디오를 렌더링할 수 없습니다. 다시 제출하거나 더 일반적인 동영상 형식(MP4, M4V, WEBPM)을 선택하세요.',\n      wrongFormat:\n        '죄송합니다. 이 파일 형식은 지원하지 않습니다. 지원되는 동영상 유형(MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)을 업로드하세요.'\n    },\n    cjc: {\n      choose: '선택',\n      pleaseChoose: '선택해 주세요',\n      this: '이것',\n      one: '하나',\n      myChoice: '내 선택'\n    },\n    hm: {\n      addComment: '아래에 의견을 추가해주세요 ',\n      commentMandatoryPlaceHolder: '필수 의견을 추가해주세요... ',\n      commentOptionalPlaceHolder: '선택 의견을 추가해주세요... ',\n      dragPin: '드래그해서 위치 조정(정밀하게 핀을 놓기 위한 긴 클릭/탭) ',\n      removePin: '이미지를 삭제하려면 바깥으로 드래그하세요. ',\n      editComment: '의견을 편집하려면 핀을 클릭/탭하세요. ',\n      addPin: '핀을 아래 패널에서 드래그한 후, 이미지에서 선택한 부분에 놓으세요. ',\n      addPins: '핀들을 아래의 패널에서 드래그한 후, 이미지에서 선택한 부분에 놓으세요. ',\n      leavePins: (minPoints, maxPoints) =>\n        `모든 종류의 핀은 최소 ${minPoints}개 남겨야 하지만 ${maxPoints}개 이상 남기면 안 됩니다. `,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `핀들은 최소 ${minPoints}개 남겨야 하지만 ${maxPoints}개 이상 남기면 안 됩니다. `,\n      leavePinsWithOff: maxPoints =>\n        `모든 종류의 핀은 ${maxPoints}개 이상 남기면 안 됩니다. 또는 다음을 클릭하여 건너뛰세요. `,\n      leavePinsPerPageWithOff: maxPoints =>\n        `핀들은 ${maxPoints}개 이상 남기면 안 됩니다. 또는 다음을 클릭하여 건너뛰세요. `,\n      leavePinWithOff: '모든 종류의 핀은 1개 이상 남기면 안 됩니다. 또는 다음을 클릭하여 건너뛰세요. ',\n      leavePinPerPageWithOff: '핀들은 {max}개 이상 남기면 안 됩니다. 또는 다음을 클릭하여 건너뛰세요. ',\n      leaveExactlyPin: '모든 종류의 핀을 1개 남겨주세요. ',\n      leaveExactlyPinPerPage: '핀을 1개 남겨주세요. ',\n      leaveExactlyPins: maxPoints => `모든 종류의 핀을 ${maxPoints}개 남겨주세요. `,\n      leaveExactlyPinsPerPage: maxPoints => ` 핀들을 ${maxPoints}개 남겨주세요. `,\n      leaveComment: '이미지 아래에 의견을 남겨주세요. ',\n      noAnswers: '응답 옵션이 없습니다. 다음을 클릭하여 계속해주세요. ',\n      outOfPins: '핀을 다 사용했습니다',\n      pinsBehavior: '이미지 위에서 움직일 경우 하나의 핀을 놓을 수 있는 강조 표시된 지역이 보일 겁니다.',\n      clusters: '이렇게 강조 표시된 지역에는 핀만 놓을 수 있습니다.',\n      contentAware: '강조 표시된 지역 안 또는 밖에 핀을 놓을 수 있습니다.'\n    },\n    mp: {\n      expand_note: '확대하려면 이미지 위로 마우스를 가져가거나 클릭하세요.',\n      rb_note: rows => `${rows ? '아래에서 ' : ''} 항목별로 1개의 응답만 선택하세요.`,\n      cb_note: (min, max, rows) => {\n        if (1 === min && 5000 === max) {\n          return '적용되는 모든 것을 체크해주세요:'\n        } else if (min === max) {\n          return `${rows ? '아래에서 ' : ''} 항목별로 ${min}개의 응${min !== 1 ? '답을' : '답만'}선택하세요:`\n        } else if (min > 0 && max < 5000) {\n          return `${rows ? '아래 각 ' : ''}항목에 대하여 ${min}개 이상, ${max}개 이하의 응답을 선택해 주세요:`\n        } else if (5000 === max && min > 0) {\n          return `${rows ? '아래 각 ' : ''}항목에 대하여 ${min}개 이상의 응답 을 선택해 주세요:`\n        } else if (0 === min && max < 5000) {\n          return `${rows ? '아래 각 ' : ''}항목에 대하여 ${max}개 이하의 응답을 선택해 주세요::`\n        } else {\n          return '적용되는 모든 것을 체크해주세요:'\n        }\n      }\n    },\n    sh: {\n      note: '확대하려면 제품을 클릭하고 스토어에서 구매하려면 가상 장바구니에 추가하세요.',\n      amazonNote: '제품을 클릭하여 확대하고 장바구니에 추가하세요',\n      fullCart: '장바구니가 가득 찼습니다!',\n      qty: '수량',\n      addToCart: '장바구니에 추가',\n      each: '각',\n      items: '항목',\n      deleteFromCart: '삭제',\n      next: '다음',\n      emptyCard: '장바구니가 비어 있습니다.',\n      total: '장바구니',\n      clearCart: '장바구니 비우기',\n      backToStore: '스토어로 돌아 가기',\n      na: '해당 사항 없음',\n      maxCartCountError: max => `장바구니에 제품을 ${max}개 이하로 추가하세요.`,\n      scrollError: `설문 조사를 진행하려면 좌우로 완전히 스크롤하세요. `,\n      maxSpentError: max => `${max} 이상 지출하지 마세요.. `,\n      maxProductCountError: max => `각 제품에 대해 장바구니에 ${max} 개 이상의 수량을 추가하지 마세요. `\n    },\n    rb: {\n      note: '오직 개의 아이템을 골라주십시오:'\n    },\n    vo: {\n      note: '영상이 끝날 때까지 시청해주세요'\n    },\n    cb: {\n      note: (min, max) => {\n        if (1 === min && 5000 === max) {\n          return '적용되는 모든 것을 체크해주세요:'\n        } else if (min === max) {\n          return `${min !== 1 ? '아무거나' : '오직'} ${min}개의 아이템을 골라주십시오:`\n        } else if (min > 0 && max < 5000) {\n          return `각 행당, 최소 ${min}개, ${max}개 이하의 아이템을 골라주십오:`\n        } else if (5000 === max && min > 0) {\n          return `각 행당, 최소 ${min}개 이하의 아이템을 골라주십오:`\n        } else if (0 === min && max < 5000) {\n          return `행에서 ${max}개를 넘지 않는 항목을 선택하십시오:`\n        } else {\n          return '적용되는 모든 것을 체크해주세요:'\n        }\n      }\n    },\n    oe: {\n      na: '해당 없음',\n      note: (min, max, _optional) => {\n        if (min === max) {\n          return `아무 ${min}글자를 입력해십시오.`\n        } else if (min > 0 && max < 5000) {\n          return `최소 ${min}, ${max}글자를 입력해주십시오.`\n        } else if (5000 === max && min > 0) {\n          return `최소 ${min}글자를 입력해주십시오.`\n        } else if (0 === min && max < 5000) {\n          return `${max}글자 이하로 입력해주십시오.`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: '다음 항목을 작성해 주세요:'\n    },\n    mx: {\n      note: '계속하려면 강조 표시된 슬라이더를 움직이세요',\n      dragSlider: '왼쪽이나 오른쪽으로 드래그해서 답해주십시오.'\n    },\n    psc: {\n      dragLeftRight: '왼쪽이나 오른쪽으로 드래그해서 답해주십시오.'\n    },\n    ps: {\n      note: value => `잔여 ${value} 를 아래에 있는 항목에 배분해 주십시오`,\n      allDone: '완료!',\n      total: `합계:`,\n      dragSlider: '왼쪽이나 오른쪽으로 드래그해서 답해주십시오.'\n    },\n    cx: {\n      note: '드롭박스를 열고 자동 스크롤할 답변을 입력하거나 수동으로 선택하십시오.'\n    },\n    ro: {\n      note: '위나 아래로 드래그해서 재주문:'\n    },\n    md: {\n      note1: '귀하의 첫 번째 선택 항목을 클릭/탭하세요 선택을 해제하려면 다시 클릭/탭하세요.',\n      note2: '이제 귀하의 마지막 선택 항목을 클릭/탭하세요 선택을 해제하려면 다시 클릭/탭하세요.',\n      note3: '감사합니다! 다음 질문을 계속하거나 다시 시작하시려면 선택하지 않은 항목을 클릭/탭하세요.'\n    },\n    aro: {\n      note: '각각 두개 중 하나를 골라주십시오.'\n    },\n    wd: {\n      note: '다음으로 나오는 값이 그 전 값보다 커야합니다.'\n    },\n    emd: {\n      note: '영상이 끝날 때까지 시청해주세요',\n      noAnswers: '답변 옵션이 없습니다. 계속하려면 다음을 클릭하세요.',\n      start: '시작하려면 길게 클릭하세요.',\n      resume: '다시 시작하려면 길게 클릭하세요.',\n      continue: '준비됐습니다! <br />계속하려면 다음을 클릭하세요.',\n      continueMobile: '준비되었습니다! <br /> 계속하려면 여기를 클릭하세요.',\n      training: {\n        session: '학습 세션',\n        note: '훈련을 마치세요.',\n        moveLeft: '다이얼을 왼쪽 끝까지 드래그하세요.',\n        moveBottom: '다이얼을 맨 아래로 드래그하세요.',\n        moveRight: '이제 다이얼을 오른쪽 끝까지 드래그하세요.',\n        moveTop: '이제 다이얼을 맨 위로 드래그하세요.',\n        success: '잘 하셨습니다!'\n      }\n    },\n    sft: {\n      noAnswers: '답변 옵션이 없습니다. 계속하려면 다음을 클릭하세요.',\n      note: '직관적으로 옳다고 생각되는 답변으로 최대한 빨리 답변해주세요.',\n      finish: '모두 완료되었습니다! 계속하려면 다음을 클릭하세요.',\n      training: {\n        start:\n          '<p>이것은 여러 단어를 빠르게 보여주는 문제이며 집중력이 필요합니다. ' +\n          '대답하려면 신속하게 대응해야 합니다. </p> <p>연습할 준비가 되셨나요?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `\"{buttonLeft}\" 을(를) 탭하세요.`\n            : (mouse ? `\"{buttonLeft}\" 을(를) 클릭하세요.` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `\"{keyBtnLeft}\" 키를 누르세요.` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `\"{buttonRight}\" 을(를) 탭하세요.`\n            : (mouse ? `\"{buttonRight}\" 을(를) 클릭하세요.` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `\"{keyBtnRight}\" 키를 누르세요.` : ''),\n        fail: () => '너무 느립니다.',\n        success: () => '훌륭합니다!',\n        finish: () =>\n          '<p><strong> 뛰어납니다!</strong></p><p>2~3분 동안 집중력을 잃지 않도록 주의하세요.</p><p>준비되면 다음을 클릭하여 시작하세요.</p>'\n      },\n      buttons: {\n        start: '시작하기',\n        yesno: {\n          left: '네',\n          right: '아니오'\n        },\n        matches: {\n          left: '일치시키기',\n          right: '일치하지 않음'\n        },\n        fits: {\n          left: '맞음',\n          right: '맞지 않음'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Tiada pilihan jawapan, sila klik seterusnya untuk meneruskan.',\n    placeholder: 'Sila nyatakan...',\n    pleaseSelect: 'Sila pilih…',\n    rotateLandscape: 'Putarkan telefon anda dari potret ke landskap untuk meneruskan.',\n    rotatePortrait: 'Putarkan telefon anda dari landskap ke potret untuk meneruskan.',\n    ir: {\n      selectWebCam: 'Pilih kamera web (jika tersedia) atau klik \"Layari\" untuk memuat naik dari peranti anda',\n      uploadOnly: \"Klik 'Layari' untuk memuat naik dari peranti anda\",\n      noWebCam: 'Tiada kamera web dikesan',\n      accessCamUpload: 'AKSES KAMERA/MUAT NAIK',\n      browse: 'LAYARI',\n      uploadPhoto: 'Muat naik foto',\n      camera: 'Kamera Web',\n      instead: 'sebaliknya',\n      capture: 'TANGKAP',\n      somethingWrong: 'Maaf, ada sesuatu yang tidak kena. Sila cuba lagi kemudian',\n      couldntRead: 'Maaf, kami tidak dapat membaca kod!',\n      couldntProcess: 'Maaf, kami tidak dapat memproses imej!',\n      inValidCode: 'Sila serahkan kod yang sah',\n      moveOn: 'Sila cuba lagi atau serahkan foto anda dan teruskan',\n      tryAgain: 'Sila cuba lagi',\n      dataReceived: 'Data diterima!',\n      enterManually: 'Sila cuba lagi atau masukkan data secara manual di bawah',\n      positionQR:\n        'Sila posisikan kod QR di depan kamera anda supaya ia muat dalam bingkai merah atau muat naik dari komputer anda.',\n      positionQRMobile:\n        'Sila posisikan kod QR di depan kamera anda supaya ia muat dalam bingkai merah atau muat naik dari komputer anda.',\n      analyzing: 'Menganalisis imej, sila tunggu',\n      submit: 'SERAH',\n      startOver: 'Mulakan semula',\n      allDone: 'Semua selesai!',\n      cantAnalyze:\n        'Perhatian - kami tidak dapat mengemas imej ini. Sila cuba menyerahkannya semula atau pilih format yang lebih generik (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Harap maaf - kami tidak menyokong format fail ini. Sila muat naik jenis imej yang disokong (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Tiada kamera web dikesan',\n      uploadVideo: 'Muat naik video',\n      skip: 'Langkau?',\n      accessCamUpload: 'AKSES KAMERA/MUAT NAIK',\n      browse: 'LAYARI',\n      instead: 'sebaliknya',\n      or: 'atau',\n      stopRecording: 'Hentikan rakaman',\n      willBeStopped: 'Rakaman akan berhenti selepas 5 minit',\n      stopOnDone: 'Hentikan rakaman apabila anda sudah selesai!',\n      record: 'RAKAM',\n      somethingWrong: 'Maaf, ada sesuatu yang tidak kena. Sila cuba lagi kemudian.',\n      dataReceived: 'Data diterima!',\n      microphone: 'mikrofon',\n      camera: 'Kamera Web',\n      selectMicrophone: 'Sila pilih mikrofon anda',\n      selectCam: 'Pilih kamera web anda',\n      submit: 'SERAH',\n      upload: 'Muat naik',\n      playback: 'Main semula',\n      stopPlayback: 'HENTIKAN MAIN BALIK',\n      startOver: 'Mulakan semula',\n      allDone: 'Semua selesai!',\n      alternativeRecordSpan: 'Sila muat naikklip video daripada peranti komputer anda. Secara alternatif, ',\n      alrenativeRecordHref: 'anda boleh merakam video dengan kamera web.',\n      cantAnalyze:\n        'Perhatian - kami tidak dapat mengemas video ini. Sila cuba menyerahkannya semula atau pilih format video yang lebih generik (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Harap maaf - kami tidak menyokong format fail ini. Sila muat naik jenis video yang disokong (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'PILIH',\n      pleaseChoose: 'Sila pilih',\n      this: 'YANG',\n      one: ' ini',\n      myChoice: 'PILIHAN SAYA'\n    },\n    hm: {\n      addComment: 'Sila tambah komen di bawah',\n      commentMandatoryPlaceHolder: 'Sila tambah komen yang diwajibkan… ',\n      commentOptionalPlaceHolder: 'Sila tambah komen pilihan…',\n      dragPin: 'Seret untuk memposisikan semula (klik/ketil lama untuk mengepin dengan tepat). ',\n      removePin: 'Seret ke luar imej untuk memadam. ',\n      editComment: 'Klik/ketik pin untuk mengedit komen. ',\n      addPin: 'Sila seret pin dari panel di bawah dan lepaskan pin di titik pilihan anda pada imej. ',\n      addPins: 'Sila seret pin dari panel di bawah dan lepaskan pin di titik pilihan anda pada imej. ',\n      leavePins: (minPoints, maxPoints) =>\n        `Sila biarkan sekurang-kurangnya ${minPoints}, tetapi tidak lebih daripada ${maxPoints} pin untuk setiap jenis. `,\n      leavePinsAny: (minPoints, maxPoints) =>\n        `Sila biarkan sekurang-kurangnya ${minPoints}, tetapi tidak lebih daripada ${maxPoints} pin pin daripada sebarang jenis. `,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `Sila biarkan sekurang-kurangnya ${minPoints}, tetapi tidak lebih daripada ${maxPoints} pin. `,\n      leavePinsWithOff: maxPoints =>\n        `Sila tinggalkan tidak lebih daripada ${maxPoints} pin untuk setiap jenis atau klik Seterusnya untuk melangkau. `,\n      leavePinsWithOffAny: maxPoints =>\n        `Sila tinggalkan tidak lebih daripada ${maxPoints} pin daripada sebarang jenis atau klik Seterusnya untuk melangkau. `,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Sila tinggalkan tidak lebih daripada ${maxPoints} pin atau klik Seterusnya untuk melangkau. `,\n      leavePinWithOff: `Sila tinggalkan tidak lebih daripada 1 pin untuk setiap jenis atau klik Seterusnya untuk melangkau. `,\n      leavePinWithOffAny: `Sila tinggalkan tidak lebih daripada 1 pin daripada sebarang jenis atau klik Seterusnya untuk melangkau. `,\n      leavePinPerPageWithOff: 'Sila tinggalkan tidak lebih daripada 1 pin atau klik Seterusnya untuk melangkau. ',\n      leaveExactlyPin: `Sila tinggalkan 1 pin untuk setiap jenis. `,\n      leaveExactlyPinAny: `Sila tinggalkan 1 pin pin daripada sebarang jenis. `,\n      leaveExactlyPinPerPage: 'Sila tinggalkan 1 pin. ',\n      leaveExactlyPins: maxPoints => `Sila tinggalkan ${maxPoints} pin untuk setiap jenis. `,\n      leaveExactlyPinsAny: maxPoints => `Sila tinggalkan ${maxPoints} pin pin daripada sebarang jenis. `,\n      leaveExactlyPinsPerPage: maxPoints => `Sila tinggalkan ${maxPoints} pin. `,\n      leaveComment: 'Taip di bawah imej untuk meninggalkan komen. ',\n      noAnswers: 'Tiada pilihan jawapan, sila klik seterusnya untuk meneruskan. ',\n      outOfPins: 'Anda kehabisan pin ',\n      pinsBehavior:\n        'Sambil anda bergerak merentasi imej, anda akan dapat melihat kawasan yang akan ditonjolkan dengan jatuhan pin tunggal.',\n      clusters: 'Anda hanya boleh meletakkan pin dalam kawasan ditonjolkan ini.',\n      contentAware: 'Anda boleh menjatuhkan pin di dalam atau di luar kawasan yang ditonjolkan.'\n    },\n    mp: {\n      expand_note: 'Sila layang atas imej atau klik pada imej untuk membesarkan',\n      rb_note: rows => `Sila pilih setepat-tepatnya 1 respons per item${rows ? ' di bawah' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (min === max) {\n          return `Sila pilih ${min !== 1 ? 'mana-mana' : 'setepat-tepatnya'} ${min} respons${\n            min !== 1 ? 's' : ''\n          } per item${rows ? ' di bawah' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Sila pilih sekurang-kurangnya ${min} respons${\n            min !== 1 ? 's' : ''\n          }, tetapi tidak lebih daripada ${max} per item${rows ? ' di bawah' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Sila pilih sekurang-kurangnya ${min} respons${min !== 1 ? 's' : ''} per item${\n            rows ? ' di bawah' : ''\n          }:`\n        } else if (0 === min && max < 5000) {\n          return `Sila pilih tidak lebih daripada ${max} respons${max !== 1 ? 's' : ''} per item${\n            rows ? ' di bawah' : ''\n          }:`\n        } else {\n          return 'Tandakan semua yang berkenaan:'\n        }\n      }\n    },\n    sh: {\n      note: 'Klik produk untuk mengezum masuk dan menambahnya kepada troli maya anda sekiranya anda tidak membelinya di kedai',\n      amazonNote:\n        'Klik produk untuk mengezum masuk dan menambahnya kepada troli maya anda sekiranya anda akan membelinya secara dalam talian',\n      fullCart: 'Troli anda penuh!',\n      qty: 'Kuantiti',\n      addToCart: 'TAMBAH KEPADA TROLI',\n      deleteFromCart: 'PADAM',\n      each: 'setiap satu',\n      items: 'barang',\n      emptyCard: 'Troli anda kosong',\n      total: 'Troli',\n      clearCart: 'Padam troli',\n      backToStore: 'Kembali ke kedai',\n      na: 'Tiada satu pun di atas',\n      next: 'SETERUSNYA',\n      maxCartCountError: max => `Sila tambah tidak lebih daripada ${max} produk kepada troli anda`,\n      scrollError: `Sila tatal ke kiri dan kanan sepenuhnya untuk meneruskan tinjauan.`,\n      maxSpentError: max => `Sila belanjakan tidak lebih daripada ${max}`,\n      maxProductCountError: max =>\n        `Sila tambah tidak lebih daripada kuantiti ${max} kepada troli anda untuk setiap produk.`\n    },\n    rb: {\n      note: 'Sila pilih setepat-tepatnya 1 item:'\n    },\n    vo: {\n      note: 'Sila tonton video sehingga tamat'\n    },\n    cb: {\n      note: (min, max) => {\n        if (1 === min && 5000 === max) {\n          return 'Tandakan semua yang berkenaan:'\n        } else if (min === max) {\n          return `Sila pilih ${min !== 1 ? 'mana-mana' : 'setepat-tepatnya'} ${min} item${min !== 1 ? 's' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Sila pilih sekurang-kurangnya ${min} item${min !== 1 ? 's' : ''}, tetapi tidak lebih daripada ${max}:`\n        } else if (5000 === max && min > 0) {\n          return `Sila pilih sekurang-kurangnya ${min} item${min !== 1 ? 's' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Sila pilih tidak lebih daripada ${max} item${max !== 1 ? 's' : ''}:`\n        } else {\n          return 'Tandakan semua yang berkenaan:'\n        }\n      }\n    },\n    oe: {\n      na: 'Tidak berkaitan',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Sila taip ${1 !== min ? 'mana-mana' : 'setepat-tepatnya'} ${min} aksara${1 !== min ? 's' : ''}${\n            optional ? ' (pilihan)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Sila taip sekurang-kurangnya ${min} aksara${1 !== min ? 's' : ''} tetapi tidak lebih daripada ${max}${\n            optional ? ' (pilihan)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Sila taip sekurang-kurangnya ${min} aksara${1 !== min ? 's' : ''}${optional ? ' (pilihan)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Sila taip tidak lebih daripada ${max} aksara${1 !== min ? 's' : ''}${optional ? ' (pilihan)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Sila isikan medan berikut:'\n    },\n    mx: {\n      note: 'Sila alihkan pengggelangsar yang ditonjolkan untuk meneruskan',\n      dragSlider: 'Seret ke kiri atau ke kanan untuk menjawab'\n    },\n    psc: {\n      dragLeftRight: 'Seret ke kiri atau ke kanan untuk menjawab'\n    },\n    ps: {\n      note: (value, remaining) => `Sila edarkan ${value} ${remaining ? 'antara' : ''} item-item di bawah`,\n      allDone: `Semua selesai`,\n      total: `jumlah:`,\n      dragSlider: 'Seret ke kiri atau ke kanan untuk menjawab'\n    },\n    cx: {\n      note: 'Buka dropbox dan mulakan menaip jawapan anda untuk menatal secara automatik atau memilih secara manual.'\n    },\n    ro: {\n      note: 'Seret ke atas atau ke bawah untuk menyusun semula:'\n    },\n    md: {\n      note1:\n        'Sila klik/ketik pada item pilihan  <b>pertama anda</b>.<br/> Klik/ketik sekali lagi untuk memadam pilihan.',\n      note2:\n        'Sekarang, sila klik/ketik item pilihan <b>terakhir anda</b>.<br/> Klik/ketik sekali lagi untuk memadam pilihan.',\n      note3:\n        'Terima kasih! Teruskan ke soalan seterusnya, <br/> atau klik/ketik mana-mana item yang tidak dipilih untuk bermula semula.'\n    },\n    aro: {\n      note: 'Sila pilih satu item daripada setiap pasangan.'\n    },\n    wd: {\n      note: 'Pastikan semua nilai seterusnya adalah lebih besar daripada yang sebelumnya.'\n    },\n    emd: {\n      note: 'Sila tonton video sehingga tamat',\n      noAnswers: 'Tiada pilihan jawapan, sila klik seterusnya untuk meneruskan.',\n      start: 'Klik dan tahan untuk bermula',\n      resume: 'Klik dan tahan untuk menyambung semula',\n      continue: 'Anda bersedia! Klik Seterusnya untuk meneruskan',\n      continueMobile: 'Anda bersedia! Klik DI SINI untuk meneruskan',\n      training: {\n        session: 'Sesi latihan',\n        note: 'Sila tamatkan latihan',\n        moveLeft: 'Sila seret dail sehingga habis <strong>ke kiri</strong>',\n        moveBottom: 'Sila seret dail sehingga habis <strong>ke bawah</strong>',\n        moveRight: 'Sekarang, sila seret dail sehingga habis <strong>ke kanan</strong>',\n        moveTop: 'Sekarang, sila seret dail sehingga habis <strong>ke atas</strong>',\n        success: 'Bagus!'\n      }\n    },\n    sft: {\n      noAnswers: 'Tiada pilihan jawapan, sila klik seterusnya untuk meneruskan.',\n      note: 'Sila jawab secepat yang anda boleh dengan jawapan yang dirasakan betul',\n      imageError: 'No image exposure time chosen',\n      finish: 'Anda selesai! <br/> Sila klik Seterusnya untuk meneruskan',\n      training: {\n        start:\n          '<p>Soalan ini akan menunjukkan perkataan berbeza dengan cepat kepada anda dan memerlukan penumpuan anda. ' +\n          'Anda perlu bertindak balas dengan pantas untuk menjawab.  </p><p>Bersedia untuk berlatih?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Ketik \"{buttonLeft}\"`\n            : (mouse ? `Klik \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Ketik kekunci \"{keyBtnLeft}\"` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Ketik \"{buttonRight}\"`\n            : (mouse ? `Klik \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Ketik kekunci \"{keyBtnRight}\"` : ''),\n        fail: () => 'Terlalu perlahan',\n        success: () => 'Bagus!',\n        finish: () =>\n          '<p><strong> Cemerlang!</strong></p><p>Sila pastikan penumpuan <br />' +\n          'anda tidak terganggu dalam 2-3 minit seterusnya </p><p>Klik seterusnya untuk bermula apabila sudah bersedia.</p>'\n      },\n      buttons: {\n        start: 'Mula',\n        yesno: {\n          left: 'Ya',\n          right: 'Tidak'\n        },\n        matches: {\n          left: 'Sepadan',\n          right: 'Tidak Sepadan'\n        },\n        fits: {\n          left: 'Muat',\n          right: 'Tidak Muat'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        },\n        noyes: {\n          left: 'Ya',\n          right: 'Tidak'\n        },\n        matchesRev: {\n          left: 'Sepadan',\n          right: 'Tidak Sepadan'\n        },\n        fitsRev: {\n          left: 'Muat',\n          right: 'Tidak Muat'\n        },\n        thumbsRev: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: \"Geen antwoordoptie, klik op 'volgende' om door te gaan.\",\n    placeholder: 'Specificeer...',\n    pleaseSelect: 'Selecteer...',\n    rotateLandscape: 'Draai uw telefoon van portret naar landschap om door te gaan.',\n    rotatePortrait: 'Draai uw telefoon van landschap naar portret om door te gaan.',\n    ir: {\n      selectWebCam: \"Selecteer webcam (indien beschikbaar) of klik op 'Bladeren' om vanaf je apparaat te uploaden\",\n      noWebCam: 'Geen webcam gedetecteerd',\n      accessCamUpload: 'CAMERA/UPLOADEN OPENEN',\n      browse: 'BLADEREN',\n      uploadPhoto: 'Upload een foto',\n      camera: 'Webcamera ',\n      instead: 'in plaats daarvan',\n      capture: 'FOTO MAKEN',\n      somethingWrong: 'Sorry, er ging iets mis. Probeer het later nog eens',\n      couldntRead: 'Sorry, we konden de code niet lezen!',\n      couldntProcess: 'Sorry, we konden je foto niet verwerken!',\n      inValidCode: 'Please, submit the valid code', // !\n      moveOn: 'Probeer het opnieuw of verzend je foto en ga verder',\n      tryAgain: 'Probeer het opnieuw',\n      dataReceived: 'Gegevens ontvangen!',\n      enterManually: 'Probeer het opnieuw of voer de gegevens hieronder handmatig in',\n      positionQR: 'Houd de QR-code voor je camera zodat deze in het rode kader past of upload hem vanaf je computer.',\n      positionQRMobile: 'Plaats de QR-code voor uw camera of upload deze vanaf uw apparaat.',\n      analyzing: 'Afbeelding wordt geanalyseerd, een moment geduld',\n      submit: 'VERZENDEN',\n      startOver: 'BEGIN OPNIEUW',\n      allDone: 'KLAAR IS KEES!',\n      cantAnalyze:\n        'Opgelet - we hebben deze afbeelding niet kunnen weergeven. Probeer hem opnieuw in te dienen of kies een algemener afbeeldingsformaat (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Het spijt ons, we ondersteunen dit bestandsformaat niet. Upload een ondersteund afbeeldingstype (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Geen webcam gedetecteerd',\n      uploadVideo: 'Upload een video', // ?\n      skip: 'Overslaan?',\n      accessCamUpload: 'CAMERA/UPLOADEN OPENEN',\n      browse: 'BLADEREN',\n      instead: 'in plaats daarvan',\n      or: 'or', // !\n      stopRecording: 'Stoppen met opnemen',\n      willBeStopped: 'De opname stopt na <b>5 minuten<b/>',\n      stopOnDone: 'Stop de opname als je klaar bent!',\n      record: 'OPNEMEN',\n      somethingWrong: 'Sorry, er ging iets mis. Probeer het later nog eens.',\n      dataReceived: 'Gegevens ontvangen!',\n      microphone: 'Microfoon',\n      camera: 'Webcamera',\n      selectMicrophone: 'Selecteer je microfoon', // ?\n      selectCam: 'Selecteer je webcamera', // ?\n      submit: 'VERZENDEN',\n      upload: 'UPLOADEN',\n      playback: 'AFSPELEN',\n      stopPlayback: 'STOP PLAYBACK', // !\n      startOver: 'BEGIN OPNIEUW',\n      allDone: 'AKLAAR IS KEES!',\n      alternativeRecordSpan:\n        'Upload een videoclip vanaf je computer.<br/>Je kunt in plaats daarvan de video ook opnemen &nbsp;',\n      alrenativeRecordHref: 'met een webcam',\n      cantAnalyze:\n        'Opgelet - we hebben deze video niet kunnen weergeven. Probeer hem opnieuw in te dienen of kies een algemener videoformaat (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Het spijt ons, we ondersteunen dit bestandsformaat niet. Upload een ondersteund videotype (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'KIEZEN',\n      pleaseChoose: 'Maak een keuze',\n      this: 'DIT',\n      one: 'een',\n      myChoice: 'MIJN KEUZE'\n    },\n    hm: {\n      addComment: 'Plaats hieronder een reactie',\n      commentMandatoryPlaceHolder: 'Voeg verplichte reactie toe...',\n      commentOptionalPlaceHolder: 'Voeg optionele reactie toe...',\n      dragPin: 'Sleep om te verplaatsen (lang klikken/tikken om nauwkeurig vast te prikken).',\n      removePin: 'Sleep buiten de afbeelding om te verwijderen.',\n      editComment: 'Klik/tik op speld om reactie te bewerken.',\n      addPin: 'Versleep de speld uit het onderstaande paneel en plaats hem op een plek naar keuze op de afbeelding.',\n      addPins: 'Versleep de spelden uit het onderstaande paneel en plaats ze op een plek naar keuze op de afbeelding.',\n      leavePins: (minPoints, maxPoints) =>\n        `Laat minstens ${minPoints}, maar niet meer dan ${maxPoints} spelden van elk type achter.`,\n      leavePinsAny: (minPoints, maxPoints) =>\n        `Laat tenminste ${minPoints} maar niet meer dan ${maxPoints} pins van welke soort dan ook achter.`,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `Laat minstens  ${minPoints}, maar niet meer dan ${maxPoints} spelden achter.`,\n      leavePinsWithOff: maxPoints =>\n        `Laat niet meer dan ${maxPoints} spelden van elk type achter of klik op 'volgende' om over te slaan.`,\n      leavePinsWithOffAny: maxPoints =>\n        `Laat niet meer dan ${maxPoints} pins van welke soort dan ook achter of klik op Volgende om dit over te slaan.`,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Laat niet meer dan ${maxPoints} spelden achter of klik op 'volgende' om over te slaan.`,\n      leavePinWithOff: `Laat niet meer dan 1 speld van elk type achter of klik op 'volgende' om over te slaan.`,\n      leavePinWithOffAny: `Laat niet meer dan 1 pin achter of klik op Volgende om dit over te slaan.`,\n      leavePinPerPageWithOff: \"Laat niet meer dan 1 speld achter of klik op 'volgende' om over te slaan.\",\n      leaveExactlyPin: `Laat 1 speld van elk type achter.`,\n      leaveExactlyPinAny: `Laat 1 pin van welke soort dan ook achter.`,\n      leaveExactlyPinPerPage: 'Laat 1 speld achter.',\n      leaveExactlyPins: maxPoints => `Laat ${maxPoints} spelden van elk type achter.`,\n      leaveExactlyPinsAny: maxPoints => `Laat ${maxPoints} pins van welke soort dan ook achter.`,\n      leaveExactlyPinsPerPage: maxPoints => `Laat ${maxPoints} spelden achter.`,\n      leaveComment: 'Typ onder de afbeelding om een reactie achter te laten.',\n      noAnswers: \"Geen antwoordoptie, klik op 'volgende' om door te gaan.\",\n      outOfPins: 'je hebt geen spelden meer',\n      pinsBehavior: 'Als je over het beeld gaat zie je plaatsen die gemarkeerd worden met een enkele speldenknop.',\n      clusters: 'Je kunt alleen spelden plaatsen op deze gemarkeerde plaatsen.',\n      contentAware: 'Je kunt binnen of buiten de gemarkeerde plaatsen spelden neerzetten.'\n    },\n    mp: {\n      expand_note: 'Beweeg de muisaanwijzer over of klik op de afbeeldingen(en) om te vergroten',\n      rb_note: rows => `Kies${rows ? ' hieronder' : ''} 1 antwoord per onderdeel:`,\n      cb_note: (min, max, rows) => {\n        if (min === max) {\n          return `Kies${rows ? ' hieronder' : ''} ${min !== 1 ? '' : 'slechts'} ${min} ${\n            min !== 1 ? 'antwoorden' : 'antwoord'\n          } per onderdeel:`\n        } else if (min > 0 && max < 5000) {\n          return `Selecteer ten minste ${min} ${\n            min !== 1 ? 'antwoorden' : 'antwoord'\n          } maar niet meer dan ${max} per item${rows ? ' hieronder' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Selecteer ten minste ${min} ${min !== 1 ? 'antwoorden' : 'antwoord'} per item${\n            rows ? ' hieronder' : ''\n          }:`\n        } else if (0 === min && max < 5000) {\n          return `Selecteer niet meer dan ${max} ${max !== 1 ? 'antwoorden' : 'antwoord'} per item${\n            rows ? ' hieronder' : ''\n          }:`\n        } else {\n          return 'Vink alles aan wat van toepassing is:'\n        }\n      }\n    },\n    sh: {\n      note: 'Klik op een product om in te zoomen en toe te voegen aan uw virtuele winkelwagentje als u het in de winkel zou kopen',\n      amazonNote: 'Klik op een product om in te zoomen en toe te voegen aan je virtuele winkelwagen.',\n      fullCart: 'Uw winkelwagentje is vol!',\n      qty: 'AANTAL',\n      addToCart: 'TOEVOEGEN AAN WINKELWAGENTJE',\n      deleteFromCart: 'VERWIJDEREN',\n      next: 'VOLGENDE',\n      emptyCard: 'Uw winkelwagentje is leeg',\n      each: 'elk',\n      items: 'artikelen',\n      total: 'Winkelwagentje',\n      clearCart: 'Winkelwagentje legen',\n      backToStore: 'Terug naar de winkel',\n      na: 'Geen van bovenstaande',\n      maxCartCountError: max => `Lütfen ürün sepetinize en fazla ${max} ürün ekleyin `,\n      scrollError: `Scrol volledig naar links en rechts om verder te gaan met de enquête.`,\n      maxSpentError: max => `Lütfen ${max} tutarından fazla harcamayın. `,\n      maxProductCountError: max => `Lütfen her ürün için sepetinize en fazla ${max} adet ekleyin. `\n    },\n    rb: {\n      note: 'Selecteer slechts 1 item:'\n    },\n    vo: {\n      note: 'Bekijk de video helemaal\\n'\n    },\n    cb: {\n      note: (min, max) => {\n        if (1 === min && 5000 === max) {\n          return 'Vink alles aan wat van toepassing is:'\n        } else if (min === max) {\n          return `Kies hieronder ${min !== 1 ? '' : 'slechts'} ${min} antwoord${min !== 1 ? 'en' : ''} per onderdeel:`\n        } else if (min > 0 && max < 5000) {\n          return `Selecteer ten minste ${min} antwoord${\n            min !== 1 ? 'en' : ''\n          } maar niet meer dan ${max} per item hieronder:`\n        } else if (5000 === max && min > 0) {\n          return `Selecteer ten minste ${min} antwoord${min !== 1 ? 'en' : ''} per item hieronder:`\n        } else if (0 === min && max < 5000) {\n          return `Selecteer niet meer dan ${max} antwoord${max !== 1 ? 'en' : ''} per item hieronder:`\n        } else {\n          return 'Vink alles aan wat van toepassing is:'\n        }\n      }\n    },\n    oe: {\n      na: 'Niet toepasbaar',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Typ ${1 !== min ? '' : 'exact'} ${min} teken${1 !== min ? 's' : ''}${optional ? ' (optioneel)' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Typ minstens ${min} teken${1 !== min ? 's' : ''} maar niet meer dan ${max}${\n            optional ? ' (optioneel)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Typ minstens ${min} teken${1 !== min ? 's' : ''}${optional ? ' (optioneel)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Typ niet meer dan ${max} teken${1 !== min ? 's' : ''}${optional ? ' (optioneel)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Vul de volgende velden in:'\n    },\n    mx: {\n      note: 'Verplaats de gemarkeerde schuifregelaars om door te gaan',\n      dragSlider: 'Versleep naar links of rechts om te antwoorden'\n    },\n    psc: {\n      dragLeftRight: 'Versleep naar links of rechts om te antwoorden'\n    },\n    ps: {\n      note: (value, remaining) => `Verdeel${remaining ? ' de resterende' : ''} ${value} over de onderstaande items`,\n      allDone: `Klaar is Kees`,\n      total: `Total:`, // !\n      dragSlider: 'Versleep naar links of rechts om te antwoorden'\n    },\n    cx: {\n      note: 'Open de dropbox en begin je antwoord te typen om automatisch te scrollen of kies het handmatig'\n    },\n    ro: {\n      note: 'Sleep omhoog of omlaag om opnieuw te ordenen:'\n    },\n    md: {\n      note1: 'Klik/tik op het item van je <b>eerste keuze</b>.<br/> Klik/tik opnieuw om de keuze te wissen.',\n      note2: 'Klik/tik op het item van je <b>laatste keuze</b>.<br/> Klik/tik opnieuw om de keuze te wissen.',\n      note3:\n        'Bedankt! Ga verder naar de volgende vraag of klik/tik op een niet-geselecteerd item om opnieuw te beginnen.'\n    },\n    aro: {\n      note: 'Kies uit elk paar één item:'\n    },\n    wd: {\n      note: 'Zorg ervoor dat elke volgende waarde groter is dan de vorige.'\n    },\n    emd: {\n      note: 'Bekijk de video helemaal',\n      noAnswers: \"Geen antwoordoptie, klik op 'volgende' om door te gaan.\",\n      start: 'Klik en houd ingedrukt om te starten',\n      resume: 'Klik en houd ingedrukt om door te gaan',\n      continue: \"U bent klaar! <br />Klik op 'volgende' om door te gaan\",\n      continueMobile: 'Je bent klaar! <br /> Klik HIER om verder te gaan',\n      training: {\n        session: 'trainingssessie',\n        note: 'Maak de training af',\n        moveLeft: 'Sleep de schijf helemaal naar links',\n        moveBottom: 'Sleep de schijf helemaal naar beneden',\n        moveRight: 'Sleep de schijf nu helemaal naar rechts',\n        moveTop: 'Sleep de schijf nu helemaal naar boven',\n        success: 'Goed gedaan!'\n      }\n    },\n    sft: {\n      noAnswers: \"Geen antwoordoptie, klik op 'volgende' om door te gaan.\",\n      note: 'Antwoord alstublieft zo snel mogelijk met het antwoord dat intuïtief goed aanvoelt',\n      finish: 'U bent helemaal klaar! <br />Klik op Volgende om door te gaan.',\n      training: {\n        start:\n          '<p>Deze vraag zal u snel verschillende woorden laten zien en vereist uw concentratie. ' +\n          'U dient snel te reageren om te antwoorden.</p> <p>Klaar om te oefenen?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Tik op \"{buttonLeft}\"`\n            : (mouse ? `Klik op \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Druk op de \"{keyBtnLeft}\"-toets` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Tik op \"{buttonRight}\"`\n            : (mouse ? `Klik op \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Druk op de \"{keyBtnRight}\"-toets` : ''),\n        fail: () => 'Te traag',\n        success: () => 'Geweldig!',\n        finish: () =>\n          '<p><strong> Uitstekend!</strong></p><p>Zorg ervoor dat u de komende <br />' +\n          '2-3 minuten niet wordt afgeleid. </p><p>Klik op Volgende om te starten als u er klaar voor bent.</p>'\n      },\n      buttons: {\n        start: 'Aan de slag',\n        yesno: {\n          left: 'Ja',\n          right: 'Nee'\n        },\n        matches: {\n          left: 'Match',\n          right: 'Geen match'\n        },\n        fits: {\n          left: 'Past',\n          right: 'Past niet'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Ikke noe svaralternativ, klikk ved siden av for å fortsette.',\n    placeholder: 'Spesifiser...',\n    pleaseSelect: 'Velg...',\n    rotateLandscape: 'Vri telefonen fra portrett til breddevisning for å fortsette.',\n    rotatePortrait: 'Vri telefonen fra breddevisning til portrett for å fortsette.',\n    ir: {\n      selectWebCam: 'Velg webkamera (hvis tilgjengelig) eller klikk på «Bla gjennom» for å laste opp fra enheten',\n      uploadOnly: 'Klikk på «Bla gjennom» for å laste opp fra enheten',\n      noWebCam: 'Ingen webkamera oppdaget',\n      accessCamUpload: 'FÅ TILGANG TIL KAMERA / LAST OPP',\n      browse: 'BLA GJENNOM',\n      uploadPhoto: 'Last opp et bilde',\n      camera: 'Webkamera',\n      instead: 'i stedet',\n      capture: 'OPPTAK',\n      somethingWrong: 'Beklager, noe gikk galt. Prøv igjen senere',\n      couldntRead: 'Beklager, vi kunne ikke lese koden!',\n      couldntProcess: 'Beklager, vi kunne ikke behandle bildet ditt!',\n      inValidCode: 'Send inn den gyldige koden',\n      moveOn: 'Prøv på nytt eller send inn bildet ditt og fortsett',\n      tryAgain: 'Prøv på nytt',\n      dataReceived: 'Data motatt!',\n      enterManually: 'Prøv på nytt eller skriv inn dataene manuelt nedenfor',\n      positionQR:\n        'Plasser QR–koden foran kameraet slik at den fyller den røde rammen, eller last den opp fra datamaskinen.',\n      positionQRMobile:\n        'Plasser QR–koden foran kameraet slik at den fyller den røde rammen, eller last den opp fra datamaskinen.',\n      analyzing: 'Analyserer bilde, vennligst vent',\n      submit: 'SEND INN',\n      startOver: 'Start på nytt',\n      allDone: 'Ferdig!',\n      cantAnalyze:\n        'Oppmerksomhet – vi kunne ikke gjengi dette bildet. Prøv å sende inn på nytt eller velg et mer generisk bildeformat (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Vi beklager – vi støtter ikke dette filformatet. Last opp en støttet bildetype (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Ingen webkamera oppdaget',\n      uploadVideo: 'Last opp en video',\n      skip: 'Hoppe over?',\n      accessCamUpload: 'FÅ TILGANG TIL KAMERA / LAST OPP',\n      browse: 'BLA GJENNOM',\n      instead: 'i stedet',\n      or: 'eller',\n      stopRecording: 'Stopp opptak',\n      willBeStopped: 'Innspillingen vil stoppe etter <b>5 minutter</b>',\n      stopOnDone: 'Stopp opptaket når du er ferdig!',\n      record: 'POST',\n      somethingWrong: 'Beklager, noe gikk galt. Prøv igjen senere.',\n      dataReceived: 'Mottok data!',\n      microphone: 'Mikrofonen',\n      camera: 'Webkamera',\n      selectMicrophone: 'Velg mikrofonen din',\n      selectCam: 'Velg webkamera',\n      submit: 'SEND INN',\n      upload: 'Last opp ',\n      playback: 'Avspilling',\n      stopPlayback: 'STOPP AVSPILLING',\n      startOver: 'Start på nytt',\n      allDone: 'Ferdig!',\n      alternativeRecordSpan: 'Last opp et videoklipp fra datamaskinen. Alternativt kan du ',\n      alrenativeRecordHref: 'ta opp videoen med et webkamera.',\n      cantAnalyze:\n        'Oppmerksomhet – vi kunne ikke gjengi denne videoen. Prøv å sende inn på nytt eller velg et mer generisk videoformat (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Vi beklager – vi støtter ikke dette filformatet. Last opp en støttet videotype (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'VELG',\n      pleaseChoose: 'Velg',\n      this: 'DENNE',\n      one: ' én',\n      myChoice: 'Mitt VALG'\n    },\n    hm: {\n      addComment: 'Legg til en kommentar nedenfor',\n      commentMandatoryPlaceHolder: 'Legg til obligatorisk kommentar... ',\n      commentOptionalPlaceHolder: 'Legg til valgfri kommentar... ',\n      dragPin: 'Dra for å flytte (langt klikk / trykk for presisjonsnål). ',\n      removePin: 'Dra utenfor bildet for å slette.  ',\n      editComment: 'Klikk på / trykk på pinnen for å redigere kommentaren. ',\n      addPin: 'Dra pinnen fra panelet nedenfor og slipp den på et sted du velger på bildet.',\n      addPins: 'Dra pinnene fra panelet nedenfor og slipp dem på et sted du velger på bildet.',\n      leavePins: (minPoints, maxPoints) =>\n        `Legg igjen minst ${minPoints}, men ikke mer enn ${maxPoints} pinner av hvert slag`,\n      leavePinsAny: (minPoints, maxPoints) =>\n        `Legg igjen minst ${minPoints}, men ikke mer enn ${maxPoints} pinner av noe slag. `,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `Legg igjen minst ${minPoints}, men ikke mer enn ${maxPoints} pinner. `,\n      leavePinsWithOff: maxPoints =>\n        `Ikke legg igjen mer enn ${maxPoints} pinner av hvert slag, eller klikk på Neste for å hoppe over. `,\n      leavePinsWithOffAny: maxPoints =>\n        `Ikke legg igjen mer enn ${maxPoints} pinner av noe slag være igjen, eller klikk på Neste for å hoppe overfor å hoppe over. `,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Ikke legg igjen mer enn ${maxPoints} pinner eller klikk Neste for å hoppe over. `,\n      leavePinWithOff: `Ikke legg igjen mer enn 1 pinne av hvert slag, eller klikk Neste for å hoppe over. `,\n      leavePinWithOffAny: `Ikke legg igjen mer enn 1 pinne av noe slag eller klikk Neste for å hoppe overfor å hoppe over. `,\n      leavePinPerPageWithOff: 'Ikke legg igjen mer enn 1 pinne eller klikk Neste for å hoppe over.',\n      leaveExactlyPin: `Legg igjen 1 pinne av hvert slag. `,\n      leaveExactlyPinAny: `Legg igjen 1 pinne av et hvilket som helst slag. `,\n      leaveExactlyPinPerPage: 'Legg igjen 1 pinne.',\n      leaveExactlyPins: maxPoints => `Legg igjen ${maxPoints} pinner av hvert slag. `,\n      leaveExactlyPinsAny: maxPoints => `Legg igjen ${maxPoints} pinner av noe slag.`,\n      leaveExactlyPinsPerPage: maxPoints => `Legg igjen ${maxPoints} pinner. `,\n      leaveComment: 'Skriv under bildet for å legge igjen en kommentar. ',\n      noAnswers: 'Ikke noe svaralternativ, klikk ved siden av for å fortsette.',\n      outOfPins: 'Du er tom for pinner',\n      pinsBehavior: 'Når du beveger deg over bildet, vil du se områder som vil bli uthevet med en enkelt pinne.',\n      clusters: 'Du kan bare plassere pinner i disse uthevede områdene.',\n      contentAware: 'Du kan slippe pinner innenfor eller utenfor de markerte områdene.'\n    },\n    mp: {\n      expand_note: 'Nei, det er ingen barn under 18 år som bor i min husholdning',\n      rb_note: rows => `Velg bare 1 svar per element${rows ? ' nedenfor' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (min === max) {\n          return `Velg ${min !== 1 ? '' : 'bare'} ${min} svar per element${rows ? ' nedenfor' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Velg minst ${min} svar, men ikke mer enn ${max} per element${rows ? ' nedenfor' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Velg minst ${min} svar per element${rows ? ' nedenfor' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Ikke velg mer enn ${max} svar per element${rows ? ' nedenfor' : ''}:`\n        } else {\n          return 'Sjekk alle som gjelder:'\n        }\n      }\n    },\n    sh: {\n      note: 'Klikk på et produkt for å zoome inn og legge til i den virtuelle handlekurven hvis du vil kjøpe det i butikken',\n      amazonNote:\n        'Klikk på et produkt for å zoon zoome inn og legge til i den virtuelle handlekurven hvis du vil kjøpe det på nettet',\n      fullCart: 'Handlekurven din er full!',\n      qty: 'ANTALL',\n      addToCart: 'LEGG I HANDLEKURV',\n      each: 'hver',\n      items: 'varer',\n      deleteFromCart: 'SLETT',\n      emptyCard: 'Handlekurven din er tom',\n      total: 'Handlekurv',\n      clearCart: 'Fjern handlekurv',\n      backToStore: 'Tilbake til butikken',\n      scrollError: `Gå helt til venstre og så til høyre for å fortsette spørreundersøkelsen. `,\n      na: 'Ingen av de ovennevnte',\n      next: 'NESTE'\n    },\n    rb: {\n      note: 'Bare velg ett element:'\n    },\n    vo: {\n      note: 'Se videoen til slutten'\n    },\n    cb: {\n      note: (min, max) => {\n        if (1 === min && 5000 === max) {\n          return 'Sjekk alle som gjelder:'\n        } else if (min === max) {\n          return `Velg ${min !== 1 ? 'hvilket som helst' : 'nøyaktig'} ${min} element${min !== 1 ? 's' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Velg minst ${min} element${min !== 1 ? 's' : ''}, men ikke mer enn ${max}:`\n        } else if (5000 === max && min > 0) {\n          return `Velg minst ${min} element${min !== 1 ? 's' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Ikke velg mer enn ${max} element${max !== 1 ? 's' : ''}:`\n        } else {\n          return 'Sjekk alle som gjelder:'\n        }\n      }\n    },\n    oe: {\n      na: 'Ikke aktuelt',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Skriv inn ${1 !== min ? 'hvilket som helst' : 'nøyaktig'} ${min} tegn${1 !== min ? 's' : ''}${\n            optional ? ' (valgfritt)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Skriv inn minst ${min} tegn${1 !== min ? 's' : ''} men ikke mer enn ${max}${\n            optional ? ' (valgfritt)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Skriv inn minst ${min} tegn${1 !== min ? 's' : ''}${optional ? ' (valgfritt)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Ikke skriv mer enn ${max} tegn${1 !== min ? 's' : ''}${optional ? ' (valgfritt)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Fyll ut følgende felt:'\n    },\n    mx: {\n      note: 'Flytt de uthevede glidebryterne for å fortsette',\n      dragSlider: 'Dra til venstre eller høyre for å svare'\n    },\n    psc: {\n      dragLeftRight: 'Dra til venstre eller høyre for å svare'\n    },\n    ps: {\n      note: (value, remaining) => `Fordel ${remaining ? 'gjenværende' : ''} ${value} mellom elementene nedenfor`,\n      allDone: `Ferdig`,\n      total: `Total::`,\n      dragSlider: 'Dra til venstre eller høyre for å svare'\n    },\n    cx: {\n      note: 'Åpne dropbox og begynn å skrive inn svaret ditt for automatisk rulling, eller velg det manuelt'\n    },\n    ro: {\n      note: 'Dra opp eller ned for å endre rekkefølge:'\n    },\n    md: {\n      note1: 'Klikk på / trykk på varen du valgte for første gang.<br/> Klikk/trykk igjen for å fjerne valget.',\n      note2: 'Nå kan du klikke/trykke på elementet du valgte sist<br/> Klikk/trykk igjen for å fjerne valget.',\n      note3: 'Takk! Fortsett til neste spørsmål, eller klikk/trykk på et ikke–merket element for å starte på nytt.'\n    },\n    aro: {\n      note: 'Velg ett element fra hvert par.'\n    },\n    wd: {\n      note: 'Pass på at hver påfølgende verdi er større enn den forrige.'\n    },\n    emd: {\n      note: 'Se videoen til slutten',\n      noAnswers: 'Ikke noe svaralternativ, klikk ved siden av for å fortsette.',\n      start: 'Klikk og hold nede for å starte',\n      resume: 'Klikk og hold nede for å gjenoppta',\n      continue: 'Du er klar! <br/> Klikk på <strong>Neste</strong> for å fortsette',\n      continueMobile: 'Du er klar! <br/> Klikk <strong>HER</strong> for å fortsette',\n      training: {\n        session: 'Opplæringssesson',\n        note: 'Avslutt opplæringen',\n        moveLeft: 'Dra skiven helt <strong>tilvenstre</strong>',\n        moveBottom: 'Dra skiven helt <strong>tilbunnen</strong>',\n        moveRight: 'Nå drar du skiven helt <strong>tiltil høyre</strong>',\n        moveTop: 'Nå drar du skiven helt <strong>tiltoppen</strong>',\n        success: 'Flott jobbet!'\n      }\n    },\n    sft: {\n      noAnswers: 'Ikke noe svaralternativ, klikk ved siden av for å fortsette.',\n      note: 'Svar så raskt du kan med det svaret som intuitivt føles riktig',\n      imageError: 'No image exposure time chosen',\n      finish: 'Du er ferdig! Klikk på Neste for å fortsette',\n      training: {\n        start:\n          '<p>Dette spørsmålet vil raskt vise deg forskjellige ord og vil kreve at du konsentrerer deg. ' +\n          'Du må reagere raskt for å svare </p> <p>Klar til å øve?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Trykk på \"{buttonLeft}\"`\n            : (mouse ? `Klikk \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Trykk på \"{keyBtnLeft}\"` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Trykk på \"{buttonRight}\"`\n            : (mouse ? `Klikk \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Trykk på \"{keyBtnRight}\"` : ''),\n        fail: () => 'For sakte',\n        success: () => 'Flott!',\n        finish: () =>\n          '<p><strong>Utmerket!</strong></p><p>Pass på at du ikke blir distrahert i løpet<br/> av de neste 2–3 minuttene <br />' +\n          '</p><p>Klikk på Neste for å starte når du er klar</p>'\n      },\n      buttons: {\n        start: 'Start',\n        yesno: {\n          left: 'Ja',\n          right: 'Nei'\n        },\n        matches: {\n          left: 'Match',\n          right: 'Ikke en match'\n        },\n        fits: {\n          left: 'Egnet',\n          right: 'Ikke egnet'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        },\n        noyes: {\n          left: 'Ja',\n          right: 'Nei'\n        },\n        matchesRev: {\n          left: 'Match',\n          right: 'Ikke en match'\n        },\n        fitsRev: {\n          left: 'Egnet',\n          right: 'Ikke egnet'\n        },\n        thumbsRev: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: \"Brak opcji odpowiedzi. Kliknij 'dalej', aby kontynuować.\",\n    placeholder: 'Proszę sprecyzuj...',\n    pleaseSelect: 'Proszę wybrać...',\n    rotateLandscape: 'Obróć telefon z trybu portretowego na tryb poziomy.',\n    rotatePortrait: 'Obróć telefon z trybu poziomego na tryb portretowy.',\n    ir: {\n      selectWebCam:\n        \"Wybierz kamerę internetową (jeśli jest dostępna) lub kliknij 'Przeglądaj', aby wysłać ze swojego urządzenia\",\n      noWebCam: 'Nie wykryto kamery',\n      accessCamUpload: 'KAMERA/WYŚLIJ',\n      browse: 'PRZEGLĄDAJ',\n      uploadPhoto: 'Wyślij zdjęcie',\n      instead: 'zamiast',\n      capture: 'PRZECHWYĆ',\n      somethingWrong: 'Przepraszamy, coś poszło nie tak. Spróbuj ponownie później',\n      couldntRead: 'Przepraszamy, nie udało się odczytać kodu!',\n      couldntProcess: 'Przepraszamy, nie udało się przetworzyć obrazu!',\n      moveOn: 'Spróbuj ponownie lub prześlij zdjęcie i kontynuuj',\n      tryAgain: 'Spróbuj ponownie',\n      dataReceived: 'Przesłano dane!',\n      enterManually: 'Spróbuj ponownie lub wprowadź dane ręcznie poniżej',\n      positionQR:\n        'Umieść kod QR przed obiektywem kamery tak, aby znajdował się on w czerwonej ramce, lub wyślij go ze swojego komputera.',\n      analyzing: 'Trwa analiza obrazu, proszę czekać',\n      submit: 'PRZEŚLIJ',\n      startOver: 'Zacznij od nowa',\n      allDone: 'Gotowe!',\n      cantAnalyze:\n        'Uwaga, nie mogliśmy wyrenderować tego obrazu. Spróbuj przesłać ponownie lub wybierz bardziej ogólny format obrazu (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Przepraszamy, nie obsługujemy tego formatu plików. Prześlij obsługiwany typ obrazu (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Nie wykryto kamery',\n      uploadVideo: 'Prześlij film',\n      skip: 'Pominąć?',\n      accessCamUpload: 'KAMERA/WYŚLIJ',\n      browse: 'PRZEGLĄDAJ',\n      instead: 'zamiast',\n      or: 'lub',\n      stopRecording: 'Zatrzymaj nagrywanie',\n      willBeStopped: 'Nagrywanie zostanie zatrzymane po 5 minutach',\n      stopOnDone: 'Zatrzymaj nagrywanie, kiedy skończysz!',\n      record: 'NAGRAJ',\n      somethingWrong: 'Przepraszamy, coś poszło nie tak. Spróbuj ponownie później',\n      microphone: 'Mikrofon',\n      camera: 'Kamerę internetową',\n      selectMicrophone: 'Wybierz mikrofon',\n      selectCam: 'Wybierz kamerę internetową',\n      upload: 'Wyślij',\n      playback: 'Odtwarzanie',\n      stopPlayback: 'ZATRZYMAJ',\n      submit: 'PRZEŚLIJ',\n      startOver: 'Zacznij od nowa',\n      allDone: 'Gotowe!',\n      alternativeRecordSpan: 'Prosimy o przesłanie klipu wideo z komputera.<br/>Możesz też nagrać &nbsp;',\n      alrenativeRecordHref: ' wideo za pomocą kamery internetowej.',\n      cantAnalyze:\n        'Uwaga, nie mogliśmy wyrenderować tego wideo. Spróbuj przesłać ponownie lub wybierz bardziej ogólny format wideo (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Przepraszamy, nie obsługujemy tego formatu plików. Prześlij obsługiwany typ wideo (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'WYBIERZ',\n      pleaseChoose: 'Wybierz',\n      this: 'TO',\n      one: 'jeden',\n      myChoice: 'Mój WYBÓR'\n    },\n    hm: {\n      addComment: 'Dodaj komentarz poniżej',\n      commentMandatoryPlaceHolder: 'Dodaj obowiązkowy komentarz… ',\n      commentOptionalPlaceHolder: 'Dodaj dodatkowy komentarz… ',\n      dragPin: 'Przeciągnij, aby zmienić ułożenie (przytrzymaj kliknięcie / dotknięcie, aby przypiąć dokładniej). ',\n      removePin: 'Przeciągnij na zewnątrz ilustracji, aby usunąć. ',\n      editComment: 'Kliknij / dotknij pinezkę, aby edytować komentarz. ',\n      addPin: 'Przeciągnij pinezkę z poniższego panelu i upuść w wybranym miejscu na ilustracji. ',\n      addPins: 'Przeciągnij pinezki z poniższego panelu i upuść w wybranym miejscu na ilustracji. ',\n      leavePins: (minPoints, maxPoints) =>\n        `Pozostaw przynajmniej ${minPoints}, lecz nie więcej niż ${maxPoints} pinezek danego rodzaju. `,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        ` Pozostaw przynajmniej ${minPoints}, lecz nie więcej niż ${maxPoints} pinezek. `,\n      leavePinsWithOff: maxPoints =>\n        `Pozostaw nie więcej niż ${maxPoints} pinezki danego rodzaju lub kliknij Dalej, aby pominąć. `,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Pozostaw nie więcej niż ${maxPoints} pinezkę lub kliknij Dalej, aby pominąć. `,\n      leavePinWithOff: `Pozostaw nie więcej niż 1 pinezkę danego rodzaju lub kliknij Dalej, aby pominąć. `,\n      leavePinPerPageWithOff: 'Pozostaw nie więcej niż 1 pinezkę lub kliknij Dalej, aby pominąć. ',\n      leaveExactlyPin: 'Pozostaw 1 pinezkę danego rodzaju. ',\n      leaveExactlyPinPerPage: 'Pozostaw 1 pinezkę. ',\n      leaveExactlyPins: maxPoints => `Pozostaw ${maxPoints} pinezek danego rodzaju. `,\n      leaveExactlyPinsPerPage: maxPoints => `Pozostaw ${maxPoints} pinezki. `,\n      leaveComment: 'Aby dodać komentarz, wpisz tekst poniżej ilustracji. ',\n      noAnswers: 'Brak opcji odpowiedzi, kliknij Dalej, aby kontynuować.',\n      outOfPins: 'Skończyły ci się pinezki.',\n      pinsBehavior:\n        'Przemieszczając się po obrazie będzie można zaobserwować obszary, ktore wyróżnią się przy pomocy jednego upuszczenia pinezki.',\n      clusters: 'Będzie można umieścić pinezki tylko w wyróżnionych obszarach.',\n      contentAware: 'Można umieścić pinezki wewnątrz lub poza wyróżnionymi obszarami.'\n    },\n    mp: {\n      expand_note: 'Ustaw wskaźnik myszy nad obrazem lub kliknij obraz(y), aby go/je rozwinąć',\n      rb_note: rows => `Proszę wybrać tylko 1 odpowiedź w każdej${rows ? ' z poniższych pozycji' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (1 === min && 5000 === max) {\n          return 'Zaznacz wszystkie, które dotyczą:'\n        } else if (min === max) {\n          return `Proszę wybrać ${min !== 1 ? 'dowolne' : 'tylko'} ${min} odpowied${min !== 1 ? 'zi' : 'ź'} w każdej${\n            rows ? ' z poniższych pozycji' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Proszę wybrać co najmniej ${min} odpowied${\n            min !== 1 ? 'zi' : 'ź'\n          }, ale nie więcej niż ${max} dotyczącą każdej${rows ? ' pozycji poniżej' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Proszę wybrać co najmniej ${min} odpowied${min !== 1 ? 'zi' : 'ź'} dotyczącą każdej${\n            rows ? ' pozycji poniżej' : ''\n          }:`\n        } else if (0 === min && max < 5000) {\n          return `Proszę wybrać nie więcej niż ${max} odpowied${max !== 1 ? 'zi' : 'ź'} dotyczącą każdej${\n            rows ? ' pozycji poniżej' : ''\n          }:`\n        } else {\n          return 'Zaznacz wszystkie, które dotyczą:'\n        }\n      }\n    },\n    sh: {\n      note: 'Kliknij produkt, aby go powiększyć i dodać do wirtualnego koszyka, jeśli kupił(a)byś go w sklepie',\n      amazonNote: 'Kliknij produkt by zbliżyć i dodać go do wirtualnego koszyka.',\n      fullCart: 'Twój koszyk jest pełny!',\n      qty: 'ILOŚĆ',\n      addToCart: 'DODAJ DO KOSZYKA',\n      deleteFromCart: 'USUŃ',\n      emptyCard: 'Koszyk jest pusty',\n      each: 'każdy',\n      items: 'rzeczy',\n      total: 'Koszyk',\n      clearCart: 'Wyczyść koszyk',\n      backToStore: 'Wróć do sklepu',\n      na: 'Żadne z powyższych',\n      next: 'NASTĘPNY',\n      maxCartCountError: max => `Dodaj do koszyka nie więcej niż ${max} produktów.`,\n      scrollError: `Przewiń do końca w lewo i w prawo, aby przejść do ankiety. `,\n      maxSpentError: max => `Nie wydaj więcej niż ${max}.`,\n      maxProductCountError: max => `Dodaj do koszyka nie więcej niż ${max} sztuk każdego produktu.`\n    },\n    rb: {\n      note: 'Proszę wybrać tylko 1 pozycję:'\n    },\n    vo: {\n      note: 'Obejrzyj wideo do końca'\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `Wybierz ${min !== 1 ? 'dowolne' : 'tylko'} ${min} pozycj${min !== 1 ? 'ę' : 'i'}:`\n        } else if (min > 0 && max < 5000) {\n          return `Wybierz co najmniej ${min} pozycj${min !== 1 ? 'ę' : 'i'}, ale nie więcej niż ${max} na wiersz:`\n        } else if (5000 === max && min > 0) {\n          return `Wybierz co najmniej ${min} pozycj${min !== 1 ? 'ę' : 'i'}:`\n        } else if (0 === min && max < 5000) {\n          return `Wybierz nie więcej niż ${max} pozycj${max !== 1 ? 'ę' : 'i'}:`\n        } else {\n          return 'Zaznacz wszystkie, które dotyczą:'\n        }\n      }\n    },\n    oe: {\n      na: 'Nie dotyczy',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Wpisz ${1 !== min ? 'dowolny' : 'dokładnie'} ${min} znak${1 !== min ? 'e' : ''}${\n            optional ? ' (opcjonalny)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Wpisz co najmniej ${min} znak${1 !== min ? 'ów' : ''} but no more than ${max}${\n            optional ? ' (opcjonalny)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `?Wpisz co najmniejt ${min} znak${1 !== min ? 'ów' : ''}${optional ? ' (opcjonalny)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Wpisz nie więcej niż ${max} znak${1 !== min ? 'ów' : ''}${optional ? ' (opcjonalny)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Wypełnij następujące pola:'\n    },\n    mx: {\n      note: 'Przesuwaj podświetlone suwaki, aby kontynuować',\n      dragSlider: 'Przeciągnij w lewo lub w prawo, aby odpowiedzieć'\n    },\n    psc: {\n      dragLeftRight: 'Przeciągnij w lewo lub w prawo, aby odpowiedzieć'\n    },\n    ps: {\n      note: value => `Rozłóż pozostałe ${value} między przedmiotami poniżej`,\n      allDone: 'Gotowe!',\n      total: `Całkowity:`,\n      dragSlider: 'Przeciągnij w lewo lub w prawo, aby odpowiedzieć'\n    },\n    cx: {\n      note: 'Otwórz listę rozwijaną i zacznij pisać odpowiedź w auto scroll lub wybierz ją ręcznie'\n    },\n    ro: {\n      note: 'Przeciągnij w górę lub w dół, aby zmienić kolejność:'\n    },\n    md: {\n      note1:\n        'Kliknij / dotknij przedmiot, który wybierasz jako pierwszy. Kliknij / dotknij ponownie, aby usunąć zaznaczenie',\n      note2:\n        'Teraz kliknij / dotknij przedmiot, który wybierasz jako ostatni. Kliknij / dotknij ponownie, aby usunąć zaznaczenie',\n      note3: 'Dzięki! Przejdź do następnego pytania lub kliknij / dotknij niezaznaczony przedmiot, aby zacząć ponownie.'\n    },\n    aro: {\n      note: 'Wybierz jeden przedmiot dla każdej pary.'\n    },\n    wd: {\n      note: 'Upewnij się, że każda kolejna wartość jest większa niż poprzednia.'\n    },\n    emd: {\n      note: 'Obejrzyj wideo do końca',\n      noAnswers: \"Brak opcji odpowiedzi. Kliknij 'dalej', aby kontynuować.\",\n      start: 'Kliknij i przytrzymaj, aby rozpocząć',\n      resume: 'Kliknij i przytrzymaj, aby wznowić',\n      continue: 'Możesz zaczynać! <br /> Kliknij dalej, aby kontynuować',\n      continueMobile: 'Wszystko gotowe! <br /> Kliknij TUTAJ, aby przejść dalej',\n      training: {\n        session: 'sesja treningowa',\n        note: 'Zakończ szkolenie',\n        moveLeft: 'Przeciągnij tarczę do końca w lewo',\n        moveBottom: 'Przeciągnij tarczę do samego dołu',\n        moveRight: 'Teraz przeciągnij tarczę do końca w prawo',\n        moveTop: 'A teraz przeciągnij tarczę do samej góry',\n        success: 'Dobra robota!'\n      }\n    },\n    sft: {\n      noAnswers: \"Brak opcji odpowiedzi. Kliknij 'dalej', aby kontynuować.\",\n      note: 'Odpowiedz tak szybko, jak to możliwe, podając odpowiedź, która intuicyjnie wydaje się właściwa',\n      finish: 'Gotowe! <br /> Kliknij dalej, aby kontynuować.',\n      training: {\n        start:\n          '<p>W tym pytaniu będą się szybko wyświetlać różne słowa i będzie ono wymagało koncentracji. ' +\n          'Aby odpowiedzieć, musisz szybko zareagować. </p> <p>Możemy zaczynać?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Dotknij \"{buttonLeft}\"`\n            : (mouse ? `Kliknij \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Naciśnij klawisz „F”` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Dotknij \"{buttonRight}\"`\n            : (mouse ? `Kliknij \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Naciśnij klawisz „J”` : ''),\n        fail: () => 'Za wolno',\n        success: () => 'Świetnie!',\n        finish: () =>\n          '<p><strong> Doskonale!</strong></p><p>Upewnij się, że przez<br />' +\n          'następne 2-3 minuty<br/> nie będziesz się rozpraszać. </p><p>Kliknij Dalej, aby rozpocząć, gdy będziesz gotowy.</p>'\n      },\n      buttons: {\n        start: 'Rozpocznij',\n        yesno: {\n          left: 'Tak',\n          right: 'Nie'\n        },\n        matches: {\n          left: 'Dopasuj',\n          right: 'Nie pasuje'\n        },\n        fits: {\n          left: 'Dopasowanie',\n          right: 'Brak dopasowania'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Nenhuma opção de resposta. Clique em avançar para continuar.',\n    placeholder: 'Por favor, especifique…',\n    pleaseSelect: 'Por favor, selecione…',\n    rotateLandscape: 'Gire o celular da vertical para a horizontal para continuar.',\n    rotatePortrait: 'Gire o celular da horizontal para a vertical para continuar.',\n    ir: {\n      selectWebCam: \"Selecione a webcam (se disponível) ou clique em 'Procurar' para carregar de seu dispositivo\",\n      noWebCam: 'Nenhuma webcam detectada',\n      accessCamUpload: 'ACESSAR CÂMERA/CARREGAR',\n      browse: 'PROCURAR',\n      uploadPhoto: 'Carregar foto',\n      instead: 'ao invés',\n      capture: 'CAPTURAR',\n      somethingWrong: 'Desculpe, ocorreu algum erro. Tente novamente mais tarde',\n      couldntRead: 'Desculpe, não pudemos ler o código!',\n      couldntProcess: 'Desculpe, não pudemos processar sua imagem!',\n      moveOn: 'Tente novamente ou envie sua foto e prossiga',\n      tryAgain: 'Por favor, tente novamente',\n      dataReceived: 'Dados recebidos!',\n      enterManually: 'Tente novamente ou insira os dados manualmente abaixo',\n      positionQR:\n        'Posicione o código QR na frente da sua câmera para encaixá-lo na moldura vermelha ou carregue do seu computador.',\n      analyzing: 'Analisando a imagem. Aguarde, por favor',\n      submit: 'ENVIAR',\n      startOver: 'Comece novamente',\n      allDone: 'Tudo pronto!',\n      cantAnalyze:\n        'Atenção - não foi possível renderizar esta imagem. Tente reenviar ou selecione um formato de imagem mais genérico (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Desculpe - não oferecemos suporte a este formato de arquivo. Faça upload de um tipo de imagem compatível (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Nenhuma webcam detectada',\n      uploadVideo: 'Upload um vídeo',\n      skip: 'Pular?',\n      accessCamUpload: 'ACESSAR CÂMERA/CARREGAR',\n      browse: 'PROCURAR',\n      instead: 'ao invés',\n      or: 'ou',\n      stopRecording: 'Parar a gravação',\n      willBeStopped: 'A gravação irá parar em 5 minutos',\n      stopOnDone: 'Pare a gravação quando terminar!',\n      record: 'GRAVAR',\n      somethingWrong: 'Desculpe, ocorreu algum erro. Tente novamente mais tarde',\n      microphone: 'Microfone',\n      camera: 'Webcam',\n      selectMicrophone: 'Selecione seu microfone',\n      selectCam: 'Selecione sua webcam',\n      upload: 'Carregar',\n      playback: 'Reprodução',\n      stopPlayback: 'PARAR REPRODUÇÃO',\n      submit: 'ENVIAR',\n      startOver: 'Comece novamente',\n      allDone: 'Tudo pronto!',\n      alternativeRecordSpan: 'Carregue um videoclipe do seu computador.<br/>Co mo alternativa, &nbsp;',\n      alrenativeRecordHref: 'você pode gravar o vídeo com ',\n      cantAnalyze:\n        'Atenção - não foi possível renderizar este vídeo. Tente reenviar ou selecione um formato de vídeo mais genérico (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Desculpe - não oferecemos suporte a este formato de arquivo. Faça upload de um tipo de vídeo compatível (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'SELECIONAR',\n      pleaseChoose: 'Selecione',\n      this: 'ESTE',\n      one: 'um',\n      myChoice: 'MINHA ESCOLHA'\n    },\n    hm: {\n      addComment: 'Adicione um comentário abaixo',\n      commentMandatoryPlaceHolder: 'Adicione um comentário obrigatório... ',\n      commentOptionalPlaceHolder: 'Adicione um comentário opcional... ',\n      dragPin: 'Arraste para reposicionar (clique/toque longo para fixar com precisão). ',\n      removePin: 'Arraste para fora da imagem para excluir.  ',\n      editComment: 'Clique/toque no pino para editar o comentário. ',\n      addPin: 'Arraste o pino do painel abaixo e solte-o em um ponto de sua escolha na imagem.',\n      addPins: 'Arraste os pinos do painel abaixo e solte-os em um ponto de sua escolha na imagem. ',\n      leavePins: (minPoints, maxPoints) =>\n        `Deixe pelo menos ${minPoints}, mas no máximo ${maxPoints} pinos de todos os tipos. `,\n      leavePinsPerPage: (minPoints, maxPoints) => `Deixe pelo menos ${minPoints}, mas no máximo ${maxPoints} pinos. `,\n      leavePinsWithOff: maxPoints =>\n        `Deixe no máximo ${maxPoints} pinos de cada tipo ou clique em Avançar para ignorar. `,\n      leavePinsPerPageWithOff: maxPoints => `Deixe no máximo ${maxPoints} pinos ou clique em Avançar para ignorar. `,\n      leavePinWithOff: 'Deixe no máximo 1 pino de cada tipo ou clique em Avançar para ignorar. ',\n      leavePinPerPageWithOff: 'Deixe no máximo 1 pino ou clique em Avançar para ignorar. ',\n      leaveExactlyPin: 'Deixe 1 pino de cada tipo. ',\n      leaveExactlyPinPerPage: 'Deixe 1 pino. ',\n      leaveExactlyPins: maxPoints => `Deixe ${maxPoints} pinos de cada tipo. `,\n      leaveExactlyPinsPerPage: maxPoints => `Deixe ${maxPoints} pinos. `,\n      leaveComment: 'Digite abaixo da imagem para deixar um comentário. ',\n      noAnswers: 'Opção sem resposta, clique em Avançar para continuar.',\n      outOfPins: 'Seus pinos acabaram',\n      pinsBehavior:\n        'À medida que você se move pela imagem, verá áreas que serão destacadas com uma única queda de pino.',\n      clusters: 'Você só poderá colocar pinos nessas áreas destacadas.',\n      contentAware: 'Você pode soltar pinos dentro ou fora das áreas destacadas.'\n    },\n    mp: {\n      expand_note: 'Passe o mouse sobre ou clique na(s) imagem(ns) para expandir',\n      rb_note: rows => `Por favor, selecione apenas 1 resposta por item${rows ? ' abaixo' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (1 === min && 5000 === max) {\n          return 'Marque todos os que se aplicam:'\n        } else if (min === max) {\n          return `Por favor, selecione ${min !== 1 ? 'quaisquer' : 'apenas'} ${min} reposta${\n            min !== 1 ? 's' : ''\n          } por item${rows ? ' abaixo' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Por favor, selecione pelo menos ${min} reposta${\n            min !== 1 ? 's' : ''\n          } mas não mais do que ${max} por item${rows ? ' abaixo' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Por favor, selecione pelo menos ${min} reposta${min !== 1 ? 's' : ''} por item${\n            rows ? ' abaixo' : ''\n          }:`\n        } else if (0 === min && max < 5000) {\n          return `Por favor, selecione não mais do que ${max} reposta${max !== 1 ? 's' : ''} por item${\n            rows ? ' abaixo' : ''\n          }:`\n        } else {\n          return 'Marque todos os que se aplicam:'\n        }\n      }\n    },\n    sh: {\n      note: 'Clique em um produto para ampliar o zoom e adicioná-lo ao seu carrinho virtual se deseja comprá-lo na loja',\n      amazonNote: 'Clique em um produto para ampliar o zoom e adicioná-lo ao seu carrinho virtual.',\n      fullCart: 'Seu carrinho está cheio!',\n      qty: 'QTD',\n      addToCart: 'ADICIONAR AO CARRINHO',\n      deleteFromCart: 'EXCLUIR',\n      each: 'unid',\n      items: 'cada',\n      emptyCard: 'Seu carrinho está vazio',\n      total: 'Carrinho',\n      clearCart: 'Esvaziar carrinho',\n      backToStore: 'Voltar para a loja',\n      na: 'Nenhuma das acima',\n      next: 'PRÓXIMO',\n      maxCartCountError: max => `Adicione no máximo ${max} produtos ao seu carrinho `,\n      scrollError: `Role totalmente para a esquerda e para a direita para continuar na pesquisa. `,\n      maxSpentError: max => `Não gaste mais do que  ${max}.`,\n      maxProductCountError: max => `Adicione no máximo  ${max} de cada produto ao seu carrinho.`\n    },\n    rb: {\n      note: 'Por favor, selecione apenas 1 item:'\n    },\n    vo: {\n      note: 'Assista ao vídeo até o final'\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `Por favor, selecione ${min !== 1 ? 'quaisquer' : 'apenas'} ${min} item${min !== 1 ? 's' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Por favor, selecione no mínimo ${min} item${min !== 1 ? 's' : ''} e no máximo ${max}:`\n        } else if (5000 === max && min > 0) {\n          return `Por favor, selecione no mínimo ${min} item${min !== 1 ? 's' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Por favor, selecione no máximo ${max} item${max !== 1 ? 's' : ''}:`\n        } else {\n          return 'Marque todos os que se aplicam:'\n        }\n      }\n    },\n    oe: {\n      na: 'Não aplicáve',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Por favor, digite ${1 !== min ? 'quaisquer' : 'exatamente'} ${min} caractere${1 !== min ? 's' : ''}${\n            optional ? ' (opcional)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Por favor, digite no mínimo ${min} caractere${1 !== min ? 's' : ''} e no máximo ${max}${\n            optional ? ' (opcional)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Por favor, digite no mínimo ${min} caractere${1 !== min ? 's' : ''}${optional ? ' (opcional)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Por favor, digite até ${max} caractere${1 !== min ? 's' : ''}${optional ? ' (opcional)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Preencha os campos a seguir:'\n    },\n    mx: {\n      note: 'Mova os controles deslizantes realçados para continuar',\n      dragSlider: 'Arraste para a esquerda ou para a direita para responder'\n    },\n    psc: {\n      dragLeftRight: 'Arraste para a esquerda ou para a direita para responder'\n    },\n    ps: {\n      note: (value, remaining) => `Por favor, distribua ${remaining ? 'restantes' : ''} ${value} Entre os itens abaixo`,\n      allDone: 'Tudo pronto!',\n      total: `Total:`,\n      dragSlider: 'Arraste para a esquerda ou para a direita para responder'\n    },\n    cx: {\n      note: 'Comece a digitar a sua resposta para usar a rolagem automática ou selecione-o manualmente'\n    },\n    ro: {\n      note: 'Arraste para cima ou para baixo para reordenar:'\n    },\n    md: {\n      note1: 'Clique/toque no item selecionado primeiro<br/>Clique/toque novamente para apagar a seleção.',\n      note2: 'Agora, clique/toque no item selecionado por último<br/>Clique/toque novamente para apagar a seleção.',\n      note3:\n        'Obrigado! Passe para a pergunta seguinte<br/>ou clique/toque em qualquer item não selecionado para começar de novo.'\n    },\n    aro: {\n      note: 'Por favor, escolha um item para cada par.'\n    },\n    wd: {\n      note: 'Certifique-se de que cada valor subsequente é maior do que o anterior.'\n    },\n    emd: {\n      note: 'Assista ao vídeo até o final',\n      noAnswers: 'Nenhuma opção de resposta. Clique em avançar para continuar.',\n      start: 'Clique e segure para começar',\n      resume: 'Clique e segure para recomeçar',\n      continue: 'Você está pronto! <br />Clique em Avançar para continuar',\n      continueMobile: 'Você está pronto! <br /> Clique AQUI para continuar',\n      training: {\n        session: 'Sessão de treinamento',\n        note: 'Por favor, termine o treinamento',\n        moveLeft: 'Arraste o seletor totalmente para a esquerda',\n        moveBottom: 'Arraste o seletor totalmente para baixo',\n        moveRight: 'Agora, arraste o seletor totalmente para a direita',\n        moveTop: 'Agora, arraste o seletor totalmente para cima',\n        success: 'Ótimo trabalho!'\n      }\n    },\n    sft: {\n      noAnswers: 'Nenhuma opção de resposta. Clique em avançar para continuar.',\n      note: 'Responda o mais rápido possível com a resposta que você sentir que parece certa',\n      finish: 'Tudo pronto! <br /> Clique em Avançar para continuar',\n      training: {\n        start:\n          '<p>Esta questão exibe palavras diferentes rapidamente e exigirá sua concentração. ' +\n          'Você precisará reagir rapidamente para responder. </p> <p>Pronto para praticar?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Toque em \"{buttonLeft}\"`\n            : (mouse ? `Clique em \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Pressione tecla \"{keyBtnLeft}\"` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Toque em \"{buttonRight}\"`\n            : (mouse ? `Clique em \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Pressione tecla \"{keyBtnRight}\"` : ''),\n        fail: () => 'Lento demais',\n        success: () => 'Excelente!',\n        finish: () =>\n          '<p><strong> Excelente!</strong></p><p>Certifique-se de que não<br />' +\n          'se distrairá nos próximos 2-3 minutos. </p><p>Clique em Avançar para começar quando estiver pronto.</p>'\n      },\n      buttons: {\n        start: 'Começar',\n        yesno: {\n          left: 'Sim',\n          right: 'Não'\n        },\n        matches: {\n          left: 'Combina',\n          right: 'Não combina'\n        },\n        fits: {\n          left: 'Encaixa',\n          right: 'Não encaixa'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Nenhuma opção de resposta. Clique em avançar para continuar.',\n    placeholder: 'Por favor, especifique…',\n    pleaseSelect: 'Por favor, selecione…',\n    rotateLandscape: 'Gire o celular da vertical para a horizontal para continuar.',\n    rotatePortrait: 'Gire o celular da horizontal para a vertical para continuar.',\n    ir: {\n      selectWebCam: \"Selecione a webcam (se disponível) ou clique em 'Procurar' para carregar de seu dispositivo\",\n      noWebCam: 'Nenhuma webcam detectada',\n      accessCamUpload: 'ACESSAR CÂMERA/CARREGAR',\n      browse: 'PROCURAR',\n      uploadPhoto: 'Carregar foto',\n      instead: 'ao invés',\n      capture: 'CAPTURAR',\n      somethingWrong: 'Desculpe, ocorreu algum erro. Tente novamente mais tarde',\n      couldntRead: 'Desculpe, não pudemos ler o código!',\n      couldntProcess: 'Desculpe, não pudemos processar sua imagem!',\n      moveOn: 'Tente novamente ou envie sua foto e prossiga',\n      tryAgain: 'Por favor, tente novamente',\n      dataReceived: 'Dados recebidos!',\n      enterManually: 'Tente novamente ou insira os dados manualmente abaixo',\n      positionQR:\n        'Posicione o código QR na frente da sua câmera para encaixá-lo na moldura vermelha ou carregue do seu computador.',\n      analyzing: 'Analisando a imagem. Aguarde, por favor',\n      submit: 'ENVIAR',\n      startOver: 'Comece novamente',\n      allDone: 'Tudo pronto!',\n      cantAnalyze:\n        'Atenção - não foi possível renderizar esta imagem. Tente reenviar ou selecione um formato de imagem mais genérico (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Desculpe - não oferecemos suporte a este formato de arquivo. Faça upload de um tipo de imagem compatível (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Nenhuma webcam detectada',\n      uploadVideo: 'Upload um vídeo',\n      skip: 'Pular?',\n      accessCamUpload: 'ACESSAR CÂMERA/CARREGAR',\n      browse: 'PROCURAR',\n      instead: 'ao invés',\n      or: 'ou',\n      stopRecording: 'Parar a gravação',\n      willBeStopped: 'A gravação irá parar em 5 minutos',\n      stopOnDone: 'Pare a gravação quando terminar!',\n      record: 'GRAVAR',\n      somethingWrong: 'Desculpe, ocorreu algum erro. Tente novamente mais tarde',\n      microphone: 'Microfone',\n      camera: 'Webcam',\n      selectMicrophone: 'Selecione seu microfone',\n      selectCam: 'Selecione sua webcam',\n      upload: 'Carregar',\n      playback: 'Reprodução',\n      stopPlayback: 'PARAR REPRODUÇÃO',\n      submit: 'ENVIAR',\n      startOver: 'Comece novamente',\n      allDone: 'Tudo pronto!',\n      alternativeRecordSpan: 'Carregue um videoclipe do seu computador.<br/>Co mo alternativa, &nbsp;',\n      alrenativeRecordHref: 'você pode gravar o vídeo com ',\n      cantAnalyze:\n        'Atenção - não foi possível renderizar este vídeo. Tente reenviar ou selecione um formato de vídeo mais genérico (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Desculpe - não oferecemos suporte a este formato de arquivo. Faça upload de um tipo de vídeo compatível (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'SELECIONAR',\n      pleaseChoose: 'Selecione',\n      this: 'ESTE',\n      one: 'um',\n      myChoice: 'MINHA ESCOLHA'\n    },\n    hm: {\n      addComment: 'Adicione um comentário abaixo',\n      commentMandatoryPlaceHolder: 'Adicione um comentário obrigatório... ',\n      commentOptionalPlaceHolder: 'Adicione um comentário opcional... ',\n      dragPin: 'Arraste para reposicionar (clique/toque longo para fixar com precisão). ',\n      removePin: 'Arraste para fora da imagem para excluir.  ',\n      editComment: 'Clique/toque no pino para editar o comentário. ',\n      addPin: 'Arraste o pino do painel abaixo e solte-o em um ponto de sua escolha na imagem.',\n      addPins: 'Arraste os pinos do painel abaixo e solte-os em um ponto de sua escolha na imagem. ',\n      leavePins: (minPoints, maxPoints) =>\n        `Deixe pelo menos ${minPoints}, mas no máximo ${maxPoints} pinos de todos os tipos. `,\n      leavePinsPerPage: (minPoints, maxPoints) => `Deixe pelo menos ${minPoints}, mas no máximo ${maxPoints} pinos. `,\n      leavePinsWithOff: maxPoints =>\n        `Deixe no máximo ${maxPoints} pinos de cada tipo ou clique em Avançar para ignorar. `,\n      leavePinsPerPageWithOff: maxPoints => `Deixe no máximo ${maxPoints} pinos ou clique em Avançar para ignorar. `,\n      leavePinWithOff: 'Deixe no máximo 1 pino de cada tipo ou clique em Avançar para ignorar. ',\n      leavePinPerPageWithOff: 'Deixe no máximo 1 pino ou clique em Avançar para ignorar. ',\n      leaveExactlyPin: 'Deixe 1 pino de cada tipo. ',\n      leaveExactlyPinPerPage: 'Deixe 1 pino. ',\n      leaveExactlyPins: maxPoints => `Deixe ${maxPoints} pinos de cada tipo. `,\n      leaveExactlyPinsPerPage: maxPoints => `Deixe ${maxPoints} pinos. `,\n      leaveComment: 'Digite abaixo da imagem para deixar um comentário. ',\n      noAnswers: 'Opção sem resposta, clique em Avançar para continuar.',\n      outOfPins: 'Seus pinos acabaram',\n      pinsBehavior:\n        'À medida que você se move pela imagem, verá áreas que serão destacadas com uma única queda de pino.',\n      clusters: 'Você só poderá colocar pinos nessas áreas destacadas.',\n      contentAware: 'Você pode soltar pinos dentro ou fora das áreas destacadas.'\n    },\n    mp: {\n      expand_note: 'Passe o mouse sobre ou clique na(s) imagem(ns) para expandir',\n      rb_note: rows => `Por favor, selecione apenas 1 resposta por item${rows ? ' abaixo' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (1 === min && 5000 === max) {\n          return 'Marque todos os que se aplicam:'\n        } else if (min === max) {\n          return `Por favor, selecione ${min !== 1 ? 'quaisquer' : 'apenas'} ${min} reposta${\n            min !== 1 ? 's' : ''\n          } por item${rows ? ' abaixo' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Por favor, selecione pelo menos ${min} reposta${\n            min !== 1 ? 's' : ''\n          } mas não mais do que ${max} por item${rows ? ' abaixo' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Por favor, selecione pelo menos ${min} reposta${min !== 1 ? 's' : ''} por item${\n            rows ? ' abaixo' : ''\n          }:`\n        } else if (0 === min && max < 5000) {\n          return `Por favor, selecione não mais do que ${max} reposta${max !== 1 ? 's' : ''} por item${\n            rows ? ' abaixo' : ''\n          }:`\n        } else {\n          return 'Marque todos os que se aplicam:'\n        }\n      }\n    },\n    sh: {\n      note: 'Clique em um produto para ampliar o zoom e adicioná-lo ao seu carrinho virtual se deseja comprá-lo na loja',\n      amazonNote: 'Clique em um produto para ampliar o zoom e adicioná-lo ao seu carrinho virtual.',\n      fullCart: 'Seu carrinho está cheio!',\n      qty: 'QTD',\n      addToCart: 'ADICIONAR AO CARRINHO',\n      deleteFromCart: 'EXCLUIR',\n      each: 'cada',\n      items: 'Unid',\n      emptyCard: 'Seu carrinho está vazio',\n      total: 'Carrinho',\n      clearCart: 'Esvaziar carrinho',\n      backToStore: 'Voltar para a loja',\n      na: 'Nenhuma das acima',\n      next: 'PRÓXIMO',\n      maxCartCountError: max => `Adicione no máximo ${max} produtos ao seu carrinho `,\n      scrollError: `Role totalmente para a esquerda e para a direita para continuar na pesquisa. `,\n      maxSpentError: max => `Não gaste mais do que  ${max}.`,\n      maxProductCountError: max => `Adicione no máximo  ${max} de cada produto ao seu carrinho.`\n    },\n    rb: {\n      note: 'Por favor, selecione apenas 1 item:'\n    },\n    vo: {\n      note: 'Assista ao vídeo até o final'\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `Por favor, selecione ${min !== 1 ? 'quaisquer' : 'apenas'} ${min} item${min !== 1 ? 's' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Por favor, selecione no mínimo ${min} item${min !== 1 ? 's' : ''} e no máximo ${max}:`\n        } else if (5000 === max && min > 0) {\n          return `Por favor, selecione no mínimo ${min} item${min !== 1 ? 's' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Por favor, selecione no máximo ${max} item${max !== 1 ? 's' : ''}:`\n        } else {\n          return 'Marque todos os que se aplicam:'\n        }\n      }\n    },\n    oe: {\n      na: 'Não aplicáve',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Por favor, digite ${1 !== min ? 'quaisquer' : 'exatamente'} ${min} caractere${1 !== min ? 's' : ''}${\n            optional ? ' (opcional)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Por favor, digite no mínimo ${min} caractere${1 !== min ? 's' : ''} e no máximo ${max}${\n            optional ? ' (opcional)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Por favor, digite no mínimo ${min} caractere${1 !== min ? 's' : ''}${optional ? ' (opcional)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Por favor, digite até ${max} caractere${1 !== min ? 's' : ''}${optional ? ' (opcional)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Preencha os campos a seguir:'\n    },\n    mx: {\n      note: 'Mova os controles deslizantes realçados para continuar',\n      dragSlider: 'Arraste para a esquerda ou para a direita para responder'\n    },\n    psc: {\n      dragLeftRight: 'Arraste para a esquerda ou para a direita para responder'\n    },\n    ps: {\n      note: (value, remaining) => `Por favor, distribua ${remaining ? 'restantes' : ''} ${value} Entre os itens abaixo`,\n      allDone: 'Tudo pronto!',\n      total: `Total:`,\n      dragSlider: 'Arraste para a esquerda ou para a direita para responder'\n    },\n    cx: {\n      note: 'Comece a digitar a sua resposta para usar a rolagem automática ou selecione-o manualmente'\n    },\n    ro: {\n      note: 'Arraste para cima ou para baixo para reordenar:'\n    },\n    md: {\n      note1: 'Clique/toque no item selecionado primeiro<br/>Clique/toque novamente para apagar a seleção.',\n      note2: 'Agora, clique/toque no item selecionado por último<br/>Clique/toque novamente para apagar a seleção.',\n      note3:\n        'Obrigado! Passe para a pergunta seguinte<br/>ou clique/toque em qualquer item não selecionado para começar de novo.'\n    },\n    aro: {\n      note: 'Por favor, escolha um item para cada par.'\n    },\n    wd: {\n      note: 'Certifique-se de que cada valor subsequente é maior do que o anterior.'\n    },\n    emd: {\n      note: 'Assista ao vídeo até o final',\n      noAnswers: 'Nenhuma opção de resposta. Clique em avançar para continuar.',\n      start: 'Clique e segure para começar',\n      resume: 'Clique e segure para recomeçar',\n      continue: 'Você está pronto! <br />Clique em Avançar para continuar',\n      continueMobile: 'Você está pronto! <br /> Clique AQUI para continuar',\n      training: {\n        session: 'Sessão de treinamento',\n        note: 'Por favor, termine o treinamento',\n        moveLeft: 'Arraste o seletor totalmente para a esquerda',\n        moveBottom: 'Arraste o seletor totalmente para baixo',\n        moveRight: 'Agora, arraste o seletor totalmente para a direita',\n        moveTop: 'Agora, arraste o seletor totalmente para cima',\n        success: 'Ótimo trabalho!'\n      }\n    },\n    sft: {\n      noAnswers: 'Nenhuma opção de resposta. Clique em avançar para continuar.',\n      note: 'Responda o mais rápido possível com a resposta que você sentir que parece certa',\n      finish: 'Tudo pronto! <br /> Clique em Avançar para continuar',\n      training: {\n        start:\n          '<p>Esta questão exibe palavras diferentes rapidamente e exigirá sua concentração. ' +\n          'Você precisará reagir rapidamente para responder. </p> <p>Pronto para praticar?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Toque em \"{buttonLeft}\"`\n            : (mouse ? `Clique em \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Pressione tecla \"{keyBtnLeft}\"` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Toque em \"{buttonRight}\"`\n            : (mouse ? `Clique em \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Pressione tecla \"{keyBtnRight}\"` : ''),\n        fail: () => 'Lento demais',\n        success: () => 'Excelente!',\n        finish: () =>\n          '<p><strong> Excelente!</strong></p><p>Certifique-se de que não<br />' +\n          'se distrairá nos próximos 2-3 minutos. </p><p>Clique em Avançar para começar quando estiver pronto.</p>'\n      },\n      buttons: {\n        start: 'Começar',\n        yesno: {\n          left: 'Sim',\n          right: 'Não'\n        },\n        matches: {\n          left: 'Combina',\n          right: 'Não combina'\n        },\n        fits: {\n          left: 'Encaixa',\n          right: 'Não encaixa'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Nu există opțiune de răspuns, dați clic pe Continuare..',\n    placeholder: 'Indicați...',\n    pleaseSelect: 'Selectați...',\n    rotateLandscape: 'Rotește-ți telefonul de la portret la peisaj pentru a continua.',\n    rotatePortrait: 'Rotește-ți telefonul de la peisaj la portret pentru a continua.',\n    ir: {\n      selectWebCam:\n        'Selectați camera web (dacă este disponibilă) sau dați clic pe „Browse” pentru a încărca din dispozitiv',\n      noWebCam: 'Nu s-a detectat niciun webcam',\n      accessCamUpload: 'ACCESAȚI CAMERA/ÎNCĂRCAȚI',\n      browse: 'RĂSFOIȚI',\n      uploadPhoto: 'Încărcați o fotografie',\n      camera: 'Web Camera',\n      instead: 'în schimb',\n      capture: 'FACEȚI FOTOGRAFIA',\n      somethingWrong: 'Ne pare rău. Ceva n-a mers bine. Încercați din nou mai târziu.',\n      couldntRead: 'Ne pare rău, nu am putut citi codul!',\n      couldntProcess: 'Ne pare rău, nu am putut procesa imaginea!',\n      inValidCode: 'Please, submit the valid code',\n      moveOn: 'Încercați din nou sau trimiteți fotografia și continuați',\n      tryAgain: 'Încercați din nou',\n      dataReceived: 'Datele au fost primite!',\n      enterManually: 'Încercați din nou sau introduceți datele manual mai jos',\n      positionQR:\n        'Poziționați codul QR în fața camerei pentru a se încadra în cadrul roșu sau încărcați-l din computer.',\n      positionQRMobile: 'Poziționați codul QR în fața camerei sau încărcați-l de pe dispozitivul dvs.',\n      analyzing: 'Se analizează imaginea, vă rugăm să așteptați',\n      submit: 'TRIMITEȚI',\n      startOver: 'Începeți din nou',\n      allDone: 'Gata!',\n      cantAnalyze:\n        'Atenție - nu am reușit să afișăm această imagine. Încercați să o trimiteți din nou sau alegeți un alt format de imagine (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Ne pare rău - acest format de fișier nu este acceptat. Încercați din nou cu un format acceptat (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Nu s-a detectat niciun webcam',\n      uploadVideo: 'Încărcare videoclip',\n      skip: 'Ignorați?',\n      accessCamUpload: 'ACCEDI ALLA FOTOCAMERA/CARICAMENTO',\n      browse: 'RĂSFOIȚI',\n      instead: 'în schimb',\n      or: 'sau',\n      stopRecording: 'Opriți înregistrarea',\n      willBeStopped: 'Înregistrarea se va opri la <b>5 minute</b>',\n      stopOnDone: 'Opriți înregistrarea când ați terminat!',\n      record: 'ÎNREGISTRAȚI',\n      somethingWrong: 'Ne pare rău. Ceva n-a mers bine. Încercați din nou mai târziu.',\n      dataReceived: 'Datele au fost primite!',\n      microphone: 'Microfonul',\n      camera: 'Web Camera',\n      selectMicrophone: 'Selectați microfonul',\n      selectCam: 'Selectați camera web',\n      submit: 'TRIMITEȚI',\n      upload: 'ÎNCĂRCARE',\n      playback: 'REDARE',\n      stopPlayback: 'OPRIRE REDARE',\n      startOver: 'Începeți din nou',\n      allDone: 'Gata!',\n      alternativeRecordSpan:\n        'Încărcați un videoclip de pe computer sau dispozitiv.<br/> Alternativ, puteți să înregistrați videoclipul cu un webcam.&nbsp;',\n      alrenativeRecordHref: 'puteți să înregistrați videoclipul cu un webcam',\n      cantAnalyze:\n        'Atenție - nu am reușit să afișăm acest videoclip. Încercați să îl trimiteți din nou sau alegeți un alt format video (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Ne pare rău - acest format de fișier nu este acceptat. Încercați din nou cu un format video acceptat (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'ALEGEȚI',\n      pleaseChoose: 'Vă rugăm să alegeți',\n      this: 'ACEASTA',\n      one: 'unu',\n      myChoice: 'ALEGEREA ME'\n    },\n    hm: {\n      addComment: 'Adăugați un comentariu mai jos',\n      commentMandatoryPlaceHolder: 'Adăugați un comentariu obligatoriu... ',\n      commentOptionalPlaceHolder: 'Adăugați un comentariu opțional... ',\n      dragPin: 'Trageți pentru a repoziționa (clic lung/atingeți pentru poziționarea precisă a pin-ului). ',\n      removePin:\n        'Trageți în afara imaginii pentru a șterge.Trageți în afara imaginii pentru a șterge.Trageți în afara imaginii pentru a șterge.',\n      editComment: 'Dați clic/atingeți pentru a edita comentariul. ',\n      addPin: 'Trageți pin-ul de pe panoul de control de mai jos și plasați-l într-un loc ales de dvs. pe imagine.',\n      addPins:\n        'Trageți pin-urile de pe panoul de control de mai jos și plasați-le într-un loc ales de dvs. pe imagine.',\n      leavePins: (minPoints, maxPoints) =>\n        `Lăsați cel puțin ${minPoints}, dar nu mai mult de ${maxPoints} (de) pin-uri de fiecare fel.`,\n      leavePinsAny: (minPoints, maxPoints) =>\n        `Lăsați cel puțin ${minPoints}, dar nu mai mult de ${maxPoints} (de) pin-uri.`,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `Lăsați cel puțin ${minPoints}, dar nu mai mult de ${maxPoints} (de) pin-uri.`,\n      leavePinsWithOff: maxPoints =>\n        `Lăsați cel mult ${maxPoints} pin de fiecare fel sau dați clic pe Continuare pentru a omite acest pas.`,\n      leavePinsWithOffAny: maxPoints =>\n        `Lăsați cel mult ${maxPoints} pin-uri de fiecare fel sau dați clic pe Continuare pentru a omite.`,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Nu lăsați mai mult de ${maxPoints} (de) pin-uri sau dați clic pe Continuare pentru a omite.`,\n      leavePinWithOff: `Lăsați cel mult 1 pin de fiecare fel sau dați clic pe Continuare pentru a omite acest pas.`,\n      leavePinWithOffAny: `Nu lăsați mai mult de un ac de orice fel sau dați clic pe Următorul pentru a sări peste.`,\n      leavePinPerPageWithOff: 'Nu lăsați mai mult de 1 pin-uri sau dați clic pe Continuare pentru a omite.',\n      leaveExactlyPin: `Lăsați 1 pin din fiecare fel.`,\n      leaveExactlyPinAny: `Lăsați un ac de orice fel.`,\n      leaveExactlyPinPerPage: 'Lăsați 1 pin.',\n      leaveExactlyPins: maxPoints => `Lăsați ${maxPoints} pin-uri de fiecare fel.`,\n      leaveExactlyPinsAny: maxPoints => `Lăsați ${maxPoints} pin-uri de fiecare fel.`,\n      leaveExactlyPinsPerPage: maxPoints => `Lăsați ${maxPoints} pin-uri.`,\n      leaveComment: 'Tastați sub imagine pentru a lăsa comentariul.',\n      noAnswers: 'Nu există opțiune de răspuns, dați clic pe Continuare.',\n      outOfPins: 'Nu mai aveți pin-uri',\n      pinsBehavior:\n        'Pe măsură ce vă deplasați pe imagine, veți vedea zone care vor fi evidențiate cu o singură picătură de ac.',\n      clusters: 'Veți putea plasa ace numai în aceste zone evidențiate.',\n      contentAware: 'Puteți lăsa ace în interiorul sau în afara zonelor evidențiate.'\n    },\n    mp: {\n      expand_note: 'Vă rugăm să treceți peste sau să dați clic pe imagini pentru a le mări',\n      rb_note: rows => `Selectați doar 1 răspunsul pentru articolul${rows ? ' de mai jos' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (min === max) {\n          return `Selectaţi oricare ${min} răspuns${min !== 1 ? 'uri' : ''} pentru articolul${\n            rows ? ' de mai jos' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Selectaţi cel puțin ${min} răspuns${\n            min !== 1 ? 'ur' : ''\n          }, dar nu mai mult de ${max} pentru fiecare punct${rows ? ' de mai jos' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Selectaţi cel puțin ${min} răspuns${min !== 1 ? 'ur' : ''} pentru fiecare punct${\n            rows ? ' de mai jos' : ''\n          }:`\n        } else if (0 === min && max < 5000) {\n          return `Selectaţi cel mult ${max} răspuns${max !== 1 ? 'ur' : ''}  pentru fiecare punct${\n            rows ? ' de mai jos' : ''\n          }:`\n        } else {\n          return 'Bifați toate opțiunile care se aplică:'\n        }\n      }\n    },\n    sh: {\n      note: 'Dați clic pe un produs pentru a mări imaginea și adăugați-l la coșul virtual dacă l-ați cumpăra în magazin.',\n      amazonNote: 'Faceți clic pe un produs pentru a-l mări și a-l adăuga în coșul dvs. de cumpărături virtual.',\n      fullCart: 'Coșul dvs. este plin!!',\n      qty: 'CANT.',\n      addToCart: 'ADĂUGARE ÎN COȘ',\n      added: 'ADĂUGAT',\n      deleteFromCart: 'ȘTERGERE',\n      emptyCard: 'Coșul dvs. este gol!',\n      total: 'Coș',\n      each: 'fiecare',\n      items: 'articole',\n      fullscreen: 'Fullscreen mode',\n      closeFullscreen: 'Exit fullscreen',\n      clearCart: 'Golire coș',\n      next: 'CONTINUARE',\n      backToStore: 'Înapoi la magazin',\n      na: 'Niciunul/Niciuna dintre cele de mai sus',\n      shelfError: (count, products) =>\n        `There is no place for ${count !== 1 ? 'these' : 'this'} product${\n          count !== 1 ? 's' : ''\n        } on the shelves: ${products}!`,\n      maxCartCountError: max => `Vă rugăm să adăugați maximum ${max} produse în coș`,\n      scrollError: `Vă rugăm să derulați complet la stânga și la dreapta pentru a continua sondajul. `,\n      maxSpentError: max => `Vă rugăm să cheltuiți maximum ${max}.`,\n      maxProductCountError: max => `Vă rugăm să adăugați în coș maximum o cantitate de ${max} pentru fiecare produs.`\n    },\n    rb: {\n      note: 'Selectaţi numai 1 articol:'\n    },\n    vo: {\n      note: 'Vizionați videoclipul până la sfârșit\\n'\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `Selectaţi oricare ${min} articol${min !== 1 ? 'e' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Selectaţi cel puțin ${min} articol${min !== 1 ? 'e' : ''}, dar nu mai mult de ${max} pe rând:`\n        } else if (5000 === max && min > 0) {\n          return `Selectaţi cel puțin ${min} articol${min !== 1 ? 'e' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Selectaţi cel puțin ${max} articol${max !== 1 ? 'e' : ''}, dar nu mai mult de ${min} pe rând:`\n        } else {\n          return 'Bifați toate opțiunile care se aplică:'\n        }\n      }\n    },\n    oe: {\n      na: 'Nu se aplică',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Introduceți ${1 !== min ? 'orice' : 'numai'} ${min} caracter${1 !== min ? 'e' : ''}${\n            optional ? ' (opțional)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Introduceți cel puțin ${min} caracter${1 !== min ? 'e' : ''} dar nu mai mult de  ${max}${\n            optional ? ' (opțional)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Introduceți cel puțin ${min} caracter${1 !== min ? 'e' : ''}${optional ? ' (opțional)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Introduceți cel mult ${max} caracter${1 !== max ? 'e' : ''}${optional ? ' (opțional)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Completați următoarele câmpuri:'\n    },\n    mx: {\n      note: 'Mutați glisoarele evidențiate pentru a continua',\n      dragSlider: 'Trageți spre stânga sau spre dreapta pentru a răspunde.'\n    },\n    psc: {\n      dragLeftRight: 'Trageți spre stânga sau spre dreapta pentru a răspunde.'\n    },\n    ps: {\n      note: value => `Distribuiți ${value} rămase între elementele de mai jos`,\n      allDone: `Terminé!`,\n      total: `Total:`,\n      dragSlider: 'Trageți spre stânga sau spre dreapta pentru a răspunde.'\n    },\n    cx: {\n      note: 'Deschideți folderul depozitar și începeți să introduceți răspunsul pentru a derula automat sau selectați-l manual.'\n    },\n    ro: {\n      note: 'Trageți în sus sau în jos pentru a reordona:'\n    },\n    md: {\n      note1:\n        'Dați clic pe/atingeți elementul ales <b>primul</b>.<br/>Dați clic/atingeți din nou pentru a șterge alegerea.',\n      note2:\n        'Dați clic pe/atingeți elementul ales <b>ultimul</b>.<br/>Dați clic/atingeți din nou pentru a șterge alegerea.',\n      note3:\n        'Mulțumim! Treceți la întrebarea următoare sau dați clic pe/atingeți orice element neselectat pentru a începe din nou.'\n    },\n    aro: {\n      note: 'Alegeți un element din fiecare pereche:'\n    },\n    wd: {\n      note: 'Asigurați-vă că fiecare dintre valorile următoare este mai mare decât cea anterioară.'\n    },\n    emd: {\n      note: 'Vizionați videoclipul până la sfârșit\\n',\n      noAnswers: 'Nu există opțiune de răspuns, dați clic pe Continuare.',\n      start: 'Dați clic și țineți apăsat pentru a începe',\n      resume: 'Dați clic și țineți apăsat pentru a relua',\n      continue: 'Ați terminat! <br />Apăsați Pagina următoare pentru a continua',\n      continueMobile: 'Ești gata! <br /> Apasă AICI pentru a continua',\n      training: {\n        session: 'sesiune de instruire',\n        note: 'Vă rog să terminați antrenamentul',\n        moveLeft: 'Trageți cadranul până la stânga',\n        moveBottom: 'Trageți cadranul până jos',\n        moveRight: 'Acum, trageți cadranul până la dreapta',\n        moveTop: 'Acum, trageți cadranul până sus',\n        success: 'Bravo!'\n      }\n    },\n    sft: {\n      noAnswers: 'Nu există opțiune de răspuns, dați clic pe Continuare.',\n      note: 'Vă rugăm să răspundeți cât mai repede puteți, cu alternativa pe care o simțiți corectă în mod intuitiv',\n      finish: 'Ați terminat! <br /> Apăsați Pagina următoare pentru a continua',\n      training: {\n        start:\n          '<p>Această întrebare vă va arăta rapid diferite cuvinte și necesită concentrare. ' +\n          'Trebuie să reacționați rapid pentru a răspunde. </p> <p>Gata de antrenament?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Apăsați \"{buttonLeft}\"`\n            : (mouse ? `Dați clic pe \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Apăsați tasta „F”` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Apăsați \"{buttonRight}\"`\n            : (mouse ? `Dați clic pe \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Apăsați tasta „J”` : ''),\n        fail: () => 'Prea încet',\n        success: () => 'Minunat!',\n        finish: () =>\n          '<p><strong> Excelent!</strong></p><p>Asigurați-vă că nimic nu<br />' +\n          'vă va distrage atenția<br/> în următoarele 2-3 minute. </p><p>Apăsați Pagina următoare când sunteți gata.</p>'\n      },\n      buttons: {\n        start: 'Start',\n        yesno: {\n          left: 'Da',\n          right: 'Nu'\n        },\n        matches: {\n          left: 'Corespunde',\n          right: 'Nu corespunde'\n        },\n        fits: {\n          left: 'Se potrivește',\n          right: 'Nu se potrivește'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Нет варианта ответа, нажмите на «Далее», чтобы продолжить.',\n    placeholder: 'Введите Ваш ответ...',\n    pleaseSelect: 'Выберите вариант...',\n    rotateLandscape: 'Поверните телефон с портретной ориентации на ландшафтную.',\n    rotatePortrait: 'Поверните телефон с ландшафтной ориентации на портретную.',\n    ir: {\n      selectWebCam: 'Выберите веб-камеру (если доступна) или нажмите на «Обзор» для загрузки с вашего устройства',\n      noWebCam: 'Веб-камера не обнаружена',\n      accessCamUpload: 'ДОСТУП К КАМЕРЕ/ЗАГРУЗИТЬ',\n      browse: 'ОБЗОР',\n      uploadPhoto: 'Загрузить фото',\n      instead: 'вместо',\n      startOver: 'НАЧАТЬ ЗАНОВО',\n      capture: 'СНИМОК',\n      allDone: 'ВСЕ ГОТОВО!',\n      somethingWrong: 'Извините, что-то пошло не так. Повторите попытку позже',\n      couldntRead: 'К сожалению, мы не смогли считать код!',\n      couldntProcess: 'К сожалению, мы не смогли обработать ваше изображение!',\n      moveOn: 'Попробуйте еще раз или отправьте фото и двигайтесь дальше',\n      tryAgain: 'Повторите попытку',\n      dataReceived: 'Данные получены!',\n      enterManually: 'Повторите попытку или введите данные вручную ниже',\n      positionQR:\n        'Расположите QR-код перед камерой, вписав его в красную рамку, или загрузите его с вашего компьютера.',\n      submit: 'ОТПРАВИТЬ',\n      analyzing: 'Выполняется анализ изображения, подождите...',\n      cantAnalyze:\n        'Внимание! Не удалось отобразить это изображение. Повторите попытку или выберите более распространенный формат изображения (JPG, PNG, GIF, BMP).',\n      wrongFormat:\n        'К сожалению, мы не поддерживаем этот формат файла. Загрузите поддерживаемый тип изображения (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Веб-камера не обнаружена',\n      uploadVideo: 'Загрузить видео',\n      skip: 'Пропустить?',\n      accessCamUpload: 'ДОСТУП К КАМЕРЕ/ЗАГРУЗИТЬ',\n      browse: 'ОБЗОР',\n      instead: 'Вместо',\n      or: 'или',\n      stopRecording: 'Остановить запись',\n      willBeStopped: 'Запись остановится по истечении 5 минут',\n      stopOnDone: 'Остановите запись, когда закончите!',\n      record: 'ЗАПИСЬ',\n      somethingWrong: 'Извините, что-то пошло не так. Повторите попытку позже',\n      microphone: 'Микрофон',\n      camera: 'Веб-камера',\n      selectMicrophone: 'Выберите микрофон',\n      selectCam: 'Выберите веб-камеру',\n      upload: 'Загрузить',\n      playback: 'Воспроизведение',\n      stopPlayback: 'Остановить',\n      submit: 'ОТПРАВИТЬ',\n      startOver: 'ЗАНОВО',\n      allDone: 'ГОТОВО!',\n      alternativeRecordSpan: 'Загрузите видеоклип с Вашего компьютерного устройства.<br/>Как вариант, Вы можете &nbsp;',\n      alrenativeRecordHref: ' записать видео с веб-камеры.',\n      cantAnalyze:\n        'Внимание! Не удалось отобразить это видео. Повторите попытку или выберите более распространенный формат видео (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'К сожалению, мы не поддерживаем этот формат файла. Загрузите видео в поддерживаемом формате (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'ВЫБРАТЬ',\n      pleaseChoose: 'Пожалуйста, выберите',\n      this: 'ЭТОТ',\n      one: 'один',\n      myChoice: 'Мой ВЫБОР'\n    },\n    hm: {\n      addComment: 'Добавьте комментарий ниже',\n      commentMandatoryPlaceHolder: 'Добавьте обязательный комментарий...',\n      commentOptionalPlaceHolder: 'Добавьте необязательный комментарий... ',\n      dragPin: 'Перетащите, чтобы изменить положение (длительное нажатие для точной фиксации). ',\n      removePin: 'Для удаления перетащите пин за пределы изображения.  ',\n      editComment: 'Нажмите на пин, чтобы изменить комментарий. ',\n      addPin: 'Перетащите пин из панели ниже и поместите его в нужное место на изображении.',\n      addPins: 'Перетащите пины из панели ниже и поместите их в нужное место на изображении. ',\n      leavePins: (minPoints, maxPoints) =>\n        `Поставьте не менее ${minPoints}, но не более ${maxPoints} пинов каждого типа. `,\n      leavePinsAny: (minPoints, maxPoints) =>\n        `Поставьте не менее ${minPoints}, но не более ${maxPoints} пинов любого типа. `,\n      leavePinsPerPage: (minPoints, maxPoints) => `Поставьте не менее ${minPoints}, но не более ${maxPoints} пинов. `,\n      leavePinsWithOff: maxPoints =>\n        `Поставьте не более ${maxPoints} пинов каждого типа или нажмите «Дальше», чтобы пропустить. `,\n      leavePinsWithOffAny: maxPoints =>\n        `Поставьте не более ${maxPoints} пинов любого типа или нажмите «Дальше», чтобы пропустить. `,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Поставьте не более ${maxPoints} пинов или нажмите «Дальше», чтобы пропустить. `,\n      leavePinWithOff: 'Поставьте не более 1 пина каждого типа или нажмите «Дальше», чтобы пропустить. ',\n      leavePinWithOffAny: 'Поставьте не более 1 пина любого типа или нажмите «Дальше», чтобы пропустить. ',\n      leavePinPerPageWithOff: 'Поставьте не более 1 пина или нажмите «Дальше», чтобы пропустить. ',\n      leaveExactlyPin: 'Поставьте по 1 пину каждого типа. ',\n      leaveExactlyPinAny: 'Поставьте 1 пин любого типа. ',\n      leaveExactlyPinPerPage: 'Поставьте 1 пин. ',\n      leaveExactlyPins: maxPoints =>\n        `Поставьте по ${maxPoints} пин${maxPoints >= 2 ? (maxPoints < 5 ? 'а' : 'oв') : ''} каждого вида. `,\n      leaveExactlyPinsAny: maxPoints =>\n        `Поставьте по ${maxPoints} пин${maxPoints >= 2 ? (maxPoints < 5 ? 'а' : 'oв') : ''} любого вида. `,\n      leaveExactlyPinsPerPage: maxPoints =>\n        `Поставьте по ${maxPoints} пин${maxPoints >= 2 ? (maxPoints < 5 ? 'а' : 'oв') : ''}. `,\n      leaveComment: 'Введите текст под изображением, чтобы оставить комментарий. ',\n      noAnswers: 'Нет варианта ответа. Для продолжения нажмите «Далее». ',\n      outOfPins: 'у вас не осталось пинов',\n      pinsBehavior: 'При перемещении по изображению вы увидите области, которые будут выделены когда в них стоит пин.',\n      clusters: 'Вы можете размещать пины только в этих выделенных областях.',\n      contentAware: 'Вы можете помещать пины внутрь выделенных областей или снаружи них.'\n    },\n    mp: {\n      expand_note: 'Пожалуйста, наведите курсор или нажмите на изображение(-я), чтобы развернуть',\n      rb_note: rows => `Пожалуйста, выберите только 1 ответ в каждом пункте${rows ? ' ниже' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (1 === min && 5000 === max) {\n          return 'Выберите все подходящие варианты:'\n        } else if (min === max) {\n          return `Пожалуйста, выберите любые ${min < 5 ? 'а' : 'ов'} в каждом пункте${rows ? ' ниже' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Выберите минимум ${min}, но не более ${max} ответов в каждом пункте${rows ? ' ниже' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Выберите минимум ${min} ответ${max >= 2 ? (max < 5 ? 'а' : 'ов') : ''} в каждом пункте${\n            rows ? ' ниже' : ''\n          }:`\n        } else if (0 === min && max < 5000) {\n          return `Выберите не более ${max} ответ${1 == min ? 'а' : 'ов'} в каждом пункте${rows ? ' ниже' : ''}:`\n        } else {\n          return 'Выберите все подходящие варианты:'\n        }\n      }\n    },\n    sh: {\n      note: 'Нажмите на товар, чтобы увеличить его и добавить в свою виртуальную корзину, если бы вы купили его в магазине',\n      amazonNote: 'Нажмите на товар, чтобы увеличить его и добавить в свою виртуальную корзину.',\n      fullCart: 'Ваша корзина заполнена!',\n      qty: 'КОЛ-ВО',\n      addToCart: 'ДОБАВИТЬ В КОРЗИНУ',\n      deleteFromCart: 'УДАЛИТЬ',\n      emptyCard: 'Ваша корзина пуста',\n      each: 'каждый',\n      items: 'продуктов',\n      total: 'Корзина',\n      clearCart: 'Очистить корзину',\n      backToStore: 'Назад в магазин',\n      na: 'Ничего из перечисленного',\n      next: 'ДАЛЕЕ',\n      maxCartCountError: max => `Добавьте в свою корзину не более ${max} товаров.`,\n      scrollError: `Полностью прокрутите страницу влево и вправо, чтобы продолжить прохождение опроса. `,\n      maxSpentError: max => `Потратьте не более ${max}.`,\n      maxProductCountError: max => `Добавьте в корзину каждого товара не более ${max}.`\n    },\n    rb: {\n      note: 'Выберите 1 вариант:'\n    },\n    vo: {\n      note: 'Досмотрите видео до конца'\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `Выберите ${min} чекбокс${min >= 3 ? (min < 5 ? 'а' : 'ов') : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Выберите от ${min} до ${max} чекбокс${max >= 3 ? (max < 5 ? 'а' : 'ов') : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Выберите не менее ${min} чекбокс${min >= 3 ? (min < 5 ? 'а' : 'ов') : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Выберите не более ${max} чекбокс${max >= 3 ? (max < 5 ? 'а' : 'ов') : ''}:`\n        } else {\n          return 'Выберите все подходящие варианты:'\n        }\n      }\n    },\n    oe: {\n      na: 'Не применимо',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Введите ${min} символ${min > 1 && min <= 4 ? 'а' : ''}${min >= 5 ? 'ов' : ''}${\n            optional ? ' (необязательное поле)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Введите от ${min} до ${max} символ${min > 1 && min <= 4 ? 'а' : ''}${min >= 5 ? 'ов' : ''}${\n            optional ? ' (необязательное поле)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Введите не менее ${min} символ${min > 1 && min <= 4 ? 'а' : ''}${min >= 5 ? 'ов' : ''}${\n            optional ? ' (необязательное поле)' : ''\n          }:`\n        } else if (0 === min && max < 5000) {\n          return `Введите не более ${min} символ${min > 1 && min <= 4 ? 'а' : ''}${min >= 5 ? 'ов' : ''}${\n            optional ? ' (необязательное поле)' : ''\n          }:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Заполните следующие поля:'\n    },\n    mx: {\n      note: 'Переместите выделенные слайдеры, чтобы продолжить',\n      dragSlider: 'Передвиньте слайдер влево или вправо'\n    },\n    psc: {\n      dragLeftRight: 'Передвиньте слайдер влево или вправо'\n    },\n    ps: {\n      note: value => `Пожалуйста, распределите оставшиеся ${value} между приведенными ниже строками`,\n      allDone: 'ВСЕ ГОТОВО!',\n      total: `Всего:`,\n      dragSlider: 'Передвиньте слайдер влево или вправо'\n    },\n    cx: {\n      note: 'Кликните по комбобоксу и начните печатать Ваш ответ или выберите его из списка'\n    },\n    ro: {\n      note: 'Отсортируйте варианты путем перетаскивания вверх или вниз:'\n    },\n    md: {\n      note1: 'Пожалуйста, кликните и выберите лучший вариант.<br/>Повторное нажатие отменяет выбор.',\n      note2: 'Пожалуйста, кликните и выберите худший вариант.<br/>Повторное нажатие отменяет выбор.',\n      note3: 'Спасибо! Нажмите далее, чтобы продолжить<br/>или нажмите неотмеченный вариант, чтобы начать заново.'\n    },\n    aro: {\n      note: 'Пожалуйста, выберете один вариант из каждой пары:'\n    },\n    wd: {\n      note: 'Пожалуйста, убедитесь, что каждое следующее значение больше предыдущего.'\n    },\n    emd: {\n      note: 'Досмотрите видео до конца',\n      noAnswers: 'Нет варианта ответа, нажмите на «Далее», чтобы продолжить.',\n      start: 'Нажмите и удерживайте, чтобы начать',\n      resume: 'Нажмите и удерживайте, чтобы возобновить',\n      continue: 'Вы закончили! <br />Нажмите <strong>«Далее»</strong>, чтобы продолжить',\n      continueMobile: 'Вы закончили! <br />Нажмите здесь, чтобы продолжить',\n      training: {\n        session: 'сеанс обучения',\n        note: 'Закончите обучение',\n        moveLeft: 'Перетащите указатель до упора влево',\n        moveBottom: 'Перетащите указатель до упора вниз',\n        moveRight: 'Перетащите указатель до упора вправо',\n        moveTop: 'Перетащите указатель до упора вверх',\n        success: 'Отличная работа!'\n      }\n    },\n    sft: {\n      noAnswers: 'Нет варианта ответа, нажмите на «Далее», чтобы продолжить.',\n      note: 'Как можно быстрее выберите ответ, который интуитивно кажется правильным',\n      finish: 'Все готово! <br /> Нажмите «Далее», чтобы продолжить',\n      training: {\n        start:\n          '<p>В этом вопросе вам быстро покажут разные слова и вам нужно будет сосредоточиться. ' +\n          'Вам нужно будет быстро отреагировать, чтобы ответить. </p> <p>Готовы потренироваться?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Нажмите \"{buttonLeft}\"`\n            : (mouse ? `Нажмите \"{buttonLeft}\"` : '') + (key && mouse ? ' / ' : '') + (key ? `Нажмите клавишу F` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Нажмите \"{buttonRight}\"`\n            : (mouse ? `Нажмите \"{buttonRight}\"` : '') + (key && mouse ? ' / ' : '') + (key ? `Нажмите клавишу J` : ''),\n        fail: () => 'Слишком медленно',\n        success: () => 'Отлично!',\n        finish: () =>\n          '<p><strong> Великолепно!</strong></p><p>Убедитесь, что ничто не будет отвлекать вас <br />' +\n          'в следующие 2–3 минуты. </p><p>Нажмите «Далее», чтобы начать, когда будете готовы.</p>'\n      },\n      buttons: {\n        start: 'Начать',\n        yesno: {\n          left: 'Да',\n          right: 'Нет'\n        },\n        matches: {\n          left: 'Совпадение',\n          right: 'Несовпадение'\n        },\n        fits: {\n          left: 'Подходит',\n          right: 'Не подходит'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'No hay opción de respuesta, por favor, haz clic en \"siguiente\" para continuar.',\n    placeholder: 'Especifique...',\n    pleaseSelect: 'Seleccione...',\n    rotateLandscape: 'Gire el teléfono de vertical a horizontal para continuar.',\n    rotatePortrait: 'Gire el teléfono de horizontal a vertical para continuar.',\n    ir: {\n      selectWebCam:\n        'Selecciona una webcam (si está disponible) o haz clic en \"Navegar\" para subirla desde tu dispositivo',\n      noWebCam: 'No se ha detectado ninguna cámara web',\n      accessCamUpload: 'ACCEDER A LA CÁMARA/SUBIR',\n      browse: 'NAVEGAR',\n      uploadPhoto: 'Sube una foto',\n      instead: 'en vez de',\n      startOver: 'Vuelva a empezar',\n      capture: 'TOMA',\n      allDone: '¡Todo hecho!',\n      somethingWrong: 'Lo sentimos, algo ha ido mal. Por favor, inténtalo de nuevo más tarde.',\n      analyzing: 'Analizando la imagen, por favor, espera',\n      couldntRead: 'Lo sentimos, ¡no hemos podido leer el código!',\n      couldntProcess: 'Lo sentimos, ¡no hemos podido procesar tu imagen!',\n      moveOn: 'Por favor, inténtalo de nuevo o sube tu foto y continúa',\n      tryAgain: 'Por favor, inténtalo de nuevo',\n      dataReceived: '¡Información recibida!',\n      enterManually: 'Por favor, inténtalo de nuevo o introduce la información manualmente abajo',\n      positionQR:\n        'Por favor, sitúa el código QR en frente de tu cámara para que encaje en el marco rojo o súbelo desde tu ordenador',\n      submit: 'PRESENTAR',\n      cantAnalyze:\n        'Atención: no pudimos reproducir esta imagen. Por favor, intenta volver a subir un formato de imagen más genérico (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Lo sentimos, no somos compatibles con este formato de archivo. Por favor, sube un tipo de imagen compatible (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'No se ha detectado ninguna cámara web',\n      uploadVideo: 'Subir un vídeo',\n      skip: '¿Omitir?',\n      accessCamUpload: 'ACCEDER A LA CÁMARA/SUBIR',\n      browse: 'NAVEGAR',\n      instead: 'en vez de',\n      or: 'o',\n      stopRecording: 'Parar la grabación',\n      willBeStopped: 'La grabación parará en 5 minutos',\n      stopOnDone: '¡Pare la grabación cuando haya terminado!',\n      record: 'GRABAR',\n      somethingWrong: 'Lo sentimos, algo ha ido mal. Por favor, inténtalo de nuevo más tarde.',\n      microphone: 'Micrófono',\n      camera: 'Cámara Web',\n      selectMicrophone: 'Elige tu micrófono',\n      selectCam: 'Elige tu cámara web',\n      upload: 'SUBIR',\n      playback: 'Reproducción',\n      stopPlayback: 'DETENER LA REPRODUCCIÓN',\n      submit: 'PRESENTAR',\n      startOver: 'Vuelva a empezar',\n      allDone: '¡Todo hecho!',\n      alternativeRecordSpan:\n        'Por favor, cargue un vídeo clip desde su dispositivo informático.<br/>Alternativamente,  &nbsp;',\n      alrenativeRecordHref: 'puede grabar el vídeo con una webcam.',\n      cantAnalyze:\n        'Atención: no pudimos reproducir este vídeo. Por favor, intenta volver a subirlo o elige un formato de vídeo más genérico (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Lo sentimos, no somos compatibles con este formato de archivo. Por favor, sube un tipo de vídeo compatible (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'ESCOGER',\n      pleaseChoose: 'Por favor, escoge',\n      this: 'ESTE',\n      one: 'uno',\n      myChoice: 'Mi SELECCIÓN'\n    },\n    hm: {\n      addComment: 'Por favor, añada un comentario a continuación',\n      commentMandatoryPlaceHolder: 'Es obligatorio añadir un comentario… ',\n      commentOptionalPlaceHolder: 'Es opcional añadir un comentario… ',\n      dragPin: 'Arrastrar para reposicionar (Haga clic o toque prolongado para un anclaje de precisión). ',\n      removePin: 'Arrastre fuera de la imagen para eliminarla.  ',\n      editComment: 'Haga clic o toque el pin para editar el comentario. ',\n      addPin: 'Por favor, arrastre el pin desde el panel de abajo y suéltelo en el lugar que quiera de la imagen.',\n      addPins:\n        'Por favor, arrastre los pines desde el panel de abajo y suéltelos en el lugar de su elección en la imagen. ',\n      leavePins: (minPoints, maxPoints) =>\n        `Por favor, deje al menos ${minPoints} pero no más de ${maxPoints} pines de cada tipo. `,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `Por favor, deje al menos ${minPoints} pero no más de ${maxPoints} pines. `,\n      leavePinsWithOff: maxPoints =>\n        `Por favor, no deje más de ${maxPoints} pines de cada tipo o haga clic en Siguiente para omitirlo. `,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Por favor, no deje más de ${maxPoints} pines o haga clic en Siguiente para omitirlo.  `,\n      leavePinWithOff: 'Por favor, no deje más de 1 pin de cada tipo o haga clic en Siguiente para omitirlo. ',\n      leavePinPerPageWithOff: 'Por favor, no deje más de 1 pin o haga clic en Siguiente para omitirlo. ',\n      leaveExactlyPin: 'Por favor, deje 1 pin de cada tipo.',\n      leaveExactlyPinPerPage: 'Por favor, deje 1 pin. ',\n      leaveExactlyPins: maxPoints => `Por favor, deje ${maxPoints} pines de cada tipo. `,\n      leaveExactlyPinsPerPage: maxPoints => `Por favor, deje ${maxPoints} pines. `,\n      leaveComment: 'Escriba debajo de la imagen para dejar un comentario. ',\n      noAnswers: 'Sin opción de respuesta, por favor haga clic en el siguiente para continuar.',\n      outOfPins: 'Se le acabaron los pines',\n      pinsBehavior: 'A medida que se desplace por la imagen, verá áreas que se resaltarán con un solo pin.',\n      clusters: 'Solo podrá colocar pines en estas áreas resaltadas.',\n      contentAware: 'Puede soltar pines dentro o fuera de las áreas resaltadas.'\n    },\n    mp: {\n      expand_note: 'Pase el cursor por encima o haga clic en la o las imágenes para expandir',\n      rb_note: rows => `Seleccione solo 1 respuesta por cada elemento${rows ? ' siguiente' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (1 === min && 5000 === max) {\n          return 'Marque todas las opciones que correspondan:'\n        } else if (min === max) {\n          return `Seleccione ${min !== 1 ? 'hasta' : 'solo'} ${min} respuesta${min !== 1 ? 's' : ''} por elemento${\n            rows ? ' a continuación' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Seleccione al menos ${min} respuesta pero no más de ${max} por elemento${\n            rows ? ' a continuación' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Seleccione al menos ${min} respuesta por elemento${rows ? ' a continuación' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Seleccione no más de ${max} respuesta por elemento${rows ? ' a continuación' : ''}:`\n        } else {\n          return 'Marque todas las opciones que correspondan:'\n        }\n      }\n    },\n    sh: {\n      note: 'Haz clic en un producto para aumentarlo y añadirlo a tu carro virtual si lo comprarías en la tienda',\n      amazonNote: 'Haz clic en un producto para ampliarlo y añadirlo a tu cesta virtual.',\n      fullCart: '¡Tu carro está lleno!',\n      qty: 'CANTIDAD',\n      addToCart: 'AÑADIR AL CARRO',\n      deleteFromCart: 'BORRAR',\n      each: 'cada',\n      items: 'elementos',\n      emptyCard: 'Tu carro está vacío',\n      total: 'Carro',\n      clearCart: 'Vaciar el carro',\n      backToStore: 'Volver a la tienda',\n      na: 'Ninguno de estos',\n      next: 'SIGUIENTE',\n      maxCartCountError: max => `No agregue más de ${max} productos a su carrito`,\n      scrollError: `Desplácese completamente hacia la izquierda y hacia la derecha para continuar con la encuesta. `,\n      maxSpentError: max => `No gaste más de ${max}.`,\n      maxProductCountError: max => `No agregue más de una cantidad de ${max} a su carrito para cada producto.`\n    },\n    rb: {\n      note: 'Seleccione solo 1 elemento:'\n    },\n    vo: {\n      note: 'Por favor, mira el video hasta el final'\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `Seleccione ${min !== 1 ? 'cualquier' : 'solo'} ${min} elemento${min !== 1 ? 's' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Seleccione al menos ${min} elemento${min !== 1 ? 's' : ''} pero no más de ${max}:`\n        } else if (5000 === max && min > 0) {\n          return `Seleccione al menos ${min} elemento${min !== 1 ? 's' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Seleccione no más de ${max} elemento${max !== 1 ? 's' : ''}:`\n        } else {\n          return 'Marque todas las opciones que correspondan:'\n        }\n      }\n    },\n    oe: {\n      na: 'No aplica',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Escriba ${1 !== min ? 'cualquier' : 'exactamente'} ${min} carácter${1 !== min ? 'es' : ''}${\n            optional ? ' (opcional)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Escriba al menos ${min} carácter${1 !== min ? 'es' : ''} pero no más de ${max}${\n            optional ? ' (opcional)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Escriba al menos ${min} carácter${1 !== min ? 'es' : ''}${optional ? ' (opcional)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `No escriba más de ${max} carácter${1 !== min ? 'es' : ''}${optional ? ' (opcional)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Por favor, rellena los siguientes campos:'\n    },\n    mx: {\n      note: 'Por favor, mueve los deslizadores resaltados para continuar',\n      dragSlider: 'Arrastre hacia la izquierda o la derecha para responder'\n    },\n    psc: {\n      dragLeftRight: 'Arrastre hacia la izquierda o la derecha para responder'\n    },\n    ps: {\n      note: value => `Por favor distribute restante ${value} entre los puntos que siguen`,\n      allDone: '¡Todo hecho!',\n      total: `Total:`,\n      dragSlider: 'Arrastre hacia la izquierda o la derecha para responder'\n    },\n    cx: {\n      note: 'Empiece a escribir su respuesta para desplazarse automáticamente o selecciónela manualmente.'\n    },\n    ro: {\n      note: 'Arrastre hacia arriba o hacia abajo para cambiar el orden de:'\n    },\n    md: {\n      note1:\n        'Por favor, haga clic o toque sobre el ítem de su primera elección<br/>Haga clic o toque de nuevo para desactivar la elección.',\n      note2:\n        'Por favor, ahora haga clic o toque sobre el ítem de su última elección<br/>Haga clic o toque de nuevo para desactivar la elección.',\n      note3:\n        '¡Gracias! Continúe con la siguiente pregunta<br/>o haga clic o toque sobre cualquier ítem no seleccionado para empezar de nuevo.'\n    },\n    aro: {\n      note: 'Elige uno de cada pareja'\n    },\n    wd: {\n      note: 'Asegúrate de que cada valor posterior es mayor que el anterior.'\n    },\n    emd: {\n      note: 'Por favor, mira el video hasta el final',\n      noAnswers: 'No hay opción de respuesta, por favor, haz clic en \"siguiente\" para continuar.',\n      start: 'Pulsa y sostén para empezar',\n      resume: 'Pulsa y sostén para continuar',\n      continue: '¡Ya estás listo! <br /> Haz clic en Siguiente para continuar',\n      continueMobile: '¡Estás listo! <br /> Haga clic AQUÍ para continuar',\n      training: {\n        session: 'Sesión de capacitación',\n        note: 'Por favor, termina el entrenamiento',\n        moveLeft: 'Por favor, arrastra el dial a la izquierda hasta el final',\n        moveBottom: 'Por favor, arrastra el dial hasta abajo',\n        moveRight: 'Ahora, por favor, arrastra el dial a la derecha hasta el final',\n        moveTop: 'Ahora, por favor, arrastra el dial hasta arriba',\n        success: '¡Bien hecho!'\n      }\n    },\n    sft: {\n      noAnswers: 'No hay opción de respuesta, por favor, haz clic en \"siguiente\" para continuar.',\n      note: 'Por favor, responde lo más rápido posible con la respuesta que intuitivamente crees que es correcta',\n      finish: '¡Ya has terminado! <br /> Por favor, haz clic en Siguiente para continuar',\n      training: {\n        start:\n          '<p>Esta pregunta te mostrará rápidamente distintas palabras y requerirá que te concentres. ' +\n          'Tendrás que reaccionar rápidamente para contestar. </p> <p>¿Preparado para practicar?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Pulsa \"{buttonLeft}\"`\n            : (mouse ? `Haz clic en \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Dale a la tecla \"{keyBtnLeft}\"` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Pulsa \"{buttonRight}\"`\n            : (mouse ? `Haz clic en \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Dale a la tecla \"{keyBtnRight}\"` : ''),\n        fail: () => 'Demasiado lento',\n        success: () => '¡Genial!',\n        finish: () =>\n          '<p><strong>¡Excelente!</strong></p><p>Por favor, asegúrate de que nada<br />' +\n          'te distraiga durante<br/> los próximos 2-3 minutos. </p><p>Haz clic en Siguiente para empezar cuando estés listo. </p>'\n      },\n      buttons: {\n        start: 'Empezar',\n        yesno: {\n          left: 'Sí',\n          right: 'No'\n        },\n        matches: {\n          left: 'Coincide',\n          right: 'No coincide'\n        },\n        fits: {\n          left: 'Encaja',\n          right: 'No encaja'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Inget svar-alternativ, klicka på nästa för att fortsätta.',\n    placeholder: 'Vänligen specificera...',\n    pleaseSelect: 'Vänligen välj...',\n    rotateLandscape: 'Vrid telefonen från stående till liggande läge för att fortsätta.',\n    rotatePortrait: 'Vrid telefonen från liggande till stående läge för att fortsätta.',\n    ir: {\n      selectWebCam:\n        'Välj webbkamera (om den är tillgänglig) eller klicka på \"bläddra\" för att ladda upp från din enhet',\n      noWebCam: 'Ingen webbkamera upptäckt',\n      accessCamUpload: 'FÅ TILLGÅNG TILL KAMERA / LADDA UPP',\n      browse: 'BLÄDDRA',\n      uploadPhoto: 'Ladda upp ett foto',\n      instead: 'istället',\n      capture: 'TA FOTO',\n      somethingWrong: 'Något gick fel. Försök igen senare',\n      couldntRead: 'Vi kunde inte läsa av koden!',\n      couldntProcess: 'Vi kunde inte behandla din bild!',\n      moveOn: 'Försök igen eller skicka in ditt foto och fortsätt',\n      tryAgain: 'Var god försök igen',\n      dataReceived: 'Informationen är mottagen!',\n      enterManually: 'Försök igen eller ange informationen manuellt nedan',\n      positionQR:\n        'Placera QR-koden framför kameran så att den passar in i den röda ramen eller ladda upp den från din dator.',\n      analyzing: 'Vi analyserar bilden, var god vänta',\n      submit: 'LÄMNA IN',\n      startOver: 'Börja om',\n      allDone: 'Klart!',\n      cantAnalyze:\n        'Vi kunde inte återge den här bilden. Försök att skicka in igen eller välj ett mer generiskt bildformat (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Tyvärr stöder vi inte detta filformat. Ladda upp en bildtyp som stöds (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Ingen webbkamera upptäckt',\n      uploadVideo: 'Ladda upp en video',\n      skip: 'Hoppa över?',\n      accessCamUpload: 'FÅ TILLGÅNG TILL KAMERA / LADDA UPP',\n      browse: 'BLÄDDRA',\n      instead: 'istället',\n      or: 'eller',\n      stopRecording: 'Stoppa inspelning',\n      willBeStopped: 'Inspelningen kommer att stoppas efter 5 minuter',\n      stopOnDone: 'Sluta spela in när du är klar!',\n      record: 'SPELA IN',\n      somethingWrong: 'Något gick fel. Försök igen senare',\n      microphone: 'Mikrofon',\n      camera: 'Webbkamera',\n      selectMicrophone: 'Välj din mikrofon',\n      selectCam: 'Välj din webbkamera',\n      submit: 'LÄMNA IN',\n      upload: 'LADDA UPP',\n      playback: 'Uppspelning',\n      stopPlayback: 'Stopp Uppspelning',\n      startOver: 'Börja om',\n      allDone: 'Klart!',\n      alternativeRecordSpan: 'Vänligen ladda upp ett videoklipp från din dator.<br/>Alternativt kan du &nbsp;',\n      alrenativeRecordHref: 'spela in filmen med en webbkamera.',\n      cantAnalyze:\n        'Uppmärksamma - vi kunde inte göra denna video. Försök att skicka in igen eller välj ett mer generiskt videoformat (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Tyvärr stöder vi inte detta filformat. Ladda upp en videotyp som stöds (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'VÄLJ',\n      pleaseChoose: 'Välj',\n      this: 'DETTA',\n      one: 'denna',\n      myChoice: 'Mitt VAL'\n    },\n    hm: {\n      addComment: 'Lägg till en kommentar nedan',\n      commentMandatoryPlaceHolder: 'Lägg till obligatorisk kommentar … ',\n      commentOptionalPlaceHolder: 'Lägg till valfri kommentar … ',\n      dragPin: 'Dra för att ändra position (klicka/tryck länge för precisionsfästa). ',\n      removePin: 'Dra utanför bilden för att ta bort.  ',\n      editComment: 'Klicka/tryck på fäste för att redigera kommentar. ',\n      addPin: 'Dra fästet från panelen nedan och släpp det på den plats du önskar på bilden.',\n      addPins: 'Dra fästena från panelen nedan och släpp dem på den plats du önskar på bilden. ',\n      leavePins: (minPoints, maxPoints) => `Lämna minst ${minPoints} men högst ${maxPoints} fästen av varje sort. `,\n      leavePinsPerPage: (minPoints, maxPoints) => `Lämna minst ${minPoints} men högst ${maxPoints} fästen. `,\n      leavePinsWithOff: maxPoints =>\n        `Lämna högst ${maxPoints} fästen av varje sort eller klicka på Nästa för att hoppa över. `,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Lämna högst ${maxPoints} fästen eller klicka på Nästa för att hoppa över. `,\n      leavePinWithOff: 'Lämna högst 1 fäste av varje sort eller klicka på Nästa för att hoppa över. ',\n      leavePinPerPageWithOff: 'Lämna högst 1 fäste eller klicka på Nästa för att hoppa över. ',\n      leaveExactlyPin: 'Lämna 1 fäste av varje sort. ',\n      leaveExactlyPinPerPage: 'Lämna 1 fäste. ',\n      leaveExactlyPins: maxPoints => `Lämna ${maxPoints} fästen av varje sort. `,\n      leaveExactlyPinsPerPage: maxPoints => `Lämna ${maxPoints} fästen. `,\n      leaveComment: 'Skriv under bilden för att lämna en kommentar. ',\n      noAnswers: 'Inget svarsalternativ, klicka på Nästa för att fortsätta.',\n      outOfPins: 'Du har slut på fästen',\n      pinsBehavior: 'När du rör dig över bilden ser du områden som kommer att framhävas med en enda nålsläpp.',\n      clusters: 'Du kommer bara att kunna placera nålar i dessa framhävda områden.',\n      contentAware: 'Du kan släppa nålar inom eller utanför de framhävda områdena.'\n    },\n    mp: {\n      expand_note: 'Håll muspekaren över eller klicka på bild(er) för att expandera',\n      rb_note: rows => `Välj endast 1 per artikel${rows ? ' nedan' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (1 === min && 5000 === max) {\n          return 'Kryssa i alla giltiga alternativ:'\n        } else if (min === max) {\n          return `Välj ${min} ${min !== 1 ? 'valfritt valfria' : 'endast'} svar per artikel${rows ? ' nedan' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Välj minst ${min} ${min !== 1 ? 'valfri' : 'svar'} men inte fler än ${max} per artikel${\n            rows ? ' nedan' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Vänligen välj minst ${min} ${min !== 1 ? 'valfri' : 'svar'} per artikel${rows ? ' nedan' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Välj inte fler än ${max} ${max !== 1 ? 'valfri' : 'svar'} per artikel${rows ? ' nedan' : ''}:`\n        } else {\n          return 'Kryssa i alla giltiga alternativ:'\n        }\n      }\n    },\n    sh: {\n      note: 'Klicka på en produkt för att zooma in och lägg till i din virtuella varukorg om du vill köpa den i butiken',\n      amazonNote: 'Klicka på en produkt för att zooma in och lägga till i din virtuella kundvagn.',\n      fullCart: 'Din kundvagn är full!',\n      qty: 'KVANTITET',\n      addToCart: 'LÄGG TILL I KUNDVAGN',\n      each: 'vardera',\n      items: 'föremål ',\n      deleteFromCart: 'TA BORT',\n      emptyCard: 'Din kundvagn är tom',\n      total: 'Kundvagn',\n      clearCart: 'Rensa kundvagn',\n      backToStore: 'Tillbaka till butik',\n      na: 'Inget av ovan',\n      next: 'NÄSTA',\n      maxCartCountError: max => `Lägg inte till fler än ${max} produkter i din varukorg`,\n      scrollError: `Vänligen bläddra helt åt vänster och höger för att fortsätta i undersökningen. `,\n      maxSpentError: max => `Spendera inte mer än ${max}.`,\n      maxProductCountError: max => `Lägg inte till mer än en mängd ${max} i din varukorg för varje produkt.`\n    },\n    rb: {\n      note: 'Vänligen välj endast 1 objekt:'\n    },\n    vo: {\n      note: 'Titta på hela videon'\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `Vänligen välj ${min !== 1 ? 'valfria' : 'endast'} ${min} objekt:`\n        } else if (min > 0 && max < 5000) {\n          return `Vänligen välj minst ${min} objekt men inte fler än ${max} per rad:`\n        } else if (5000 === max && min > 0) {\n          return `Vänligen välj minst ${min} objekt:`\n        } else if (0 === min && max < 5000) {\n          return `Vänligen välj inte fler än ${max} objekt:`\n        } else {\n          return 'Kryssa i alla giltiga alternativ:'\n        }\n      }\n    },\n    oe: {\n      na: 'Inte tillämpbar',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Vänligen skriv ${1 !== min ? 'valfria' : 'exakt'} ${min} character${1 === min ? 's' : ''}${\n            optional ? ' (frivilligt)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Vänligen ange minst ${min} tecken${1 !== min} men inte fler än ${max}${\n            optional ? ' (frivilligt)' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Vänligen ange minst ${min} tecken${optional ? ' (frivilligt)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Vänligen ange högst ${max} tecken${optional ? ' (frivilligt)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Fyll i följande fält:'\n    },\n    mx: {\n      note: 'Vänligen flytta de markerade reglagen för att fortsätta',\n      dragSlider: 'Dra till vänster eller höger för att svara'\n    },\n    psc: {\n      dragLeftRight: 'Dra till vänster eller höger för att svara'\n    },\n    ps: {\n      note: value => `Vänligen fördela återstående ${value} mellan objekten nedan`,\n      allDone: 'Klart!',\n      total: `Total:`,\n      dragSlider: 'Dra till vänster eller höger för att svara'\n    },\n    cx: {\n      note: 'Öppna menyn och börja skriva in ditt svar för att autoscrolla eller välja det manuellt'\n    },\n    ro: {\n      note: 'Dra upp eller ner för att ändra ordningen:'\n    },\n    aro: {\n      note: 'Vänligen välj en sak per par.'\n    },\n    md: {\n      note1: 'Klicka/tryck på objektet du vill välja först<br/>Klicka/tryck igen för att ta bort valet.',\n      note2: 'Klicka/tryck nu på objektet du vill välja sist<br/>Klicka/tryck igen för att ta bort valet.',\n      note3: 'Tack! Fortsätt till nästa fråga eller<br/>klicka/tryck på omarkerade objekt för att börja om.'\n    },\n    wd: {\n      note: 'Se till att varje efterföljande värde är större än det föregående värdet.'\n    },\n    emd: {\n      note: 'Titta på hela videon',\n      noAnswers: 'Inget svar-alternativ, klicka på nästa för att fortsätta.',\n      start: 'Klicka och håll ner för att starta',\n      resume: 'Klicka och håll ner för att återuppta',\n      continue: 'Du är klar! <br /> Klicka på Nästa för att fortsätta',\n      continueMobile: 'Du är klar! <br /> Klicka HÄR för att fortsätta',\n      training: {\n        session: 'Utbildningssession',\n        note: 'Var god och avsluta träningen',\n        moveLeft: 'Drag nummerskivan hela vägen till vänster',\n        moveBottom: 'Drag nummerskivan hela vägen till botten',\n        moveRight: 'Drag nu nummerskivan hela vägen till höger',\n        moveTop: 'Drag nu nummerskivan hela vägen upp till toppen.',\n        success: 'Bra jobbat!'\n      }\n    },\n    sft: {\n      noAnswers: 'Inget svar-alternativ, klicka på nästa för att fortsätta.',\n      note: 'Svara så snabbt du kan med svaret som intuitivt känns rätt',\n      finish: 'Du är helt klar! <br />Klicka på Nästa för att fortsätta',\n      training: {\n        start:\n          '<p>Denna fråga kommer snabbt att visa dig olika ord och kommer att kräva din koncentration. ' +\n          'Du kommer att behöva reagera snabbt för att svara. </p> <p>Är du redo att träna?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Tryck på \"{buttonLeft}\"`\n            : (mouse ? `Klicka på \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Tryck på \"{keyBtnLeft}\"-tangenten` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Tryck på \"{buttonRight}\"`\n            : (mouse ? `Klicka på \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Tryck på \"{keyBtnRight}\"-tangenten` : ''),\n        fail: () => 'För långsamt',\n        success: () => 'Fantastiskt!',\n        finish: () =>\n          '<p><strong> Utmärkt!</strong></p><p>Se till att du inte <br />' +\n          'blir distraherad inom<br/> de närmaste 2-3 minuterna</p><p>Klicka på Nästa för att starta när du är klar. </p>'\n      },\n      buttons: {\n        start: 'Starta',\n        yesno: {\n          left: 'Ja',\n          right: 'Nej'\n        },\n        matches: {\n          left: 'Matchar',\n          right: 'Ingen matchning'\n        },\n        fits: {\n          left: 'Passar',\n          right: 'Passar inte'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'ไม่มีตัวเลือกคำตอบ โปรดคลิกถัดไปเพื่อดำเนินการต่อ.',\n    placeholder: 'โปรดระบุ...',\n    pleaseSelect: 'โปรดเลือก...',\n    rotateLandscape: 'หมุนโทรศัพท์ของคุณจากแนวตั้งเป็นแนวนอนเพื่อดำเนินการต่อ',\n    rotatePortrait: 'หมุนโทรศัพท์ของคุณจากแนวนอนเป็นแนวตั้งเพื่อดำเนินการต่อ',\n    ir: {\n      selectWebCam: \"เลือกเว็บแคม (ถ้ามี) หรือคลิก 'เบราว์' เพื่ออัปโหลดจากอุปกรณ์ของคุณ\",\n      noWebCam: 'ไม่พบเว็บแคม',\n      accessCamUpload: 'เข้าถึงกล้อง/อัปโหลด',\n      browse: 'เบราว์',\n      uploadPhoto: 'อัปโหลดรูปภาพ',\n      camera: 'กล้องบนเว็บ',\n      instead: 'แทน',\n      capture: 'จับภาพ',\n      somethingWrong: 'ขออภัย มีบางอย่างผิดพลาด โปรดลองใหม่อีกครั้งในภายหลัง.',\n      couldntRead: 'ขออภัย เราไม่สามารถอ่านโค้ดได้!',\n      couldntProcess: 'ขออภัย เราไม่สามารถประมวลผลภาพของคุณได้!',\n      inValidCode: 'Please, submit the valid code',\n      moveOn: 'โปรดลองอีกครั้งหรือส่งรูปภาพของคุณและดำเนินการต่อ',\n      tryAgain: 'โปรดลองอีกครั้ง',\n      dataReceived: 'ได้รับข้อมูลแล้ว!',\n      enterManually: 'โปรดลองอีกครั้งหรือป้อนข้อมูลด้วยตนเองด้านล่าง',\n      positionQR: 'โปรดจัดตำแหน่งรหัส QR ไว้ด้านหน้ากล้องของคุณเพื่อให้พอดีกับกรอบสีแดงหรืออัปโหลดจากคอมพิวเตอร์ของคุณ',\n      positionQRMobile: 'โปรดจัดตำแหน่งรหัส QR ไว้ด้านหน้ากล้องของคุณหรืออัปโหลดจากอุปกรณ์ของคุณ',\n      analyzing: 'กำลังวิเคราะห์รูปภาพ โปรดรอสักครู่',\n      submit: 'ส่ง',\n      startOver: 'เริ่มต้นใหม่',\n      allDone: 'เสร็จเรียบร้อย!',\n      cantAnalyze:\n        'โปรดทราบ - เราไม่สามารถแสดงภาพนี้ได้ โปรดลองส่งอีกครั้งหรือเลือกรูปภาพในรูปแบบทั่วไป (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'ขออภัย เราไม่รองรับรูปแบบไฟล์นี้ โปรดอัปโหลดรูปภาพในประเภทที่รองรับ (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'ไม่พบเว็บแคม',\n      uploadVideo: 'อัปโหลดวิดีโอ',\n      skip: 'ข้ามหรือไม่?',\n      accessCamUpload: 'เข้าถึงกล้อง/อัปโหลด',\n      browse: 'เบราว์',\n      instead: 'แทน',\n      or: 'หรือ',\n      stopRecording: 'หยุดบันทึก',\n      willBeStopped: 'การบันทึกจะหยุดที่ <b>5 นาที</b>',\n      stopOnDone: 'หยุดบันทึกเมื่อคุณทำเสร็จแล้ว!',\n      record: 'บันทึก',\n      somethingWrong: 'ขออภัย มีบางอย่างผิดพลาด โปรดลองใหม่อีกครั้งในภายหลัง',\n      dataReceived: 'ได้รับข้อมูลแล้ว!',\n      microphone: 'Microfonul',\n      camera: 'กล้องบนเว็บ',\n      selectMicrophone: 'เลือกไมโครโฟนของคุณ',\n      selectCam: 'เลือกกล้องบนเว็บของคุณ',\n      submit: 'ส่ง',\n      upload: 'อัปโหลดใหม่',\n      playback: 'เล่นย้อน',\n      stopPlayback: 'หยุดการเล่น',\n      startOver: 'เริ่มต้นใหม่',\n      allDone: 'เสร็จเรียบร้อย!',\n      alternativeRecordSpan:\n        'โปรดอัปโหลดคลิปวิดีโอจากอุปกรณ์คอมพิวเตอร์ของคุณ ในอีกทางหนึ่ง คุณสามารถบันทึกวิดีโอด้วยเว็บแคม&nbsp;',\n      alrenativeRecordHref: 'คุณสามารถบันทึกวิดีโอด้วยเว็บแคม',\n      cantAnalyze:\n        'โปรดทราบ - เราไม่สามารถแสดงวิดีโอนี้ได้ โปรดลองส่งอีกครั้งหรือเลือกวิดีโอในรูปแบบทั่วไป (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'ขออภัย เราไม่รองรับรูปแบบไฟล์นี้ โปรดอัปโหลดวิดีโอในประเภทที่รองรับ (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'เลือก',\n      pleaseChoose: 'โปรดเลือก',\n      this: 'นี้',\n      one: 'หนึ่ง',\n      myChoice: 'ตัวเลือกของฉัน'\n    },\n    hm: {\n      addComment: 'โปรดเพิ่มความคิดเห็นด้านล่าง',\n      commentMandatoryPlaceHolder: 'โปรดเพิ่มความคิดเห็นที่จำเป็น ...',\n      commentOptionalPlaceHolder: 'โปรดเพิ่มความคิดเห็นหากมี ...',\n      dragPin: 'ลากเพื่อเปลี่ยนตำแหน่ง (คลิก/แตะค้างเพื่อการยึดตำแหน่งที่แม่นยำ)',\n      removePin: 'ลากออกไปด้านนอกภาพเพื่อลบ',\n      editComment: 'คลิก/แตะหมุดเพื่อแก้ไขความคิดเห็น',\n      addPin: 'โปรดลากหมุดจากแผงด้านล่างและวางในจุดที่คุณเลือกบนภาพ',\n      addPins: 'โปรดลากหมุดจากแผงด้านล่างและวางในจุดที่คุณเลือกบนภาพ',\n      leavePins: (minPoints, maxPoints) =>\n        `โปรดวางหมุดแต่ละประเภทอย่างน้อย ${minPoints} ชิ้นแต่ไม่เกิน ${maxPoints} ชิ้น`,\n      leavePinsAny: (minPoints, maxPoints) =>\n        `โปรดวางหมุดแต่ละประเภทอย่างน้อย ${minPoints} ชิ้นแต่ไม่เกิน ${maxPoints} ชิ้น`,\n      leavePinsPerPage: (minPoints, maxPoints) => `โปรดวางหมุดอย่างน้อย ${minPoints} ชิ้นแต่ไม่เกิน ${maxPoints} ชิ้น`,\n      leavePinsWithOff: maxPoints => `โปรดอย่าเหลือหมุดแต่ละประเภทเกิน ${maxPoints} หมุด หรือคลิกถัดไปเพื่อข้าม `,\n      leavePinsWithOffAny: maxPoints => `โปรดอย่าเหลือหมุดแต่ละประเภทเกิน ${maxPoints} หมุด หรือคลิกถัดไปเพื่อข้าม`,\n      leavePinsPerPageWithOff: maxPoints => `โปรดอย่าเหลือหมุดเกิน ${maxPoints} หมุด หรือคลิกถัดไปเพื่อข้าม`,\n      leavePinWithOff: `โปรดอย่าเหลือหมุดแต่ละประเภทเกิน 1 หมุด หรือคลิกถัดไปเพื่อข้าม.`,\n      leavePinWithOffAny: `โปรดอย่าเหลือหมุดแต่ละประเภทเกิน 1 หมุด หรือคลิกถัดไปเพื่อข้าม`,\n      leavePinPerPageWithOff: 'โปรดอย่าเหลือหมุดเกิน 1 หมุด หรือคลิกถัดไปเพื่อข้าม',\n      leaveExactlyPin: `โปรดเหลือหมุดแต่ละประเภท 1 หมุด`,\n      leaveExactlyPinAny: `โปรดเหลือหมุดแต่ละประเภท 1 หมุด`,\n      leaveExactlyPinPerPage: 'โปรดเหลือหมุด 1 หมุด',\n      leaveExactlyPins: maxPoints => `โปรดเหลือหมุดแต่ละประเภท ${maxPoints} หมุด`,\n      leaveExactlyPinsAny: maxPoints => `โปรดเหลือหมุดแต่ละประเภท ${maxPoints} หมุด`,\n      leaveExactlyPinsPerPage: maxPoints => `โปรดเหลือหมุด ${maxPoints} หมุด`,\n      leaveComment: 'พิมพ์ด้านล่างของภาพเพื่อแสดงความคิดเห็น',\n      noAnswers: 'ไม่มีตัวเลือกคำตอบ โปรดคลิกถัดไปเพื่อดำเนินการต่อ',\n      outOfPins: 'คุณไม่มีหมุดแล้ว',\n      pinsBehavior: 'เมื่อคุณเลื่อนผ่านรูปภาพ คุณจะเห็นพื้นที่ๆ ถูกไฮไลต์ด้วยการปักหมุดเพียงครั้งเดียว',\n      clusters: 'คุณจะวางหมุดได้ในพื้นที่ๆ ถูกไฮไลต์เหล่านี้เท่านั้น',\n      contentAware: 'คุณสามารถปักหมุดภายนอกหรือภายในพื้นที่ๆ ถูกไฮไลต์นี้ได้'\n    },\n    mp: {\n      expand_note: 'โปรดวางเมาส์เหนือภาพหรือคลิกที่ภาพเพื่อขยาย',\n      rb_note: rows => `โปรดเลือกคำตอบเพียง 1 ข้อเท่านั้นต่อรายการ${rows ? 'ด้านล่าง' : ''}`,\n      cb_note: (min, max, rows) => {\n        if (1 === min && 5000 === max) {\n          return 'เลือกทุกข้อที่เกี่ยวข้อง:'\n        } else if (min === max) {\n          return `โปรดเลือกคำตอบเพียง ${min} ข้อเท่านั้นต่อรายการ${rows ? 'ด้านล่าง' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `กรุณาเลือกคำตอบอย่างน้อย ${min} แต่ไม่เกิน ${max} ต่อรายการ${rows ? 'ด้านล่าง' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `กรุณาเลือกคำตอบอย่างน้อย ${min} ต่อรายการ${rows ? 'ด้านล่าง' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `กรุณาเลือกตำตอบไม่เกิน ${max} ต่อรายการ${rows ? 'ด้านล่าง' : ''}:`\n        } else {\n          return 'เลือกทุกข้อที่เกี่ยวข้อง:'\n        }\n      }\n    },\n    sh: {\n      note: 'คลิกผลิตภัณฑ์เพื่อขยายและเพิ่มลงในรถเข็นแบบเสมือนของคุณหากคุณจะซื้อสินค้าดังกล่าวในร้านค้า',\n      amazonNote: 'คลิกที่ผลิตภัณฑ์เพื่อทำการขยายและเพิ่มลงในตะกร้าสินค้าเสมือนของคุณ',\n      fullCart: 'รถเข็นของคุณเต็มแล้ว!',\n      qty: 'จำนวน',\n      addToCart: 'เพิ่มลงในรถเข็น',\n      added: 'ADDED',\n      deleteFromCart: 'ลบ',\n      each: 'แต่ละ',\n      items: 'รายการ',\n      emptyCard: 'รถเข็นของคุณว่างเปล่า',\n      total: 'รถเข็น',\n      fullscreen: 'Fullscreen mode',\n      closeFullscreen: 'Exit fullscreen',\n      clearCart: 'ล้างรถเข็นให้โล่ง',\n      backToStore: 'กลับไปยังร้านค้า',\n      na: 'ไม่มีข้อใดถูก',\n      next: 'ต่อไป',\n      shelfError: (count, products) =>\n        `There is no place for ${count !== 1 ? 'these' : 'this'} product${\n          count !== 1 ? 's' : ''\n        } on the shelves: ${products}!`,\n      maxCartCountError: max => `โปรดเพิ่มสินค้าไม่เกิน ${max} รายการในรถเข็นของคุณ `,\n      scrollError: `โปรดเลื่อนไปทางซ้ายสุดและขวาสุดเพื่อทำแบบสำรวจต่อไป `,\n      maxSpentError: max => `โปรดใช้จ่ายไม่เกิน ${max} `,\n      maxProductCountError: max => `โปรดเพิ่มจำนวนไม่เกิน ${max} ลงในรถเข็นของคุณสำหรับสินค้าแต่ละรายการ `\n    },\n    rb: {\n      note: 'โปรดเลือกเพียง 1 รายการ:'\n    },\n    vo: {\n      note: 'โปรดดูวิดีโอจนจบ\\n'\n    },\n    cb: {\n      note: (min, max) => {\n        if (1 === min && 5000 === max) {\n          return 'เลือกทุกข้อที่เกี่ยวข้อง:'\n        } else if (min === max) {\n          return `โปรดเลือกรายการใด ๆ ${min} รายการ:`\n        } else if (min > 0 && max < 5000) {\n          return `โปรดเลือกอย่างน้อย ${min} รายการแต่ไม่เกิน ${max} รายการต่อแถว:`\n        } else if (5000 === max && min > 0) {\n          return `โปรดเลือกอย่างน้อย ${min} รายการ:`\n        } else if (0 === min && max < 5000) {\n          return `โปรดเลือกไม่เกิน ${max} รายการ:`\n        } else {\n          return 'เลือกทุกข้อที่เกี่ยวข้อง:'\n        }\n      }\n    },\n    oe: {\n      na: 'ไม่สามารถใช้ได้',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `โปรดพิมพ์${1 !== min ? 'ตัวอักษรใด ๆ' : 'เพียง'} ${min} ตัวอักษร${optional ? ' (หากมี)' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `โปรดพิมพ์อย่างน้อย ${min} ตัวอักษร แต่ไม่เกิน ${max}${optional ? ' (หากมี)' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `โปรดพิมพ์อย่างน้อย ${min} ตัวอักษร${optional ? ' (หากมี)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `โปรดพิมพ์ไม่เกิน ${max} ตัวอักษร${optional ? ' (หากมี)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'โปรดกรอกข้อมูลในช่องต่อไปนี้:'\n    },\n    mx: {\n      note: 'โปรดเลื่อนแถบเลื่อนที่ไฮไลต์เพื่อดำเนินการต่อ',\n      dragSlider: 'ลากไปทางซ้ายหรือขวาเพื่อตอบ'\n    },\n    psc: {\n      dragLeftRight: 'ลากไปทางซ้ายหรือขวาเพื่อตอบ'\n    },\n    ps: {\n      note: value => `โปรดแบ่ง ${value} ให้กับรายการด้านล่าง`,\n      allDone: `เสร็จเรียบร้อย!`,\n      total: `Total:`,\n      dragSlider: 'ลากไปทางซ้ายหรือขวาเพื่อตอบ'\n    },\n    cx: {\n      note: 'เริ่มพิมพ์คำตอบของคุณเพื่อเลื่อนโดยอัตโนมัติหรือเลือกด้วยตนเอง'\n    },\n    ro: {\n      note: 'ลากขึ้นหรือลงเพื่อจัดลำดับใหม่:'\n    },\n    md: {\n      note1: 'โปรดคลิก/แตะรายการที่คุณเลือกเป็นอันดับแรก<br/>คลิก/แตะอีกครั้งเพื่อล้างตัวเลือก',\n      note2: 'ตอนนี้ โปรดคลิก/แตะรายการที่คุณเลือกเป็นอันดับสุดท้าย<br/>คลิก/แตะอีกครั้งเพื่อล้างตัวเลือก',\n      note3: 'ขอบคุณ! ไปที่คำถามถัดไปหรือคลิก/แตะรายการที่ไม่ได้เลือกเพื่อเริ่มต้นใหม่'\n    },\n    aro: {\n      note: 'โปรดเลือกหนึ่งรายการจากแต่ละคู่:'\n    },\n    wd: {\n      note: 'ตรวจสอบให้แน่ใจว่าค่าด้านหลังแต่ละค่านั้นมากกว่าค่าก่อนหน้า.'\n    },\n    emd: {\n      note: 'โปรดดูวิดีโอจนจบ\\n',\n      noAnswers: 'ไม่มีตัวเลือกคำตอบ โปรดคลิกถัดไปเพื่อดำเนินการต่อ',\n      start: 'คลิกค้างเพื่อเริ่มต้น',\n      resume: 'คลิกค้างเพื่อเริ่มต่อ',\n      continue: 'คุณพร้อมแล้ว! <br /> คลิกถัดไปเพื่อดำเนินการต่อ',\n      continueMobile: 'คุณพร้อมแล้ว! <br /> คลิกที่นี่เพื่อดำเนินการต่อ',\n      training: {\n        session: 'Utbildningssession',\n        note: 'โปรดทำการฝึกอบรมให้เสร็จสิ้น',\n        moveLeft: 'โปรดลากหน้าปัดไปทางซ้ายสุด',\n        moveBottom: 'โปรดลากหน้าปัดไปทางล่างสุด',\n        moveRight: 'ตอนนี้ โปรดลากหน้าปัดไปทางขวาสุด',\n        moveTop: 'ตอนนี้ โปรดลากหน้าปัดไปทางบนสุด',\n        success: 'เยี่ยมมาก!'\n      }\n    },\n    sft: {\n      noAnswers: 'ไม่มีตัวเลือกคำตอบ โปรดคลิกถัดไปเพื่อดำเนินการต่อ',\n      note: 'โปรดตอบโดยเร็วที่สุดด้วยคำตอบที่รู้สึกว่าถูกต้องตามสัญชาตญาณ',\n      finish: 'เสร็จแล้ว! <br/> กรุณาคลิกถัดไปเพื่อดำเนินการต่อ',\n      training: {\n        start:\n          '<p>คำถามนี้จะแสดงคำต่าง ๆ ให้คุณเห็นอย่างรวดเร็วและคุณต้องใช้สมาธิ ' +\n          'คุณจะต้องตอบสนองอย่างรวดเร็วเพื่อตอบคำถาม </p> <p>พร้อมฝึกไหม?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `แตะ \"{buttonLeft}\"`\n            : (mouse ? `คลิก  \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `กดปุ่ม \"{keyBtnLeft}\"` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `แตะ \"{buttonRight}\"`\n            : (mouse ? `คลิก  \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `กดปุ่ม \"{keyBtnRight}\"` : ''),\n        fail: () => 'ช้าเกินไป',\n        success: () => 'ยอดเยี่ยม!',\n        finish: () =>\n          '<p><strong> ยอดเยี่ยม!</strong></p><p>Pโปรดยืนยันว่าคุณจะไม่เสียสมาธิในอีก 2-3 นาทีข้างหน้า </p><p>คลิกถัดไปเพื่อเริ่มเมื่อพร้อม</p>'\n      },\n      buttons: {\n        start: 'เริ่มต้น',\n        yesno: {\n          left: 'ใช่',\n          right: 'ไม่'\n        },\n        matches: {\n          left: 'จับคู่',\n          right: 'จับคู่ไม่ได้'\n        },\n        fits: {\n          left: 'เข้ากันได้',\n          right: 'เข้ากันไม่ได้'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Cevap seçeneği yok, devam etmek için lütfen sonraki düğmesine tıkla.',\n    placeholder: 'Lütfen belirtin...',\n    pleaseSelect: 'Lütfen seçin...',\n    rotateLandscape: 'Lütfen telefonunuzu portreden manzaraya döndürün.',\n    rotatePortrait: 'Lütfen telefonunuzu manzaradan portreye döndürün.',\n    ir: {\n      selectWebCam: \"Web kamerasını seç (varsa) veya cihazından yüklemek için 'Gözat' düğmesine tıkla\",\n      noWebCam: 'Web kamerası algılanmadı',\n      accessCamUpload: 'KAMERAYA ERİŞİM SAĞLA/YÜKLE',\n      browse: 'GÖZAT',\n      uploadPhoto: 'Fotoğraf yükle',\n      instead: 'onun yerine',\n      capture: 'YAKALA',\n      somethingWrong: 'Üzgünüz, bir şeyler ters gitti. Lütfen daha sonra tekrar dene',\n      couldntRead: 'Üzgünüz, kodu okuyamadık!',\n      couldntProcess: 'Üzgünüz, resmini işleyemedik!',\n      moveOn: 'Lütfen tekrar dene veya fotoğrafını göndererek devam et',\n      tryAgain: 'Lütfen tekrar dene',\n      dataReceived: 'Veri alındı!',\n      enterManually: 'Lütfen tekrar dene veya veriyi aşağıda elle gir',\n      positionQR:\n        'Lütfen QR kodunu kırmızı çerçeveye sığacak şekilde kameranın önünde konumlandır veya bilgisayarından yükle.',\n      analyzing: 'Resim analiz ediliyor, lütfen bekle',\n      submit: 'GÖNDER',\n      startOver: 'Yeniden başlayın',\n      allDone: 'Hepsi tamamlandı!',\n      cantAnalyze:\n        'Uyarı - bu görüntüyü işleyemedik. Lütfen tekrar göndermeyi dene veya daha jenerik bir görüntü biçimi (JPG, PNG, GIF, BMP) seç',\n      wrongFormat:\n        'Üzgünüz - bu dosya biçimini desteklemiyoruz. Lütfen desteklenen bir görüntü türü (JPG, PNG, GIF, BMP, TIF, PDF, SVG) yükle'\n    },\n    vr: {\n      noWebCam: 'Web kamerası algılanmadı',\n      uploadVideo: 'Video yükle',\n      skip: 'Atla?',\n      accessCamUpload: 'KAMERAYA ERİŞİM SAĞLA/YÜKLE',\n      browse: 'GÖZAT',\n      instead: 'onun yerine',\n      or: 'veya',\n      stopRecording: 'Kaydı durdurun',\n      willBeStopped: 'Kayıt 5 dakikada duracak',\n      stopOnDone: 'Tamamladığınızda kaydı durdurun!',\n      record: 'KAYDET',\n      somethingWrong: 'Üzgünüz, bir şeyler ters gitti. Lütfen daha sonra tekrar dene',\n      microphone: 'Mikrofon',\n      camera: 'Web Kamera',\n      selectMicrophone: 'Mikrofonunu seç',\n      selectCam: 'Web kameranı seç',\n      upload: 'YÜKLE',\n      playback: 'Kayıttan çalın',\n      stopPlayback: 'DURDUR OYNATMA',\n      submit: 'GÖNDER',\n      startOver: 'Yeniden başlayın',\n      allDone: 'Hepsi tamamlandı!',\n      alternativeRecordSpan: 'Lütfen, bilgisayarınızdan-cihazınızdan bir video-klip yükleyin.<br/>Alternatif  &nbsp;',\n      alrenativeRecordHref: 'olarak videoyu bir video kamerasıyla kaydedebilirsiniz.',\n      cantAnalyze:\n        'Uyarı - bu videoyu işleyemedik. Lütfen tekrar göndermeyi dene veya daha jenerik bir video biçimi (MP4, M4V, WEBPM) seç',\n      wrongFormat:\n        'Üzgünüz - bu dosya biçimini desteklemiyoruz. Lütfen desteklenen bir video türü  (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV) yükle'\n    },\n    cjc: {\n      choose: 'SEÇ',\n      pleaseChoose: 'Lütfen seç',\n      this: 'BU',\n      one: 'bir',\n      myChoice: 'Benim TERCİHİM'\n    },\n    hm: {\n      addComment: 'Lütfen aşağıya bir yorum ekleyin ',\n      commentMandatoryPlaceHolder: 'Lütfen zorunlu yorum ekleyin… ',\n      commentOptionalPlaceHolder: 'Lütfen isteğe bağlı yorum ekleyin… ',\n      dragPin: 'Yeniden konumlandırmak için sürükleyin (tam pinleme için uzun tıklayın/dokunun  ',\n      removePin: 'Silmek için resmin dış kısmına sürükleyin.  ',\n      editComment: 'Yorumu düzenlemek için pine tıklayın/dokunun. ',\n      addPin: 'Lütfen aşağıdaki panelden pini sürükleyin ve resmin üzerinde seçtiğiniz bir noktaya bırakın. ',\n      addPins: 'Lütfen aşağıdaki panelden pinleri sürükleyin ve resmin üzerinde seçtiğiniz bir noktaya bırakın. ',\n      leavePins: (minPoints, maxPoints) =>\n        `Lütfen her türden en az ${minPoints} ve en fazla ${maxPoints} pin bırakın. `,\n      leavePinsPerPage: (minPoints, maxPoints) => `Lütfen en az ${minPoints} en fazla ${maxPoints} pin bırakın.  `,\n      leavePinsWithOff: maxPoints =>\n        `Lütfen her türden en fazla ${maxPoints} pin bırakın veya atlamak için Sonraki düğmesine tıklayın. `,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Lütfen en fazla ${maxPoints} pin bırakın veya atlamak için Sonraki düğmesine tıklayın. `,\n      leavePinWithOff: 'Lütfen her türden en fazla 1 pin bırakın veya atlamak için Sonraki düğmesine tıklayın. ',\n      leavePinPerPageWithOff: 'Lütfen en fazla 1 pin bırakın veya atlamak için Sonraki düğmesine tıklayın. ',\n      leaveExactlyPin: 'Lütfen her türden 1 pin bırakın. ',\n      leaveExactlyPinPerPage: 'Lütfen 1 pin bırakın. ',\n      leaveExactlyPins: maxPoints => `Lütfen her türden ${maxPoints} pin bırakın. `,\n      leaveExactlyPinsPerPage: maxPoints => `Lütfen ${maxPoints} pin bırakın. `,\n      leaveComment: 'Yorum bırakmak için resmin altına yazın. ',\n      noAnswers: 'Cevap seçeneği yok, devam etmek için lütfen sonraki düğmesine tıklayın. ',\n      outOfPins: 'Pininiz kalmadı',\n      pinsBehavior: 'Resimde gezinirken tek bir işaretçi ile öne çıkarılan alanları göreceksiniz.',\n      clusters: 'İşaretçiyi sadece bu alanlara ekleyebileceksiniz.',\n      contentAware: 'İşaretçiyi öne çıkarılan alanların içine veya dışına ekleyebilirsiniz.'\n    },\n    mp: {\n      expand_note: 'Genişletmek için lütfen resimin/resimlerin üzerine gelin ya da üzerine tıklayın',\n      rb_note: rows => `Lütfen aşağıdaki her madde için sadece 1 yanıt${rows ? ' seçin' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (1 === min && 5000 === max) {\n          return 'Kryssa i alla giltiga alternativ:'\n        } else if (min === max) {\n          return `Lütfen aşağıdaki her madde için ${min !== 1 ? 'herhangi' : 'sadece'} ${min} yanıt${\n            min !== 1 ? 'lar' : ''\n          }${rows ? ' seçin' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Lütfen aşağıda her madde için en az ${min} yanıt${min !== 1 ? 'lar' : ''} en fazla ${max} yanıt${\n            rows ? ' seçin' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Lütfen aşağıda her madde için en az ${min} yanıt${min !== 1 ? 'lar' : ''}${rows ? ' seçin' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Lütfen aşağıda her madde için en fazla ${max} yanıt${max !== 1 ? 'lar' : ''}${rows ? ' seçin' : ''}:`\n        } else {\n          return 'Kryssa i alla giltiga alternativ:'\n        }\n      }\n    },\n    sh: {\n      note: 'Yakınlaştırmak istediğin ürünün üzerine tıkla ve mağazada satın alacaksan sanal sepetine ekle',\n      amazonNote: 'Yakınlaştırmak ve sanal sepetinize eklemek için bir ürüne tıklayın.',\n      fullCart: 'Sepetin dolu!',\n      qty: 'MİKTAR',\n      addToCart: 'SEPETE EKLE',\n      deleteFromCart: 'SİL',\n      emptyCard: 'Sepetin boş',\n      each: 'her biri',\n      items: 'öğeler',\n      total: 'Sepet',\n      clearCart: 'Sepeti temizle',\n      backToStore: 'Mağazaya geri dön',\n      next: 'SONRAKİ',\n      na: 'Yukarıdakilerden hiçbiri',\n      maxCartCountError: max => `Lütfen ürün sepetinize en fazla ${max} ürün ekleyin`,\n      scrollError: `Ankette ilerlemek için lütfen tamamen sola ve sağa kaydırın. `,\n      maxSpentError: max => `Lütfen ${max} tutarından fazla harcamayın.`,\n      maxProductCountError: max => `Lütfen her ürün için sepetinize en fazla ${max} adet ekleyin.`\n    },\n    rb: {\n      note: 'Lütfen sadece 1 tanesini seçin:'\n    },\n    vo: {\n      note: 'Lütfen videoyu sonuna kadar izleyin'\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `Lütfen ${min !== 1 ? 'herhangi' : 'sadece'} ${min} tanesini seçin:`\n        } else if (min > 0 && max < 5000) {\n          return `Lütfen en az ${min} en fazla ${max} tanesini seçin:`\n        } else if (5000 === max && min > 0) {\n          return `Lütfen en az ${min} tanesini seçin:`\n        } else if (0 === min && max < 5000) {\n          return `Lütfen en fazla ${max} tanesini seçin:`\n        } else {\n          return 'Uygun olanların hepsini işaretleyin:'\n        }\n      }\n    },\n    oe: {\n      na: 'Uygulanamaz',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Lütfen ${1 !== min ? 'herhangi' : 'tam olarak'} ${min} karakter girin${\n            optional ? ' (isteğe bağlı)' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Lütfen en az ${min}, en fazla ${max} karakter girin${optional ? ' (isteğe bağlı)' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Lütfen en az ${min} karakter girin${optional ? ' (isteğe bağlı)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Lütfen en fazla ${max} karakter girin${optional ? ' (isteğe bağlı)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Lütfen aşağıdaki alanları doldur:'\n    },\n    mx: {\n      note: 'Devam etmek için lütfen vurgulanmış kaydırıcıları hareket ettir',\n      dragSlider: 'Cevaplamak için sola veya sağa sürükleyin'\n    },\n    psc: {\n      dragLeftRight: 'Cevaplamak için sola veya sağa sürükleyin'\n    },\n    ps: {\n      note: value => `Lütfen kalan ${value} değerlerini aşağıdakiler arasında dağıtın`,\n      allDone: 'Hepsi tamamlandı!',\n      total: `Toplam:`,\n      dragSlider: 'Cevaplamak için sola veya sağa sürükleyin'\n    },\n    cx: {\n      note: 'Otomatik olarak kaydırmak için cevabınızı yazmaya başlayın veya el ile seçin'\n    },\n    ro: {\n      note: 'Yeniden sıralamak için yukarı veya aşağı kaydırın:'\n    },\n    md: {\n      note1:\n        'Lütfen ilk tercihiniz olan ögeye tıklayın/dokunun<br/>Seçiminizi temizlemek için tekrar tıklayın/dokunun.',\n      note2: 'Şimdi son tercihiniz olan ögeye tıklayın/dokunun<br/>Seçiminizi temizlemek için tekrar tıklayın/dokunun.',\n      note3:\n        'Teşekkürler! Sonraki soruya devam edin veya baştan<br/>başlamak için seçilmemiş herhangi bir ögeye tıklayın/dokunun.'\n    },\n    aro: {\n      note: 'Lütfen her çift için bir tanesini seçin.'\n    },\n    wd: {\n      note: 'Lütfen her bir değerin bir öncekinden daha büyük olduğuna emin olun.'\n    },\n    emd: {\n      note: 'Lütfen videoyu sonuna kadar izleyin',\n      noAnswers: 'Cevap seçeneği yok, devam etmek için lütfen sonraki düğmesine tıkla',\n      start: 'Başlamak için tıkla ve basılı tut',\n      resume: 'Devam etmek için tıkla ve basılı tut',\n      continue: 'Hazırsın! <br />Devam etmek için sonraki düğmesine tıkla',\n      continueMobile: 'Hazırsın! <br /> Devam etmek için BURAYA tıkla',\n      training: {\n        session: 'Eğitim Oturumu',\n        note: 'Lütfen eğitimi bitir',\n        moveLeft: 'Lütfen kadranı tamamen sola sürükle',\n        moveBottom: 'Lütfen kadranı tamamen aşağı sürükle',\n        moveRight: 'Lütfen kadranı tamamen sağa sürükle',\n        moveTop: 'Lütfen kadranı tamamen yukarı sürükle',\n        success: 'Harika iş çıkardın!'\n      }\n    },\n    sft: {\n      noAnswers: 'Cevap seçeneği yok, devam etmek için lütfen sonraki düğmesine tıkla',\n      note: 'Lütfen sezgisel olarak doğru hissettiren cevapla elinden geldiğince hızlı yanıtla',\n      finish: 'İşin bitti! <br /> Devam etmek için lütfen Sonraki düğmesine tıkla',\n      training: {\n        start:\n          '<p>Bu soruda sana hızlıca farklı sözcükler gösterilecek ve konsantrasyonuna gerek duyulacaktır. ' +\n          'Cevaplamak için hızlı davranman gerekecek. </p> <p>Pratik yapmaya hazır mısın?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `\"{buttonLeft}\" düğmesine dokun`\n            : (mouse ? `\"{buttonLeft}\" düğmesine tıkla` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `F tuşuna bas` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `\"{buttonRight}\" düğmesine dokun`\n            : (mouse ? `\"{buttonRight}\" düğmesine tıkla` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `J tuşuna bas` : ''),\n        fail: () => 'Çok yavaş',\n        success: () => 'Harika!',\n        finish: () =>\n          '<p><strong> Muhteşem!</strong></p><p>Lütfen önümüzdeki 2-3 dakika <br />' +\n          'içinde dikkatinin <br/> dağılmayacağından emin ol. </p><p>Hazır olduğunda başlamak için Sonraki düğmesine tıkla.</p>'\n      },\n      buttons: {\n        start: 'Başla',\n        yesno: {\n          left: 'Evet',\n          right: 'Hayır'\n        },\n        matches: {\n          left: 'Eşleşme',\n          right: 'Eşleşme Değil'\n        },\n        fits: {\n          left: 'Uygun',\n          right: 'Uygun Değil'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: \"Немає варіанту відповіді, будь ласка, натисніть на 'Наступне', щоб продовжити\",\n    placeholder: 'Введіть Вашу відповідь...',\n    pleaseSelect: 'Оберіть варіант...',\n    rotateLandscape: 'Поверніть телефон з портретної орієнтації на альбомну.',\n    rotatePortrait: 'Поверніть телефон з альбомної орієнтації на портретну.',\n    ir: {\n      selectWebCam: \"Оберіть вебкамеру (якщо така доступна) або натисніть 'Пошук', щоб завантажити з пристрою\",\n      noWebCam: 'Не знайдено вебкамери',\n      accessCamUpload: 'ДОСТУП ДО КАМЕРИ/ЗАВАНТАЖЕННЯ',\n      browse: 'ПОШУК',\n      uploadPhoto: 'Завантажити фото',\n      instead: 'натомість',\n      startOver: 'ПОЧАТИ НАНОВО',\n      capture: 'ФОТО',\n      allDone: 'ГОТОВО!',\n      somethingWrong: 'Вибачте, сталась помилка. Будь ласка, спробуйте знову пізніше',\n      couldntRead: 'Вибачте, ми не змогли прочитати код!',\n      couldntProcess: 'Вибачте, ми не змогли опрацювати зображення!',\n      moveOn: 'Будь ласка, спробуйте знову або завантажте своє фото та продовжіть процес',\n      tryAgain: 'Будь ласка, спробуйте знову',\n      dataReceived: 'Дані отримано!',\n      enterManually: 'Будь ласка, спробуйте знову або введіть дані вручну нижче',\n      positionQR:\n        \"Будь ласка, наведіть свою камеру на QR код, щоб він помістився у червону рамку, або завантажте фото QR коду з комп'ютера.\",\n      submit: 'ВІДПРАВИТИ',\n      analyzing: 'Аналіз зображення, будь ласка, зачекайте',\n      cantAnalyze:\n        'Увага - не вдалося відтворити це зображення. Будь ласка, спробуйте перезавантажити або оберіть універсальний формат зображень (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Вибачте, цей формат файлів не підтримується. Будь ласка, завантажте зображення у форматі, що підтримується (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Не знайдено вебкамери',\n      uploadVideo: 'Завантажити відео',\n      skip: 'Пропустити?',\n      accessCamUpload: 'ДОСТУП ДО КАМЕРИ/ЗАВАНТАЖЕННЯ',\n      browse: 'ПОШУК',\n      instead: 'натомість',\n      or: 'або',\n      stopRecording: 'Зупинити запис',\n      willBeStopped: 'Запис зупиниться на 5-й хвилині',\n      stopOnDone: 'Зупиніть запис, коли закінчите!',\n      record: 'ЗАПИС',\n      somethingWrong: 'Вибачте, сталась помилка. Будь ласка, спробуйте знову пізніше',\n      microphone: 'Мікрофон',\n      camera: 'Веб-камера',\n      selectMicrophone: 'Оберіть мікрофон',\n      selectCam: 'Оберіть веб-камеру',\n      submit: 'ВІДПРАВИТИ',\n      upload: 'Завантажити',\n      playback: 'Відтворення',\n      stopPlayback: 'ЗАСТАНОВИТИ',\n      startOver: 'ПОЧАТИ НАНОВО',\n      allDone: 'ГОТОВО!',\n      alternativeRecordSpan:\n        \"Будь ласка, завантажте відеоролик з вашого комп'ютеру або іншого пристрою.<br/>Також ви можете  &nbsp;\",\n      alrenativeRecordHref: 'записати відео на веб-камеру.',\n      cantAnalyze:\n        'Увага - нам не вдалося відтворити це відео. Будь ласка, спробуйте перезавантажити або оберіть універсальний формат відео (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Вибачте, цей формат файлів не підтримується. Будь ласка, завантажте відео у форматі, що підтримується (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'ВИБРАТИ',\n      pleaseChoose: 'Будь ласка, оберіть',\n      this: 'ЦЕЙ',\n      one: 'щось одне',\n      myChoice: 'Мій ВИБІР'\n    },\n    hm: {\n      addComment: 'Будь ласка, додайте коментар нижче',\n      commentMandatoryPlaceHolder: \"Будь ласка, додайте обов'язковий коментар…\",\n      commentOptionalPlaceHolder: \"Будь ласка, додайте необов'язковий коментар… \",\n      dragPin: 'Перетягніть, щоб змінити положення (натисніть/торкніться та потримайте, щоб закріпити точно). ',\n      removePin: 'Перетягніть за межі зображення, щоб видалити. ',\n      editComment: 'Натисніть/торкніться пiн, щоб відредагувати коментар. ',\n      addPin: 'Будь ласка, перетягніть пiн з панелі нижче та відпустіть її на обраному місці на зображенні. ',\n      addPins: 'Будь ласка, перетягніть пiни з панелі нижче та відпустіть їх на обраному місці на зображенні. ',\n      leavePins: (minPoints, maxPoints) =>\n        `Будь ласка, залиште принаймнi ${minPoints}, але не більше ${maxPoints} пiнiв кожного виду.`,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `Будь ласка, залиште принаймнi ${minPoints}, але не більше ${maxPoints} пiнiв.`,\n      leavePinsWithOff: maxPoints =>\n        `Будь ласка, залиште не більше ${maxPoints} пiнiв кожного виду або натисніть Далі, щоб пропустити.`,\n      leavePinsPerPageWithOff: maxPoints =>\n        `Будь ласка, залиште не більше  ${maxPoints} пiнiв або натисніть Далі, щоб пропустити.`,\n      leavePinWithOff: 'Будь ласка, залиште не більше 1 пiнa кожного виду або натисніть Далі, щоб пропустити.',\n      leavePinPerPageWithOff: 'Будь ласка, залиште не більше 1 пiнa або натисніть Далі, щоб пропустити.',\n      leaveExactlyPin: 'Будь ласка, залиште по одному пiну кожного виду. ',\n      leaveExactlyPinPerPage: 'Будь ласка, залиште один пiн. ',\n      leaveExactlyPins: maxPoints =>\n        `Будь ласка, залиште ${maxPoints} пiн${maxPoints >= 2 ? (maxPoints < 5 ? 'а' : 'iв') : ''} кожного виду. `,\n      leaveExactlyPinsPerPage: maxPoints =>\n        `Будь ласка, залиште ${maxPoints} пiн${maxPoints >= 2 ? (maxPoints < 5 ? 'а' : 'iв') : ''}. `,\n      leaveComment: 'Введіть текст під зображенням, щоб залишити коментар. ',\n      noAnswers: 'Немає варіанту відповіді. Будь ласка, натисніть далі, щоб продовжити. ',\n      outOfPins: 'У вас закінчилися пiни',\n      pinsBehavior: 'Під час переміщення по зображенню ви побачите області, які буде виділено  коли в них стоїть пін.',\n      clusters: 'Ви зможете розміщувати шпильки лише в цих виділених областях.',\n      contentAware: 'Ви можете розміщувати шпильки всередині або поза межами виділених областей.'\n    },\n    mp: {\n      expand_note: 'Будь ласка, наведіть курсор миші або натисніть на зображення, щоб розгорнути',\n      rb_note: rows => `Оберіть лише 1 відповідь на кожне з наведених ${rows ? ' нижче' : ''} запитань:`,\n      cb_note: (min, max, rows) => {\n        if (1 === min && 5000 === max) {\n          return 'Виберіть всі відповідні варіанти:'\n        } else if (min === max) {\n          return `Оберіть будь-яку ${min} відповід${min < 5 ? 'і' : 'ей'} на кожне з наведених ${\n            rows ? ' нижче' : ''\n          } запитань:`\n        } else if (min > 0 && max < 5000) {\n          return `Будь ласка, виберіть принаймні ${min} відповід${\n            1 == min ? 'ь' : min < 5 ? 'і' : 'ей'\n          }, але не більше ${max} для кожного пункту ${rows ? ' нижче' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Будь ласка, виберіть принаймні ${min} відповід${\n            max >= 2 ? (min < 5 ? 'і' : 'ей') : 'ь'\n          } для кожного пункту ${rows ? ' нижче' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Будь ласка, виберіть не більше ${max} відповід${1 == min ? 'і' : 'ей'} для кожного пункту${\n            rows ? ' нижче' : ''\n          }:`\n        } else {\n          return 'Виберіть всі відповідні варіанти:'\n        }\n      }\n    },\n    sh: {\n      note: 'Клікніть на продукт, щоб збільшити його та додати у свій віртуальний кошик, якщо ви купили б його в магазині',\n      amazonNote: 'Натисніть на товар, щоб збільшити його та додати у свій віртуальний кошик.',\n      fullCart: 'Ваш кошик заповнений!',\n      qty: 'КІЛЬКІСТЬ',\n      each: 'кожен',\n      items: 'елементи',\n      addToCart: 'ДОДАТИ У КОШИК',\n      deleteFromCart: 'ВИДАЛИТИ',\n      emptyCard: 'Ваш кошик порожній',\n      total: 'Кошик',\n      clearCart: 'Очистити кошик',\n      backToStore: 'Повернутись до магазину',\n      next: 'ДАЛІ',\n      na: 'Жоден із варіантів',\n      maxCartCountError: max => `Будь ласка, додайте до свого кошика не більше ${max} товарів.`,\n      scrollError: `Будь ласка, прокрутіть повністю ліворуч і праворуч, щоб продовжити опитування. `,\n      maxSpentError: max => `Будь ласка, витратьте не більше ${max}.`,\n      maxProductCountError: max => `Будь ласка, додайте не більше ніж кількість ${max} до кошика для кожного товару.`\n    },\n    rb: {\n      note: 'Виберіть 1 варiант:'\n    },\n    vo: {\n      note: 'Будь ласка, перегляньте відео до кінця'\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `Виберіть ${min} чекбокс${min >= 3 ? (min < 3 ? 'а' : 'ів') : 'a'}:`\n        } else if (min > 0 && max < 5000) {\n          return `Виберіть от ${min} до ${max} чекбокс${max >= 3 ? (max < 3 ? 'а' : 'ів') : 'a'}:`\n        } else if (5000 === max && min > 0) {\n          return `Виберіть не менше ${min} чекбокс${min >= 3 ? (min < 3 ? 'а' : 'ів') : 'a'}:`\n        } else if (0 === min && max < 5000) {\n          return `Виберіть не більше ${max} чекбокс${max >= 3 ? (max < 3 ? 'а' : 'ів') : 'a'}:`\n        } else {\n          return 'Виберіть всі підходящі варіанти:'\n        }\n      }\n    },\n    oe: {\n      na: 'Не застосовується',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Введіть ${min} символ${1 !== min && min <= 4 ? 'а' : ''}${min > 4 ? 'iв' : ''}${\n            optional ? \" (необов'язкове поле)\" : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Введіть от ${min} до ${max} символ${1 === max ? 'а' : 'iв'}${\n            optional ? \" (необов'язкове поле)\" : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Введіть не менше ${min} символ${1 === min ? 'а' : 'iв'}${optional ? \" (необов'язкове поле)\" : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Введіть не більше ${max} символ${1 === max ? 'а' : 'iв'}${optional ? \" (необов'язкове поле)\" : ''}::`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Будь ласка, заповніть наступні поля:'\n    },\n    mx: {\n      note: 'Перемістіть виділені слайдери, щоб продовжити',\n      dragSlider: 'Пересуньте слайдер вліво або вправо'\n    },\n    psc: {\n      dragLeftRight: 'Пересуньте слайдер вліво або вправо'\n    },\n    ps: {\n      note: value => `Будь ласка, розподіліть бали, що залишилися ${value} між наведеними нижче рядками`,\n      allDone: 'ГОТОВО!',\n      total: `Всього:`,\n      dragSlider: 'Пересуньте слайдер вліво або вправо'\n    },\n    cx: {\n      note: 'Клікніть по комбобоксу і почніть друкувати Вашу відповідь або виберіть його зі списку'\n    },\n    ro: {\n      note: 'Перетягніть вгору або вниз, щоб змінити порядок:'\n    },\n    md: {\n      note1:\n        'Будь ласка, натисніть/торкніться елемента, який вам сподобався найбільше<br/>Натисніть/торкніться знову, щоб очистити вибір.',\n      note2:\n        'Тепер, будь ласка, натисніть/торкніться елемента, який вам сподобався найменше<br/>Натисніть/торкніться знову, щоб очистити вибір.',\n      note3:\n        'Дякуємо! Перейдіть до наступного запитання<br/>або натисніть/торкніться будь-якого невибраного елемента, щоб почати знову.'\n    },\n    aro: {\n      note: 'Будь ласка, оберіть один варіант з кожної пари:'\n    },\n    wd: {\n      note: 'Переконайтеся, що кожне наступне значення є більшим за попереднє.'\n    },\n    emd: {\n      note: 'Будь ласка, перегляньте відео до кінця',\n      noAnswers: \"Немає варіанту відповіді, будь ласка, натисніть на 'Наступне', щоб продовжити\",\n      start: 'Клікніть та утримуйте, щоб почати',\n      resume: 'Клікніть та утримуйте, щоб продовжити',\n      continue: 'Ви готові! <br /> Натисніть <strong>Далі</strong>, щоб продовжити',\n      continueMobile: 'Усе готово! <br /> Натисніть ТУТ, щоб продовжити',\n      training: {\n        session: 'Тренінг',\n        note: 'Будь ласка, завершіть тренування',\n        moveLeft: 'Перетягніть диск ліворуч',\n        moveBottom: 'Перетягніть диск донизу',\n        moveRight: 'Тепер, перетягніть диск праворуч',\n        moveTop: 'Тепер, перетягніть диск догори',\n        success: 'Чудова робота!'\n      }\n    },\n    sft: {\n      noAnswers: \"Немає варіанту відповіді, будь ласка, натисніть на 'Наступне', щоб продовжити\",\n      note: 'Будь ласка, відповідайте якомога швидше та обирайте відповідь, яка інтуїтивно здається вірною',\n      finish: 'Ви готові! <br /> Натисніть Далі, щоб продовжити',\n      training: {\n        start:\n          '<p>У цьому пункті вам будуть швидко показані різні слова. Ви повинні бути максимально сконцентровані. ' +\n          'Ви повинні реагувати швидко, щоб відповісти.</p> <p>Готові тренуватися?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Натисніть \"{buttonLeft}\"`\n            : (mouse ? `Клікніть \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Натисніть кнопку \"{keyBtnLeft}\"` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Натисніть \"{buttonRight}\"`\n            : (mouse ? `Клікніть \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Натисніть кнопку \"{keyBtnRight}\"` : ''),\n        fail: () => 'Занадто повільно',\n        success: () => 'Чудово!',\n        finish: () =>\n          '<p><strong> Відмінно!</strong></p><p>Будь ласка, переконайтесь, <br />' +\n          'що протягом наступних 2-3 хвилин <br/> ви не будете відволікатися</p><p>Натисніть Далі щойно будете готові. </p>'\n      },\n      buttons: {\n        start: 'Розпочати',\n        yesno: {\n          left: 'Так',\n          right: 'Ні'\n        },\n        matches: {\n          left: 'Правильно',\n          right: 'Неправильно'\n        },\n        fits: {\n          left: 'Підходить',\n          right: 'Не підходить'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: 'Không có tùy chọn trả lời, vui lòng nhấn tiếp theo để tiếp tục.',\n    placeholder: 'Vui lòng nêu rõ......',\n    pleaseSelect: 'Vui lòng chọn...',\n    rotateLandscape: 'Hãy xoay điện thoại của bạn từ chân dung sang phong cảnh để tiếp tục.',\n    rotatePortrait: 'Hãy xoay điện thoại của bạn từ phong cảnh sang chân dung để tiếp tục.',\n    ir: {\n      selectWebCam: 'Chọn webcam (nếu có) hoặc nhấn “Duyệt” để tải lên từ thiết bị của bạn',\n      uploadOnly: 'hoặc nhấn “Duyệt” để tải lên từ thiết bị của bạn',\n      noWebCam: 'Không tìm thấy webcam',\n      accessCamUpload: 'TRUY CẬP CAMERA/TẢI LÊN',\n      browse: 'DUYỆT',\n      uploadPhoto: 'Tải lên hình ảnh',\n      camera: 'Webcam',\n      instead: 'thay vì',\n      capture: 'CHỤP',\n      somethingWrong: 'Rất tiếc, đã xảy ra lỗi. Vui lòng thử lại sau',\n      couldntRead: 'Rất tiếc, chúng tôi không thể đọc mã!',\n      couldntProcess: 'Rất tiếc, chúng tôi không thể xử lý ảnh của bạn!',\n      inValidCode: 'Vui lòng gửi mã hợp lệ',\n      moveOn: 'Vui lòng thử lại hoặc gửi ảnh của bạn và tiếp tục',\n      tryAgain: 'Vui lòng thử lại',\n      dataReceived: 'Đã nhận được dữ liệu!',\n      enterManually: 'Vui lòng thử lại hoặc nhập dữ liệu theo cách thủ công bên dưới',\n      positionQR:\n        'Vui lòng đặt mã QR ở phía trước camera sao cho vừa với khung màu đỏ hoặc tải lên mã này từ máy tính của bạn.',\n      positionQRMobile: 'Vui lòng đặt mã QR trước camera hoặc tải lên từ thiết bị của bạn.',\n      analyzing: 'Đang phân tích ảnh, vui lòng chờ',\n      submit: 'GỬI',\n      startOver: 'Bắt đầu lại',\n      allDone: 'Hoàn tất!',\n      cantAnalyze:\n        'Chú ý - chúng tôi không thể kết xuất hình ảnh này. Hãy thử gửi lại hoặc chọn định dạng hình ảnh phổ biến hơn (JPG, PNG, GIF, BMP)',\n      wrongFormat:\n        'Rất tiếc - chúng tôi không hỗ trợ định dạng tập tin này. Vui lòng tải lên định dạng hình ảnh được hỗ trợ (JPG, PNG, GIF, BMP, TIF, PDF, SVG)'\n    },\n    vr: {\n      noWebCam: 'Không tìm thấy webcam',\n      uploadVideo: 'Tải lên video',\n      skip: 'Bỏ qua?',\n      accessCamUpload: 'TRUY CẬP CAMERA/TẢI LÊN',\n      browse: 'DUYỆT',\n      instead: 'thay vì',\n      or: 'hoặc',\n      stopRecording: 'Dừng quay',\n      willBeStopped: 'Sẽ dừng quay sau  <b>5 phút</b>',\n      stopOnDone: 'Dừng quay khi bạn đã làm xong!',\n      record: 'quay',\n      somethingWrong: 'Rất tiếc, đã xảy ra lỗi. Vui lòng thử lại sau',\n      dataReceived: 'Đã nhận được dữ liệu!',\n      microphone: 'micrô',\n      camera: 'Webcam',\n      selectMicrophone: 'Chọn micrô của bạn',\n      selectCam: 'Chọn webcam của bạn',\n      submit: 'GỬI',\n      upload: 'TẢI LÊN',\n      playback: 'Phát lại',\n      stopPlayback: 'DỪNG PHÁT LẠI',\n      startOver: 'Bắt đầu lại',\n      allDone: 'Hoàn tất!',\n      alternativeRecordSpan: 'Vui lòng tải lên một đoạn video từ máy tính của bạn.  <br/>Ngoài ra, bạn có thể &nbsp;',\n      alrenativeRecordHref: 'quay video bằng webcam.',\n      cantAnalyze:\n        'Chú ý - chúng tôi không thể kết xuất video này. Hãy thử gửi lại hoặc chọn định dạng video phổ biến hơn (MP4, M4V, WEBPM)',\n      wrongFormat:\n        'Rất tiếc - chúng tôi không hỗ trợ định dạng tập tin này. Vui lòng tải lên định dạng video được hỗ trợ (MP4, AVI, M4V, WEBPM, MOV, MKV, MPG, WMV)'\n    },\n    cjc: {\n      choose: 'CHỌN',\n      pleaseChoose: 'Vui lòng',\n      this: 'chọn',\n      one: ' một',\n      myChoice: 'LỰA CHỌN của tôi'\n    },\n    hm: {\n      addComment: 'Vui lòng thêm nhận xét vào bên dưới',\n      commentMandatoryPlaceHolder: 'Vui lòng thêm nhận xét bắt buộc... ',\n      commentOptionalPlaceHolder: 'Vui lòng thêm nhận xét tùy chọn... ',\n      dragPin: 'Kéo để xác định lại vị trí (nhấn/chạm và giữ lâu để ghim chính xác). ',\n      removePin: 'Kéo ra ngoài hình ảnh để xóa.',\n      editComment: 'Nhấn/chạm vào dấu ghim để chỉnh sửa nhận xét. ',\n      addPin: 'Vui lòng kéo ghim từ bảng điều khiển bên dưới và thả vào vị trí mà bạn chọn trên hình ảnh.',\n      addPins: 'Vui lòng kéo các ghim từ bảng điều khiển bên dưới và thả vào vị trí mà bạn chọn trên hình ảnh.',\n      leavePins: (minPoints, maxPoints) =>\n        `Vui lòng để lại ít nhất ${minPoints}, ghim nhưng không quá ${maxPoints} ghim mỗi loại.`,\n      leavePinsAny: (minPoints, maxPoints) =>\n        `Vui lòng để lại ít nhất ${minPoints}, ghim nhưng không quá ${maxPoints} ghim của bất kỳ loại nào. `,\n      leavePinsPerPage: (minPoints, maxPoints) =>\n        `Vui lòng để lại ít nhất ${minPoints}, ghim nhưng không quá ${maxPoints} ghim. `,\n      leavePinsWithOff: maxPoints =>\n        `Vui lòng để lại không quá ${maxPoints} ghim mỗi loại nhấn Tiếp theo để tiếp tục. `,\n      leavePinsWithOffAny: maxPoints =>\n        `Vui lòng để lại không quá ${maxPoints} ghim của bất kỳ loại nào nhấn Tiếp theo để tiếp tục. `,\n      leavePinsPerPageWithOff: maxPoints => `Vui lòng để lại không quá ${maxPoints} ghim nhấn Tiếp theo để tiếp tục. `,\n      leavePinWithOff: `Vui lòng để lại không quá 1 ghim mỗi loại hoặc nhấn Tiếp theo để tiếp tục. `,\n      leavePinWithOffAny: `Vui lòng để lại không quá 1 ghim của bất kỳ loại nào hoặc nhấn Tiếp theo để tiếp tục. `,\n      leavePinPerPageWithOff: 'Vui lòng để lại không quá 1 ghim của bất kỳ loại nào hoặc nhấn Tiếp theo để tiếp tục. ',\n      leaveExactlyPin: `Vui lòng để lại 1 ghim mỗi loại. `,\n      leaveExactlyPinAny: `Vui lòng để lại 1 ghim của bất kỳ loại nào. `,\n      leaveExactlyPinPerPage: 'Vui lòng để lại 1 ghim. ',\n      leaveExactlyPins: maxPoints => `Vui lòng ${maxPoints} ghim mỗi loại. `,\n      leaveExactlyPinsAny: maxPoints => `Vui lòng ${maxPoints} ghim của bất kỳ loại nào. `,\n      leaveExactlyPinsPerPage: maxPoints => `Vui lòng ${maxPoints} ghim. `,\n      leaveComment: 'Nhập bên dưới hình ảnh và để lại nhận xét. ',\n      noAnswers: 'Không có tùy chọn trả lời, vui lòng nhấn tiếp theo để tiếp tục.',\n      outOfPins: 'Bạn đã hết ghim',\n      pinsBehavior: 'Khi di chuyển qua hình ảnh, bạn sẽ thấy các khu vực được đánh dấu bằng một dấu ghim.',\n      clusters: 'Bạn sẽ chỉ có thể đặt ghim vào những khu vực được đánh dấu này.',\n      contentAware: 'Bạn có thể thả ghim vào bên trong hoặc bên ngoài các khu vực được đánh dấu.'\n    },\n    mp: {\n      expand_note: 'Vui lòng di chuột hoặc nhấn vào hình ảnh để mở rộng.',\n      rb_note: rows => `Vui lòng chỉ chọn 1 câu trả lời cho mỗi mục bên${rows ? ' dưới' : ''}:`,\n      cb_note: (min, max, rows) => {\n        if (min === max) {\n          return `Vui lòng ${min !== 1 ? 'chọn' : 'chỉ chọn'} ${min} câu trả lời bất kỳ cho mỗi mục bên${\n            rows ? ' dưới' : ''\n          }:`\n        } else if (min > 0 && max < 5000) {\n          return `Vui lòng chọn ít nhất ${min} câu trả lời nhưng không quá ${max} cho mỗi mục bên${\n            rows ? ' dưới' : ''\n          }:`\n        } else if (5000 === max && min > 0) {\n          return `Vui lòng chọn ít nhất ${min} câu trả lời cho mỗi mục bên${rows ? ' dưới' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Vui lòng chọn không quá ${max} câu trả lời cho mỗi mục bên${rows ? ' dưới' : ''}:`\n        } else {\n          return 'Đánh dấu tất cả những ý đúng:'\n        }\n      }\n    },\n    sh: {\n      note: 'Nhấn vào một sản phẩm để phóng to và thêm vào giỏ hàng ảo nếu bạn muốn mua nó tại cửa hàng',\n      amazonNote: 'Nhấn vào một sản phẩm để phóng to và thêm vào giỏ hàng ảo nếu bạn muốn mua nó trực tuyến',\n      fullCart: 'Giỏ hàng của bạn đã đầy!',\n      qty: 'SỐ LƯỢNG',\n      addToCart: 'THÊM VÀO GIỎ HÀNG',\n      deleteFromCart: 'XÓA',\n      each: 'mỗi',\n      items: 'mặt hàng',\n      emptyCard: 'Giỏ hàng của bạn đang trống',\n      total: 'Giỏ hàng',\n      clearCart: 'Xóa giỏ hàng',\n      scrollError: `Vui lòng cuộn hết sang trái và phải để tiếp tục khảo sát. `,\n      backToStore: 'Kembali ke kedai',\n      na: 'Không có ý nào ở trên',\n      next: 'TIẾP THEO'\n    },\n    rb: {\n      note: 'Vui lòng chỉ chọn 1 mục:'\n    },\n    vo: {\n      note: 'Vui lòng xem hết video'\n    },\n    cb: {\n      note: (min, max) => {\n        if (1 === min && 5000 === max) {\n          return 'Đánh dấu tất cả những ý đúng:'\n        } else if (min === max) {\n          return `Vui lòng ${min !== 1 ? 'chọn' : 'chỉ chọn'} ${min} mục:`\n        } else if (min > 0 && max < 5000) {\n          return `Vui lòng chọn ít nhất ${min} mục, ghim nhưng không quá ${max}:`\n        } else if (5000 === max && min > 0) {\n          return `Vui lòng chọn ít nhất ${min} mục:`\n        } else if (0 === min && max < 5000) {\n          return `Vui lòng nhưng không quá ${max} mục:`\n        } else {\n          return 'Đánh dấu tất cả những ý đúng:'\n        }\n      }\n    },\n    oe: {\n      na: 'Không áp dụng',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `Vui lòng ${1 !== min ? 'chọn' : 'chỉ chọn'} ${min} ký tự${optional ? ' (không bắt buộc)' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `Vui lòng chọn ít nhất ${min} ký tự ghim nhưng không quá ${max}${optional ? ' (không bắt buộc)' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `Vui lòng chọn ít nhất ${min} ký tự${optional ? ' (không bắt buộc)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `Vui lòng nhưng không quá ${max} ký tự${optional ? ' (không bắt buộc)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: 'Vui lòng điền vào các trường sau đây:'\n    },\n    mx: {\n      note: 'Hãy di chuyển các thanh trượt được đánh dấu để tiếp tục',\n      dragSlider: 'Kéo sang trái hoặc phải để trả lời'\n    },\n    psc: {\n      dragLeftRight: 'Kéo sang trái hoặc phải để trả lời'\n    },\n    ps: {\n      note: value => `Vui lòng phân phối ${value} còn lại giữa các mục bên dưới`,\n      allDone: `Hoàn tất`,\n      total: `tổng cộng:`,\n      dragSlider: 'Kéo sang trái hoặc phải để trả lời'\n    },\n    cx: {\n      note: 'Mở ô thả xuống và bắt đầu nhập câu trả lời của bạn để tự động cuộn hoặc chọn thủ công'\n    },\n    ro: {\n      note: 'Kéo lên hoặc xuống để sắp xếp lại:'\n    },\n    md: {\n      note1: 'Vui lòng nhấn/chạm vào mục mà bạn chọn đầu tiên<br/> Nhấn/chạm lại để xóa lựa chọn',\n      note2: 'Bây giờ hãy nhấn/chạm vào mục mà bạn chọn cuối cùng <br/> Nhấn/chạm lại để xóa lựa chọn.',\n      note3: 'Xin cảm ơn! Tiếp tục đến câu hỏi tiếp theo hoặc nhấn/chạm vào bất kỳ mục chưa chọn nào để bắt đầu lại.'\n    },\n    aro: {\n      note: 'Vui lòng chọn một mục từ mỗi cặp'\n    },\n    wd: {\n      note: 'Đảm bảo mỗi giá trị tiếp theo phải lớn hơn giá trị trước đó.'\n    },\n    emd: {\n      note: 'Vui lòng xem hết video',\n      noAnswers: 'Không có tùy chọn trả lời, vui lòng nhấn tiếp theo để tiếp tục.',\n      start: 'Nhấn và giữ để bắt đầu',\n      resume: 'Nhấn và giữ để tiếp tục',\n      continue: 'Bạn đã sẵn sàng! Nhấn Tiếp theo để tiếp tục',\n      continueMobile: 'Bạn đã sẵn sàng! Nhấn VÀO ĐÂY để tiếp tục',\n      training: {\n        session: 'Phiên đào tạo',\n        note: 'Vui lòng hoàn thành đào tạo',\n        moveLeft: 'Vui lòng kéo mặt quay sang bên trái',\n        moveBottom: 'Vui lòng kéo mặt quay xuống dưới cùng',\n        moveRight: 'Bây giờ hãy kéo mặt quay sang bên phải',\n        moveTop: 'Bây giờ hãy kéo mặt quay lên trên cùng',\n        success: 'Tuyệt!'\n      }\n    },\n    sft: {\n      noAnswers: 'Không có tùy chọn trả lời, vui lòng nhấn tiếp theo để tiếp tục.',\n      note: 'Hãy trả lời nhanh nhất có thể với đáp án mà trực giác của bạn cảm thấy đúng',\n      imageError: 'No image exposure time chosen',\n      finish: 'Bạn đã hoàn thành! Vui lòng nhấn Tiếp theo để tiếp tục',\n      training: {\n        start:\n          '<p>Câu hỏi này sẽ cho bạn xem nhanh các từ khác nhau và bạn sẽ cần phải tập trung.</p><p>Bạn sẵn sàng thực hành chưa?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `Chạm \"{buttonLeft}\"`\n            : (mouse ? `Nhấn \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Nhấn phím \"{keyBtnLeft}\"` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `Chạm \"{buttonRight}\"`\n            : (mouse ? `Nhấn \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `Nhấn phím \"{keyBtnRight}\"` : ''),\n        fail: () => 'Quá chậm',\n        success: () => 'Tuyệt!',\n        finish: () =>\n          '<p><strong> Xuất sắc!</strong></p><p>Đảm bảo bạn không <br />' +\n          'được mất tập trung<br/> trong 2-3 phút tiếp theo</p><p>Nhấn Tiếp theo để bắt đầu khi bạn sẵn sàng.</p>'\n      },\n      buttons: {\n        start: 'Bắt đầu',\n        yesno: {\n          left: 'Đúng',\n          right: 'Không'\n        },\n        matches: {\n          left: 'Khớp',\n          right: 'Không khớp'\n        },\n        fits: {\n          left: 'Vừa',\n          right: 'Không vừa'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        },\n        noyes: {\n          left: 'Đúng',\n          right: 'Không'\n        },\n        matchesRev: {\n          left: 'Khớp',\n          right: 'Không khớp'\n        },\n        fitsRev: {\n          left: 'Vừa',\n          right: 'Không vừa'\n        },\n        thumbsRev: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: '没有答案选项,请点击下一步以继续。',\n    placeholder: '请注明……',\n    pleaseSelect: '请选择……',\n    rotateLandscape: '请将手机从纵向旋转到横向继续。',\n    rotatePortrait: '请将手机从横向旋转到纵向继续。',\n    ir: {\n      selectWebCam: '选择网络摄像头(如有),或单击“浏览”,从您的设备上传',\n      noWebCam: '未检测到网络摄像头',\n      accessCamUpload: '访问摄像头/上传',\n      browse: '浏览',\n      uploadPhoto: '上传一张照片',\n      instead: '取而代之',\n      capture: '截取',\n      somethingWrong: '对不起,出了一些问题。请稍后再试',\n      couldntRead: '对不起,我们无法阅读代码!',\n      couldntProcess: '对不起,我们无法处理您的图片!',\n      moveOn: '请重试,或提交照片然后继续',\n      tryAgain: '请重试',\n      dataReceived: '收到数据!',\n      enterManually: '请重试或在下面手动输入数据',\n      positionQR: '请将QR码放在相机前面,使其处于红框里,或从电脑上传。',\n      analyzing: '正在分析图片,请稍候',\n      submit: '提交',\n      startOver: '重新开始',\n      allDone: '全部完成!',\n      cantAnalyze: '注意-我们无法渲染此图像。请尝试重新提交或选择更通用的图像格式(JPG,PNG,GIF,BMP)',\n      wrongFormat: '很抱歉-我们不支持此文件格式。请上传受支持的图片类型(JPG,PNG,GIF,BMP,TIF,PDF,SVG)'\n    },\n    vr: {\n      noWebCam: '未检测到网络摄像头',\n      uploadVideo: '上载影片',\n      skip: '跳过?',\n      accessCamUpload: '访问摄像头/上传',\n      browse: '浏览',\n      instead: '取而代之',\n      or: '或',\n      stopRecording: '停止录制',\n      willBeStopped: '录制会在5分钟后停止',\n      stopOnDone: '当您完成时就停止录制吧!',\n      record: '录音',\n      somethingWrong: '对不起,出了一些问题。请稍后再试',\n      microphone: '麦克风',\n      camera: '网络摄像头',\n      selectMicrophone: '选择您的麦克风',\n      selectCam: '选择您的网络摄像头',\n      upload: '上传',\n      playback: '回放',\n      stopPlayback: '停止播放',\n      submit: '提交',\n      startOver: '重新开始',\n      allDone: '全部完成!',\n      alternativeRecordSpan: '请从电脑设备上传视频<br/>',\n      alrenativeRecordHref: '或者您能用摄像头录制视频。',\n      cantAnalyze: '注意-我们无法渲染此视频。请尝试重新提交或选择更通用的视频格式(MP4,M4V,WEBPM)',\n      wrongFormat: '很抱歉-我们不支持此文件格式。请上传受支持的视频类型(MP4,AVI,M4V,WEBPM,MOV,MKV,MPG,WMV)'\n    },\n    cjc: {\n      choose: '选择',\n      pleaseChoose: '请选择',\n      this: '这个',\n      one: '一',\n      myChoice: '我的选择'\n    },\n    hm: {\n      addComment: '请在下面添加评论',\n      commentMandatoryPlaceHolder: '请添加强制性评论... ',\n      commentOptionalPlaceHolder: '请添加可选评论... ',\n      dragPin: '拖动以重新定位(长按/长触以精确定位)。 ',\n      removePin: '拖到图片外侧以删除。 ',\n      editComment: '点击/轻触指针,以编辑评论。 ',\n      addPin: '请从以下面板拖动指针,将其置于您在图片中选择的点。',\n      addPins: '请从以下面板拖动指针,将其置于您在图片中选择的点。 ',\n      leavePins: (minPoints, maxPoints) => `每种指针请留下至少${minPoints}个但不超过${maxPoints}个。 `,\n      leavePinsPerPage: (minPoints, maxPoints) => `请留下至少${minPoints}个但不超过${maxPoints}个指针。 `,\n      leavePinsWithOff: maxPoints => `每种指针请最多留下${maxPoints}个,或点击下一步跳过。 `,\n      leavePinsPerPageWithOff: maxPoints => `请最多留下${maxPoints}个指针,或点击下一步跳过。 `,\n      leavePinWithOff: '每种指针请最多留下1个,或点击下一步跳过。 ',\n      leavePinPerPageWithOff: '请最多留下{max}个指针,或点击下一步跳过。 ',\n      leaveExactlyPin: '每种指针请留下1个。 ',\n      leaveExactlyPinPerPage: '请留下1个指针。 ',\n      leaveExactlyPins: maxPoints => `每种指针请留下${maxPoints}个。 `,\n      leaveExactlyPinsPerPage: maxPoints => `请留下${maxPoints}个指针。 `,\n      leaveComment: '在图片下方键入,以留下评论。 ',\n      noAnswers: '没有答案选项,请点击下一步继续。',\n      outOfPins: '您的指针已用完',\n      pinsBehavior: '当您在图像上移动时,您会看到用一根探针标记的区域。',\n      clusters: '您只能在这些标记的区域中放置探针。',\n      contentAware: '您可以在标记区域内或外放置探针。'\n    },\n    mp: {\n      expand_note: '请将鼠标悬停在图片上或点击图片以将其展开',\n      rb_note: _rows => '请在下面的每项中仅选择1个答案:',\n      cb_note: (min, max, _rows) => {\n        if (1 === min && 5000 === max) {\n          return '勾选所有适合项:'\n        } else if (min === max) {\n          return `请针对以下每项 ${min !== 1 ? '任意' : '仅选'} ${min}个回复:`\n        } else if (min > 0 && max < 5000) {\n          return `请针对以下每项选择至少 ${min} 个回复不超过 ${max} 个:`\n        } else if (5000 === max && min > 0) {\n          return `请针对以下每项选择至少 ${min} 个回复:`\n        } else if (0 === min && max < 5000) {\n          return `请针对以下每项选择不超过 ${max} 个回复::`\n        } else {\n          return '勾选所有适合项:'\n        }\n      }\n    },\n    sh: {\n      note: '如果您想在商店中购买产品,请点击产品放大并添加到您的虚拟购物车中',\n      amazonNote: '点击产品,将其放大,并添加到您的虚拟购物车中',\n      fullCart: '您的购物车已满!',\n      qty: '数量',\n      addToCart: '添加到购物车',\n      deleteFromCart: '删除',\n      emptyCard: '您的购物车是空的',\n      total: '购物车',\n      each: '項目',\n      items: '每個',\n      clearCart: '清除购物车',\n      backToStore: '返回商店',\n      na: '以上皆否',\n      next: '前进',\n      maxCartCountError: max => `请在您的购物车中添加不超过${max}种产品`,\n      scrollError: `请左右滚动以继续进行调查。 `,\n      maxSpentError: max => `请花费不超过${max}。 `,\n      maxProductCountError: max => `在购物车中添加每种产品的数量请不要超过${max}。`\n    },\n    rb: {\n      note: '请选择 只能 1 项目:'\n    },\n    vo: {\n      note: '请完整观看视频'\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `请选择${min !== 1 ? '任意' : '只能'} ${min}项目:`\n        } else if (min > 0 && max < 5000) {\n          return `请选择至少 ${min} 项目 但是不超过 ${max}:`\n        } else if (5000 === max && min > 0) {\n          return `请选择至少 ${min}项目:`\n        } else if (0 === min && max < 5000) {\n          return `请选择不超过 ${max}项目:`\n        } else {\n          return '勾选所有适合项:'\n        }\n      }\n    },\n    oe: {\n      na: '不适用',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `请输入${1 !== min ? '任意' : '精确'} ${min} 字符${optional ? ' (可选)' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `请输入至少 ${min} 字符${optional ? ' (可选)' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `请输入至少 ${min} 字符${optional ? ' (可选)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `请输入不超过 ${max} 字符${optional ? ' (可选)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: '请填写以下字段:'\n    },\n    mx: {\n      note: '请移动突出显示的滑块以继续',\n      dragSlider: '向左或向右拖拉并回答'\n    },\n    psc: {\n      dragLeftRight: '向左或向右拖拉并回答'\n    },\n    ps: {\n      note: value => `请在以下项目中分配剩余的 ${value}`,\n      allDone: '全部完成!',\n      total: `总:`,\n      dragSlider: '向左或向右拖拉并回答'\n    },\n    cx: {\n      note: '自动滚屏开始回答问题或者手动选择'\n    },\n    ro: {\n      note: '向上或向下拖拉并重新排序:'\n    },\n    md: {\n      note1: '请点击/轻触您首先选择的项目 再次点击/轻触以清除选择。',\n      note2: '现在,请点击/轻触您最后选择的项目 再次点击/轻触以清除选择。',\n      note3: '谢谢!继续下一个问题,或点击/轻触任何未选择的项目以重新开始。'\n    },\n    aro: {\n      note: '请在以下每组中选择一项。:'\n    },\n    wd: {\n      note: '请确认每项最终值高于先前的值。'\n    },\n    emd: {\n      note: '请完整观看视频',\n      noAnswers: '没有答案选项,请点击下一步以继续。',\n      start: '点击并按住开始',\n      resume: '点击并按住以继续',\n      continue: '您准备好了!<br /> 单击下一步继续',\n      continueMobile: '一切已就绪!<br /> 点击此处,以继续',\n      training: {\n        session: '培训课程',\n        note: '请完成培训',\n        moveLeft: '请将拨盘一直拉到最左边',\n        moveBottom: '请将拨盘一直拉到底部',\n        moveRight: '现在,请将拨盘一直拉到右侧',\n        moveTop: '现在,请将拨盘一直拉到顶部',\n        success: '做得好'\n      }\n    },\n    sft: {\n      noAnswers: '没有答案选项,请点击下一步以继续。',\n      note: '请以直观的感觉尽快回答',\n      finish: '大功告成!<br /> 请单击下一步继续',\n      training: {\n        start:\n          '<p>这个问题会快速向您显示不同的单词,并且需要您专心。 ' +\n          '您需要迅速做出反应回答 </p> <p>准备开始练习了吗?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `点按 \"{buttonLeft}\"`\n            : (mouse ? `点击 \"{buttonLeft}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `按下 \"{keyBtnLeft}\" 键` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `点按 \"{buttonRight}\"`\n            : (mouse ? `点击 \"{buttonRight}\"` : '') +\n              (key && mouse ? ' / ' : '') +\n              (key ? `按下 \"{keyBtnRight}\" 键` : ''),\n        fail: () => '太慢了',\n        success: () => '太棒了!',\n        finish: () =>\n          '<p><strong> 优秀!</strong></p><p>请确保您不会在接下来的2-3分钟内分心</p><p>准备好后,单击“下一步”开始</p>'\n      },\n      buttons: {\n        start: '开始',\n        yesno: {\n          left: '是',\n          right: '否'\n        },\n        matches: {\n          left: '匹配',\n          right: '不匹配'\n        },\n        fits: {\n          left: '合适',\n          right: '不合适'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: '沒有答案選項,請按下一步繼續。',\n    placeholder: '請註明...',\n    pleaseSelect: '請選擇……',\n    rotateLandscape: '請將手機從直向旋轉到橫向繼續。',\n    rotatePortrait: '請將手機從橫向旋轉到直向繼續。',\n    ir: {\n      selectWebCam: '選擇網絡攝影機(如有),或按「瀏覽」從裝置上載',\n      noWebCam: '沒有發現網絡攝影機',\n      accessCamUpload: '存取攝影機/上載',\n      browse: '瀏覽',\n      uploadPhoto: '上載一張照片',\n      camera: '網絡攝影機',\n      instead: '或者',\n      capture: '拍攝照片',\n      somethingWrong: '抱歉,出現錯誤。請稍後再試',\n      couldntRead: '抱歉,我們無法閱讀代碼!',\n      couldntProcess: '抱歉,我們無法處理您的圖片!',\n      inValidCode: '請提交有效的代碼',\n      moveOn: '請重試或提交照片,然後繼續',\n      tryAgain: '請重試',\n      dataReceived: '已收到數據!',\n      enterManually: '請重試或在下方手動輸入數據',\n      positionQR: '請將二維碼放在相機前,置於紅框範圍內,或從電腦上載。',\n      positionQRMobile: '請將二維碼放在相機前,置於紅框範圍內,或從電腦上載。',\n      analyzing: '正在分析圖片,請稍候',\n      submit: '提交',\n      startOver: '重新開始',\n      allDone: '全部完成!',\n      cantAnalyze:\n        '注意—我們無法採用此圖片。請嘗試重新提交,看看我們是否能接受,或選擇更通用的圖片格式(JPG、PNG、GIF、BMP)',\n      wrongFormat: '很抱歉—我們不支援此檔案格式。請上載支援的圖片類型(JPG、PNG、GIF、BMP、TIF、PDF、SVG)'\n    },\n    vr: {\n      selectWebCam: '選擇網絡攝影機(如有),或按「瀏覽」從裝置上載',\n      noWebCam: '沒有發現網絡攝影機',\n      uploadVideo: '上載影片',\n      skip: '跳過?',\n      accessCamUpload: '存取攝影機/上載',\n      browse: '瀏覽',\n      instead: '或者',\n      or: '或者',\n      stopRecording: '停止錄製',\n      willBeStopped: '5 分鐘後會停止錄製',\n      stopOnDone: '完成時請停止錄製!',\n      record: '錄製',\n      somethingWrong: '抱歉,出現錯誤。請稍後再試',\n      dataReceived: '已收到數據!',\n      microphone: '網絡攝影機',\n      camera: 'Web Camera',\n      selectMicrophone: '選擇您的麥克風',\n      selectCam: '選擇您的網絡攝影機',\n      submit: '提交',\n      upload: '上載新回覆',\n      playback: '回放',\n      stopPlayback: '停止播放',\n      startOver: '重新開始',\n      allDone: '全部完成!',\n      alternativeRecordSpan: '請從電腦設備上載影片,或者使用攝網絡影機錄製影片。',\n      alrenativeRecordHref: '',\n      cantAnalyze:\n        '注意—我們無法採用此影片。請嘗試重新提交,看看我們是否能接受,或選擇更通用的影片格式(MP4、M4V、WEBPM)',\n      wrongFormat: '很抱歉—我們不支援此檔案格式。請上載支援的影片類型(MP4、AVI、M4V、WEBPM、MOV、MKV、MPG、WMV)'\n    },\n    cjc: {\n      choose: '選擇',\n      pleaseChoose: '請選擇',\n      this: '此',\n      one: '一',\n      myChoice: '我的選擇'\n    },\n    hm: {\n      addComment: '請在下方新增評論',\n      commentMandatoryPlaceHolder: '請新增強制性評論...',\n      commentOptionalPlaceHolder: '請新增選填評論...',\n      dragPin: '拉動以改變位置(長按/長觸以準確固定位置)。',\n      removePin: '拉到圖片外刪除。',\n      editComment: '按下/輕觸圖釘以編輯評論。',\n      addPin: '請在下方面板拉動圖釘,然後置於您在圖片中選擇的位置。',\n      addPins: '請在下方面板拉動圖釘,然後置於您在圖片中選擇的位置。',\n      leavePins: (minPoints, maxPoints) => `每種圖釘請加入至少 ${minPoints} 個但不超過 ${maxPoints} 個。`,\n      leavePinsAny: (minPoints, maxPoints) => `請加入至少 ${minPoints} 但不超過 ${maxPoints} 個任何類別的圖釘。`,\n      leavePinsPerPage: (minPoints, maxPoints) => `請加入至少 ${minPoints} 個但不超過 ${maxPoints} 個圖釘。`,\n      leavePinsWithOff: maxPoints => `每種圖釘請加入不多於 ${maxPoints} 個,或按下一步跳過。`,\n      leavePinsWithOffAny: maxPoints => `請加入不超過 ${maxPoints} 個任意類別的圖釘,或按「下一步」跳過。`,\n      leavePinsPerPageWithOff: maxPoints => `請加入不多於 ${maxPoints} 個圖釘,或按下一步跳過。`,\n      leavePinWithOff: `每種圖釘請加入不多於 1 個,或按下一步跳過。`,\n      leavePinWithOffAny: `請加入不超過 1 個任何類別的圖釘,或按「下一步」跳過。`,\n      leavePinPerPageWithOff: '請加入不多於 {max} 個圖釘,或按下一步跳過。',\n      leaveExactlyPin: `每種圖釘請加入 1 個。`,\n      leaveExactlyPinAny: `請加入 1 個任何類別的圖釘。`,\n      leaveExactlyPinPerPage: '請加入 1 個圖釘。',\n      leaveExactlyPins: maxPoints => `每種圖釘請加入 ${maxPoints} 個。`,\n      leaveExactlyPinsAny: maxPoints => `請加入 ${maxPoints} 個任何類別的圖釘。`,\n      leaveExactlyPinsPerPage: maxPoints => `請加入 ${maxPoints} 個圖釘。`,\n      leaveComment: '請在圖片下方輸入評論。',\n      noAnswers: '沒有答案選項,請按下一步繼續。',\n      outOfPins: '您的圖釘已用完',\n      pinsBehavior: '當你在圖像上移動時,你會看到一些只需放下一口圖釘便可突出顯示的區域。',\n      clusters: '你只能在這些突出顯示的區域中放置圖釘。',\n      contentAware: '你可以在突出顯示區域的裡面或外面放下圖釘。'\n    },\n    mp: {\n      expand_note: '請將滑鼠懸停在圖片上或點擊圖片以展開。',\n      rb_note: _rows => '請為以下每項各選1個答案:',\n      cb_note: (min, max, _rows) => {\n        if (min === max) {\n          return `請為下列每項${min !== 1 ? '選擇任意' : '僅選擇'} ${min}個回答:`\n        } else if (min > 0 && max < 5000) {\n          return `對於以下每項,請選擇至少${min}個答案 ,但不要超過${max}個:`\n        } else if (5000 === max && min > 0) {\n          return `對於以下每項,請選擇至少${min}個答案 :`\n        } else if (0 === min && max < 5000) {\n          return `對於以下每項,請不要選擇超過${max}個答案:`\n        } else {\n          return '請勾選所有適用項目:'\n        }\n      }\n    },\n    sh: {\n      note: '如果您想在商店中購買產品,請按產品放大,然後加入您的虛擬購物車中',\n      amazonNote: '點按產品,將其放大,並添加到您的虛擬購物車中。',\n      fullCart: '您的購物車已滿!',\n      qty: '數量',\n      addToCart: '加入購物車',\n      deleteFromCart: '刪除',\n      emptyCard: '您的購物車是空的',\n      each: '每個',\n      items: '項目',\n      total: '購物車',\n      clearCart: '清空購物車',\n      backToStore: '返回商店',\n      na: '以上皆非',\n      next: '下一步',\n      maxCartCountError: max => `请在您的购物车中添加不超过${max}种产品`,\n      scrollError: `請完全向左右捲動以繼續此問卷調查。 `,\n      maxSpentError: max => `请花费不超过${max}。 `,\n      maxProductCountError: max => `在购物车中添加每种产品的数量请不要超过${max}。`\n    },\n    rb: {\n      note: '請僅選擇 1 項:'\n    },\n    vo: {\n      note: '請觀看影片到最後'\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `請選擇${min !== 1 ? '任何' : '僅'} ${min}項:`\n        } else if (min > 0 && max < 5000) {\n          return `請選擇至少 ${min} 項,但每欄不得超過 ${max}: 項:`\n        } else if (5000 === max && min > 0) {\n          return `請選擇至少 ${min}項:`\n        } else if (0 === min && max < 5000) {\n          return `請選擇不超過 ${max}项:`\n        } else {\n          return '請勾選所有適用項目:'\n        }\n      }\n    },\n\n    oe: {\n      na: '不适用',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `請輸入${1 !== min ? '任何' : '剛好'} ${min} 個字符${optional ? '(選填)' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `請輸入至少 ${min} 個字符 但不超過${max}${optional ? '(選填)' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `請輸入至少 ${min} 個字符${optional ? '(選填)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `請輸入不超過 ${max} 個字符${optional ? '(選填)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: '請填寫以下各欄:'\n    },\n    mx: {\n      note: '請移動突出顯示的滑塊繼續',\n      dragSlider: '向左或向右拉動回答'\n    },\n    psc: {\n      dragLeftRight: '向左或向右拉動回答'\n    },\n    ps: {\n      note: value => `請在以下項目之間分配 ${value}`,\n      allDone: `全部完成`,\n      total: `全部的:`,\n      dragSlider: '向左或向右拉動回答'\n    },\n    cx: {\n      note: '打開共用資料夾,開始輸入答案以滾動或手動選擇'\n    },\n    ro: {\n      note: '向上或向下拉動以重新排序:'\n    },\n    md: {\n      note1: '請按下/輕觸您的第一選擇<br/>再次按下/輕觸以清除選擇。',\n      note2: '現在,請按下/輕觸您的最後選擇.<br/>再次按下/輕觸以清除選擇。',\n      note3: '謝謝!繼續前往下一個問題或按下/輕觸任何未選擇的項目,以重新開始。'\n    },\n    aro: {\n      note: '請在以下每組中選擇一項。'\n    },\n    wd: {\n      note: '請確認每項之後的值高於上一個值。'\n    },\n    emd: {\n      note: '請觀看影片到最後',\n      noAnswers: '沒有答案選項,請按下一步繼續。',\n      start: '點擊並按住以開始',\n      resume: '點擊並按住以繼續',\n      continue: '您準備好了!<br /> 按下一步繼續',\n      continueMobile: '您準備好了!<br /> 點擊此處繼續',\n      training: {\n        session: '培訓課程',\n        note: '請完成培訓',\n        moveLeft: '請將調節器拉到最左邊',\n        moveBottom: '請將調節器拉到底部',\n        moveRight: '現在,請將調節器拉到最右邊',\n        moveTop: '現在,請將調節器拉到頂部',\n        success: '做得好'\n      }\n    },\n    sft: {\n      noAnswers: '沒有答案選項,請按下一步繼續。',\n      note: '請用最快的速度以直覺回答',\n      finish: '大功告成!請按下一步繼續',\n      training: {\n        start:\n          '<p>此問題會向您快速顯示不同單詞,並且需要您集中注意力。' +\n          '您需要反應快速地回答</p> <p>準備好練習了嗎?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `按 \"{buttonLeft}\"`\n            : (mouse ? `按 \"{buttonLeft}\"` : '') + (key && mouse ? ' / ' : '') + (key ? `按 \"{keyBtnLeft}\" 按` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `按 \"{buttonRight}\"`\n            : (mouse ? `按 \"{buttonRight}\"` : '') + (key && mouse ? ' / ' : '') + (key ? `按 \"{keyBtnRight}\" 按` : ''),\n        fail: () => '太慢了',\n        success: () => '太棒了!',\n        finish: () =>\n          '<p><strong> 優秀!</strong></p><p>請確保您在接下來的 2-3 分鐘不會分心</p><p>準備好就可以按「下一步」開始</p>'\n      },\n      buttons: {\n        start: '開始',\n        yesno: {\n          left: '是',\n          right: '否'\n        },\n        matches: {\n          left: '匹配',\n          right: '不匹配'\n        },\n        fits: {\n          left: '合適',\n          right: '不合適'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        },\n        noyes: {\n          left: '是',\n          right: '否'\n        },\n        matchesRev: {\n          left: '匹配',\n          right: '不匹配'\n        },\n        fitsRev: {\n          left: '合適',\n          right: '不合適'\n        },\n        thumbsRev: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { fromJS } from 'immutable'\n\nexport default fromJS({\n  questions: {\n    noAnswers: '沒有答案選項,請按下一步繼續。',\n    placeholder: '請註明...',\n    pleaseSelect: '請選擇……',\n    rotateLandscape: '請將手機從直向旋轉到橫向繼續。',\n    rotatePortrait: '請將手機從橫向旋轉到直向繼續。',\n    ir: {\n      selectWebCam: '選擇網絡攝影機(如有),或按「瀏覽」從裝置上載',\n      noWebCam: '沒有發現網絡攝影機',\n      accessCamUpload: '存取攝影機/上載',\n      browse: '瀏覽',\n      uploadPhoto: '上載一張照片',\n      camera: '網絡攝影機',\n      instead: '或者',\n      capture: '拍攝照片',\n      somethingWrong: '抱歉,出現錯誤。請稍後再試',\n      couldntRead: '抱歉,我們無法閱讀代碼!',\n      couldntProcess: '抱歉,我們無法處理您的圖片!',\n      inValidCode: '請提交有效的代碼',\n      moveOn: '請重試或提交照片,然後繼續',\n      tryAgain: '請重試',\n      dataReceived: '已收到數據!',\n      enterManually: '請重試或在下方手動輸入數據',\n      positionQR: '請將二維碼放在相機前,置於紅框範圍內,或從電腦上載。',\n      positionQRMobile: '請將二維碼放在相機前,置於紅框範圍內,或從電腦上載。',\n      analyzing: '正在分析圖片,請稍候',\n      submit: '提交',\n      startOver: '重新開始',\n      allDone: '全部完成!',\n      cantAnalyze:\n        '注意—我們無法採用此圖片。請嘗試重新提交,看看我們是否能接受,或選擇更通用的圖片格式(JPG、PNG、GIF、BMP)',\n      wrongFormat: '很抱歉—我們不支援此檔案格式。請上載支援的圖片類型(JPG、PNG、GIF、BMP、TIF、PDF、SVG)'\n    },\n    vr: {\n      selectWebCam: '選擇網絡攝影機(如有),或按「瀏覽」從裝置上載',\n      noWebCam: '沒有發現網絡攝影機',\n      uploadVideo: '上載影片',\n      skip: '跳過?',\n      accessCamUpload: '存取攝影機/上載',\n      browse: '瀏覽',\n      instead: '或者',\n      or: '或者',\n      stopRecording: '停止錄製',\n      willBeStopped: '5 分鐘後會停止錄製',\n      stopOnDone: '完成時請停止錄製!',\n      record: '錄製',\n      somethingWrong: '抱歉,出現錯誤。請稍後再試',\n      dataReceived: '已收到數據!',\n      microphone: '網絡攝影機',\n      camera: 'Web Camera',\n      selectMicrophone: '選擇您的麥克風',\n      selectCam: '選擇您的網絡攝影機',\n      submit: '提交',\n      upload: '上載新回覆',\n      playback: '回放',\n      stopPlayback: '停止播放',\n      startOver: '重新開始',\n      allDone: '全部完成!',\n      alternativeRecordSpan: '請從電腦設備上載影片,或者使用攝網絡影機錄製影片。',\n      alrenativeRecordHref: '',\n      cantAnalyze:\n        '注意—我們無法採用此影片。請嘗試重新提交,看看我們是否能接受,或選擇更通用的影片格式(MP4、M4V、WEBPM)',\n      wrongFormat: '很抱歉—我們不支援此檔案格式。請上載支援的影片類型(MP4、AVI、M4V、WEBPM、MOV、MKV、MPG、WMV)'\n    },\n    cjc: {\n      choose: '選擇',\n      pleaseChoose: '請選擇',\n      this: '此',\n      one: '一',\n      myChoice: '我的選擇'\n    },\n    hm: {\n      addComment: '請在下方新增評論',\n      commentMandatoryPlaceHolder: '請新增強制性評論...',\n      commentOptionalPlaceHolder: '請新增選填評論...',\n      dragPin: '拉動以改變位置(長按/長觸以準確固定位置)。',\n      removePin: '拉到圖片外刪除。',\n      editComment: '按下/輕觸圖釘以編輯評論。',\n      addPin: '請在下方面板拉動圖釘,然後置於您在圖片中選擇的位置。',\n      addPins: '請在下方面板拉動圖釘,然後置於您在圖片中選擇的位置。',\n      leavePins: (minPoints, maxPoints) => `每種圖釘請加入至少 ${minPoints} 個但不超過 ${maxPoints} 個。`,\n      leavePinsAny: (minPoints, maxPoints) => `請加入至少 ${minPoints} 但不超過 ${maxPoints} 個任何類別的圖釘。`,\n      leavePinsPerPage: (minPoints, maxPoints) => `請加入至少 ${minPoints} 個但不超過 ${maxPoints} 個圖釘。`,\n      leavePinsWithOff: maxPoints => `每種圖釘請加入不多於 ${maxPoints} 個,或按下一步跳過。`,\n      leavePinsWithOffAny: maxPoints => `請加入不超過 ${maxPoints} 個任意類別的圖釘,或按「下一步」跳過。`,\n      leavePinsPerPageWithOff: maxPoints => `請加入不多於 ${maxPoints} 個圖釘,或按下一步跳過。`,\n      leavePinWithOff: `每種圖釘請加入不多於 1 個,或按下一步跳過。`,\n      leavePinWithOffAny: `請加入不超過 1 個任何類別的圖釘,或按「下一步」跳過。`,\n      leavePinPerPageWithOff: '請加入不多於 {max} 個圖釘,或按下一步跳過。',\n      leaveExactlyPin: `每種圖釘請加入 1 個。`,\n      leaveExactlyPinAny: `請加入 1 個任何類別的圖釘。`,\n      leaveExactlyPinPerPage: '請加入 1 個圖釘。',\n      leaveExactlyPins: maxPoints => `每種圖釘請加入 ${maxPoints} 個。`,\n      leaveExactlyPinsAny: maxPoints => `請加入 ${maxPoints} 個任何類別的圖釘。`,\n      leaveExactlyPinsPerPage: maxPoints => `請加入 ${maxPoints} 個圖釘。`,\n      leaveComment: '請在圖片下方輸入評論。',\n      noAnswers: '沒有答案選項,請按下一步繼續。',\n      outOfPins: '您的圖釘已用完',\n      pinsBehavior: '當你在圖像上移動時,你會看到一些只需放下一口圖釘便可突出顯示的區域。',\n      clusters: '你只能在這些突出顯示的區域中放置圖釘。',\n      contentAware: '你可以在突出顯示區域的裡面或外面放下圖釘。'\n    },\n    mp: {\n      expand_note: '請將滑鼠懸停在圖片上或點擊圖片以展開。',\n      rb_note: _rows => '請為以下每項各選1個答案:',\n      cb_note: (min, max, _rows) => {\n        if (min === max) {\n          return `請為下列每項${min !== 1 ? '選擇任意' : '僅選擇'} ${min}個回答:`\n        } else if (min > 0 && max < 5000) {\n          return `對於以下每項,請選擇至少${min}個答案 ,但不要超過${max}個:`\n        } else if (5000 === max && min > 0) {\n          return `對於以下每項,請選擇至少${min}個答案 :`\n        } else if (0 === min && max < 5000) {\n          return `對於以下每項,請不要選擇超過${max}個答案:`\n        } else {\n          return '請勾選所有適用項目:'\n        }\n      }\n    },\n    sh: {\n      note: '如果您想在商店中購買產品,請按產品放大,然後加入您的虛擬購物車中',\n      amazonNote: '點按產品,將其放大,並添加到您的虛擬購物車中。',\n      fullCart: '您的購物車已滿!',\n      qty: '數量',\n      addToCart: '加入購物車',\n      deleteFromCart: '刪除',\n      emptyCard: '您的購物車是空的',\n      each: '每個',\n      items: '項目',\n      total: '購物車',\n      clearCart: '清空購物車',\n      backToStore: '返回商店',\n      na: '以上皆非',\n      next: '下一步',\n      maxCartCountError: max => `請不要添加超過${max}個產品到你的車中`,\n      scrollError: `請完全向左右捲動以繼續此問卷調查。 `,\n      maxSpentError: max => `請不要花費超過${max}。 `,\n      maxProductCountError: max => `對於每款產品,請不要在購物車中添加超過${max}的數量。`\n    },\n    rb: {\n      note: '請僅選擇 1 項:'\n    },\n    vo: {\n      note: '請觀看影片到最後'\n    },\n    cb: {\n      note: (min, max) => {\n        if (min === max) {\n          return `請選擇${min !== 1 ? '任何' : '僅'} ${min}項:`\n        } else if (min > 0 && max < 5000) {\n          return `請選擇至少 ${min} 項,但每欄不得超過 ${max}: 項:`\n        } else if (5000 === max && min > 0) {\n          return `請選擇至少 ${min}項:`\n        } else if (0 === min && max < 5000) {\n          return `請選擇不超過 ${max}项:`\n        } else {\n          return '請勾選所有適用項目:'\n        }\n      }\n    },\n\n    oe: {\n      na: '不适用',\n      note: (min, max, optional) => {\n        if (min === max) {\n          return `請輸入${1 !== min ? '任何' : '剛好'} ${min} 個字符${optional ? '(選填)' : ''}:`\n        } else if (min > 0 && max < 5000) {\n          return `請輸入至少 ${min} 個字符 但不超過${max}${optional ? '(選填)' : ''}:`\n        } else if (5000 === max && min > 0) {\n          return `請輸入至少 ${min} 個字符${optional ? '(選填)' : ''}:`\n        } else if (0 === min && max < 5000) {\n          return `請輸入不超過 ${max} 個字符${optional ? '(選填)' : ''}:`\n        } else {\n          return ''\n        }\n      }\n    },\n    oex: {\n      note: '請填寫以下各欄:'\n    },\n    mx: {\n      note: '請移動突出顯示的滑塊繼續',\n      dragSlider: '向左或向右拉動回答'\n    },\n    psc: {\n      dragLeftRight: '向左或向右拉動回答'\n    },\n    ps: {\n      note: value => `請在以下項目之間分配 ${value}`,\n      allDone: `全部完成`,\n      total: `全部的:`,\n      dragSlider: '向左或向右拉動回答'\n    },\n    cx: {\n      note: '打開共用資料夾,開始輸入答案以滾動或手動選擇'\n    },\n    ro: {\n      note: '向上或向下拉動以重新排序:'\n    },\n    md: {\n      note1: '請按下/輕觸您的第一選擇<br/>再次按下/輕觸以清除選擇。',\n      note2: '現在,請按下/輕觸您的最後選擇.<br/>再次按下/輕觸以清除選擇。',\n      note3: '謝謝!繼續前往下一個問題或按下/輕觸任何未選擇的項目,以重新開始。'\n    },\n    aro: {\n      note: '請在以下每組中選擇一項。'\n    },\n    wd: {\n      note: '請確認每項之後的值高於上一個值。'\n    },\n    emd: {\n      note: '請觀看影片到最後',\n      noAnswers: '沒有答案選項,請按下一步繼續。',\n      start: '點擊並按住以開始',\n      resume: '點擊並按住以繼續',\n      continue: '您準備好了!<br /> 按下一步繼續',\n      continueMobile: '您準備好了!<br /> 點擊此處繼續',\n      training: {\n        session: '培訓課程',\n        note: '請完成培訓',\n        moveLeft: '請將調節器拉到最左邊',\n        moveBottom: '請將調節器拉到底部',\n        moveRight: '現在,請將調節器拉到最右邊',\n        moveTop: '現在,請將調節器拉到頂部',\n        success: '做得好'\n      }\n    },\n    sft: {\n      noAnswers: '沒有答案選項,請按下一步繼續。',\n      note: '請用最快的速度以直覺回答',\n      finish: '大功告成!請按下一步繼續',\n      training: {\n        start:\n          '<p>此問題會向您快速顯示不同單詞,並且需要您集中注意力。' +\n          '您需要反應快速地回答</p> <p>準備好練習了嗎?</p>',\n        step1: (touch, mouse, key) =>\n          touch\n            ? `按 \"{buttonLeft}\"`\n            : (mouse ? `按 \"{buttonLeft}\"` : '') + (key && mouse ? ' / ' : '') + (key ? `按 \"{keyBtnLeft}\" 按` : ''),\n        step2: (touch, mouse, key) =>\n          touch\n            ? `按 \"{buttonRight}\"`\n            : (mouse ? `按 \"{buttonRight}\"` : '') + (key && mouse ? ' / ' : '') + (key ? `按 \"{keyBtnRight}\" 按` : ''),\n        fail: () => '太慢了',\n        success: () => '太棒了!',\n        finish: () =>\n          '<p><strong> 優秀!</strong></p><p>請確保您在接下來的 2-3 分鐘不會分心</p><p>準備好就可以按「下一步」開始</p>'\n      },\n      buttons: {\n        start: '開始',\n        yesno: {\n          left: '是',\n          right: '否'\n        },\n        matches: {\n          left: '匹配',\n          right: '不匹配'\n        },\n        fits: {\n          left: '合適',\n          right: '不合適'\n        },\n        thumbs: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        },\n        noyes: {\n          left: '是',\n          right: '否'\n        },\n        matchesRev: {\n          left: '匹配',\n          right: '不匹配'\n        },\n        fitsRev: {\n          left: '合適',\n          right: '不合適'\n        },\n        thumbsRev: {\n          left: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsUp\"></i>',\n          right: '<i class=\"rfd-ui-button-icon icon-aytmfd-thumbsDown\"></i>'\n        }\n      }\n    }\n  }\n})\n","import { IImageAsset } from '@aytm/app/swidget/base/modules/images/types'\n\nexport const IMAGE_ASSET_PATH_FILTER_RESIZE_TO_STRETCH = 'resizest'\nexport const IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT = 'resizelm'\nexport const IMAGE_ASSET_PATH_FILTER_RESIZE_TO_FIT = 'resizeft'\nexport const IMAGE_ASSET_PATH_FILTER_RESIZE_TO_FILL = 'resizefl'\nexport const IMAGE_ASSET_PATH_FILTER_RESIZE_AND_PAD = 'resizepd'\nexport const IMAGE_ASSET_PATH_FILTER_SMART_CROP = 'smart_crop'\n\nexport const IMAGE_ASSET_SIZE_SMALL = 150\nexport const IMAGE_ASSET_SIZE_MIDDLE = 600\nexport const IMAGE_ASSET_SIZE_BIG = 1920\nexport const OLD_IMAGE_ASSET_WIDTH = 150\nexport const OLD_IMAGE_ASSET_HEIGHT = 68\nexport const OLD_IMAGE_ASSET_WIDTH_MEDIUM = 120\nexport const OLD_IMAGE_ASSET_HEIGHT_MEDIUM = 120\n\nexport const IMAGE_ASSET_PATH_GRAVITY_CENTER = 'c'\n\n// ON CHANGES: please also update this function in public/javascripts/_ui/js/image_resizer.js (legacy code support)\nexport function getImageAssetPath({\n  host = (window as { assets_host?: string }).assets_host || '/',\n  width,\n  height,\n  pathPrefix = 'media/cache',\n  path = 'no_image',\n  filter = '',\n  backgroundColor = 'transparent',\n  unsharp = false,\n  gravity,\n  animated = false,\n  trim = false,\n  json = false\n}: {\n  host?: string\n  width?: number\n  height?: number\n  pathPrefix?: string\n  path?: string\n  filter?: string\n  backgroundColor?: string\n  unsharp?: boolean\n  gravity?: string\n  animated?: boolean\n  trim?: boolean\n  json?: boolean\n} = {}): string {\n  return `${\n    // host\n    '/' === host[host.length - 1] ? host : host + '/'\n  }${\n    // prefix\n    pathPrefix\n  }/${json ? 'json' : 'resolve'}/${\n    // filter\n    filter\n  }${\n    // dimensions\n    width && height ? `_${width}x${height}` : ''\n  }${\n    // backgroundColor\n    'none' === backgroundColor ? '' : 'string' === typeof backgroundColor ? `_${backgroundColor.toLowerCase()}` : ''\n  }${\n    // gravity\n    gravity && (IMAGE_ASSET_PATH_FILTER_RESIZE_TO_FILL === filter || IMAGE_ASSET_PATH_FILTER_RESIZE_AND_PAD === filter)\n      ? `_${gravity}`\n      : ''\n  }${\n    // unsharp\n    unsharp ? '_us' : ''\n  }${\n    // animated\n    animated ? '_an' : ''\n  }${\n    // trim\n    trim ? '_trim' : ''\n  }/${\n    // path\n    path\n  }`\n}\n\nexport function getSmallAssetPath(asset: IImageAsset, fill?: boolean): string {\n  return getImageAssetPath({\n    width: IMAGE_ASSET_SIZE_SMALL,\n    height: IMAGE_ASSET_SIZE_SMALL,\n    filter: fill ? IMAGE_ASSET_PATH_FILTER_RESIZE_TO_FILL : IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n    path: asset?.original_path,\n    backgroundColor: 'white'\n  })\n}\n\nexport function getOldSmallAssetPath(asset: IImageAsset): string {\n  return getImageAssetPath({\n    width: OLD_IMAGE_ASSET_WIDTH,\n    height: OLD_IMAGE_ASSET_HEIGHT,\n    filter: IMAGE_ASSET_PATH_FILTER_RESIZE_AND_PAD,\n    backgroundColor: 'white',\n    animated: true,\n    path: asset?.original_path\n  })\n}\n\nexport function getOldMediumAssetPath(asset: IImageAsset): string {\n  return getImageAssetPath({\n    width: OLD_IMAGE_ASSET_WIDTH_MEDIUM,\n    height: OLD_IMAGE_ASSET_HEIGHT_MEDIUM,\n    filter: IMAGE_ASSET_PATH_FILTER_RESIZE_AND_PAD,\n    backgroundColor: 'white',\n    animated: true,\n    path: asset?.original_path\n  })\n}\n\nexport function getOldLargeAssetPath(asset: IImageAsset): string {\n  return getImageAssetPath({\n    width: IMAGE_ASSET_SIZE_MIDDLE,\n    height: IMAGE_ASSET_SIZE_MIDDLE,\n    filter: IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n    backgroundColor: 'white',\n    animated: true,\n    path: asset?.original_path\n  })\n}\n\nexport function getMediumAssetPath(asset: IImageAsset, background?: string): string {\n  return getImageAssetPath({\n    width: IMAGE_ASSET_SIZE_MIDDLE,\n    height: IMAGE_ASSET_SIZE_MIDDLE,\n    filter: IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n    path: asset?.original_path,\n    animated: true,\n    backgroundColor: background || 'white'\n  })\n}\n\nexport function getBigAssetPath(asset: IImageAsset, background?: string): string {\n  return getImageAssetPath({\n    width: IMAGE_ASSET_SIZE_BIG,\n    height: IMAGE_ASSET_SIZE_BIG,\n    filter: IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n    path: asset?.original_path,\n    animated: true,\n    backgroundColor: background || 'white'\n  })\n}\n","export const hasOwn = Object.hasOwn ? Object.hasOwn.bind(Object) : Object.prototype.hasOwnProperty.call\nexport const isObject = obj => Boolean(obj && 'object' === typeof obj && !Array.isArray(obj))\n\nexport function deepMergeObject(target = {}, source = {}) {\n  for (const key in source) {\n    if (hasOwn(source, key)) {\n      const sourceValue = source[key]\n      target[key] =\n        isObject(sourceValue) && !Array.isArray(sourceValue)\n          ? deepMergeObject(target[key] || {}, sourceValue)\n          : sourceValue\n    }\n  }\n  return target\n}\n\nexport function deepMergeCloneObject(target = {}, source = {}) {\n  const targetClone = {}\n  for (const key in source) {\n    if (hasOwn(source, key)) {\n      const sourceValue = source[key]\n      const targetValue = target[key]\n      if (Array.isArray(sourceValue)) {\n        targetClone[key] = deepClone(sourceValue)\n      } else if (\n        null != sourceValue &&\n        null != targetValue &&\n        'object' === typeof sourceValue &&\n        'object' === typeof targetValue\n      ) {\n        targetClone[key] = deepMergeCloneObject(targetValue, sourceValue)\n      } else {\n        targetClone[key] = deepClone(sourceValue)\n      }\n    }\n  }\n  for (const key in target) {\n    if (hasOwn(target, key) && 'undefined' === typeof targetClone[key]) {\n      targetClone[key] = deepClone(target[key])\n    }\n  }\n  return targetClone\n}\n\nexport function clearObject(target) {\n  if ('object' !== typeof target || null === target) {\n    return target\n  }\n  for (const key in target) {\n    if (hasOwn(target, key)) {\n      delete target[key]\n    }\n  }\n  return target\n}\n\nexport function getIn(target, path, fallbackValue) {\n  if (!Array.isArray(path) || 0 === path.length) {\n    return 'function' === typeof fallbackValue ? fallbackValue(target, path) : fallbackValue\n  }\n\n  if ('object' !== typeof target || null === target) {\n    return 'function' === typeof fallbackValue ? fallbackValue(target, path) : fallbackValue\n  }\n\n  let current = target\n\n  for (const key of path) {\n    if ('undefined' === typeof current[key]) {\n      return 'function' === typeof fallbackValue ? fallbackValue(target, path) : fallbackValue\n    }\n    current = current[key]\n  }\n\n  return current\n}\n\nexport function deepEqual(obj1, obj2) {\n  if (obj1 === obj2) {\n    return true\n  }\n\n  const obj1IsArray = Array.isArray(obj1)\n  const obj2IsArray = Array.isArray(obj2)\n\n  if (obj1IsArray && obj2IsArray) {\n    if (obj1.length !== obj2.length) {\n      return false\n    }\n    // eslint-disable-next-line unicorn/no-for-loop\n    for (let i = 0; i < obj1.length; i++) {\n      if (!deepEqual(obj1[i], obj2[i])) {\n        return false\n      }\n    }\n    return true\n  } else if ((obj1IsArray && !obj2IsArray) || (obj2IsArray && !obj1IsArray)) {\n    return false\n  }\n\n  if (null === obj1 && null === obj2) {\n    return true\n  }\n  if ('object' !== typeof obj1 && 'object' !== typeof obj2) {\n    return obj1 === obj2\n  }\n\n  if ('object' !== typeof obj1 || 'object' !== typeof obj2 || null === obj1 || null === obj2) {\n    return false\n  }\n\n  const keys1 = Object.keys(obj1)\n  const keys2 = Object.keys(obj2)\n\n  if (keys1.length !== keys2.length) {\n    return false\n  }\n\n  for (const key of keys1) {\n    if (!keys2.includes(key) || !deepEqual(obj1[key], obj2[key])) {\n      return false\n    }\n  }\n\n  return true\n}\n\nexport function shallowEqual(obj1, obj2) {\n  if (obj1 === obj2) {\n    return true\n  }\n  const obj1IsArray = Array.isArray(obj1)\n  const obj2IsArray = Array.isArray(obj2)\n  if (obj1IsArray && obj2IsArray) {\n    if (obj1.length !== obj2.length) {\n      return false\n    }\n    // eslint-disable-next-line unicorn/no-for-loop\n    for (let i = 0; i < obj1.length; i++) {\n      if (obj1[i] !== obj2[i]) {\n        return false\n      }\n    }\n    return true\n  }\n\n  if ((obj1IsArray && !obj2IsArray) || (obj2IsArray && !obj1IsArray)) {\n    return false\n  }\n\n  if (null === obj1 && null === obj2) {\n    return true\n  }\n\n  if ('object' !== typeof obj1 && 'object' !== typeof obj2) {\n    return obj1 === obj2\n  }\n\n  if ('object' !== typeof obj1 || 'object' !== typeof obj2 || null === obj1 || null === obj2) {\n    return false\n  }\n\n  const keys1 = Object.keys(obj1)\n  const keys2 = Object.keys(obj2)\n\n  if (keys1.length !== keys2.length) {\n    return false\n  }\n\n  for (const key of keys1) {\n    if (!keys2.includes(key) || obj1[key] !== obj2[key]) {\n      return false\n    }\n  }\n\n  return true\n}\n\nexport function isSubset(subsetObject, mainObject) {\n  if (subsetObject === mainObject) {\n    return true\n  }\n  if ('object' !== typeof subsetObject || 'object' !== typeof mainObject) {\n    return false\n  }\n  if (null === subsetObject || null === mainObject) {\n    return false\n  }\n  const subsetKeys = Object.keys(subsetObject)\n  for (const key of subsetKeys) {\n    if (!hasOwn(mainObject, key) || subsetObject[key] !== mainObject[key]) {\n      return false\n    }\n  }\n  return true\n}\n\nfunction deepCloneCircularSafe(obj, seen) {\n  if (null == obj || 'object' !== typeof obj) {\n    return obj\n  }\n\n  if (seen.has(obj)) {\n    return seen.get(obj)\n  }\n\n  if (Array.isArray(obj)) {\n    const clonedObject = obj.map(item => deepCloneCircularSafe(item, seen))\n    seen.set(obj, clonedObject)\n    return clonedObject\n  } else {\n    const clonedObject = {}\n    seen.set(obj, clonedObject)\n    for (const key in obj) {\n      if (hasOwn(obj, key)) {\n        clonedObject[key] = deepCloneCircularSafe(obj[key], seen)\n      }\n    }\n    return clonedObject\n  }\n}\nexport function deepClone(obj) {\n  return deepCloneCircularSafe(obj, new WeakMap())\n}\n\nfunction deepFreezeCircularSafe(obj, seen) {\n  if ('object' !== typeof obj || null === obj || Object.isFrozen(obj)) {\n    return obj\n  }\n\n  if (seen.has(obj)) {\n    return obj\n  }\n  seen.add(obj)\n\n  for (const key in obj) {\n    if (hasOwn(obj, key)) {\n      obj[key] = deepFreezeCircularSafe(obj[key], seen)\n    }\n  }\n  return Object.freeze(obj)\n}\nexport function deepFreeze(obj) {\n  return deepFreezeCircularSafe(obj, new WeakSet())\n}\n","export interface ISubscriptionListener<DataType = unknown, ContextType = unknown> {\n  (data: DataType, context?: ContextType): void\n}\ninterface ISubscriptionEntry<DataType = unknown, ContextType = unknown> {\n  listener: ISubscriptionListener<DataType, ContextType>\n  context: ContextType\n}\nexport interface ISubscriptionUnsubscribe {\n  (): void\n}\n\nexport interface ISubscriptionCatchReporter<ContextType = unknown> {\n  (error: unknown, context?: ContextType): void\n}\n\nexport interface ISubscription<DataType = unknown, ContextType = unknown> {\n  listen(listener: ISubscriptionListener<DataType, ContextType>, context?: ContextType): ISubscriptionUnsubscribe\n  update(data: DataType): void\n  clear(): void\n  suspend(): void\n  get suspended(): boolean\n  resume(): void\n  catch(reporter: ISubscriptionCatchReporter<ContextType>): void\n}\n\nexport default function Subscription<DataType = unknown, ContextType = unknown>(): ISubscription<\n  DataType,\n  ContextType\n> {\n  // eslint-disable-next-line immutablejs/no-native-map-set\n  const subscriptions: Set<ISubscriptionEntry<DataType, ContextType>> = new Set()\n  let suspended = false\n  let onCatch: ISubscriptionCatchReporter<ContextType> = null\n  return {\n    listen(listener: ISubscriptionListener<DataType, ContextType>, context: ContextType) {\n      if (listener) {\n        const subscriptionEntry: ISubscriptionEntry<DataType, ContextType> = { listener, context }\n        subscriptions.add(subscriptionEntry)\n        return () => void subscriptions.delete(subscriptionEntry)\n      } else {\n        return () => void 0\n      }\n    },\n    update(data: DataType) {\n      if (!suspended) {\n        for (const subscriptionEntry of subscriptions) {\n          try {\n            subscriptionEntry.listener(data, subscriptionEntry.context)\n          } catch (error) {\n            if (onCatch) {\n              onCatch(error, subscriptionEntry.context)\n            }\n          }\n        }\n      }\n    },\n    clear() {\n      subscriptions.clear()\n    },\n    suspend() {\n      suspended = true\n    },\n    get suspended() {\n      return suspended\n    },\n    resume() {\n      suspended = false\n    },\n    catch(reporter) {\n      onCatch = reporter\n    }\n  }\n}\n","let csrfParam = null\nlet csrfToken = null\n\nexport default function CSRFToken() {\n  if (null == csrfToken || null == csrfParam) {\n    const csrfParamElement = 'undefined' !== typeof document && document.head.querySelector('meta[name=\"csrf-param\"]')\n    if (csrfParamElement && csrfParamElement.content) {\n      csrfParam = csrfParamElement.content\n    }\n    const csrfTokenElement = 'undefined' !== typeof document && document.head.querySelector('meta[name=\"csrf-token\"]')\n    if (csrfTokenElement && csrfTokenElement.content) {\n      csrfToken = csrfTokenElement.content\n    }\n  }\n  return [csrfParam, csrfToken]\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"popupDefaultWidth\":\"200px\",\"popupDefaultHeight\":\"160px\"};","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport autobind from 'autobind-decorator'\nimport PureDataComponent from '@aytm/lib/common/components/pure-component'\nimport { viewport, preprocessText, escapeText } from '@aytm/lib/common/func'\n\nimport LightBox from './light-box'\n\nimport styles from '@aytm/lib/rfd-ui/styles/basic/image-popup.scss'\n\nconst POPUP_PADDING = 5\nconst FRAME_PADDING = 7\nconst SCROLLING_PADDING = 30\nconst LABEL_HEIGHT = 40\n\nexport default class ImagePopup extends PureDataComponent {\n  static propTypes = {\n    src: PropTypes.string,\n    imageProps: PropTypes.object,\n    label: PropTypes.string,\n    show: PropTypes.bool,\n    scrolling: PropTypes.bool,\n    loadingIcon: PropTypes.string,\n    failedIcon: PropTypes.string,\n    closeIcon: PropTypes.string,\n    onLoad: PropTypes.func,\n    onError: PropTypes.func,\n    onClose: PropTypes.func,\n    closeOnClick: PropTypes.bool\n  }\n\n  constructor(props) {\n    super(props)\n\n    this.animate = true\n    this.bodyElm = document.querySelector('body')\n    this.bodyElmOverflowBackup = this.bodyElm.style.overflow\n    this.state = {\n      loading: true,\n      loaded: false,\n      imageWidth: styles.popupDefaultWidth,\n      imageHeight: styles.popupDefaultHeight,\n      intrinsicWidth: 0,\n      intrinsicHeight: 0\n    }\n  }\n\n  @autobind\n  onLoad(event) {\n    const target = event.target\n    this.setState({ intrinsicWidth: target.naturalWidth, intrinsicHeight: target.naturalHeight })\n\n    setTimeout(() => {\n      const { onLoad } = this.props\n      if ('function' == typeof onLoad) {\n        onLoad()\n      }\n      this.resize()\n    }, 10)\n\n    this.setState({ loading: false, loaded: true })\n  }\n\n  @autobind\n  onError() {\n    this.setState({ intrinsicWidth: 0, intrinsicHeight: 0 })\n\n    setTimeout(() => {\n      const { onError } = this.props\n      if ('function' == typeof onError) {\n        onError()\n      }\n      this.resize()\n    }, 10)\n\n    this.setState({ loading: false, loaded: false })\n  }\n\n  @autobind\n  handleWindowResize() {\n    this.resize()\n  }\n\n  @autobind\n  resizePreload() {\n    const { label } = this.props\n\n    if (this.refImageFrame) {\n      const fWidth = this.refImageFrame.offsetWidth\n      const fHeight = this.refImageFrame.offsetHeight\n\n      this.setState({\n        imageWidth: fWidth - 2 * POPUP_PADDING - 2 * FRAME_PADDING,\n        imageHeight: fHeight - 2 * POPUP_PADDING - 2 * FRAME_PADDING - (label ? LABEL_HEIGHT : 0)\n      })\n    }\n  }\n\n  @autobind\n  resize() {\n    const { label, scrolling } = this.props\n    const { loaded, intrinsicWidth, intrinsicHeight } = this.state\n\n    if (this.refImageFrame) {\n      const v = viewport()\n      const maxIWidth =\n        v.w - 2 * POPUP_PADDING - 2 * FRAME_PADDING - SCROLLING_PADDING - (scrolling ? SCROLLING_PADDING : 0)\n      const maxIHeight = v.h - 2 * POPUP_PADDING - 2 * FRAME_PADDING - SCROLLING_PADDING - (label ? LABEL_HEIGHT : 0)\n\n      if (loaded) {\n        const img =\n          this.refImageFrame.querySelector('.rfd-ui-image-popup-image') || this.refImageFrame.querySelector('img')\n\n        if (img) {\n          let iWidth = Math.max(60, intrinsicWidth)\n          let iHeight = Math.max(60, intrinsicHeight)\n\n          const ratio = iWidth / iHeight\n\n          if (iWidth > maxIWidth) {\n            iWidth = maxIWidth\n            iHeight = iWidth / ratio\n          }\n          if (iHeight > maxIHeight) {\n            iHeight = maxIHeight\n            !scrolling && (iWidth = iHeight * ratio)\n          }\n\n          this.setState({ imageWidth: iWidth, imageHeight: iHeight })\n\n          if (this.animate) {\n            const refImageFrame = this.refImageFrame\n\n            refImageFrame.classList.add('rfd-ui-image-popup-frame-before-animate')\n            setTimeout(() => {\n              refImageFrame.classList.remove('rfd-ui-image-popup-frame-before-animate')\n              refImageFrame.classList.add('rfd-ui-image-popup-frame-animate')\n              setTimeout(() => {\n                refImageFrame.classList.remove('rfd-ui-image-popup-frame-animate')\n              }, 500)\n            }, 100)\n            this.animate = false\n          }\n        } else this.resizePreload()\n      } else this.resizePreload()\n    }\n  }\n\n  @autobind\n  handleClose() {\n    this.animate = true\n\n    const { onClose } = this.props\n\n    if ('function' == typeof onClose) {\n      onClose()\n    }\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    super.UNSAFE_componentWillReceiveProps(nextProps)\n\n    if (nextProps.show && !this.props.show) {\n      if (this.bodyElm) {\n        this.bodyElmOverflowBackup = this.bodyElm.style.overflow\n        this.bodyElm.style.setProperty('overflow', 'hidden')\n      }\n      window.addEventListener('resize', this.handleWindowResize)\n    } else if (!nextProps.show && this.props.show) {\n      if (this.bodyElm) {\n        this.bodyElm.style.setProperty('overflow', this.bodyElmOverflowBackup || null)\n      }\n      window.removeEventListener('resize', this.handleWindowResize)\n    }\n\n    this.resize()\n  }\n\n  componentDidMount() {\n    super.componentDidMount()\n\n    const { show } = this.props\n\n    if (show) {\n      if (this.bodyElm) {\n        this.bodyElmOverflowBackup = this.bodyElm.style.overflow\n        this.bodyElm.style.setProperty('overflow', 'hidden')\n      }\n      window.addEventListener('resize', this.handleWindowResize)\n    } else {\n      if (this.bodyElm) {\n        this.bodyElm.style.setProperty('overflow', this.bodyElmOverflowBackup || null)\n      }\n      window.removeEventListener('resize', this.handleWindowResize)\n    }\n  }\n\n  componentWillUnmount() {\n    super.componentWillUnmount()\n\n    if (this.bodyElm) {\n      this.bodyElm.style.setProperty('overflow', this.bodyElmOverflowBackup || null)\n    }\n    window.removeEventListener('resize', this.handleWindowResize)\n  }\n\n  render() {\n    const {\n      src,\n      imageProps,\n      label,\n      show,\n      scrolling,\n      loadingIcon = 'icon-aytmfd-spin aytmfd-spin',\n      failedIcon = 'icon-aytmfd-delete',\n      closeIcon = 'icon-aytmfd-delete',\n      closeOnClick = false\n    } = this.props\n    const { loading, loaded, imageWidth, imageHeight } = this.state\n\n    if (show) {\n      const iWidth = imageWidth + (scrolling ? SCROLLING_PADDING : 0)\n      const iHeight = imageHeight + (label && loaded ? LABEL_HEIGHT : 0)\n\n      return (\n        <LightBox onClose={this.handleClose} fullSize={scrolling}>\n          <div\n            className={classNames('rfd-ui-image-popup-frame', {\n              'rfd-ui-image-popup-frame-loading': loading,\n              'rfd-ui-image-popup-frame-loaded': loaded,\n              'rfd-ui-image-popup-frame-scrolling': loaded && scrolling\n            })}\n            ref={this.saveRef('ImageFrame')}\n            style={{\n              width: `${Math.max(styles.popupDefaultWidth, iWidth)}px`,\n              height: `${Math.max(styles.popupDefaultHeight, iHeight)}px`,\n              margin: `-${iHeight / 2 + FRAME_PADDING}px 0 0 -${iWidth / 2 + FRAME_PADDING}px`,\n              padding: `${FRAME_PADDING}px`\n            }}\n            onClick={closeOnClick ? this.handleClose : null}\n            data-testid=\"SW-Image-Popup\"\n          >\n            <div className=\"rfd-ui-image-popup-close-button\" onClick={this.handleClose}>\n              <i className={closeIcon} />\n            </div>\n            <div className=\"rfd-ui-image-popup-image\">\n              <img\n                {...imageProps}\n                src={src}\n                width={`${imageWidth}px`}\n                height={scrolling ? 'auto' : `${imageHeight}px`}\n                onLoad={this.onLoad}\n                onError={this.onError}\n                style={closeOnClick ? { cursor: 'pointer' } : null}\n                data-testid=\"SW-Image\"\n                alt=\"\"\n                role=\"presentation\"\n              />\n            </div>\n            {loading && !loaded && (\n              <div className=\"rfd-ui-image-popup-image-loader\">\n                <i className={loadingIcon} />\n              </div>\n            )}\n            {!loading && !loaded && (\n              <div className=\"rfd-ui-image-popup-image-failed\">\n                <i className={failedIcon} />\n              </div>\n            )}\n            {label && loaded && (\n              <div\n                className=\"rfd-ui-image-popup-image-label\"\n                style={{ width: `${imageWidth}px`, height: `${LABEL_HEIGHT}px` }}\n                dangerouslySetInnerHTML={{ __html: preprocessText(escapeText(label)) }}\n              />\n            )}\n          </div>\n        </LightBox>\n      )\n    } else return null\n  }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { PureDataComponent } from '@aytm/lib/common/components/pure-component'\nimport { stopEvent } from '@aytm/lib/common/func'\nimport Portal from '@aytm/lib/rfd-ui/components/basic/portal'\n\nimport '@aytm/lib/rfd-ui/styles/basic/light-box.scss'\n\nexport default class LightBox extends PureDataComponent {\n  static propTypes = {\n    onClose: PropTypes.func\n  }\n\n  @autobind\n  onClick(event) {\n    const { onClose, fullSize } = this.props\n    if (\n      'function' == typeof onClose &&\n      !fullSize &&\n      (this.refLightBoxBackdrop == event.target || this.refLightBoxBackdropCenter == event.target)\n    ) {\n      stopEvent(event)\n      onClose()\n      return false\n    }\n    return true\n  }\n\n  render() {\n    const { onClose, children, fullSize, background, className, ...otherProps } = this.props\n\n    return (\n      <Portal>\n        <div\n          className={`rfd-ui-light-box ${className ? className : ''}`}\n          onMouseDown={this.onClick}\n          ref={this.saveRef('LightBoxBackdrop')}\n          style={{ backgroundColor: background }}\n          {...otherProps}\n        >\n          <div\n            className=\"rfd-ui-light-box-center\"\n            onMouseDown={this.onClick}\n            ref={this.saveRef('LightBoxBackdropCenter')}\n          >\n            <div className=\"rfd-ui-light-box-center-content\">{children}</div>\n          </div>\n        </div>\n      </Portal>\n    )\n  }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"hint\":\"common-module__hint___2-qaj swidget-question-hint\",\"hint-accept\":\"common-module__hint-accept___1jojX\",\"hint-eject\":\"common-module__hint-eject___2MwHK\",\"hint-neutral\":\"common-module__hint-neutral___3bEjF\",\"hint-skip\":\"common-module__hint-skip___UNpd-\",\"hint-icon\":\"common-module__hint-icon___3HsSi\",\"image-block\":\"common-module__image-block___1i8tM\",\"image-text\":\"common-module__image-text___34aaA\",\"image-border\":\"common-module__image-border___3s74Z\",\"active\":\"common-module__active___27d55\",\"disabled\":\"common-module__disabled___3cFOY\",\"image-container\":\"common-module__image-container___3H3oD\",\"no-answers\":\"common-module__no-answers___11uwi swidget-global-span\"};"],"names":["AssetUploader","_AssetUploader","_ManagedRenderCompone","_classCallCheck","_callSuper","arguments","_inherits","key","value","this","refUploadInput","files","length","uploadFile","file","onUploadFile","props","_this$props","accept","readOnly","children","React","className","style","type","name","onChange","fileSelected","tabIndex","ref","saveRef","ManagedRenderComponent","propTypes","PropTypes","_applyDecoratedDescriptor","_class","prototype","autobind","Object","getOwnPropertyDescriptor","ImagePreview","_ImagePreview","context","_this","state","loading","loaded","previewUrl","previewState","showImage","previewImage","setPreviewImage","nextProps","url","_this2","doubleBuffering","setState","reposition","document","createElement","addEventListener","onPreviewLoaded","setTimeout","mounted","src","popupContent","_this3","onImageLoaded","popup","onImageOpen","freeze","onImageHide","unfreeze","hide","label","imageUrl","maxHeight","maxWidth","minHeight","minWidth","allowScrolling","openImageOnZoomButtonOnly","onUploadImage","uploadImageLabel","onDeleteImage","deleteImageLabel","_this$state","onClick","role","alt","onLoad","onLoaded","ImagePopup","show","scrolling","onClose","hideImage","closeOnClick","prevProps","contextTypes","Popup","PopupContent","_regeneratorRuntime","e","t","r","n","hasOwnProperty","o","defineProperty","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","info","error","moduleLoaded","DevLog","id","ModuleID","config","_props","load","fn","_callee","_context","self","args","apply","err","undefined","log","_len","details","Array","_key","exceptionReporter","String","concat","_toConsumableArray","_log","_console","console","debug","_len2","_key2","moduleLog","module","_len3","_key3","_moduleLog","_len4","_key4","moduleError","_len5","_key5","DEFAULT_LOCALE_CONTEXT","surveyLocaleID","DEFAULT_LOCALE_ID","interfaceLocaleID","LocaleContext","below20","decaPrefix","dict","global","nth","number","Math","floor","navigation","time","almostThere","xrays","mobile","desktop","screenNumber","repeatVideos","buttonLabel","progressBar","questions","noAnswers","placeholder","pleaseSelect","noResults","rotateLandscape","rotatePortrait","exitSimulation","gotIt","ir","selectWebCam","uploadOnly","noWebCam","selectFile","accessCamUpload","browse","uploadPhoto","camera","instead","capture","somethingWrong","couldntRead","couldntProcess","inValidCode","moveOn","tryAgain","dataReceived","enterManually","positionQR","uploadQR","uploadQRMobile","positionQRMobile","analyzing","submit","startOver","allDone","cantAnalyze","wrongFormat","vr_pre","question","answers","panels","pv","vr_optional","vr_required","vr","uploadVideo","skip","or","stopRecording","willBeStopped","stopOnDone","record","microphone","selectMicrophone","selectCam","upload","playback","stopPlayback","alternativeRecordSpan","alrenativeRecordHref","cjc","choose","pleaseChoose","one","myChoice","none","colContent","hm","addComment","commentMandatoryPlaceHolder","commentOptionalPlaceHolder","dragPin","removePin","editComment","addPin","addPins","leavePins","minPoints","maxPoints","leavePinsAny","leavePinsPerPage","leavePinsWithOff","leavePinsWithOffAny","leavePinsPerPageWithOff","leavePinWithOff","leavePinWithOffAny","leavePinPerPageWithOff","leaveExactlyPin","leaveExactlyPinAny","leaveExactlyPinPerPage","leaveExactlyPins","leaveExactlyPinsAny","leaveExactlyPinsPerPage","leaveComment","outOfPins","pinsBehavior","clusters","contentAware","mp","expand_note","rb_note","rows","cb_note","min","max","sh","note","amazonNote","fullCart","qty","each","items","addToCart","deleteFromCart","emptyCard","total","clearCart","backToStore","na","closedFullscreenLabel","researcherWarning","xraysWarning","shelfError_out_of_shelves","shelfError_too_much_products","shelfError_out_of_shelves_fullscreen","shelfError_too_much_products_fullscreen","shelfError_longWidget","shelfError_too_much_shelves","scrollError","emptyCartError","maxCartCountError","maxSpentError","maxProductCountError","application","iosText","androidText","buttonYes","buttonNo","introBody","store","checkout","introFindabilityBody","introHeader","getDaysLeft","days","phrase","amazon","open","subtotal","checkoutMobile","subTotalPrice","goToCart","sign","filters","backToStoreNote","deliverTo","myAddress","top","simulation","exit","back","results","freeShipping1","freeShipping2","add1","add2","seeDetails","sendGift","emptyCart","shoppingCart","inStock","freeDelivery","freeReturns","isGift","learnMore","delete","save","compare","share","continueShopping","info1","info2","cart","all","signMobile","lang","accounts","returns","andOrders","medical","best","basics","todayDeals","music","groceries","customerService","amazonHome","registry","condition","knowUs","careers","newsletter","aboutAmazon","axe","sustain","press","invest","devices","science","money","sellOn","sellApps","supply","protect","affiliate","driver","packageDelivery","advertise","selfPublish","hubPartner","moreWays","payment","visa","storeCard","secureCard","businessCard","points","creditCard","reload","giftCards","converter","helpYou","yourAccount","yourOrders","shippingRates","replacements","manage","recalls","giftList","help","amazonCom","yourLists","sellOnAmazon","findGift","browsing","note54","getShip","backToResults","roll","ratings","searchPage","listPrice","list","prime","getGift","aboutItem","delivery","pickup","fastDelivery","buyNow","seeMore","coupon","sold","tooltip","ideas","idea1","idea2","idea3","idea4","aside1","aside2","aside3","aside4","aside5","aside6","aside7","aside8","aside9","aside10","aside11","aside12","aside13","aside14","aside15","searchAmazon","shape","getFast","getTomorrow","overnight","spendLess","indoor","purchased","up25","to25","to50","to100","to200","recommend","features","theme","color","walmart","noRating","freeShipping","free90days","popularPick","bestSeller","viewAll","oneItem","viewMore","youSave","purchasedOnline","howGet","shipping","arrives","notAvailable","change","arrivesBy","soldBy","quickView","specifications","reviews","itemEligible","addToList","addToRegistry","inStore","price","brand","fullfillment","sortBy","bestMatch","external","images","search","howYouWant","zip","reorder","myItems","signIn","account","department","services","filter1","filter2","filter3","filter4","filter5","filter6","filter7","filter8","filter9","filter10","filter11","filter12","cartEmpty","continue","options","itemsAvailible","orderWithin","remove","saveForLater","showDetails","hideDetails","experience","savings","free","taxes","calcAndCheck","estimate","monthlyPayments","withAffirm","rightsReserved","giveFeedback","caPrivacy","privacyChoice","noticeCollection","requestPersonal","deleteAccount","supplyChains","add","sponsored","now","shippingArrives","subscription","availability","specialOffers","customerRating","recommendedLocation","category","retailer","gifting","thank1","thank2","allDepartments","storeDirectory","ourCompany","accessibility","tax","getApp","signUp","safety","terms","privacy","adChoices","consumer","brandShop","pharmacy","business","iywyk","shop","amount","target","rb","sr","current","starLabel","sbs","switch","select","progress","img","noAlt","vo","cb","oe","optional","hint","invalid","oex","it","cn","placeholderAudio","placeholderText","you","skipper","typing","thinking","sorry","sendMessage","stopPlay","startPlay","startRecording","conersation","mx","note1","dragSlider","psc","dragLeftRight","choise","v1","v2","ps","remaining","input","cx","ro","onDragStart","onDragOver","onDragEnd","onDragCancel","md","note2","note3","selectLast","lastSelected","selectFirst","firstSelected","aro","wd","emd","start","resume","continueMobile","training","session","moveLeft","moveBottom","moveRight","moveTop","success","sft","imageError","step1","touch","mouse","step2","fail","buttons","yesno","left","right","matches","fits","thumbs","noyes","matchesRev","fitsRev","thumbsRev","se","groupLabel","smileys","angry","sad","indifferent","happy","excited","ad","scroll","instagram","suggested","new","follow","footerMenu","sidebarMenu","home","explore","reels","messages","notifications","profile","threads","more","facebook","live","media","photo","feel","video","market","friends","events","pages","memories","groups","bookmarks","feeds","createChat","chats","contacts","end","title","text","preview","subtitle","collapse","expand","close","texts","restart","poweredBy","controls","device","tablet","qrCodeTitle","qrCodeMessage","mode","respondent","researcher","previewOptions","suppressLogic","showNumbers","showHints","showLogic","showHidden","jumpToQuestion","restartFromQuestion","redirect","textSurvey","dismiss","sidebar","rtl","loadDict","_x","_loadDict","localeID","localeDict","_localeDict","_localeDict2","_localeDict3","_localeDict4","_localeDict5","_localeDict6","_localeDict7","_localeDict8","_localeDict9","_localeDict10","_localeDict11","_localeDict12","_localeDict13","_localeDict14","_localeDict15","_localeDict16","_localeDict17","_localeDict18","_localeDict19","_localeDict20","_localeDict21","_localeDict22","_localeDict23","_localeDict24","_localeDict25","_localeDict26","_localeDict27","_localeDict28","_localeDict29","splitLocaleID","t0","toLowerCase","en_us_dict","en_us_rlt","split","LOCALES","EMPTY_LOCALE","PRELOAD_LOCALES","Set","LOCALE_DICT_LOADING","updatedFromServer","ensureLocale","arr","isArray","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","minLen","toString","test","_unsupportedIterableToArray","_nonIterableSpread","len","arr2","_asyncToGenerator","LocaleModule","_ref","_ref$locales","locales","preload","hasOwn","setLocale","loadLocaleDict","size","map","clear","hasLoadedLocale","orLoading","Boolean","has","hasUpdatedFromServerLocale","_callee2","_yield$loadDict","_context2","setLoaded","_ref2","_ref2$setLoaded","_ref2$setUpdatedFromS","setUpdatedFromServer","notify","locale","localeBackupDict","localeBackupOptions","deepFreeze","deepMergeCloneObject","deepEqual","update","path","fallbackValue","getIn","DEFAULT_FALLBACK_VALUE","DEFAULT_FALLBACK_VALUE_WITH_DEFAULT_LOCALE_LOOKUP","_LOCALES$localeID","listener","Subscription","listen","_target","localeContext","useContext","useMemo","_t","localeOptions","Arrow","width","height","viewBox","fill","xmlns","clipPath","Mobile","_ref$color","version","RotateDevice","vertical","useSurveyLocale","dangerouslySetInnerHTML","__html","_get","Reflect","get","bind","property","receiver","base","object","_getPrototypeOf","_superPropBase","desc","decorators","descriptor","initializer","reduce","decorator","instance","Constructor","_defineProperties","_toPropertyKey","_createClass","protoProps","staticProps","toPrimitive","Number","_toPrimitive","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","construct","valueOf","subClass","superClass","_setPrototypeOf","QuestionTheme","_PureDataComponent","accentColor","currentAccentColor","PureDataComponent","accentColorRGB","columns","Question","_Question","_PureDataComponent2","rootEl","isPincherActive","documentElement","answer","imagesLoaded","List","imagesFailed","timeline","initTimeline","loadBigImages","waitForSmallImages","actionResize","actionAfterDidMount","querySelector","focus","validation","validate","pair","questionSchema","preLoadImage","preLoadQuestionImages","paths","collectSmallImages","Image","onload","onerror","smallImagesReady","afterImage","__props","item","loadImage","_loadImage","inFrame","answerModel","answerChanged","response","backendResponse","force","startTime","Date","event","oldTimeline","onLogEvent","timeDif","round","_objectSpread","message","window","Sentry","withScope","scope","setLevel","setExtra","captureMessage","params","data","csrfToken","getCSRFToken","railsPostFetch","body","JSON","stringify","isMobile","display","fontSize","whiteSpace","lineHeight","appendChild","fontFamily","innerHTML","sw","offsetWidth","offsetHeight","widthOffset","heightOffset","minFontSize","ceil","removeChild","_this4","res","fontStyleItem","resizeText","parseInt","_answer","Map","valid","canAdvance","_this5","_this$props2","position","imageCallback","noHeader","expandImages","picture","skipIcon","skipHtml","showHeaderPic","rtlStyle","isRTL","RTL_LOCALES","Fragment","commonStyle","SwidgetImage","replace","SwidgetPinImage","set","resizeForFrame","hasLoaded","includes","renderMobile","renderDesktop","isRequired","part","showErrors","sizeChanged","goNext","Notice","_this$props$showError","_this$props$hideVerti","hideVertically","restProps","_objectWithoutProperties","_excluded","_extends","DEFAULT_ANSWER","fromJS","SCX","_SCX","firstTouch","fetching","initAnswer","requestCxData","callback","cxUrl","cxData","setSize","cur","j","dataToCx","newOptions","skipFilter","toJS","json","_self","_self$refFocusHolder","status","refFocusHolder","_error","updateAnswer","find","el","newAnswer","_this$state2","currentOptions","currentAnswer","hotUpdateAnswer","selectOption","updatedOptions","setIn","_this$state3","answerItem","comment","commentRows","match","zIndex","Select","newIcon","escapeText","onSelect","showSelected","filterOptions","filterStrategy","TextField","changeText","debounce","resizableHeight","renderContent","assign","validateUrl","optionsID","rtlDirCheck","RegExp","html","div","textContent","innerText","default","require","en_us","en_gb","en_ie","ru","ru_ru","ro_ro","ua","uk_ua","fr","fr_fr","fr_ca","es","es_mx","es_us","es_es","de","de_de","da","da_da","da_dk","it_it","pt_br","pt_pt","pt","tr","tr_tr","th","th_th","zh_cn","zh_sg","zh_tw","zh_hk","ko","ko_kr","ja","ja_jp","hi","hi_in","id_id","pl","pl_pl","sv","sv_se","nl","nl_nl","ar","ar_ae","he","he_il","gr","el_gr","no_no","nor","bg","bg_bg","vi","vi_vi","vi_vn","ma","ms_ma","ms_my","fi","fi_fi","mergeDeep","_rows","tap","clustersOnly","_optional","added","fullscreen","closeFullscreen","shelfError","count","products","IMAGE_ASSET_PATH_FILTER_RESIZE_TO_STRETCH","IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT","IMAGE_ASSET_PATH_FILTER_RESIZE_TO_FIT","IMAGE_ASSET_PATH_FILTER_RESIZE_TO_FILL","IMAGE_ASSET_PATH_FILTER_RESIZE_AND_PAD","IMAGE_ASSET_PATH_FILTER_SMART_CROP","IMAGE_ASSET_SIZE_SMALL","IMAGE_ASSET_SIZE_MIDDLE","IMAGE_ASSET_SIZE_BIG","OLD_IMAGE_ASSET_WIDTH","OLD_IMAGE_ASSET_HEIGHT","OLD_IMAGE_ASSET_WIDTH_MEDIUM","OLD_IMAGE_ASSET_HEIGHT_MEDIUM","IMAGE_ASSET_PATH_GRAVITY_CENTER","getImageAssetPath","_ref$host","host","assets_host","_ref$pathPrefix","pathPrefix","_ref$path","_ref$filter","filter","_ref$backgroundColor","backgroundColor","_ref$unsharp","unsharp","gravity","_ref$animated","animated","_ref$trim","trim","_ref$json","getSmallAssetPath","asset","original_path","getOldSmallAssetPath","getOldMediumAssetPath","getMediumAssetPath","background","getBigAssetPath","isObject","obj","deepMergeObject","source","sourceValue","targetClone","targetValue","deepClone","_step","_iterator","_createForOfIteratorHelper","obj1","obj2","obj1IsArray","obj2IsArray","keys1","keys2","_i","_keys","shallowEqual","_i2","_keys2","isSubset","subsetObject","mainObject","_i3","_subsetKeys","deepCloneCircularSafe","seen","clonedObject","WeakMap","deepFreezeCircularSafe","isFrozen","WeakSet","subscriptions","suspended","onCatch","subscriptionEntry","suspend","reporter","csrfParam","CSRFToken","csrfParamElement","head","content","csrfTokenElement","_ImagePopup","animate","bodyElm","bodyElmOverflowBackup","overflow","imageWidth","styles","imageHeight","intrinsicWidth","intrinsicHeight","naturalWidth","naturalHeight","resize","onError","refImageFrame","fWidth","fHeight","viewport","maxIWidth","w","maxIHeight","iWidth","iHeight","ratio","classList","resizePreload","setProperty","handleWindowResize","removeEventListener","imageProps","_this$props2$loadingI","loadingIcon","_this$props2$failedIc","failedIcon","_this$props2$closeIco","closeIcon","_this$props2$closeOnC","LightBox","handleClose","fullSize","classNames","margin","padding","cursor","preprocessText","_LightBox","refLightBoxBackdrop","refLightBoxBackdropCenter","stopEvent","otherProps","Portal","onMouseDown"],"sourceRoot":""}