RSG-Group/rsg-components

View on GitHub
example/imports/rsg-components.js.map

Summary

Maintainability
Test Coverage
{"version":3,"file":"rsg-components.js","sources":["../../src/Box.js","../../src/Button.js","../../src/Label.js","../../src/FormBasic.js","../../src/Transition.js","../../src/ProgressBar.js","../../src/Checkbox.js","../../src/Clock.js","../../src/Input.js"],"sourcesContent":["// @flow\r\n// Imports come here.\r\nimport React from 'react'\r\nimport { omit } from 'lodash'\r\nimport { StyleSheet, css } from 'aphrodite-jss'\r\n\r\n// Define the types of our props.\r\ntype Props = {\r\n  style?: {},\r\n  children: Array<React.createElement>,\r\n  color?: string,\r\n  opacity?: string,\r\n  width?: string,\r\n  height: string,\r\n  background?: string,\r\n};\r\n\r\n// Our little component.\r\nexport default function Box (props: Props): React.createElement {\r\n  // Create our styles.\r\n  const styles: Object = StyleSheet.create({\r\n    mainDiv: {\r\n      height: props.height,\r\n      width: props.width,\r\n      color: props.color,\r\n      opacity: props.opacity,\r\n      background: props.background,\r\n      padding: '3px 7px',\r\n      fontFamily: 'Verdana, Geneva, sans-serif',\r\n      ...props.style\r\n    },\r\n    mainPre: {\r\n      fontSize: '12px',\r\n      verticalAlign: 'middle',\r\n      height: props.height,\r\n      width: props.width\r\n    }\r\n  })\r\n\r\n  return (\r\n    <div className={css(styles.mainDiv)} {...omit(props, ['style', 'background', 'color', 'opacity', 'width', 'height'])}>\r\n      <pre className={css(styles.mainPre)}>\r\n        {props.children}\r\n      </pre>\r\n    </div>\r\n  )\r\n}\r\n\r\n// The default props.\r\nBox.defaultProps = {\r\n  color: 'rgb(10, 10, 10)',\r\n  opacity: '1',\r\n  style: {},\r\n  width: '95%',\r\n  background: 'rgb(230, 230, 230)'\r\n}\r\n","// @flow\r\n// Imports go here.\r\nimport React from 'react'\r\nimport { omit } from 'lodash'\r\nimport { StyleSheet, css } from 'aphrodite-jss'\r\n\r\n// Define the props and types our app needs.\r\ntype Props = {\r\n  animationType?: string | false,\r\n  background?: string,\r\n  color?: string,\r\n  fontSize?: string,\r\n  fontStyle?: string,\r\n  opacity?: string,\r\n  style?: Object,\r\n  children: Array<React.createElement>,\r\n  border?: string,\r\n  cursor?: string,\r\n  sizes?: string,\r\n};\r\n\r\n// Create stylesheet of sizes.\r\nconst sizes: Object = {\r\n  s: { padding: '1px 3px', fontSize: '12px' },\r\n  l: { padding: '5px 7px', fontSize: '18px' },\r\n  xl: { padding: '9px 11px', fontSize: '20px' },\r\n  xxl: { padding: '12px 14px', fontSize: '25px' },\r\n  default: { padding: '5px 4px', fontSize: '16px' }\r\n}\r\n\r\n// Finally.. our component.\r\nexport default function Button (props: Props): React.createElement {\r\n  let sizeId: string\r\n  if (props.sizes) sizeId = props.sizes\r\n  else { sizeId = 'default' }\r\n  let padding = '5px 4px'\r\n  if (sizeId !== 'default') padding = sizes[sizeId].padding\r\n\r\n  const animationStyling = {\r\n    elevated: {\r\n      '&:hover': {\r\n        boxShadow: '2px 2px 2px #888888'\r\n      },\r\n      '&:active': {\r\n        position: 'relative',\r\n        top: '1px',\r\n        left: '1px',\r\n        boxShadow: 'none'\r\n      }\r\n    },\r\n    ripple: {\r\n      position: 'relative',\r\n      overflow: 'hidden',\r\n      transform: 'translate3d(0, 0, 0)',\r\n      '&:after': {\r\n        content: '\"\"',\r\n        display: 'block',\r\n        position: 'absolute',\r\n        width: '100%',\r\n        height: '100%',\r\n        top: 0,\r\n        left: 0,\r\n        pointerEvents: 'none',\r\n        backgroundImage: 'radial-gradient(circle, #FFF 10%, transparent 10%)',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPosition: '50%',\r\n        transform: 'scale(10,10)',\r\n        opacity: '0',\r\n        transition: 'transform .5s, opacity 1s'\r\n      },\r\n      '&:active:after': {\r\n        transform: 'scale(0,0)',\r\n        opacity: '.2',\r\n        transition: '0s'\r\n      }\r\n    }\r\n  }\r\n\r\n  const styles: Object = StyleSheet.create((() => {\r\n    let extraAnimationStyling = {}\r\n    if (props.animationType) {\r\n      extraAnimationStyling = animationStyling[props.animationType]\r\n    }\r\n    return {\r\n      mainButton: {\r\n        border: props.border,\r\n        borderRadius: '3px',\r\n        background: props.background,\r\n        color: props.color,\r\n        opacity: props.opacity,\r\n        padding,\r\n        ...props.style,\r\n        fontSize: props.fontSize ? props.fontSize : sizes[sizeId].fontSize,\r\n        fontStyle: props.fontStyle,\r\n        ...extraAnimationStyling,\r\n        cursor: props.cursor\r\n      }\r\n    }\r\n  })())\r\n\r\n  const exclude = ['style', 'background', 'color', 'fontSize', 'fontStyle', 'opacity', 'sizes', 'animationType', 'cursor', 'border']\r\n\r\n  return (\r\n    <button className={css(styles.mainButton)}{...omit(props, exclude)} >\r\n      { props.children }\r\n    </button>\r\n  )\r\n}\r\n\r\n// and sir default props.\r\nButton.defaultProps = {\r\n  background: 'rgb(50, 120, 180)',\r\n  color: 'white',\r\n  opacity: '1',\r\n  style: {},\r\n  fontSize: undefined,\r\n  fontStyle: undefined,\r\n  sizes: 'default',\r\n  cursor: 'default',\r\n  border: '1px solid rgb(30, 100, 160)',\r\n  animationType: false\r\n}\r\n","// @flow\r\nimport React from 'react'\r\nimport { omit } from 'lodash'\r\nimport { StyleSheet, css } from 'aphrodite-jss'\r\n\r\ntype Props = {\r\n  children: Array<React.createElement>,\r\n  opacity?: string,\r\n  style?: Object,\r\n  color?: string,\r\n  labelType?: string,\r\n};\r\n\r\nexport default function Label (props: Props) {\r\n  const labelTypes: Object = {\r\n    success: 'rgb(85, 180, 90)',\r\n    warn: 'rgb(255, 150, 25)',\r\n    danger: 'rgb(220, 75, 75)',\r\n    default: 'rgb(195, 195, 195)',\r\n    lime: 'rgb(20, 255, 0)',\r\n    aqua: 'rgb(0, 255, 255)'\r\n  }\r\n\r\n  const styles = StyleSheet.create({\r\n    mainSpan: {\r\n      color: props.color,\r\n      fontFamily: 'monospace',\r\n      fontSize: '.975em',\r\n      padding: '.175em .3em',\r\n      borderRadius: '.235em',\r\n      background: labelTypes[props.labelType],\r\n      opacity: props.opacity,\r\n      ...props.style\r\n    }\r\n  })\r\n\r\n  return (\r\n    <span className={css(styles.mainSpan)} {...omit(props, ['style', 'labelType'])}>\r\n      {props.children}\r\n    </span>\r\n  )\r\n}\r\n\r\nLabel.defaultProps = {\r\n  labelType: 'default',\r\n  color: 'rgb(10, 10, 10)',\r\n  style: {},\r\n  opacity: '1'\r\n}\r\n","// @flow\r\nimport React from 'react'\r\nimport { StyleSheet, css } from 'aphrodite-jss'\r\n\r\nexport default function FormBasic (props: {}): React.createElement {\r\n  const styles: Object = StyleSheet.create({\r\n    inputStyle: {\r\n      border: '1px solid rgb(128, 128, 128)',\r\n      borderRadius: '3.5px',\r\n      background: 'rgb(250, 250, 250)',\r\n      height: '22.5px',\r\n      paddingLeft: '4.5px',\r\n      paddingRight: '3px'\r\n    },\r\n    buttonStyle: {\r\n      background: 'rgb(50, 120, 180)',\r\n      color: 'white',\r\n      border: '1px solid rgb(30, 100, 160)',\r\n      borderRadius: '3px',\r\n      padding: '5px 10px',\r\n      fontSize: '16px'\r\n    },\r\n    seperator1: { height: '5px' },\r\n    seperator2: { height: '7.5px' }\r\n  })\r\n\r\n  return (\r\n    <form {...props}>\r\n      Username:\r\n      <input className={css(styles.inputStyle)} name='user' type='text' key={1} />\r\n      <div className={css(styles.seperator1)} key={2} />\r\n      Password:\r\n      <input className={css(styles.inputStyle)} name='password' type='password' key={3} />\r\n      <div className={css(styles.seperator2)} key={4} />\r\n      <button className={css(styles.buttonStyle)} key={5} type='submit' />\r\n    </form>\r\n  )\r\n}\r\n","// @flow\r\n/* eslint-disable no-console */\r\nexport default function Transition (style: string = '', time: string = 'ease', type: string) {\r\n  if (!time) {\r\n    console.error('Transition: You must set time!')\r\n    console.warn('syntax: Transition(style, time, type)')\r\n    console.log('For more info - Docs: \\nhttps://github.com/RSG-Group/rsg-components/wiki/RSGTransition')\r\n    return undefined\r\n  }\r\n  if (!type) {\r\n    console.info(\"If you don't want to set type, please don't set anything!\\nThe type by default is ease...\")\r\n    console.info('Example: Transition(\"background\", \"5s\") - without type.\\nActually type will be set to ease by default.\\ntype === \"ease\"')\r\n    console.log('For more info - Docs: \\nhttps://github.com/RSG-Group/rsg-components/wiki/RSGTransition')\r\n    console.info(\"Don't worry! This isn't error. This is just tip.\")\r\n  }\r\n  const returnValue = { transition: (`${style} ${time} ${type}`) }\r\n  return returnValue\r\n}\r\n","// @flow\r\n/* eslint-disable no-console */\r\n// Import React.\r\nimport React from 'react'\r\n// Import our CSS.\r\nimport compiledCSS from '../lib/index.css'\r\n\r\n// Ink out the type of our props.\r\ntype Props = {\r\n  anim?: boolean,\r\n  id: string,\r\n  checkered?: boolean | string,\r\n  children: string,\r\n  text: string,\r\n  progressCount: number,\r\n};\r\n\r\n// A function to define the error thrown on invalid props.\r\nfunction ReactInvalidPropException (info: {\r\n  prop: string | Array<string>,\r\n  type: string,\r\n  expectedValue?: string,\r\n  actualValue?: string,\r\n}) {\r\n  // Actual code starts here.\r\n  this.name = 'ReactInvalidPropException'\r\n  // Extract values from info to make code line length smaller.\r\n  const { type, prop, expectedValue, actualValue } = info\r\n  // If..\r\n  if (type === 'invalid-type' && expectedValue !== undefined && actualValue !== undefined && typeof prop === 'string') {\r\n    this.message = `ProgressBar has incorrectly recieved a ${actualValue} for the prop \"${prop}\" when it expected a ${expectedValue}.`\r\n  // Else..\r\n  } else if (info.type === 'unassigned-prop' && typeof prop === 'string') {\r\n    this.message = `ProgressBar has not recieved the required prop \"${prop}\". Click \"OK\" to rectify.`\r\n  } else if (info.type === 'dual-props') {\r\n    this.message = `ProgressBar has recieved 2 incompatible props, ${prop[0]} and ${prop[1]}. Please resolve the issue.`\r\n  }\r\n}\r\n\r\n// Our component.\r\nexport default function ProgressBar (props: Props) {\r\n  // If progressCount is not a number then..\r\n  if (!props.progressCount || typeof props.progressCount !== 'number') {\r\n    throw new ReactInvalidPropException({\r\n      prop: 'progressCount',\r\n      type: 'invalid-type',\r\n      expectedValue: 'number',\r\n      actualValue: typeof props.progressCount\r\n    })\r\n  }\r\n  // If the prop `id` is undefined..\r\n  if (!props.id) {\r\n    throw new ReactInvalidPropException({\r\n      prop: 'id',\r\n      type: 'unassigned-prop'\r\n    })\r\n  }\r\n\r\n  // Regular CSS props.\r\n  let CSSProp: string = ''\r\n  // If prop `checkered` is true then add CSS prop of sorts `_checkered`.\r\n  if (props.checkered === true) {\r\n    CSSProp = '_checkered'\r\n  } else if (props.checkered === 'animated') {\r\n    // If prop `checkered` is true then add CSS prop of sorts `_checkered`.\r\n    CSSProp = '_animated'\r\n  }\r\n\r\n  // props.children and props.text should not co-exist.\r\n  if (props.children && props.text) {\r\n    throw new ReactInvalidPropException({\r\n      prop: ['props.children', 'props.text'],\r\n      type: 'dual-props'\r\n    })\r\n  }\r\n\r\n  // Content to be included on the progress bar.\r\n  const text = props.children.length > 0 ? `${props.progressCount}% ${props.children}` : `${props.progressCount}% ${props.text}`\r\n\r\n  // Ugly code.\r\n  if (props.anim === true && props.children) {\r\n    console.error('Now you are in \"anim\"-mode. Move your \"children\" to arguments in anim() function !!!')\r\n  }\r\n\r\n  // Return our final component.\r\n  return (\r\n    <div>\r\n      <style>{compiledCSS}</style>\r\n      <div className={`ProgressBar${CSSProp}`} key={5} {...props}>\r\n        <div className={`PP${CSSProp}`} id={props.id} style={{ width: `${props.progressCount}%` }} key={3}>\r\n          {text}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n\r\n// Our default props.\r\nProgressBar.defaultProps = {\r\n  anim: false,\r\n  checkered: false,\r\n  text: '' // eslint-disable-line react/default-props-match-prop-types\r\n}\r\n","// @flow\r\n// Imports here.\r\nimport React from 'react'\r\nimport { omit } from 'lodash'\r\nimport compiledCSS from '../lib/index.css'\r\n\r\n// Insert types for our components props here.\r\ntype Props = {\r\n  style: Object,\r\n  onChange: Function,\r\n  checked: boolean,\r\n  large?: boolean,\r\n};\r\n\r\n// Our beautiful component.\r\nexport default function Checkbox (props: Props): React.createElement {\r\n  const classy = props.large ? 'switch' : 'switch switch-lg'\r\n\r\n  const a = omit(props, ['className', 'onChange'])\r\n\r\n  return (\r\n    <div>\r\n      <style>{compiledCSS}</style>\r\n      <label className={classy} style={props.style} {...a}>\r\n        <input\r\n          type='checkbox'\r\n          onChange={props.onChange}\r\n          checked={props.checked}\r\n          key={1}\r\n          {...omit(props, ['type', 'onChange'])}\r\n        />\r\n        <span key={2} />\r\n      </label>\r\n    </div>\r\n  )\r\n}\r\n\r\nCheckbox.defaultProps = { large: false }\r\n","// @flow\r\nimport * as React from 'react'\r\nimport { StyleSheet, css } from 'aphrodite-jss'\r\nimport { omit } from 'lodash'\r\n\r\ntype Props = {\r\n  size?: number\r\n}\r\n\r\ntype State = {\r\n  sec: number,\r\n  min: number,\r\n  hour: number\r\n};\r\n\r\nexport default class Clock extends React.Component<Props, State> {\r\n  static defaultProps = {\r\n    size: 200\r\n  };\r\n\r\n  state = {\r\n    sec: new Date().getSeconds() * 6,\r\n    min: new Date().getMinutes() * 6,\r\n    hour: new Date().getHours() * 30 + new Date().getMinutes() * 0.5\r\n  }\r\n\r\n  sine (p: number, r: number, deg: number) {\r\n    const theta: number = Math.PI / 180 * deg\r\n    return p + r * Math.sin(theta)\r\n  }\r\n\r\n  cosine (p: number, r: number, deg: number) {\r\n    const theta: number = Math.PI / 180 * deg\r\n    return p + r * Math.cos(theta)\r\n  }\r\n\r\n  componentWillMount = () => {\r\n    setInterval(() => {\r\n      this.setState({\r\n        sec: new Date().getSeconds() * 6,\r\n        min: new Date().getMinutes() * 6,\r\n        hour: new Date().getHours() * 30 + new Date().getMinutes() * 0.5\r\n      })\r\n    }, 1000)\r\n  };\r\n\r\n  render () {\r\n    const props: Object = this.props\r\n    const size: number = props.size\r\n    const state = this.state\r\n\r\n    const sec: string = new Date().getSeconds().toString()\r\n    const min: string = new Date().getMinutes().toString()\r\n    const hour: string = new Date().getHours().toString()\r\n\r\n    const styles: Object = StyleSheet.create({\r\n      mainSpan: {\r\n        fontSize: size / 2.5,\r\n        fontFamily: 'Arial, Veranda',\r\n        '-webkit-touch-callout': 'none',\r\n        '-webkit-user-select': 'none',\r\n        '-khtml-user-select': 'none',\r\n        '-moz-user-select': 'none',\r\n        '-ms-user-select': 'none',\r\n        userSelect: 'none',\r\n        cursor: 'default',\r\n        ...props.style\r\n      }\r\n    })\r\n\r\n    if (size < 95) {\r\n      if (size <= 20) {\r\n        styles.mainSpan.style.fontSize = 8.5\r\n      }\r\n      return (\r\n        <span className={css(styles.mainSpan)}>\r\n          {(hour.length < 2 ? '0' : '') + hour}:\r\n          {(min.length < 2 ? '0' : '') + min}\r\n          {props.seconds && ':' + ((sec.length < 2 ? '0' : '') + sec)}\r\n        </span>\r\n      )\r\n    }\r\n\r\n    // Needed variables\r\n    const { cosine, sine } = this\r\n    // r, cx & cy of the main circle (owr clock)\r\n    const r: number = size / 2 - 5\r\n    const cx: number = size / 2\r\n    const cy: number = size / 2\r\n\r\n    /* The angles & lines for the 'hands'\r\n    (the secondhand, the minute hand & the hour hand) */\r\n    /// line coords for the angle S (S - for seconds)\r\n    const angleS: Object = {\r\n      x1: cx,\r\n      y1: cy,\r\n      x2: sine(cx, size * 0.375, 180 - state.sec),\r\n      y2: cosine(cy, size * 0.375, 180 - state.sec)\r\n    }\r\n    /// line coords for the angle M (M - for minutes)\r\n    const angleM: Object = {\r\n      x1: cx,\r\n      y1: cy,\r\n      x2: sine(cx, size * 0.35, 180 - state.min),\r\n      y2: cosine(cy, size * 0.35, 180 - state.min)\r\n    }\r\n    /// line coords dor the angle H;\r\n    const angleH: Object = {\r\n      x1: cx,\r\n      y1: cy,\r\n      x2: sine(cx, size * 0.25, 180 - state.hour),\r\n      y2: cosine(cy, size * 0.25, 180 - state.hour)\r\n    }\r\n\r\n    const width: number = size\r\n    const height: number = size\r\n\r\n    // Our beautiful component\r\n    return (\r\n      <div\r\n        {...omit(props, ['style', 'children'])}\r\n        style={{ display: 'inline-block', ...props.style }}\r\n      >\r\n        <svg width={width} height={height}>\r\n          {'Your device isn\\'t support SVG. Please update your browser or OS...'}\r\n          {/* The main circle */}\r\n          <circle\r\n            cx={cx}\r\n            cy={cy}\r\n            r={r}\r\n            style={{ stroke: 'black', fill: 'rgba(250, 237, 205, 0.25)' }}\r\n          />\r\n\r\n          {/* The secondhand */}\r\n          <line style={{ stroke: 'gray', strokeWidth: size / 100 }} {...angleS} />\r\n\r\n          {/* The minute hand */}\r\n          <line style={{ stroke: 'black', strokeWidth: size / 60 }} {...angleM} />\r\n          <line\r\n            x1={angleM.x2}\r\n            y1={angleM.y2}\r\n            x2={sine(cx, size * 0.25, 180 - (state.min - 4))}\r\n            y2={cosine(cy, size * 0.25, 180 - (state.min - 4))}\r\n            style={{ stroke: 'black', strokeWidth: size / 60 }}\r\n          />\r\n          <line\r\n            x1={angleM.x2}\r\n            y1={angleM.y2}\r\n            x2={sine(cx, size * 0.25, 180 - (state.min + 4))}\r\n            y2={cosine(cy, size * 0.25, 180 - (state.min + 4))}\r\n            style={{ stroke: 'black', strokeWidth: size / 60 }}\r\n          />\r\n\r\n          {/* The hour hand */}\r\n          <line style={{ stroke: 'brown', strokeWidth: size / 32 }} {...angleH} />\r\n\r\n          {/* Others */}\r\n          <circle\r\n            cx={cx}\r\n            cy={cy}\r\n            r={size / 30}\r\n            style={{ fill: 'blue', opacity: '0.975' }}\r\n          />\r\n          {new Array(12).fill('').map((ev, i) => {\r\n            return (\r\n              <line\r\n                x1={sine(cx, r, 180 + i * 30)}\r\n                y1={cosine(cy, r, 180 + i * 30)}\r\n                x2={sine(cx, i % 3 === 0 ? r - size * 0.085 : r - size * 0.065, 180 + i * 30)}\r\n                y2={cosine(cy, i % 3 === 0 ? r - size * 0.085 : r - size * 0.065, 180 + i * 30)}\r\n                style={{ stroke: 'black', strokeWidth: '2px' }}\r\n                key={i}\r\n              />\r\n            )\r\n          })}\r\n        </svg>\r\n      </div>\r\n    )\r\n  }\r\n}","// @flow\r\nimport React from 'react'\r\nimport { StyleSheet, css } from 'aphrodite-jss'\r\n\r\nexport default function Input (props: {}): React.createElement {\r\n  const styles: Object = StyleSheet.create({\r\n    inputStyle: {\r\n      border: '1px solid rgb(128, 128, 128)',\r\n      borderRadius: '3.5px',\r\n      background: 'rgb(250, 250, 250)',\r\n      height: '22.5px',\r\n      paddingLeft: '4.5px',\r\n      paddingRight: '3px'\r\n    }\r\n  })\r\n\r\n  return (\r\n    <input className={css(styles.inputStyle)} {...props} />\r\n  )\r\n}\r\n"],"names":["StyleSheet","create","mainDiv","height","width","color","opacity","background","padding","fontFamily","style","mainPre","fontSize","verticalAlign","css","omit","React","children","Box","defaultProps","s","l","xl","xxl","default","sizes","elevated","boxShadow","position","top","left","ripple","overflow","transform","content","display","pointerEvents","backgroundImage","backgroundRepeat","backgroundPosition","transition","animationType","mainButton","border","borderRadius","fontStyle","cursor","Button","mainSpan","success","warn","danger","lime","aqua","labelType","Label","inputStyle","paddingLeft","paddingRight","buttonStyle","seperator1","seperator2","error","console","log","info","name","type","prop","expectedValue","actualValue","message","progressCount","id","checkered","text","length","anim","compiledCSS","ProgressBar","large","onChange","checked","Checkbox","state","sec","getSeconds","min","getMinutes","hour","getHours","componentWillMount","setInterval","setState","Math","PI","sin","cos","props","size","toString","userSelect","React.createElement","seconds","cosine","sine","x1","y1","x2","y2","stroke","fill","strokeWidth","Array","map","Clock"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAkBe,GAAiD,CAE9D,MAAuBA,WAAWC,MAAX,CAAkB,CACvCC,kBACEC,OAAQ,EAAMA,MADhB,CAEEC,MAAO,EAAMA,KAFf,CAGEC,MAAO,EAAMA,KAHf,CAIEC,QAAS,EAAMA,OAJjB,CAKEC,WAAY,EAAMA,UALpB,CAMEC,QAAS,SANX,CAOEC,WAAY,6BAPd,EAQK,EAAMC,KARX,CADuC,CAWvCC,QAAS,CACPC,SAAU,MADH,CAEPC,cAAe,QAFR,CAGPV,OAAQ,EAAMA,MAHP,CAIPC,MAAO,EAAMA,KAJN,CAX8B,CAAlB,CAAvB,CAmBA,oDACO,UAAWU,IAAI,EAAOZ,OAAX,CAAhB,EAAyCa,iEAAzC,EACEC,oCAAK,UAAWF,IAAI,EAAOH,OAAX,CAAhB,EACG,EAAMM,QADT,CADF,CAMH,CAGDC,IAAIC,YAAJ,CAAmB,CACjBd,MAAO,iBADU,CAEjBC,QAAS,GAFQ,CAGjBI,QAHiB,CAIjBN,MAAO,KAJU,CAKjBG,WAAY,oBALK;;AC3BnB,UAAsB,CACpBa,EAAG,CAAEZ,QAAS,SAAX,CAAsBI,SAAU,MAAhC,CADiB,CAEpBS,EAAG,CAAEb,QAAS,SAAX,CAAsBI,SAAU,MAAhC,CAFiB,CAGpBU,GAAI,CAAEd,QAAS,UAAX,CAAuBI,SAAU,MAAjC,CAHgB,CAIpBW,IAAK,CAAEf,QAAS,WAAX,CAAwBI,SAAU,MAAlC,CAJe,CAKpBY,QAAS,CAAEhB,QAAS,SAAX,CAAsBI,SAAU,MAAhC,CALW,CAAtB,gBASe,GAAoD,CACjE,MACI,EAAMa,KADN,CACsB,EAAMA,KAD5B,CAEY,SAFhB,CAGA,MAAc,SAAd,CACe,SAAX,IAL6D,GAKvC,EAAUA,SAAcjB,OALe,EAOjE,MAAyB,CACvBkB,SAAU,CACR,UAAW,CACTC,UAAW,qBADF,CADH,CAIR,WAAY,CACVC,SAAU,UADA,CAEVC,IAAK,KAFK,CAGVC,KAAM,KAHI,CAIVH,UAAW,MAJD,CAJJ,CADa,CAYvBI,OAAQ,CACNH,SAAU,UADJ,CAENI,SAAU,QAFJ,CAGNC,UAAW,sBAHL,CAIN,UAAW,CACTC,QAAS,IADA,CAETC,QAAS,OAFA,CAGTP,SAAU,UAHD,CAITxB,MAAO,MAJE,CAKTD,OAAQ,MALC,CAMT0B,IAAK,CANI,CAOTC,KAAM,CAPG,CAQTM,cAAe,MARN,CASTC,gBAAiB,oDATR,CAUTC,iBAAkB,WAVT,CAWTC,mBAAoB,KAXX,CAYTN,UAAW,cAZF,CAaT3B,QAAS,GAbA,CAcTkC,WAAY,2BAdH,CAJL,CAoBN,iBAAkB,CAChBP,UAAW,YADK,CAEhB3B,QAAS,IAFO,CAGhBkC,WAAY,IAHI,CApBZ,CAZe,CAAzB,CAwCM,EAAiBxC,WAAWC,MAAX,CAAmB,UAAM,CAC9C,QAAA,CAIA,SAHUwC,aAGV,GAFE,EAAwB,EAAiB,EAAMA,aAAvB,CAE1B,EAAO,CACLC,qBACEC,OAAQ,EAAMA,MADhB,CAEEC,aAAc,KAFhB,CAGErC,WAAY,EAAMA,UAHpB,CAIEF,MAAO,EAAMA,KAJf,CAKEC,QAAS,EAAMA,OALjB,CAMEE,SANF,EAOK,EAAME,KAPX,EAQEE,SAAU,EAAMA,QAAN,CAAiB,EAAMA,QAAvB,CAAkCa,SAAcb,QAR5D,CASEiC,UAAW,EAAMA,SATnB,KAWEC,OAAQ,EAAMA,MAXhB,EADK,CAeR,CApBwC,EAAlB,CAxCvB,CAgEA,uDACU,UAAWhC,IAAI,EAAO4B,UAAX,CAAnB,EAA8C3B,iHAA9C,EACI,EAAME,QADV,CAIH,CAGD8B,OAAO5B,YAAP,CAAsB,CACpBZ,WAAY,mBADQ,CAEpBF,MAAO,OAFa,CAGpBC,QAAS,GAHW,CAIpBI,QAJoB,CAKpBE,eALoB,CAMpBiC,gBANoB,CAOpBpB,MAAO,SAPa,CAQpBqB,OAAQ,SARY,CASpBH,OAAQ,6BATY,CAUpBF,gBAVoB;;cCjGP,GAA8B,CAC3C,MASezC,WAAWC,MAAX,CAAkB,CAC/B+C,mBACE3C,MAAO,EAAMA,KADf,CAEEI,WAAY,WAFd,CAGEG,SAAU,QAHZ,CAIEJ,QAAS,aAJX,CAKEoC,aAAc,QALhB,CAMErC,WAhBuB,CACzB0C,QAAS,kBADgB,CAEzBC,KAAM,mBAFmB,CAGzBC,OAAQ,kBAHiB,CAIzB3B,QAAS,oBAJgB,CAKzB4B,KAAM,iBALmB,CAMzBC,KAAM,kBANmB,CAgBX,CAAW,EAAMC,SAAjB,CANd,CAOEhD,QAAS,EAAMA,OAPjB,EAQK,EAAMI,KARX,CAD+B,CAAlB,CATf,CAsBA,qDACQ,UAAWI,IAAI,EAAOkC,QAAX,CAAjB,EAA2CjC,6BAA3C,EACG,EAAME,QADT,CAIH,CAEDsC,MAAMpC,YAAN,CAAqB,CACnBmC,UAAW,SADQ,CAEnBjD,MAAO,iBAFY,CAGnBK,QAHmB,CAInBJ,QAAS,GAJU;;kBCvCN,GAAoD,CACjE,MAAuBN,WAAWC,MAAX,CAAkB,CACvCuD,WAAY,CACVb,OAAQ,8BADE,CAEVC,aAAc,OAFJ,CAGVrC,WAAY,oBAHF,CAIVJ,OAAQ,QAJE,CAKVsD,YAAa,OALH,CAMVC,aAAc,KANJ,CAD2B,CASvCC,YAAa,CACXpD,WAAY,mBADD,CAEXF,MAAO,OAFI,CAGXsC,OAAQ,6BAHG,CAIXC,aAAc,KAJH,CAKXpC,QAAS,UALE,CAMXI,SAAU,MANC,CAT0B,CAiBvCgD,WAAY,CAAEzD,OAAQ,KAAV,CAjB2B,CAkBvC0D,WAAY,CAAE1D,OAAQ,OAAV,CAlB2B,CAAlB,CAAvB,CAqBA,yDAGIa,sCAAO,UAAWF,IAAI,EAAO0C,UAAX,CAAlB,CAA0C,KAAK,MAA/C,CAAsD,KAAK,MAA3D,CAAkE,IAAK,CAAvE,EAFF,CAGExC,oCAAK,UAAWF,IAAI,EAAO8C,UAAX,CAAhB,CAAwC,IAAK,CAA7C,EAHF,aAKE5C,sCAAO,UAAWF,IAAI,EAAO0C,UAAX,CAAlB,CAA0C,KAAK,UAA/C,CAA0D,KAAK,UAA/D,CAA0E,IAAK,CAA/E,EALF,CAMExC,oCAAK,UAAWF,IAAI,EAAO+C,UAAX,CAAhB,CAAwC,IAAK,CAA7C,EANF,CAOE7C,uCAAQ,UAAWF,IAAI,EAAO6C,WAAX,CAAnB,CAA4C,IAAK,CAAjD,CAAoD,KAAK,QAAzD,EAPF,CAUH;;mBCnCc,EAA8E,8DAAzC,EAAyC,0DAAtB,MAAsB,gBAC3F,GAAI,EAAJ,CAIE,eAHQG,KAAR,CAAc,gCAAd,CAGA,CAFAC,QAAQb,IAAR,CAAa,uCAAb,CAEA,cADQc,GAAR,CAAY,wFAAZ,CACA,CALyF,IAQzFD,QAAQE,IAAR,CAAa,6FAAb,CARyF,CASzFF,QAAQE,IAAR,CAAa,yHAAb,CATyF,CAUzFF,QAAQC,GAAR,CAAY,wFAAZ,CAVyF,CAWzFD,QAAQE,IAAR,CAAa,oDAAb,CAXyF,EAc3F,MADoB,CAAEzB,wBAAF,CAErB;;giFCCD,kCAAA,GAKG,CAED,KAAK0B,IAAL,CAAY,2BAFX,SAIOC,IAJP,KAIaC,IAJb,KAImBC,aAJnB,KAIkCC,WAJlC,CAMY,cAAT,MAA2B,UAA3B,EAA0D,UAA1D,EAAuG,QAAhB,UAN1F,CAOC,KAAKC,OAAL,8FAPD,CASwB,iBAAd,KAAKJ,IAAL,EAAmD,QAAhB,UAT7C,CAUC,KAAKI,OAAL,iFAVD,CAWwB,YAAd,KAAKJ,IAXf,GAYC,KAAKI,OAAL,mDAAiE,EAAK,CAAL,CAAjE,SAAgF,EAAK,CAAL,CAAhF,8BAZD,EAcF,CAGD,oBAAe,GAAoC,CAEjD,GAAI,CAAC,EAAMC,aAAP,EAAuD,QAA/B,WAAaA,aAAzC,CACE,mCAAM,CAA8B,CAClCJ,KAAM,eAD4B,CAElCD,KAAM,cAF4B,CAGlCE,cAAe,QAHmB,CAIlCC,oBAAoB,EAAME,aAA1B,CAJkC,CAA9B,CAAN,CAQF,GAAI,CAAC,EAAMC,EAAX,CACE,mCAAM,CAA8B,CAClCL,KAAM,IAD4B,CAElCD,KAAM,iBAF4B,CAA9B,CAAN,CAOF,MAAsB,EAAtB,CAUA,GARI,OAAMO,SAQV,CAPE,EAAU,YAOZ,CAN+B,UAApB,KAAMA,SAMjB,GAJE,EAAU,WAIZ,EAAI,EAAMzD,QAAN,EAAkB,EAAM0D,IAA5B,CACE,mCAAM,CAA8B,CAClCP,oCADkC,CAElCD,KAAM,YAF4B,CAA9B,CAAN,CAOF,MAAqC,CAAxB,GAAMlD,QAAN,CAAe2D,MAAf,CAA+B,EAAMJ,aAArC,MAAuD,EAAMvD,QAA7D,CAA6E,EAAMuD,aAAnF,MAAqG,EAAMG,IAAxH,CAQA,MALI,OAAME,IAAN,EAAuB,EAAM5D,QAKjC,EAJE8C,QAAQD,KAAR,CAAc,sFAAd,CAIF,CACE9C,wCACEA,0CAAQ8D,WAAR,CADF,CAEE9D,6CAAK,yBAAL,CAAyC,IAAK,CAA9C,KACEA,oCAAK,gBAAL,CAAgC,GAAI,EAAMyD,EAA1C,CAA8C,MAAO,CAAErE,MAAU,EAAMoE,aAAhB,IAAF,CAArD,CAA2F,IAAK,CAAhG,IADF,CAFF,CASH,CAGDO,YAAY5D,YAAZ,CAA2B,CACzB0D,OADyB,CAEzBH,YAFyB,CAGzBC,KAAM,EAHmB;;mjFCnFZ,GAAsD,CACnE,MAAe,EAAMK,KAAN,CAAc,QAAd,CAAyB,kBAAxC,CAEM,EAAIjE,gCAFV,CAIA,+CAEIC,0CAAQ8D,aAAR,CADF,CAEE9D,+CAAO,WAAP,CAA0B,MAAO,EAAMN,KAAvC,KACEM,+CACE,KAAK,UADP,CAEE,SAAU,EAAMiE,QAFlB,CAGE,QAAS,EAAMC,OAHjB,CAIE,IAAK,CAJP,EAKMnE,2BALN,EADF,CAQEC,qCAAM,IAAK,CAAX,EARF,CAFF,CAcH,CAEDmE,SAAShE,YAAT,CAAwB,CAAE6D,QAAF;;uQCjBtBI,MAAQ,CACNC,IAA+B,CAA1B,SAAA,GAAWC,UAAX,EADC,CAENC,IAA+B,CAA1B,SAAA,GAAWC,UAAX,EAFC,CAGNC,KAA8B,EAAxB,SAAA,GAAWC,QAAX,GAAuD,GAA1B,SAAA,GAAWF,UAAX,EAH7B,IAgBRG,mBAAqB,UAAM,CACzBC,YAAY,UAAM,CAChB,EAAKC,QAAL,CAAc,CACZR,IAA+B,CAA1B,SAAA,GAAWC,UAAX,EADO,CAEZC,IAA+B,CAA1B,SAAA,GAAWC,UAAX,EAFO,CAGZC,KAA8B,EAAxB,SAAA,GAAWC,QAAX,GAAuD,GAA1B,SAAA,GAAWF,UAAX,EAHvB,CAAd,EAKD,CAND,MAOD,0CAjBuBM,KAAKC,6EADY,CAEvC,SAAW,EAAID,KAAKE,GAAL,CADO,EAAU,GAAV,EACP,CAChB,6CAE0C,CAEzC,SAAW,EAAIF,KAAKG,GAAL,CADO,EAAU,GAAV,EACP,CAChB,wCAYS,CACR,MAAsB,KAAKC,KAA3B,CACM,EAAe,EAAMC,IAD3B,CAEM,EAAQ,KAAKf,KAFnB,CAIM,EAAc,QAAA,GAAWE,UAAX,GAAwBc,QAAxB,EAJpB,CAKM,EAAc,QAAA,GAAWZ,UAAX,GAAwBY,QAAxB,EALpB,CAMM,EAAe,QAAA,GAAWV,QAAX,GAAsBU,QAAtB,EANrB,CAQM,EAAiBpG,WAAWC,MAAX,CAAkB,CACvC+C,mBACEpC,SAAU,EAAO,GADnB,CAEEH,WAAY,gBAFd,CAGE,wBAAyB,MAH3B,CAIE,sBAAuB,MAJzB,CAKE,qBAAsB,MALxB,CAME,mBAAoB,MANtB,CAOE,kBAAmB,MAPrB,CAQE4F,WAAY,MARd,CASEvD,OAAQ,SATV,EAUK,EAAMpC,KAVX,CADuC,CAAlB,CARvB,CAuBA,GAAW,EAAP,EAAJ,CAIE,SAHI,GAGJ,GAFE,EAAOsC,QAAP,CAAgBtC,KAAhB,CAAsBE,QAAtB,CAAiC,GAEnC,EACE0F,sBAAM,UAAWxF,IAAI,EAAOkC,QAAX,CAAjB,EACG,CAAe,CAAd,GAAK4B,MAAL,CAAkB,GAAlB,CAAwB,EAAzB,GADH,KAEG,CAAc,CAAb,GAAIA,MAAJ,CAAiB,GAAjB,CAAuB,EAAxB,GAFH,CAGG,EAAM2B,OAAN,EAAiB,KAAO,CAAc,CAAb,GAAI3B,MAAJ,CAAiB,GAAjB,CAAuB,EAAxB,GAAP,CAHpB,CADF,CA5BM,MAsCiB,IAtCjB,CAsCA4B,MAtCA,GAsCiB,IAtCjB,CAsCQC,IAtCR,CAwCF,EAAY,EAAO,CAAP,CAAW,CAxCrB,CAyCF,EAAa,EAAO,CAzClB,CA0CF,EAAa,EAAO,CA1ClB,CA+CF,EAAiB,CACrBC,IADqB,CAErBC,IAFqB,CAGrBC,GAAI,IAAgB,KAAP,EAAT,CAAuB,IAAM,EAAMvB,GAAnC,CAHiB,CAIrBwB,GAAI,IAAkB,KAAP,EAAX,CAAyB,IAAM,EAAMxB,GAArC,CAJiB,CA/Cf,CAsDF,EAAiB,CACrBqB,IADqB,CAErBC,IAFqB,CAGrBC,GAAI,IAAgB,IAAP,EAAT,CAAsB,IAAM,EAAMrB,GAAlC,CAHiB,CAIrBsB,GAAI,IAAkB,IAAP,EAAX,CAAwB,IAAM,EAAMtB,GAApC,CAJiB,CAtDf,CA6DF,EAAiB,CACrBmB,IADqB,CAErBC,IAFqB,CAGrBC,GAAI,IAAgB,IAAP,EAAT,CAAsB,IAAM,EAAMnB,IAAlC,CAHiB,CAIrBoB,GAAI,IAAkB,IAAP,EAAX,CAAwB,IAAM,EAAMpB,IAApC,CAJiB,CA7Df,CAwER,uCAEQ1E,4BADN,EAEE,gBAASoB,QAAS,cAAlB,EAAqC,EAAMzB,KAA3C,CAFF,GAIE4F,qBAAK,OAAL,CAAmB,QAAnB,EACG,qEADH,CAGEA,wBACE,IADF,CAEE,IAFF,CAGE,GAHF,CAIE,MAAO,CAAEQ,OAAQ,OAAV,CAAmBC,KAAM,2BAAzB,CAJT,EAHF,CAWET,+BAAM,MAAO,CAAEQ,OAAQ,MAAV,CAAkBE,YAAa,EAAO,GAAtC,CAAb,KAXF,CAcEV,+BAAM,MAAO,CAAEQ,OAAQ,OAAV,CAAmBE,YAAa,EAAO,EAAvC,CAAb,KAdF,CAeEV,sBACE,GAAI,EAAOM,EADb,CAEE,GAAI,EAAOC,EAFb,CAGE,GAAI,IAAgB,IAAP,EAAT,CAAsB,KAAO,EAAMtB,GAAN,CAAY,CAAnB,CAAtB,CAHN,CAIE,GAAI,IAAkB,IAAP,EAAX,CAAwB,KAAO,EAAMA,GAAN,CAAY,CAAnB,CAAxB,CAJN,CAKE,MAAO,CAAEuB,OAAQ,OAAV,CAAmBE,YAAa,EAAO,EAAvC,CALT,EAfF,CAsBEV,sBACE,GAAI,EAAOM,EADb,CAEE,GAAI,EAAOC,EAFb,CAGE,GAAI,IAAgB,IAAP,EAAT,CAAsB,KAAO,EAAMtB,GAAN,CAAY,CAAnB,CAAtB,CAHN,CAIE,GAAI,IAAkB,IAAP,EAAX,CAAwB,KAAO,EAAMA,GAAN,CAAY,CAAnB,CAAxB,CAJN,CAKE,MAAO,CAAEuB,OAAQ,OAAV,CAAmBE,YAAa,EAAO,EAAvC,CALT,EAtBF,CA+BEV,+BAAM,MAAO,CAAEQ,OAAQ,OAAV,CAAmBE,YAAa,EAAO,EAAvC,CAAb,KA/BF,CAkCEV,wBACE,IADF,CAEE,IAFF,CAGE,EAAG,EAAO,EAHZ,CAIE,MAAO,CAAES,KAAM,MAAR,CAAgBzG,QAAS,OAAzB,CAJT,EAlCF,CAwCO2G,KAAJ,CAAU,EAAV,EAAcF,IAAd,CAAmB,EAAnB,EAAuBG,GAAvB,CAA2B,aAAW,CACrC,6BAEI,GAAI,MAAY,IAAU,EAAJ,EAAlB,CADN,CAEE,GAAI,MAAc,IAAU,EAAJ,EAApB,CAFN,CAGE,GAAI,IAAmB,CAAV,IAAI,CAAJ,CAAc,EAAW,KAAP,EAAlB,CAAiC,EAAW,KAAP,EAA9C,CAA4D,IAAU,EAAJ,EAAlE,CAHN,CAIE,GAAI,IAAqB,CAAV,IAAI,CAAJ,CAAc,EAAW,KAAP,EAAlB,CAAiC,EAAW,KAAP,EAAhD,CAA8D,IAAU,EAAJ,EAApE,CAJN,CAKE,MAAO,CAAEJ,OAAQ,OAAV,CAAmBE,YAAa,KAAhC,CALT,CAME,KANF,EASH,CAXA,CAxCH,CAJF,CA2DH,QAnKgChG,WAAdmG,MACZhG,aAAe,CACpBgF,KAAM,GADc;;cCZT,GAAgD,CAC7D,MAAuBnG,WAAWC,MAAX,CAAkB,CACvCuD,WAAY,CACVb,OAAQ,8BADE,CAEVC,aAAc,OAFJ,CAGVrC,WAAY,oBAHF,CAIVJ,OAAQ,QAJE,CAKVsD,YAAa,OALH,CAMVC,aAAc,KANJ,CAD2B,CAAlB,CAAvB,CAWA,sDACS,UAAW5C,IAAI,EAAO0C,UAAX,CAAlB,KAEH;;;;"}