Full Code of woowabros/WoowahanJS for AI

v1 14acd472b60a cached
253 files
810.8 KB
270.5k tokens
659 symbols
1 requests
Download .txt
Showing preview only (897K chars total). Download the full file or copy to clipboard to get everything.
Repository: woowabros/WoowahanJS
Branch: v1
Commit: 14acd472b60a
Files: 253
Total size: 810.8 KB

Directory structure:
gitextract_la2rqcub/

├── .babelrc
├── .gitignore
├── CONTRIBUTING.md
├── README.en.md
├── README.md
├── dist/
│   └── woowahan.js
├── docs/
│   ├── README.md
│   ├── action-reducer.md
│   ├── collection-view.md
│   ├── dom-refs.md
│   ├── event.md
│   ├── first-app.md
│   ├── popup-view.md
│   ├── project-setup.md
│   ├── route.md
│   ├── store.md
│   ├── view-model.md
│   └── view.md
├── examples/
│   ├── README.md
│   ├── bind/
│   │   ├── .babelrc
│   │   ├── gulpfile.js
│   │   ├── hello-view.hbs
│   │   ├── hello-view.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── plugin/
│   │   │   └── index.js
│   │   └── webpack.config.js
│   ├── collection/
│   │   ├── .babelrc
│   │   ├── collection-first.js
│   │   ├── collection-second.js
│   │   ├── gulpfile.js
│   │   ├── hello-view.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   └── webpack.config.js
│   ├── domrefs/
│   │   ├── .babelrc
│   │   ├── gulpfile.js
│   │   ├── index.html
│   │   ├── main-view.hbs
│   │   ├── main-view.js
│   │   ├── main.js
│   │   ├── package.json
│   │   └── webpack.config.js
│   ├── hello-yarn/
│   │   ├── README.md
│   │   ├── app/
│   │   │   ├── hello-view.js
│   │   │   └── index.js
│   │   ├── index.html
│   │   ├── package.json
│   │   └── webpack.config.js
│   ├── helloworld/
│   │   ├── .babelrc
│   │   ├── gulpfile.js
│   │   ├── hello-view.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   └── webpack.config.js
│   ├── listview/
│   │   ├── .babelrc
│   │   ├── action/
│   │   │   └── index.js
│   │   ├── global.config.js
│   │   ├── gulpfile.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── plugin.config.js
│   │   ├── reducer/
│   │   │   ├── core-reducer.js
│   │   │   ├── one-user.js
│   │   │   └── users.js
│   │   ├── server/
│   │   │   ├── data/
│   │   │   │   └── users.json
│   │   │   ├── demo.js
│   │   │   └── proxy.js
│   │   ├── view/
│   │   │   ├── control/
│   │   │   │   ├── pager.hbs
│   │   │   │   └── pager.js
│   │   │   ├── layout.hbs
│   │   │   ├── layout.js
│   │   │   ├── not-found.js
│   │   │   ├── users/
│   │   │   │   ├── index.hbs
│   │   │   │   ├── index.js
│   │   │   │   ├── user-detail.js
│   │   │   │   ├── user.hbs
│   │   │   │   └── user.js
│   │   │   ├── welcome.hbs
│   │   │   └── welcome.js
│   │   └── webpack.config.js
│   ├── middleware/
│   │   ├── app.js
│   │   ├── index.html
│   │   └── woowahan.js
│   ├── modal/
│   │   ├── .babelrc
│   │   ├── gulpfile.js
│   │   ├── hello-view.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── sass/
│   │   │   └── main.scss
│   │   ├── view/
│   │   │   ├── modal-view-bootstrap/
│   │   │   │   ├── modal-view-bootstrap.hbs
│   │   │   │   └── modal-view-bootstrap.js
│   │   │   └── modal-view-normal/
│   │   │       ├── modal-view-normal.hbs
│   │   │       └── modal-view-normal.js
│   │   └── webpack.config.js
│   ├── plugin/
│   │   ├── .babelrc
│   │   ├── gulpfile.js
│   │   ├── hello-view.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── plugin/
│   │   │   └── list.js
│   │   └── webpack.config.js
│   ├── popup/
│   │   ├── .babelrc
│   │   ├── gulpfile.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── scss/
│   │   │   └── main.scss
│   │   ├── view/
│   │   │   ├── component/
│   │   │   │   ├── alert-view.hbs
│   │   │   │   ├── alert-view.js
│   │   │   │   ├── base-view.hbs
│   │   │   │   ├── base-view.js
│   │   │   │   ├── index.js
│   │   │   │   ├── popup-view.hbs
│   │   │   │   └── popup-view.js
│   │   │   └── layout/
│   │   │       ├── main-layout.hbs
│   │   │       └── main-layout.js
│   │   └── webpack.config.js
│   ├── route/
│   │   ├── .babelrc
│   │   ├── action/
│   │   │   └── index.js
│   │   ├── gulpfile.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── middleware/
│   │   │   └── index.js
│   │   ├── package.json
│   │   ├── sass/
│   │   │   └── main.scss
│   │   ├── template/
│   │   │   ├── main.hbs
│   │   │   ├── sub1.hbs
│   │   │   ├── sub2-2.hbs
│   │   │   └── sub2.hbs
│   │   ├── view/
│   │   │   ├── child.js
│   │   │   ├── content1.hbs
│   │   │   ├── content1.js
│   │   │   ├── content2.hbs
│   │   │   ├── content2.js
│   │   │   ├── content3.hbs
│   │   │   ├── content3.js
│   │   │   ├── index.js
│   │   │   ├── layout1.hbs
│   │   │   ├── layout1.js
│   │   │   ├── layout2.hbs
│   │   │   ├── layout2.js
│   │   │   ├── layout3.hbs
│   │   │   ├── layout3.js
│   │   │   ├── main.hbs
│   │   │   ├── main.js
│   │   │   ├── main1.hbs
│   │   │   ├── main1.js
│   │   │   ├── main2.hbs
│   │   │   ├── main2.js
│   │   │   ├── main3.hbs
│   │   │   ├── main3.js
│   │   │   ├── sub-child.js
│   │   │   ├── sub-content1.hbs
│   │   │   ├── sub-content1.js
│   │   │   ├── sub-content2.hbs
│   │   │   └── sub-content2.js
│   │   └── webpack.config.js
│   ├── schema/
│   │   ├── .babelrc
│   │   ├── gulpfile.js
│   │   ├── hello-view.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── schema.hbs
│   │   └── webpack.config.js
│   ├── timer/
│   │   ├── index.html
│   │   └── js/
│   │       ├── main.js
│   │       └── woowahan.js
│   ├── todo/
│   │   ├── .babelrc
│   │   ├── action/
│   │   │   └── index.js
│   │   ├── global.config.js
│   │   ├── gulpfile.js
│   │   ├── index.html
│   │   ├── keycode.js
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── reducer/
│   │   │   └── todos.js
│   │   ├── schema/
│   │   │   └── todo.js
│   │   ├── template/
│   │   │   ├── todo-app.hbs
│   │   │   ├── todo-item.hbs
│   │   │   └── todo-state.hbs
│   │   ├── view/
│   │   │   ├── todo-app.js
│   │   │   ├── todo-item.js
│   │   │   └── todo-state.js
│   │   └── webpack.config.js
│   └── transition/
│       ├── .babelrc
│       ├── gulpfile.js
│       ├── index.html
│       ├── main.js
│       ├── package.json
│       ├── view/
│       │   ├── component/
│       │   │   ├── base-view.hbs
│       │   │   ├── base-view.js
│       │   │   └── index.js
│       │   └── layout/
│       │       ├── main-layout.hbs
│       │       └── main-layout.js
│       └── webpack.config.js
├── index.js
├── lib/
│   ├── action.js
│   ├── collection-view.js
│   ├── component.js
│   ├── error.js
│   ├── event.js
│   ├── events.js
│   ├── item-view.js
│   ├── layout.js
│   ├── middleware.js
│   ├── plugin/
│   │   ├── checkbox.js
│   │   ├── input-text.js
│   │   ├── select.js
│   │   └── text.js
│   ├── plugin.js
│   ├── popup-view.js
│   ├── reducer.js
│   ├── router.js
│   ├── schema.js
│   ├── store.js
│   ├── types.js
│   ├── view.js
│   └── woowahan.js
├── package.json
├── src/
│   ├── action.js
│   ├── collection-view.js
│   ├── component.js
│   ├── error.js
│   ├── event.js
│   ├── events.js
│   ├── item-view.js
│   ├── layout.js
│   ├── middleware.js
│   ├── plugin/
│   │   ├── checkbox.js
│   │   ├── input-text.js
│   │   ├── select.js
│   │   └── text.js
│   ├── plugin.js
│   ├── popup-view.js
│   ├── reducer.js
│   ├── router.js
│   ├── schema.js
│   ├── store.js
│   ├── types.js
│   ├── view.js
│   └── woowahan.js
└── test/
    ├── mocha.opts
    ├── schema.js
    ├── store.js
    └── types.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .babelrc
================================================
{
  "presets": ["es2015"]
}

================================================
FILE: .gitignore
================================================
# Created by .ignore support plugin (hsz.mobi)
### Node template
# Logs
logs
*.log
npm-debug.log*

# Runtime data
pids
*.pid
*.seed

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# nyc test coverage
.nyc_output

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# node-waf configuration
.lock-wscript

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules
jspm_packages

# Optional npm cache directory
.npm

# Optional REPL history
.node_repl_history
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff:
.idea

## File-based project format:
*.iws

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
### OSX template
*.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon

# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

examples/**/dist


================================================
FILE: CONTRIBUTING.md
================================================
# WoowahanJS에 기여하기

:+1::tada: WoowahanJS에 관심을 가져주셔서 감사합니다. :tada::+1:

## 이슈 제출

* [여기](https://github.com/woowabros/WoowahanJS/issues/new)에서 새로운 이슈를 제출할 수 있습니다.  
이슈를 제출하기 전에 아래의 항목들을 숙지하고 가능한한 이슈에 대해 최대한 많은 정보와 자세한 설명을 포함해야 합니다.  

  * 작성하려는 이슈가 이미 있는지 [여기](https://github.com/woowabros/WoowahanJS/issues)에서 검색 후 등록해야 합니다. 비슷한 이슈가 있다면 댓글로 추가 내용을 덧붙일 수 있습니다.
  * 이슈에는 하나의 문제 또는 제안을 작성해야 합니다. 하나의 이슈에 2개 이상의 내용을 제출할 수 없습니다.

* 가능하다면 다음 항목을 포함해야 합니다:

  * 사용중인 WoowahanJS의 버전
  * 사용중인 운영체제
  * 무엇을 하려고 했고, 어떤 결과를 예측했으며, 어떤 것이 예측한대로 작동하지 않았는지에 대한 서술
  * 스크린샷 또는 GIF 애니메이션 이미지들
  * 터미널에 출력된 에러의 내용 또는 개발자 도구, 알림창에 뜬 내용

## Pull request(PR) 하기
  
  * `master` 브랜치의 코드는 수정할 수 없습니다.
  * PR은 `develop` 브랜치만 허용합니다.
  * `develop` 브랜치를 부모로 한 토픽 브랜치를 활용하는 것을 권장합니다.

* 가능하다면 다음 항목을 포함해야 합니다:

  * 스크린샷 또는 GIF 애니메이션 이미지들

================================================
FILE: README.en.md
================================================
# WoowahanJS

WoowahanJS는 보다 큰 규모의 웹 어플리케이션 개발을 위한 프레임워크입니다.

현대의 웹 어플리케이션은 많은 수의 컴포넌트로 복잡하게 구성된 뷰와 상태를 관리하는 HTTP 기반 클라이언트 어플리케이션 입니다.
일정 규모 이상의 웹 어플리케이션을 개발하기 위해선 다양한 디자이너, 퍼블리셔 및 프로그래머가 협업해야 합니다.
WoowahanJS는 퍼블리셔와 프로그래머간 협업이 쉬운 환경을 제공합니다.

빠르고 생산성 높은 UI 작업을 위해 계층 뷰 컴포넌트 관리와 One-way data binding을 지원하며 UI와 비즈니스 코드간 종속성을 최소화 하기 위한 아키텍처로 설계되었습니다.

## 영향을 받은 것들

WoowahanJS는 유명한 [BackboneJS](http://backbonejs.org) 기반 위에서 작성되었습니다. [BackboneJS](http://backbonejs.org)는 [UnderscoreJS](http://underscorejs.org), [jQuery](http://jquery.com) 종속성을 포함하므로 WoowahanJS도 자연스럽게 언제든 [UnderscoreJS](http://underscorejs.org)와 [jQuery](http://jquery.com)를 사용할 수 있습니다.

API 호출에서 촉발되는 상태 흐름과 관리를 위해 [React](https://facebook.github.io/react/) 프로젝트의 [Flux](https://facebook.github.io/flux) 및 [Redux](http://redux.js.org) 아키텍처의 아이디어를 구현했습니다. 하지만 WoowahanJS를 사용하기 위해 이들을 선행학습 할 필요는 없습니다.

## 빠르게 시작하기

저장소를 Clone 한 뒤 [Example](./examples) 디렉토리의 셈플들을 살펴보세요. WoowahanJS를 가장 빠르게 시작할 수 있는 지름길입니다.

## 설치

```
$ mkdir hello-woowa && cd hello-woowa
$ npm init
$ npm install --save woowahan
```

## Hello, WoowahanJS

```Javascript
import Woowahan from 'woowahan';

const Main = Woowahan.View.create('Main', {
  template: '<h1>Hello, WoowahanJs</h1>'
});

const app = new Woowahan();

app.start({
  url: '/', container: 'body', view: Main
});
```

다음 링크에서 더 많은 정보를 제공합니다.

* [WoowahanJS 시작하기](./docs/README.md)

================================================
FILE: README.md
================================================


# WoowahanJS

[![npm](https://img.shields.io/npm/v/woowahan.svg?style=flat-square)]()
[![npm (tag)](https://img.shields.io/npm/v/woowahan/beta.svg?style=flat-square)]()
[![npm](https://img.shields.io/npm/dm/woowahan.svg?style=flat-square)]()
[![npm](https://img.shields.io/npm/l/woowahan.svg?style=flat-square)]()

WoowahanJS는 보다 큰 규모의 웹 어플리케이션 개발을 위한 프레임워크입니다.

현대의 웹 어플리케이션은 많은 수의 컴포넌트로 복잡하게 구성된 뷰와 상태를 관리하는 HTTP 기반 클라이언트 어플리케이션 입니다.
일정 규모 이상의 웹 어플리케이션을 개발하기 위해선 다양한 디자이너, 퍼블리셔 및 프로그래머가 협업해야 합니다.
WoowahanJS는 퍼블리셔와 프로그래머간 협업이 쉬운 환경을 제공합니다.

빠르고 생산성 높은 UI 작업을 위해 계층 뷰 컴포넌트 관리와 One-way data binding을 지원하며 UI와 비즈니스 코드간 종속성을 최소화 하기 위한 아키텍처로 설계되었습니다.

## 영향을 받은 것들

WoowahanJS는 유명한 [BackboneJS](http://backbonejs.org) 기반 위에서 작성되었습니다. [BackboneJS](http://backbonejs.org)는 [UnderscoreJS](http://underscorejs.org), [jQuery](http://jquery.com) 종속성을 포함하므로 WoowahanJS도 자연스럽게 언제든 [UnderscoreJS](http://underscorejs.org)와 [jQuery](http://jquery.com)를 사용할 수 있습니다.

API 호출에서 촉발되는 상태 흐름과 관리를 위해 [React](https://facebook.github.io/react/) 프로젝트의 [Flux](https://facebook.github.io/flux) 및 [Redux](http://redux.js.org) 아키텍처의 아이디어를 구현했습니다. 하지만 WoowahanJS를 사용하기 위해 이들을 선행학습 할 필요는 없습니다.

## 빠르게 시작하기

저장소를 Clone 한 뒤 [Example](./examples) 디렉토리의 셈플들을 살펴보세요. WoowahanJS를 가장 빠르게 시작할 수 있는 지름길입니다.

## 설치

```
$ mkdir hello-woowa && cd hello-woowa
$ npm init
$ npm install --save woowahan
```

## Hello, WoowahanJS

```Javascript
import Woowahan from 'woowahan';

const Main = Woowahan.View.create('Main', {
  template: '<h1>Hello, WoowahanJs</h1>'
});

const app = new Woowahan();

app.start({
  url: '/', container: 'body', view: Main
});
```

다음 링크에서 더 많은 정보를 제공합니다.

* [WoowahanJS 시작하기](http://ibare.gitbooks.io/woowahanjs/)

================================================
FILE: dist/woowahan.js
================================================
!function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=6)}([function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}Object.defineProperty(t,"__esModule",{value:!0});var i=(t.MIDDLEWARE={APP:"app",VIEW:"view",REDUCER:"reducer",ROUTER:"router"},t.MIDDLEWARE_PROTOCOL={BEFORE:"before",AFTER:"after",UNMOUNT:"unmount"},[]),o=!1,s=t.MiddlewareRunner={get isRunning(){return o},run:function(e,t,n,a,u){if(!Array.isArray(e)||"string"!=typeof t)throw new Error("MiddlewareRunner arguments error");if(o)return void i.push([e,t,n,a,u]);o=!0;var c=n.length,l=0;"function"==typeof u&&u(),function u(){var f=e[l++];if(f){var h=f[t];h.length>c?h.call.apply(h,[f].concat(r(n),[u])):(h.call.apply(h,[f].concat(r(n))),setTimeout(u,1))}else{!!a&&a();var d=i.shift();o=!1,d&&s.run.apply(s,r(d))}}()}}},function(e,t,n){"use strict";(function(t){function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),a=n(2),u=n(10),c=n(0).MIDDLEWARE,l=n(0).MIDDLEWARE_PROTOCOL,f=n(0).MiddlewareRunner,h={get dispatch(){return d.dispatch.bind(d)},get getMiddleware(){return d.getMiddleware.bind(d)},get getStates(){return d.getStates.bind(d)},get setStates(){return d.setStates.bind(d)},get getComponent(){return d.getComponent.bind(d)},get getRouteTables(){return d.getRouteTables.bind(d)},get addAction(){return d.addAction.bind(d)},get removeAction(){return d.removeAction.bind(d)},get addError(){return d.addError.bind(d)}},d=void 0;t.__backboneAgent&&t.__backboneAgent.handleBackbone(a),a.Model.prototype.idAttribute="___ID_ATTR___",a.View.prototype.viewname="___WOOWA_VIEW___";var p=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i(this,e),this.reducers=t.reducers||{},this.components=t.components||{},this.middlewares={app:{before:[],after:[]},router:{before:[],after:[]},reducer:{before:[],after:[]},view:{before:[],after:[],unmount:[]}},this.importViews={},this.store=null,this.queue=[],this.pretasks=[],this.actionObject={},this.queuemonitor=null,d=this,this.enableQueue()}return s(e,[{key:"import",value:function(e){var t=this;Object.keys(e.reducers||{}).forEach(function(n){return t.use(e.reducers[n])}),Object.keys(e.views||{}).forEach(function(n){return t.importViews[n]=e.views[n]})}},{key:"getView",value:function(e){return this.importViews[e]}},{key:"enableQueue",value:function(){this.queuemonitor=setInterval(this.queuing.bind(this),1e3/60)}},{key:"disableQueue",value:function(){this.queuemonitor=clearInterval(this.queuemonitor)}},{key:"addAction",value:function(e){this.actionObject[e]=Date.now(),1===this.numberOfWorkAction()&&this.trigger("start")}},{key:"removeAction",value:function(e){delete this.actionObject[e],0===this.numberOfWorkAction()&&this.trigger("finish")}},{key:"addError",value:function(e){this.trigger("error",e)}},{key:"queuing",value:function(){this.disableQueue();var e=this.queue.shift();if(e){var t=this.reducers[e.action.type];if(!t)throw this.enableQueue(),new Error("The unregistered reducer. Please check the type of action, if there is a written reducer use after registration.");if(e.subscriber=e.subscriber||function(){},"function"!=typeof e.subscriber)throw this.enableQueue(),new Error("The listener must be a function. If you do not need the listener it may not be specified.");if(t.schema){var n=t.schema.validate(e.action.data);n?this.trigger("error",n):new(Function.prototype.bind.apply(t,Array.prototype.concat.call(t,e.action.data,e.subscriber.bind(this))))}else new(Function.prototype.bind.apply(t,Array.prototype.concat.call(t,e.action.data,e.subscriber.bind(this))))}this.enableQueue()}},{key:"bindStore",value:function(e){this.store=e}},{key:"bindReducer",value:function(e){this.reducers[e.actionName]=e}},{key:"bindComponent",value:function(e){this.components[e.name]=e}},{key:"bindPlugin",value:function(t){var n=t.type.toLowerCase();if(e.View.prototype._plugins.hasOwnProperty(n))throw new Error("Duplicate plugin name");e.View.prototype._plugins[n]=t.plugin}},{key:"combineReducer",value:function(e){var t=this;e&&e.forEach(function(e){t.bindReducer(e)})}},{key:"getStates",value:function(e){return void 0!==e?this.store[e]:this.store}},{key:"setStates",value:function(e,t){var n=void 0;n="string"==typeof e&&void 0!==t?r({},e,t):e,this.store||(this.store={}),Object.assign(this.store,n)}},{key:"getMiddleware",value:function(e,t){return this.middlewares[e][t]}},{key:"getComponent",value:function(e){var t=this.components[e];if(t)return t.view}},{key:"getRouteTables",value:function(){return u.routeTables}},{key:"dispatch",value:function(e,t){this.queue.push({action:e,subscriber:t})}},{key:"use",value:function(e){var t=this;Array.isArray(e)?e.forEach(function(e){return t.useModule(e)}):"object"!==(void 0===e?"undefined":o(e))||"wwtype"in e?this.useModule(e):Object.keys(e).forEach(function(n){"function"==typeof e[n]&&t.useModule(e[n])})}},{key:"useModule",value:function(e){switch(e.wwtype){case"reducer":this.bindReducer(e);break;case"layout":u.bindLayout(e);break;case"store":this.bindStore(e.store);break;case"component":console.warn("Component:: Deprecated and will be removed in a future release."),this.bindComponent(e);break;case"plugin":this.bindPlugin(e)}}},{key:"set",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=new e(n);if(!r.mwtype)throw new Error('Required attribute "mwtype" is missing.');Object.values(l).forEach(function(e){e in r&&t.middlewares[r.mwtype][e].push(r)})}},{key:"start",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("undefined"==typeof jQuery)throw new Error("jQuery is not loaded!!");var r=setInterval(function(){switch(document.readyState){case"complete":case"loaded":break;default:return}clearInterval(r),a.History.started&&a.history.stop(),e&&u.design(e,n,h);var i=t.getMiddleware(c.APP,l.BEFORE);f.run(i,l.BEFORE,[h],function(){i=this.getMiddleware(c.APP,l.AFTER),f.run(i,l.AFTER,[h],function(){a.history.start({pushState:!!n.pushState})})}.bind(t))},1)}},{key:"numberOfAction",value:function(){return this.queue.length}},{key:"numberOfWorkAction",value:function(){return Object.keys(this.actionObject).length}}]),e}();Object.assign(p.prototype,a.Events),p.$=a.$,p.View=n(11)(h),p.Reducer=n(16)(h),p.Error=n(4),p.Types=n(17),p.Store=n(18),p.Action=n(19),p.Event=n(20),p.Schema=n(21),p.Layout=n(22),p.Component=n(23),p.Plugin=n(24),e.exports=t.Woowahan=p,p.CollectionView=n(25)(h),p.ItemView=n(26)(h),p.PopupView=n(27)(h),p.version="1.2.2"}).call(t,n(3))},function(e,t,n){"use strict";(function(r){var i,o,s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(a){var u="object"==("undefined"==typeof self?"undefined":s(self))&&self.self===self&&self||"object"==(void 0===r?"undefined":s(r))&&r.global===r&&r;i=[n(7),n(8),t],void 0!==(o=function(e,t,n){u.Backbone=a(u,n,e,t)}.apply(t,i))&&(e.exports=o)}(function(e,t,n,r){var i=e.Backbone,o=Array.prototype.slice;t.VERSION="1.3.3",t.$=r,t.noConflict=function(){return e.Backbone=i,this},t.emulateHTTP=!1,t.emulateJSON=!1;var a=function(e,t,r){switch(e){case 1:return function(){return n[t](this[r])};case 2:return function(e){return n[t](this[r],e)};case 3:return function(e,i){return n[t](this[r],c(e,this),i)};case 4:return function(e,i,o){return n[t](this[r],c(e,this),i,o)};default:return function(){var e=o.call(arguments);return e.unshift(this[r]),n[t].apply(n,e)}}},u=function(e,t,r){n.each(t,function(t,i){n[i]&&(e.prototype[i]=a(t,i,r))})},c=function(e,t){return n.isFunction(e)?e:n.isObject(e)&&!t._isModel(e)?l(e):n.isString(e)?function(t){return t.get(e)}:e},l=function(e){var t=n.matches(e);return function(e){return t(e.attributes)}},f=t.Events={},h=/\s+/,d=function e(t,r,i,o,a){var u,c=0;if(i&&"object"===(void 0===i?"undefined":s(i))){void 0!==o&&"context"in a&&void 0===a.context&&(a.context=o);for(u=n.keys(i);c<u.length;c++)r=e(t,r,u[c],i[u[c]],a)}else if(i&&h.test(i))for(u=i.split(h);c<u.length;c++)r=t(r,u[c],o,a);else r=t(r,i,o,a);return r};f.on=function(e,t,n){return p(this,e,t,n)};var p=function(e,t,n,r,i){if(e._events=d(v,e._events||{},t,n,{context:r,ctx:e,listening:i}),i){(e._listeners||(e._listeners={}))[i.id]=i}return e};f.listenTo=function(e,t,r){if(!e)return this;var i=e._listenId||(e._listenId=n.uniqueId("l")),o=this._listeningTo||(this._listeningTo={}),s=o[i];if(!s){var a=this._listenId||(this._listenId=n.uniqueId("l"));s=o[i]={obj:e,objId:i,id:a,listeningTo:o,count:0}}return p(e,t,r,this,s),this};var v=function(e,t,n,r){if(n){var i=e[t]||(e[t]=[]),o=r.context,s=r.ctx,a=r.listening;a&&a.count++,i.push({callback:n,context:o,ctx:o||s,listening:a})}return e};f.off=function(e,t,n){return this._events?(this._events=d(y,this._events,e,t,{context:n,listeners:this._listeners}),this):this},f.stopListening=function(e,t,r){var i=this._listeningTo;if(!i)return this;for(var o=e?[e._listenId]:n.keys(i),s=0;s<o.length;s++){var a=i[o[s]];if(!a)break;a.obj.off(t,r,this)}return this};var y=function(e,t,r,i){if(e){var o,s=0,a=i.context,u=i.listeners;if(t||r||a){for(var c=t?[t]:n.keys(e);s<c.length;s++){t=c[s];var l=e[t];if(!l)break;for(var f=[],h=0;h<l.length;h++){var d=l[h];r&&r!==d.callback&&r!==d.callback._callback||a&&a!==d.context?f.push(d):(o=d.listening)&&0==--o.count&&(delete u[o.id],delete o.listeningTo[o.objId])}f.length?e[t]=f:delete e[t]}return e}for(var p=n.keys(u);s<p.length;s++)o=u[p[s]],delete u[o.id],delete o.listeningTo[o.objId]}};f.once=function(e,t,r){var i=d(g,{},e,t,n.bind(this.off,this));return"string"==typeof e&&null==r&&(t=void 0),this.on(i,t,r)},f.listenToOnce=function(e,t,r){var i=d(g,{},t,r,n.bind(this.stopListening,this,e));return this.listenTo(e,i)};var g=function(e,t,r,i){if(r){var o=e[t]=n.once(function(){i(t,o),r.apply(this,arguments)});o._callback=r}return e};f.trigger=function(e){if(!this._events)return this;for(var t=Math.max(0,arguments.length-1),n=Array(t),r=0;r<t;r++)n[r]=arguments[r+1];return d(m,this._events,e,void 0,n),this};var m=function(e,t,n,r){if(e){var i=e[t],o=e.all;i&&o&&(o=o.slice()),i&&b(i,r),o&&b(o,[t].concat(r))}return e},b=function(e,t){var n,r=-1,i=e.length,o=t[0],s=t[1],a=t[2];switch(t.length){case 0:for(;++r<i;)(n=e[r]).callback.call(n.ctx);return;case 1:for(;++r<i;)(n=e[r]).callback.call(n.ctx,o);return;case 2:for(;++r<i;)(n=e[r]).callback.call(n.ctx,o,s);return;case 3:for(;++r<i;)(n=e[r]).callback.call(n.ctx,o,s,a);return;default:for(;++r<i;)(n=e[r]).callback.apply(n.ctx,t);return}};f.bind=f.on,f.unbind=f.off,n.extend(t,f);var w=t.Model=function(e,t){var r=e||{};t||(t={}),this.cid=n.uniqueId(this.cidPrefix),this.attributes={},t.collection&&(this.collection=t.collection),t.parse&&(r=this.parse(r,t)||{});var i=n.result(this,"defaults");r=n.defaults(n.extend({},i,r),i),this.set(r,t),this.changed={},this.initialize.apply(this,arguments)};n.extend(w.prototype,f,{changed:null,validationError:null,idAttribute:"id",cidPrefix:"c",initialize:function(){},toJSON:function(e){return n.clone(this.attributes)},sync:function(){return t.sync.apply(this,arguments)},get:function(e){return this.attributes[e]},escape:function(e){return n.escape(this.get(e))},has:function(e){return null!=this.get(e)},matches:function(e){return!!n.iteratee(e,this)(this.attributes)},set:function(e,t,r){if(null==e)return this;var i;if("object"===(void 0===e?"undefined":s(e))?(i=e,r=t):(i={})[e]=t,r||(r={}),!this._validate(i,r))return!1;var o=r.unset,a=r.silent,u=[],c=this._changing;this._changing=!0,c||(this._previousAttributes=n.clone(this.attributes),this.changed={});var l=this.attributes,f=this.changed,h=this._previousAttributes;for(var d in i)t=i[d],n.isEqual(l[d],t)||u.push(d),n.isEqual(h[d],t)?delete f[d]:f[d]=t,o?delete l[d]:l[d]=t;if(this.idAttribute in i&&(this.id=this.get(this.idAttribute)),!a){u.length&&(this._pending=r);for(var p=0;p<u.length;p++)this.trigger("change:"+u[p],this,l[u[p]],r)}if(c)return this;if(!a)for(;this._pending;)r=this._pending,this._pending=!1,this.trigger("change",this,r);return this._pending=!1,this._changing=!1,this},unset:function(e,t){return this.set(e,void 0,n.extend({},t,{unset:!0}))},clear:function(e){var t={};for(var r in this.attributes)t[r]=void 0;return this.set(t,n.extend({},e,{unset:!0}))},hasChanged:function(e){return null==e?!n.isEmpty(this.changed):n.has(this.changed,e)},changedAttributes:function(e){if(!e)return!!this.hasChanged()&&n.clone(this.changed);var t=this._changing?this._previousAttributes:this.attributes,r={};for(var i in e){var o=e[i];n.isEqual(t[i],o)||(r[i]=o)}return!!n.size(r)&&r},previous:function(e){return null!=e&&this._previousAttributes?this._previousAttributes[e]:null},previousAttributes:function(){return n.clone(this._previousAttributes)},fetch:function(e){e=n.extend({parse:!0},e);var t=this,r=e.success;return e.success=function(n){var i=e.parse?t.parse(n,e):n;if(!t.set(i,e))return!1;r&&r.call(e.context,t,n,e),t.trigger("sync",t,n,e)},$(this,e),this.sync("read",this,e)},save:function(e,t,r){var i;null==e||"object"===(void 0===e?"undefined":s(e))?(i=e,r=t):(i={})[e]=t,r=n.extend({validate:!0,parse:!0},r);var o=r.wait;if(i&&!o){if(!this.set(i,r))return!1}else if(!this._validate(i,r))return!1;var a=this,u=r.success,c=this.attributes;r.success=function(e){a.attributes=c;var t=r.parse?a.parse(e,r):e;if(o&&(t=n.extend({},i,t)),t&&!a.set(t,r))return!1;u&&u.call(r.context,a,e,r),a.trigger("sync",a,e,r)},$(this,r),i&&o&&(this.attributes=n.extend({},c,i));var l=this.isNew()?"create":r.patch?"patch":"update";"patch"!==l||r.attrs||(r.attrs=i);var f=this.sync(l,this,r);return this.attributes=c,f},destroy:function(e){e=e?n.clone(e):{};var t=this,r=e.success,i=e.wait,o=function(){t.stopListening(),t.trigger("destroy",t,t.collection,e)};e.success=function(n){i&&o(),r&&r.call(e.context,t,n,e),t.isNew()||t.trigger("sync",t,n,e)};var s=!1;return this.isNew()?n.defer(e.success):($(this,e),s=this.sync("delete",this,e)),i||o(),s},url:function(){var e=n.result(this,"urlRoot")||n.result(this.collection,"url")||P();if(this.isNew())return e;var t=this.get(this.idAttribute);return e.replace(/[^\/]$/,"$&/")+encodeURIComponent(t)},parse:function(e,t){return e},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return!this.has(this.idAttribute)},isValid:function(e){return this._validate({},n.extend({},e,{validate:!0}))},_validate:function(e,t){if(!t.validate||!this.validate)return!0;e=n.extend({},this.attributes,e);var r=this.validationError=this.validate(e,t)||null;return!r||(this.trigger("invalid",this,r,n.extend(t,{validationError:r})),!1)}}),u(w,{keys:1,values:1,pairs:1,invert:1,pick:0,omit:0,chain:1,isEmpty:1},"attributes");var x=t.Collection=function(e,t){t||(t={}),t.model&&(this.model=t.model),void 0!==t.comparator&&(this.comparator=t.comparator),this._reset(),this.initialize.apply(this,arguments),e&&this.reset(e,n.extend({silent:!0},t))},E={add:!0,remove:!0,merge:!0},S={add:!0,remove:!1},T=function(e,t,n){n=Math.min(Math.max(n,0),e.length);var r,i=Array(e.length-n),o=t.length;for(r=0;r<i.length;r++)i[r]=e[r+n];for(r=0;r<o;r++)e[r+n]=t[r];for(r=0;r<i.length;r++)e[r+o+n]=i[r]};n.extend(x.prototype,f,{model:w,initialize:function(){},toJSON:function(e){return this.map(function(t){return t.toJSON(e)})},sync:function(){return t.sync.apply(this,arguments)},add:function(e,t){return this.set(e,n.extend({merge:!1},t,S))},remove:function(e,t){t=n.extend({},t);var r=!n.isArray(e);e=r?[e]:e.slice();var i=this._removeModels(e,t);return!t.silent&&i.length&&(t.changes={added:[],merged:[],removed:i},this.trigger("update",this,t)),r?i[0]:i},set:function(e,t){if(null!=e){t=n.extend({},E,t),t.parse&&!this._isModel(e)&&(e=this.parse(e,t)||[]);var r=!n.isArray(e);e=r?[e]:e.slice();var i=t.at;null!=i&&(i=+i),i>this.length&&(i=this.length),i<0&&(i+=this.length+1);var o,s,a=[],u=[],c=[],l=[],f={},h=t.add,d=t.merge,p=t.remove,v=!1,y=this.comparator&&null==i&&!1!==t.sort,g=n.isString(this.comparator)?this.comparator:null;for(s=0;s<e.length;s++){o=e[s];var m=this.get(o);if(m){if(d&&o!==m){var b=this._isModel(o)?o.attributes:o;t.parse&&(b=m.parse(b,t)),m.set(b,t),c.push(m),y&&!v&&(v=m.hasChanged(g))}f[m.cid]||(f[m.cid]=!0,a.push(m)),e[s]=m}else h&&(o=e[s]=this._prepareModel(o,t))&&(u.push(o),this._addReference(o,t),f[o.cid]=!0,a.push(o))}if(p){for(s=0;s<this.length;s++)o=this.models[s],f[o.cid]||l.push(o);l.length&&this._removeModels(l,t)}var w=!1,x=!y&&h&&p;if(a.length&&x?(w=this.length!==a.length||n.some(this.models,function(e,t){return e!==a[t]}),this.models.length=0,T(this.models,a,0),this.length=this.models.length):u.length&&(y&&(v=!0),T(this.models,u,null==i?this.length:i),this.length=this.models.length),v&&this.sort({silent:!0}),!t.silent){for(s=0;s<u.length;s++)null!=i&&(t.index=i+s),o=u[s],o.trigger("add",o,this,t);(v||w)&&this.trigger("sort",this,t),(u.length||l.length||c.length)&&(t.changes={added:u,removed:l,merged:c},this.trigger("update",this,t))}return r?e[0]:e}},reset:function(e,t){t=t?n.clone(t):{};for(var r=0;r<this.models.length;r++)this._removeReference(this.models[r],t);return t.previousModels=this.models,this._reset(),e=this.add(e,n.extend({silent:!0},t)),t.silent||this.trigger("reset",this,t),e},push:function(e,t){return this.add(e,n.extend({at:this.length},t))},pop:function(e){var t=this.at(this.length-1);return this.remove(t,e)},unshift:function(e,t){return this.add(e,n.extend({at:0},t))},shift:function(e){var t=this.at(0);return this.remove(t,e)},slice:function(){return o.apply(this.models,arguments)},get:function(e){if(null!=e)return this._byId[e]||this._byId[this.modelId(e.attributes||e)]||e.cid&&this._byId[e.cid]},has:function(e){return null!=this.get(e)},at:function(e){return e<0&&(e+=this.length),this.models[e]},where:function(e,t){return this[t?"find":"filter"](e)},findWhere:function(e){return this.where(e,!0)},sort:function(e){var t=this.comparator;if(!t)throw new Error("Cannot sort a set without a comparator");e||(e={});var r=t.length;return n.isFunction(t)&&(t=n.bind(t,this)),1===r||n.isString(t)?this.models=this.sortBy(t):this.models.sort(t),e.silent||this.trigger("sort",this,e),this},pluck:function(e){return this.map(e+"")},fetch:function(e){e=n.extend({parse:!0},e);var t=e.success,r=this;return e.success=function(n){var i=e.reset?"reset":"set";r[i](n,e),t&&t.call(e.context,r,n,e),r.trigger("sync",r,n,e)},$(this,e),this.sync("read",this,e)},create:function(e,t){t=t?n.clone(t):{};var r=t.wait;if(!(e=this._prepareModel(e,t)))return!1;r||this.add(e,t);var i=this,o=t.success;return t.success=function(e,t,n){r&&i.add(e,n),o&&o.call(n.context,e,t,n)},e.save(null,t),e},parse:function(e,t){return e},clone:function(){return new this.constructor(this.models,{model:this.model,comparator:this.comparator})},modelId:function(e){return e[this.model.prototype.idAttribute||"id"]},_reset:function(){this.length=0,this.models=[],this._byId={}},_prepareModel:function(e,t){if(this._isModel(e))return e.collection||(e.collection=this),e;t=t?n.clone(t):{},t.collection=this;var r=new this.model(e,t);return r.validationError?(this.trigger("invalid",this,r.validationError,t),!1):r},_removeModels:function(e,t){for(var n=[],r=0;r<e.length;r++){var i=this.get(e[r]);if(i){var o=this.indexOf(i);this.models.splice(o,1),this.length--,delete this._byId[i.cid];var s=this.modelId(i.attributes);null!=s&&delete this._byId[s],t.silent||(t.index=o,i.trigger("remove",i,this,t)),n.push(i),this._removeReference(i,t)}}return n},_isModel:function(e){return e instanceof w},_addReference:function(e,t){this._byId[e.cid]=e;var n=this.modelId(e.attributes);null!=n&&(this._byId[n]=e),e.on("all",this._onModelEvent,this)},_removeReference:function(e,t){delete this._byId[e.cid];var n=this.modelId(e.attributes);null!=n&&delete this._byId[n],this===e.collection&&delete e.collection,e.off("all",this._onModelEvent,this)},_onModelEvent:function(e,t,n,r){if(t){if(("add"===e||"remove"===e)&&n!==this)return;if("destroy"===e&&this.remove(t,r),"change"===e){var i=this.modelId(t.previousAttributes()),o=this.modelId(t.attributes);i!==o&&(null!=i&&delete this._byId[i],null!=o&&(this._byId[o]=t))}}this.trigger.apply(this,arguments)}}),u(x,{forEach:3,each:3,map:3,collect:3,reduce:0,foldl:0,inject:0,reduceRight:0,foldr:0,find:3,detect:3,filter:3,select:3,reject:3,every:3,all:3,some:3,any:3,include:3,includes:3,contains:3,invoke:0,max:3,min:3,toArray:1,size:1,first:3,head:3,take:3,initial:3,rest:3,tail:3,drop:3,last:3,without:0,difference:0,indexOf:3,shuffle:1,lastIndexOf:3,isEmpty:1,chain:1,sample:3,partition:3,groupBy:3,countBy:3,sortBy:3,indexBy:3,findIndex:3,findLastIndex:3},"models");var _=t.View=function(e){this.cid=n.uniqueId("view"),n.extend(this,n.pick(e,C)),this._ensureElement(),this.initialize.apply(this,arguments)},A=/^(\S+)\s*(.*)$/,C=["model","collection","el","id","attributes","className","tagName","events"];n.extend(_.prototype,f,{tagName:"div",$:function(e){return this.$el.find(e)},initialize:function(){},render:function(){return this},remove:function(){return this._removeElement(),this.stopListening(),this},_removeElement:function(){this.$el.remove()},setElement:function(e){return this.undelegateEvents(),this._setElement(e),this.delegateEvents(),this},_setElement:function(e){this.$el=e instanceof t.$?e:t.$(e),this.el=this.$el[0]},delegateEvents:function(e){if(e||(e=n.result(this,"events")),!e)return this;this.undelegateEvents();for(var t in e){var r=e[t];if(n.isFunction(r)||(r=this[r]),r){var i=t.match(A);this.delegate(i[1],i[2],n.bind(r,this))}}return this},delegate:function(e,t,n){return this.$el.on(e+".delegateEvents"+this.cid,t,n),this},undelegateEvents:function(){return this.$el&&this.$el.off(".delegateEvents"+this.cid),this},undelegate:function(e,t,n){return this.$el.off(e+".delegateEvents"+this.cid,t,n),this},_createElement:function(e){return document.createElement(e)},_ensureElement:function(){if(this.el)this.setElement(n.result(this,"el"));else{var e=n.extend({},n.result(this,"attributes"));this.id&&(e.id=n.result(this,"id")),this.className&&(e.class=n.result(this,"className")),this.setElement(this._createElement(n.result(this,"tagName"))),this._setAttributes(e)}},_setAttributes:function(e){this.$el.attr(e)}}),t.sync=function(e,r,i){var o=k[e];n.defaults(i||(i={}),{emulateHTTP:t.emulateHTTP,emulateJSON:t.emulateJSON});var s={type:o,dataType:"json"};if(i.url||(s.url=n.result(r,"url")||P()),null!=i.data||!r||"create"!==e&&"update"!==e&&"patch"!==e||(s.contentType="application/json",s.data=JSON.stringify(i.attrs||r.toJSON(i))),i.emulateJSON&&(s.contentType="application/x-www-form-urlencoded",s.data=s.data?{model:s.data}:{}),i.emulateHTTP&&("PUT"===o||"DELETE"===o||"PATCH"===o)){s.type="POST",i.emulateJSON&&(s.data._method=o);var a=i.beforeSend;i.beforeSend=function(e){if(e.setRequestHeader("X-HTTP-Method-Override",o),a)return a.apply(this,arguments)}}"GET"===s.type||i.emulateJSON||(s.processData=!1);var u=i.error;i.error=function(e,t,n){i.textStatus=t,i.errorThrown=n,u&&u.call(i.context,e,t,n)};var c=i.xhr=t.ajax(n.extend(s,i));return r.trigger("request",r,c,i),c};var k={create:"POST",update:"PUT",patch:"PATCH",delete:"DELETE",read:"GET"};t.ajax=function(){return t.$.ajax.apply(t.$,arguments)};var j=t.Router=function(e){e||(e={}),e.routes&&(this.routes=e.routes),this._bindRoutes(),this.initialize.apply(this,arguments)},O=/\((.*?)\)/g,N=/(\(\?)?:\w+/g,R=/\*\w+/g,M=/[\-{}\[\]+?.,\\\^$|#\s]/g;n.extend(j.prototype,f,{initialize:function(){},route:function(e,r,i){n.isRegExp(e)||(e=this._routeToRegExp(e)),n.isFunction(r)&&(i=r,r=""),i||(i=this[r]);var o=this;return t.history.route(e,function(n){var s=o._extractParameters(e,n);!1!==o.execute(i,s,r)&&(o.trigger.apply(o,["route:"+r].concat(s)),o.trigger("route",r,s),t.history.trigger("route",o,r,s))}),this},execute:function(e,t,n){e&&e.apply(this,t)},navigate:function(e,n){return t.history.navigate(e,n),this},_bindRoutes:function(){if(this.routes){this.routes=n.result(this,"routes");for(var e,t=n.keys(this.routes);null!=(e=t.pop());)this.route(e,this.routes[e])}},_routeToRegExp:function(e){return e=e.replace(M,"\\$&").replace(O,"(?:$1)?").replace(N,function(e,t){return t?e:"([^/?]+)"}).replace(R,"([^?]*?)"),new RegExp("^"+e+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(e,t){var r=e.exec(t).slice(1);return n.map(r,function(e,t){return t===r.length-1?e||null:e?decodeURIComponent(e):null})}});var D=t.History=function(){this.handlers=[],this.checkUrl=n.bind(this.checkUrl,this),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)},L=/^[#\/]|\s+$/g,q=/^\/+|\/+$/g,I=/#.*$/;D.started=!1,n.extend(D.prototype,f,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root&&!this.getSearch()},matchRoot:function(){return this.decodeFragment(this.location.pathname).slice(0,this.root.length-1)+"/"===this.root},decodeFragment:function(e){return decodeURI(e.replace(/%25/g,"%2525"))},getSearch:function(){var e=this.location.href.replace(/#.*/,"").match(/\?.+/);return e?e[0]:""},getHash:function(e){var t=(e||this).location.href.match(/#(.*)$/);return t?t[1]:""},getPath:function(){var e=this.decodeFragment(this.location.pathname+this.getSearch()).slice(this.root.length-1);return"/"===e.charAt(0)?e.slice(1):e},getFragment:function(e){return null==e&&(e=this._usePushState||!this._wantsHashChange?this.getPath():this.getHash()),e.replace(L,"")},start:function(e){if(D.started)throw new Error("Backbone.history has already been started");if(D.started=!0,this.options=n.extend({root:"/"},this.options,e),this.root=this.options.root,this._wantsHashChange=!1!==this.options.hashChange,this._hasHashChange="onhashchange"in window&&(void 0===document.documentMode||document.documentMode>7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!(!this.history||!this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=("/"+this.root+"/").replace(q,"/"),this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){var t=this.root.slice(0,-1)||"/";return this.location.replace(t+"#"+this.getPath()),!0}this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0})}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement("iframe"),this.iframe.src="javascript:0",this.iframe.style.display="none",this.iframe.tabIndex=-1;var r=document.body,i=r.insertBefore(this.iframe,r.firstChild).contentWindow;i.document.open(),i.document.close(),i.location.hash="#"+this.fragment}var o=window.addEventListener||function(e,t){return attachEvent("on"+e,t)};if(this._usePushState?o("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe?o("hashchange",this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),!this.options.silent)return this.loadUrl()},stop:function(){var e=window.removeEventListener||function(e,t){return detachEvent("on"+e,t)};this._usePushState?e("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe&&e("hashchange",this.checkUrl,!1),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null),this._checkUrlInterval&&clearInterval(this._checkUrlInterval),D.started=!1},route:function(e,t){this.handlers.unshift({route:e,callback:t})},checkUrl:function(e){var t=this.getFragment();if(t===this.fragment&&this.iframe&&(t=this.getHash(this.iframe.contentWindow)),t===this.fragment)return!1;this.iframe&&this.navigate(t),this.loadUrl()},loadUrl:function(e){return!!this.matchRoot()&&(e=this.fragment=this.getFragment(e),n.some(this.handlers,function(t){if(t.route.test(e))return t.callback(e),!0}))},navigate:function(e,t){if(!D.started)return!1;t&&!0!==t||(t={trigger:!!t}),e=this.getFragment(e||"");var n=this.root;""!==e&&"?"!==e.charAt(0)||(n=n.slice(0,-1)||"/");var r=n+e;if(e=this.decodeFragment(e.replace(I,"")),this.fragment!==e){if(this.fragment=e,this._usePushState)this.history[t.replace?"replaceState":"pushState"]({},document.title,r);else{if(!this._wantsHashChange)return this.location.assign(r);if(this._updateHash(this.location,e,t.replace),this.iframe&&e!==this.getHash(this.iframe.contentWindow)){var i=this.iframe.contentWindow;t.replace||(i.document.open(),i.document.close()),this._updateHash(i.location,e,t.replace)}}return t.trigger?this.loadUrl(e):void 0}},_updateHash:function(e,t,n){if(n){var r=e.href.replace(/(javascript:|#).*$/,"");e.replace(r+"#"+t)}else e.hash="#"+t}}),t.history=new D;var F=function(e,t){var r,i=this;return r=e&&n.has(e,"constructor")?e.constructor:function(){return i.apply(this,arguments)},n.extend(r,i,t),r.prototype=n.create(i.prototype,e),r.prototype.constructor=r,r.__super__=i.prototype,r};w.extend=x.extend=j.extend=_.extend=D.extend=F;var P=function(){throw new Error('A "url" property or function must be specified')},$=function(e,t){var n=t.error;t.error=function(r){n&&n.call(t.context,e,r,t),e.trigger("error",e,r,t)}};return t})}).call(t,n(3))},function(e,t,n){"use strict";var r,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(e){"object"===("undefined"==typeof window?"undefined":i(window))&&(r=window)}e.exports=r},function(e,t,n){"use strict";e.exports={create:function(e,t){return{wwtype:"error",code:1,message:e,target:t}}}},function(e,t,n){"use strict";e.exports={SELECTED_ROW:"selectedRow",SELECTED_CELL:"selectedCell"}},function(e,t,n){"use strict";e.exports=n(1)},function(e,t,n){"use strict";var r,i,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};(function(){function n(e){function t(t,n,r,i,o,s){for(;o>=0&&o<s;o+=e){var a=i?i[o]:o;r=n(r,t[a],a,t)}return r}return function(n,r,i,o){r=T(r,o,4);var s=!N(n)&&S.keys(n),a=(s||n).length,u=e>0?0:a-1;return arguments.length<3&&(i=n[s?s[u]:u],u+=e),t(n,r,i,s,u,a)}}function s(e){return function(t,n,r){n=_(n,r);for(var i=O(t),o=e>0?0:i-1;o>=0&&o<i;o+=e)if(n(t[o],o,t))return o;return-1}}function a(e,t,n){return function(r,i,o){var s=0,a=O(r);if("number"==typeof o)e>0?s=o>=0?o:Math.max(o+a,s):a=o>=0?Math.min(o+1,a):o+a+1;else if(n&&o&&a)return o=n(r,i),r[o]===i?o:-1;if(i!==i)return o=t(v.call(r,s,a),S.isNaN),o>=0?o+s:-1;for(o=e>0?s:a-1;o>=0&&o<a;o+=e)if(r[o]===i)return o;return-1}}function u(e,t){var n=q.length,r=e.constructor,i=S.isFunction(r)&&r.prototype||h,o="constructor";for(S.has(e,o)&&!S.contains(t,o)&&t.push(o);n--;)(o=q[n])in e&&e[o]!==i[o]&&!S.contains(t,o)&&t.push(o)}var c=this,l=c._,f=Array.prototype,h=Object.prototype,d=Function.prototype,p=f.push,v=f.slice,y=h.toString,g=h.hasOwnProperty,m=Array.isArray,b=Object.keys,w=d.bind,x=Object.create,E=function(){},S=function e(t){return t instanceof e?t:this instanceof e?void(this._wrapped=t):new e(t)};void 0!==e&&e.exports&&(t=e.exports=S),t._=S,S.VERSION="1.8.3";var T=function(e,t,n){if(void 0===t)return e;switch(null==n?3:n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)};case 4:return function(n,r,i,o){return e.call(t,n,r,i,o)}}return function(){return e.apply(t,arguments)}},_=function(e,t,n){return null==e?S.identity:S.isFunction(e)?T(e,t,n):S.isObject(e)?S.matcher(e):S.property(e)};S.iteratee=function(e,t){return _(e,t,1/0)};var A=function(e,t){return function(n){var r=arguments.length;if(r<2||null==n)return n;for(var i=1;i<r;i++)for(var o=arguments[i],s=e(o),a=s.length,u=0;u<a;u++){var c=s[u];t&&void 0!==n[c]||(n[c]=o[c])}return n}},C=function(e){if(!S.isObject(e))return{};if(x)return x(e);E.prototype=e;var t=new E;return E.prototype=null,t},k=function(e){return function(t){return null==t?void 0:t[e]}},j=Math.pow(2,53)-1,O=k("length"),N=function(e){var t=O(e);return"number"==typeof t&&t>=0&&t<=j};S.each=S.forEach=function(e,t,n){t=T(t,n);var r,i;if(N(e))for(r=0,i=e.length;r<i;r++)t(e[r],r,e);else{var o=S.keys(e);for(r=0,i=o.length;r<i;r++)t(e[o[r]],o[r],e)}return e},S.map=S.collect=function(e,t,n){t=_(t,n);for(var r=!N(e)&&S.keys(e),i=(r||e).length,o=Array(i),s=0;s<i;s++){var a=r?r[s]:s;o[s]=t(e[a],a,e)}return o},S.reduce=S.foldl=S.inject=n(1),S.reduceRight=S.foldr=n(-1),S.find=S.detect=function(e,t,n){var r;if(void 0!==(r=N(e)?S.findIndex(e,t,n):S.findKey(e,t,n))&&-1!==r)return e[r]},S.filter=S.select=function(e,t,n){var r=[];return t=_(t,n),S.each(e,function(e,n,i){t(e,n,i)&&r.push(e)}),r},S.reject=function(e,t,n){return S.filter(e,S.negate(_(t)),n)},S.every=S.all=function(e,t,n){t=_(t,n);for(var r=!N(e)&&S.keys(e),i=(r||e).length,o=0;o<i;o++){var s=r?r[o]:o;if(!t(e[s],s,e))return!1}return!0},S.some=S.any=function(e,t,n){t=_(t,n);for(var r=!N(e)&&S.keys(e),i=(r||e).length,o=0;o<i;o++){var s=r?r[o]:o;if(t(e[s],s,e))return!0}return!1},S.contains=S.includes=S.include=function(e,t,n,r){return N(e)||(e=S.values(e)),("number"!=typeof n||r)&&(n=0),S.indexOf(e,t,n)>=0},S.invoke=function(e,t){var n=v.call(arguments,2),r=S.isFunction(t);return S.map(e,function(e){var i=r?t:e[t];return null==i?i:i.apply(e,n)})},S.pluck=function(e,t){return S.map(e,S.property(t))},S.where=function(e,t){return S.filter(e,S.matcher(t))},S.findWhere=function(e,t){return S.find(e,S.matcher(t))},S.max=function(e,t,n){var r,i,o=-1/0,s=-1/0;if(null==t&&null!=e){e=N(e)?e:S.values(e);for(var a=0,u=e.length;a<u;a++)(r=e[a])>o&&(o=r)}else t=_(t,n),S.each(e,function(e,n,r){((i=t(e,n,r))>s||i===-1/0&&o===-1/0)&&(o=e,s=i)});return o},S.min=function(e,t,n){var r,i,o=1/0,s=1/0;if(null==t&&null!=e){e=N(e)?e:S.values(e);for(var a=0,u=e.length;a<u;a++)(r=e[a])<o&&(o=r)}else t=_(t,n),S.each(e,function(e,n,r){((i=t(e,n,r))<s||i===1/0&&o===1/0)&&(o=e,s=i)});return o},S.shuffle=function(e){for(var t,n=N(e)?e:S.values(e),r=n.length,i=Array(r),o=0;o<r;o++)t=S.random(0,o),t!==o&&(i[o]=i[t]),i[t]=n[o];return i},S.sample=function(e,t,n){return null==t||n?(N(e)||(e=S.values(e)),e[S.random(e.length-1)]):S.shuffle(e).slice(0,Math.max(0,t))},S.sortBy=function(e,t,n){return t=_(t,n),S.pluck(S.map(e,function(e,n,r){return{value:e,index:n,criteria:t(e,n,r)}}).sort(function(e,t){var n=e.criteria,r=t.criteria;if(n!==r){if(n>r||void 0===n)return 1;if(n<r||void 0===r)return-1}return e.index-t.index}),"value")};var R=function(e){return function(t,n,r){var i={};return n=_(n,r),S.each(t,function(r,o){var s=n(r,o,t);e(i,r,s)}),i}};S.groupBy=R(function(e,t,n){S.has(e,n)?e[n].push(t):e[n]=[t]}),S.indexBy=R(function(e,t,n){e[n]=t}),S.countBy=R(function(e,t,n){S.has(e,n)?e[n]++:e[n]=1}),S.toArray=function(e){return e?S.isArray(e)?v.call(e):N(e)?S.map(e,S.identity):S.values(e):[]},S.size=function(e){return null==e?0:N(e)?e.length:S.keys(e).length},S.partition=function(e,t,n){t=_(t,n);var r=[],i=[];return S.each(e,function(e,n,o){(t(e,n,o)?r:i).push(e)}),[r,i]},S.first=S.head=S.take=function(e,t,n){if(null!=e)return null==t||n?e[0]:S.initial(e,e.length-t)},S.initial=function(e,t,n){return v.call(e,0,Math.max(0,e.length-(null==t||n?1:t)))},S.last=function(e,t,n){if(null!=e)return null==t||n?e[e.length-1]:S.rest(e,Math.max(0,e.length-t))},S.rest=S.tail=S.drop=function(e,t,n){return v.call(e,null==t||n?1:t)},S.compact=function(e){return S.filter(e,S.identity)};var M=function e(t,n,r,i){for(var o=[],s=0,a=i||0,u=O(t);a<u;a++){var c=t[a];if(N(c)&&(S.isArray(c)||S.isArguments(c))){n||(c=e(c,n,r));var l=0,f=c.length;for(o.length+=f;l<f;)o[s++]=c[l++]}else r||(o[s++]=c)}return o};S.flatten=function(e,t){return M(e,t,!1)},S.without=function(e){return S.difference(e,v.call(arguments,1))},S.uniq=S.unique=function(e,t,n,r){S.isBoolean(t)||(r=n,n=t,t=!1),null!=n&&(n=_(n,r));for(var i=[],o=[],s=0,a=O(e);s<a;s++){var u=e[s],c=n?n(u,s,e):u;t?(s&&o===c||i.push(u),o=c):n?S.contains(o,c)||(o.push(c),i.push(u)):S.contains(i,u)||i.push(u)}return i},S.union=function(){return S.uniq(M(arguments,!0,!0))},S.intersection=function(e){for(var t=[],n=arguments.length,r=0,i=O(e);r<i;r++){var o=e[r];if(!S.contains(t,o)){for(var s=1;s<n&&S.contains(arguments[s],o);s++);s===n&&t.push(o)}}return t},S.difference=function(e){var t=M(arguments,!0,!0,1);return S.filter(e,function(e){return!S.contains(t,e)})},S.zip=function(){return S.unzip(arguments)},S.unzip=function(e){for(var t=e&&S.max(e,O).length||0,n=Array(t),r=0;r<t;r++)n[r]=S.pluck(e,r);return n},S.object=function(e,t){for(var n={},r=0,i=O(e);r<i;r++)t?n[e[r]]=t[r]:n[e[r][0]]=e[r][1];return n},S.findIndex=s(1),S.findLastIndex=s(-1),S.sortedIndex=function(e,t,n,r){n=_(n,r,1);for(var i=n(t),o=0,s=O(e);o<s;){var a=Math.floor((o+s)/2);n(e[a])<i?o=a+1:s=a}return o},S.indexOf=a(1,S.findIndex,S.sortedIndex),S.lastIndexOf=a(-1,S.findLastIndex),S.range=function(e,t,n){null==t&&(t=e||0,e=0),n=n||1;for(var r=Math.max(Math.ceil((t-e)/n),0),i=Array(r),o=0;o<r;o++,e+=n)i[o]=e;return i};var D=function(e,t,n,r,i){if(!(r instanceof t))return e.apply(n,i);var o=C(e.prototype),s=e.apply(o,i);return S.isObject(s)?s:o};S.bind=function(e,t){if(w&&e.bind===w)return w.apply(e,v.call(arguments,1));if(!S.isFunction(e))throw new TypeError("Bind must be called on a function");var n=v.call(arguments,2);return function r(){return D(e,r,t,this,n.concat(v.call(arguments)))}},S.partial=function(e){var t=v.call(arguments,1);return function n(){for(var r=0,i=t.length,o=Array(i),s=0;s<i;s++)o[s]=t[s]===S?arguments[r++]:t[s];for(;r<arguments.length;)o.push(arguments[r++]);return D(e,n,this,this,o)}},S.bindAll=function(e){var t,n,r=arguments.length;if(r<=1)throw new Error("bindAll must be passed function names");for(t=1;t<r;t++)n=arguments[t],e[n]=S.bind(e[n],e);return e},S.memoize=function(e,t){var n=function n(r){var i=n.cache,o=""+(t?t.apply(this,arguments):r);return S.has(i,o)||(i[o]=e.apply(this,arguments)),i[o]};return n.cache={},n},S.delay=function(e,t){var n=v.call(arguments,2);return setTimeout(function(){return e.apply(null,n)},t)},S.defer=S.partial(S.delay,S,1),S.throttle=function(e,t,n){var r,i,o,s=null,a=0;n||(n={});var u=function(){a=!1===n.leading?0:S.now(),s=null,o=e.apply(r,i),s||(r=i=null)};return function(){var c=S.now();a||!1!==n.leading||(a=c);var l=t-(c-a);return r=this,i=arguments,l<=0||l>t?(s&&(clearTimeout(s),s=null),a=c,o=e.apply(r,i),s||(r=i=null)):s||!1===n.trailing||(s=setTimeout(u,l)),o}},S.debounce=function(e,t,n){var r,i,o,s,a,u=function u(){var c=S.now()-s;c<t&&c>=0?r=setTimeout(u,t-c):(r=null,n||(a=e.apply(o,i),r||(o=i=null)))};return function(){o=this,i=arguments,s=S.now();var c=n&&!r;return r||(r=setTimeout(u,t)),c&&(a=e.apply(o,i),o=i=null),a}},S.wrap=function(e,t){return S.partial(t,e)},S.negate=function(e){return function(){return!e.apply(this,arguments)}},S.compose=function(){var e=arguments,t=e.length-1;return function(){for(var n=t,r=e[t].apply(this,arguments);n--;)r=e[n].call(this,r);return r}},S.after=function(e,t){return function(){if(--e<1)return t.apply(this,arguments)}},S.before=function(e,t){var n;return function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=null),n}},S.once=S.partial(S.before,2);var L=!{toString:null}.propertyIsEnumerable("toString"),q=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];S.keys=function(e){if(!S.isObject(e))return[];if(b)return b(e);var t=[];for(var n in e)S.has(e,n)&&t.push(n);return L&&u(e,t),t},S.allKeys=function(e){if(!S.isObject(e))return[];var t=[];for(var n in e)t.push(n);return L&&u(e,t),t},S.values=function(e){for(var t=S.keys(e),n=t.length,r=Array(n),i=0;i<n;i++)r[i]=e[t[i]];return r},S.mapObject=function(e,t,n){t=_(t,n);for(var r,i=S.keys(e),o=i.length,s={},a=0;a<o;a++)r=i[a],s[r]=t(e[r],r,e);return s},S.pairs=function(e){for(var t=S.keys(e),n=t.length,r=Array(n),i=0;i<n;i++)r[i]=[t[i],e[t[i]]];return r},S.invert=function(e){for(var t={},n=S.keys(e),r=0,i=n.length;r<i;r++)t[e[n[r]]]=n[r];return t},S.functions=S.methods=function(e){var t=[];for(var n in e)S.isFunction(e[n])&&t.push(n);return t.sort()},S.extend=A(S.allKeys),S.extendOwn=S.assign=A(S.keys),S.findKey=function(e,t,n){t=_(t,n);for(var r,i=S.keys(e),o=0,s=i.length;o<s;o++)if(r=i[o],t(e[r],r,e))return r},S.pick=function(e,t,n){var r,i,o={},s=e;if(null==s)return o;S.isFunction(t)?(i=S.allKeys(s),r=T(t,n)):(i=M(arguments,!1,!1,1),r=function(e,t,n){return t in n},s=Object(s));for(var a=0,u=i.length;a<u;a++){var c=i[a],l=s[c];r(l,c,s)&&(o[c]=l)}return o},S.omit=function(e,t,n){if(S.isFunction(t))t=S.negate(t);else{var r=S.map(M(arguments,!1,!1,1),String);t=function(e,t){return!S.contains(r,t)}}return S.pick(e,t,n)},S.defaults=A(S.allKeys,!0),S.create=function(e,t){var n=C(e);return t&&S.extendOwn(n,t),n},S.clone=function(e){return S.isObject(e)?S.isArray(e)?e.slice():S.extend({},e):e},S.tap=function(e,t){return t(e),e},S.isMatch=function(e,t){var n=S.keys(t),r=n.length;if(null==e)return!r;for(var i=Object(e),o=0;o<r;o++){var s=n[o];if(t[s]!==i[s]||!(s in i))return!1}return!0};var I=function e(t,n,r,i){if(t===n)return 0!==t||1/t==1/n;if(null==t||null==n)return t===n;t instanceof S&&(t=t._wrapped),n instanceof S&&(n=n._wrapped);var s=y.call(t);if(s!==y.call(n))return!1;switch(s){case"[object RegExp]":case"[object String]":return""+t==""+n;case"[object Number]":return+t!=+t?+n!=+n:0==+t?1/+t==1/n:+t==+n;case"[object Date]":case"[object Boolean]":return+t==+n}var a="[object Array]"===s;if(!a){if("object"!=(void 0===t?"undefined":o(t))||"object"!=(void 0===n?"undefined":o(n)))return!1;var u=t.constructor,c=n.constructor;if(u!==c&&!(S.isFunction(u)&&u instanceof u&&S.isFunction(c)&&c instanceof c)&&"constructor"in t&&"constructor"in n)return!1}r=r||[],i=i||[];for(var l=r.length;l--;)if(r[l]===t)return i[l]===n;if(r.push(t),i.push(n),a){if((l=t.length)!==n.length)return!1;for(;l--;)if(!e(t[l],n[l],r,i))return!1}else{var f,h=S.keys(t);if(l=h.length,S.keys(n).length!==l)return!1;for(;l--;)if(f=h[l],!S.has(n,f)||!e(t[f],n[f],r,i))return!1}return r.pop(),i.pop(),!0};S.isEqual=function(e,t){return I(e,t)},S.isEmpty=function(e){return null==e||(N(e)&&(S.isArray(e)||S.isString(e)||S.isArguments(e))?0===e.length:0===S.keys(e).length)},S.isElement=function(e){return!(!e||1!==e.nodeType)},S.isArray=m||function(e){return"[object Array]"===y.call(e)},S.isObject=function(e){var t=void 0===e?"undefined":o(e);return"function"===t||"object"===t&&!!e},S.each(["Arguments","Function","String","Number","Date","RegExp","Error"],function(e){S["is"+e]=function(t){return y.call(t)==="[object "+e+"]"}}),S.isArguments(arguments)||(S.isArguments=function(e){return S.has(e,"callee")}),"function"!=typeof/./&&"object"!=("undefined"==typeof Int8Array?"undefined":o(Int8Array))&&(S.isFunction=function(e){return"function"==typeof e||!1}),S.isFinite=function(e){return isFinite(e)&&!isNaN(parseFloat(e))},S.isNaN=function(e){return S.isNumber(e)&&e!==+e},S.isBoolean=function(e){return!0===e||!1===e||"[object Boolean]"===y.call(e)},S.isNull=function(e){return null===e},S.isUndefined=function(e){return void 0===e},S.has=function(e,t){return null!=e&&g.call(e,t)},S.noConflict=function(){return c._=l,this},S.identity=function(e){return e},S.constant=function(e){return function(){return e}},S.noop=function(){},S.property=k,S.propertyOf=function(e){return null==e?function(){}:function(t){return e[t]}},S.matcher=S.matches=function(e){return e=S.extendOwn({},e),function(t){return S.isMatch(t,e)}},S.times=function(e,t,n){var r=Array(Math.max(0,e));t=T(t,n,1);for(var i=0;i<e;i++)r[i]=t(i);return r},S.random=function(e,t){return null==t&&(t=e,e=0),e+Math.floor(Math.random()*(t-e+1))},S.now=Date.now||function(){return(new Date).getTime()};var F={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},P=S.invert(F),$=function(e){var t=function(t){return e[t]},n="(?:"+S.keys(e).join("|")+")",r=RegExp(n),i=RegExp(n,"g");return function(e){return e=null==e?"":""+e,r.test(e)?e.replace(i,t):e}};S.escape=$(F),S.unescape=$(P),S.result=function(e,t,n){var r=null==e?void 0:e[t];return void 0===r&&(r=n),S.isFunction(r)?r.call(e):r};var H=0;S.uniqueId=function(e){var t=++H+"";return e?e+t:t},S.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var W=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},V=/\\|'|\r|\n|\u2028|\u2029/g,U=function(e){return"\\"+B[e]};S.template=function(e,t,n){!t&&n&&(t=n),t=S.defaults({},t,S.templateSettings);var r=RegExp([(t.escape||W).source,(t.interpolate||W).source,(t.evaluate||W).source].join("|")+"|$","g"),i=0,o="__p+='";e.replace(r,function(t,n,r,s,a){return o+=e.slice(i,a).replace(V,U),i=a+t.length,n?o+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?o+="'+\n((__t=("+r+"))==null?'':__t)+\n'":s&&(o+="';\n"+s+"\n__p+='"),t}),o+="';\n",t.variable||(o="with(obj||{}){\n"+o+"}\n"),o="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+o+"return __p;\n";try{var s=new Function(t.variable||"obj","_",o)}catch(e){throw e.source=o,e}var a=function(e){return s.call(this,e,S)};return a.source="function("+(t.variable||"obj")+"){\n"+o+"}",a},S.chain=function(e){var t=S(e);return t._chain=!0,t};var z=function(e,t){return e._chain?S(t).chain():t};S.mixin=function(e){S.each(S.functions(e),function(t){var n=S[t]=e[t];S.prototype[t]=function(){var e=[this._wrapped];return p.apply(e,arguments),z(this,n.apply(S,e))}})},S.mixin(S),S.each(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=f[e];S.prototype[e]=function(){var n=this._wrapped;return t.apply(n,arguments),"shift"!==e&&"splice"!==e||0!==n.length||delete n[0],z(this,n)}}),S.each(["concat","join","slice"],function(e){var t=f[e];S.prototype[e]=function(){return z(this,t.apply(this._wrapped,arguments))}}),S.prototype.value=function(){return this._wrapped},S.prototype.valueOf=S.prototype.toJSON=S.prototype.value,S.prototype.toString=function(){return""+this._wrapped},r=[],void 0!==(i=function(){return S}.apply(t,r))&&(e.exports=i)}).call(void 0)},function(e,t,n){"use strict";(function(e){var n,r,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};/*!
 * jQuery JavaScript Library v2.2.4
 * http://jquery.com/
 *
 * Includes Sizzle.js
 * http://sizzlejs.com/
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license
 * http://jquery.org/license
 *
 * Date: 2016-05-20T17:23Z
 */
!function(t,n){"object"===i(e)&&"object"===i(e.exports)?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:void 0,function(o,s){function a(e){var t=!!e&&"length"in e&&e.length,n=ce.type(e);return"function"!==n&&!ce.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function u(e,t,n){if(ce.isFunction(t))return ce.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return ce.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(be.test(t))return ce.filter(t,e,n);t=ce.filter(t,e)}return ce.grep(e,function(e){return ie.call(t,e)>-1!==n})}function c(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function l(e){var t={};return ce.each(e.match(Te)||[],function(e,n){t[n]=!0}),t}function f(){ee.removeEventListener("DOMContentLoaded",f),o.removeEventListener("load",f),ce.ready()}function h(){this.expando=ce.expando+h.uid++}function d(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Ne,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:Oe.test(n)?ce.parseJSON(n):n)}catch(e){}je.set(e,t,n)}else n=void 0;return n}function p(e,t,n,r){var i,o=1,s=20,a=r?function(){return r.cur()}:function(){return ce.css(e,t,"")},u=a(),c=n&&n[3]||(ce.cssNumber[t]?"":"px"),l=(ce.cssNumber[t]||"px"!==c&&+u)&&Me.exec(ce.css(e,t));if(l&&l[3]!==c){c=c||l[3],n=n||[],l=+u||1;do{o=o||".5",l/=o,ce.style(e,t,l+c)}while(o!==(o=a()/u)&&1!==o&&--s)}return n&&(l=+l||+u||0,i=n[1]?l+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=l,r.end=i)),i}function v(e,t){var n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&ce.nodeName(e,t)?ce.merge([e],n):n}function y(e,t){for(var n=0,r=e.length;n<r;n++)ke.set(e[n],"globalEval",!t||ke.get(t[n],"globalEval"))}function g(e,t,n,r,i){for(var o,s,a,u,c,l,f=t.createDocumentFragment(),h=[],d=0,p=e.length;d<p;d++)if((o=e[d])||0===o)if("object"===ce.type(o))ce.merge(h,o.nodeType?[o]:o);else if($e.test(o)){for(s=s||f.appendChild(t.createElement("div")),a=(Ie.exec(o)||["",""])[1].toLowerCase(),u=Pe[a]||Pe._default,s.innerHTML=u[1]+ce.htmlPrefilter(o)+u[2],l=u[0];l--;)s=s.lastChild;ce.merge(h,s.childNodes),s=f.firstChild,s.textContent=""}else h.push(t.createTextNode(o));for(f.textContent="",d=0;o=h[d++];)if(r&&ce.inArray(o,r)>-1)i&&i.push(o);else if(c=ce.contains(o.ownerDocument,o),s=v(f.appendChild(o),"script"),c&&y(s),n)for(l=0;o=s[l++];)Fe.test(o.type||"")&&n.push(o);return f}function m(){return!0}function b(){return!1}function w(){try{return ee.activeElement}catch(e){}}function x(e,t,n,r,o,s){var a,u;if("object"===(void 0===t?"undefined":i(t))){"string"!=typeof n&&(r=r||n,n=void 0);for(u in t)x(e,u,n,r,t[u],s);return e}if(null==r&&null==o?(o=n,r=n=void 0):null==o&&("string"==typeof n?(o=r,r=void 0):(o=r,r=n,n=void 0)),!1===o)o=b;else if(!o)return e;return 1===s&&(a=o,o=function(e){return ce().off(e),a.apply(this,arguments)},o.guid=a.guid||(a.guid=ce.guid++)),e.each(function(){ce.event.add(this,t,o,r,n)})}function E(e,t){return ce.nodeName(e,"table")&&ce.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function S(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function T(e){var t=Xe.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _(e,t){var n,r,i,o,s,a,u,c;if(1===t.nodeType){if(ke.hasData(e)&&(o=ke.access(e),s=ke.set(t,o),c=o.events)){delete s.handle,s.events={};for(i in c)for(n=0,r=c[i].length;n<r;n++)ce.event.add(t,i,c[i][n])}je.hasData(e)&&(a=je.access(e),u=ce.extend({},a),je.set(t,u))}}function A(e,t){var n=t.nodeName.toLowerCase();"input"===n&&qe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function C(e,t,n,r){t=ne.apply([],t);var i,o,s,a,u,c,l=0,f=e.length,h=f-1,d=t[0],p=ce.isFunction(d);if(p||f>1&&"string"==typeof d&&!ue.checkClone&&ze.test(d))return e.each(function(i){var o=e.eq(i);p&&(t[0]=d.call(this,i,o.html())),C(o,t,n,r)});if(f&&(i=g(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(s=ce.map(v(i,"script"),S),a=s.length;l<f;l++)u=i,l!==h&&(u=ce.clone(u,!0,!0),a&&ce.merge(s,v(u,"script"))),n.call(e[l],u,l);if(a)for(c=s[s.length-1].ownerDocument,ce.map(s,T),l=0;l<a;l++)u=s[l],Fe.test(u.type||"")&&!ke.access(u,"globalEval")&&ce.contains(c,u)&&(u.src?ce._evalUrl&&ce._evalUrl(u.src):ce.globalEval(u.textContent.replace(Ge,"")))}return e}function k(e,t,n){for(var r,i=t?ce.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||ce.cleanData(v(r)),r.parentNode&&(n&&ce.contains(r.ownerDocument,r)&&y(v(r,"script")),r.parentNode.removeChild(r));return e}function j(e,t){var n=ce(t.createElement(e)).appendTo(t.body),r=ce.css(n[0],"display");return n.detach(),r}function O(e){var t=ee,n=Ye[e];return n||(n=j(e,t),"none"!==n&&n||(Je=(Je||ce("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=Je[0].contentDocument,t.write(),t.close(),n=j(e,t),Je.detach()),Ye[e]=n),n}function N(e,t,n){var r,i,o,s,a=e.style;return n=n||Ze(e),s=n?n.getPropertyValue(t)||n[t]:void 0,""!==s&&void 0!==s||ce.contains(e.ownerDocument,e)||(s=ce.style(e,t)),n&&!ue.pixelMarginRight()&&Ke.test(s)&&Qe.test(t)&&(r=a.width,i=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=s,s=n.width,a.width=r,a.minWidth=i,a.maxWidth=o),void 0!==s?s+"":s}function R(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function M(e){if(e in st)return e;for(var t=e[0].toUpperCase()+e.slice(1),n=ot.length;n--;)if((e=ot[n]+t)in st)return e}function D(e,t,n){var r=Me.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function L(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;o<4;o+=2)"margin"===n&&(s+=ce.css(e,n+De[o],!0,i)),r?("content"===n&&(s-=ce.css(e,"padding"+De[o],!0,i)),"margin"!==n&&(s-=ce.css(e,"border"+De[o]+"Width",!0,i))):(s+=ce.css(e,"padding"+De[o],!0,i),"padding"!==n&&(s+=ce.css(e,"border"+De[o]+"Width",!0,i)));return s}function q(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Ze(e),s="border-box"===ce.css(e,"boxSizing",!1,o);if(i<=0||null==i){if(i=N(e,t,o),(i<0||null==i)&&(i=e.style[t]),Ke.test(i))return i;r=s&&(ue.boxSizingReliable()||i===e.style[t]),i=parseFloat(i)||0}return i+L(e,t,n||(s?"border":"content"),r,o)+"px"}function I(e,t){for(var n,r,i,o=[],s=0,a=e.length;s<a;s++)r=e[s],r.style&&(o[s]=ke.get(r,"olddisplay"),n=r.style.display,t?(o[s]||"none"!==n||(r.style.display=""),""===r.style.display&&Le(r)&&(o[s]=ke.access(r,"olddisplay",O(r.nodeName)))):(i=Le(r),"none"===n&&i||ke.set(r,"olddisplay",i?n:ce.css(r,"display"))));for(s=0;s<a;s++)r=e[s],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[s]||"":"none"));return e}function F(e,t,n,r,i){return new F.prototype.init(e,t,n,r,i)}function P(){return o.setTimeout(function(){at=void 0}),at=ce.now()}function $(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)n=De[r],i["margin"+n]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function H(e,t,n){for(var r,i=(V.tweeners[t]||[]).concat(V.tweeners["*"]),o=0,s=i.length;o<s;o++)if(r=i[o].call(n,t,e))return r}function W(e,t,n){var r,i,o,s,a,u,c,l=this,f={},h=e.style,d=e.nodeType&&Le(e),p=ke.get(e,"fxshow");n.queue||(a=ce._queueHooks(e,"fx"),null==a.unqueued&&(a.unqueued=0,u=a.empty.fire,a.empty.fire=function(){a.unqueued||u()}),a.unqueued++,l.always(function(){l.always(function(){a.unqueued--,ce.queue(e,"fx").length||a.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],c=ce.css(e,"display"),"inline"===("none"===c?ke.get(e,"olddisplay")||O(e.nodeName):c)&&"none"===ce.css(e,"float")&&(h.display="inline-block")),n.overflow&&(h.overflow="hidden",l.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],ct.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(d?"hide":"show")){if("show"!==i||!p||void 0===p[r])continue;d=!0}f[r]=p&&p[r]||ce.style(e,r)}else c=void 0;if(ce.isEmptyObject(f))"inline"===("none"===c?O(e.nodeName):c)&&(h.display=c);else{p?"hidden"in p&&(d=p.hidden):p=ke.access(e,"fxshow",{}),o&&(p.hidden=!d),d?ce(e).show():l.done(function(){ce(e).hide()}),l.done(function(){var t;ke.remove(e,"fxshow");for(t in f)ce.style(e,t,f[t])});for(r in f)s=H(d?p[r]:0,r,l),r in p||(p[r]=s.start,d&&(s.end=s.start,s.start="width"===r||"height"===r?1:0))}}function B(e,t){var n,r,i,o,s;for(n in e)if(r=ce.camelCase(n),i=t[r],o=e[n],ce.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(s=ce.cssHooks[r])&&"expand"in s){o=s.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function V(e,t,n){var r,i,o=0,s=V.prefilters.length,a=ce.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=at||P(),n=Math.max(0,c.startTime+c.duration-t),r=n/c.duration||0,o=1-r,s=0,u=c.tweens.length;s<u;s++)c.tweens[s].run(o);return a.notifyWith(e,[c,o,n]),o<1&&u?n:(a.resolveWith(e,[c]),!1)},c=a.promise({elem:e,props:ce.extend({},t),opts:ce.extend(!0,{specialEasing:{},easing:ce.easing._default},n),originalProperties:t,originalOptions:n,startTime:at||P(),duration:n.duration,tweens:[],createTween:function(t,n){var r=ce.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(r),r},stop:function(t){var n=0,r=t?c.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)c.tweens[n].run(1);return t?(a.notifyWith(e,[c,1,0]),a.resolveWith(e,[c,t])):a.rejectWith(e,[c,t]),this}}),l=c.props;for(B(l,c.opts.specialEasing);o<s;o++)if(r=V.prefilters[o].call(c,e,l,c.opts))return ce.isFunction(r.stop)&&(ce._queueHooks(c.elem,c.opts.queue).stop=ce.proxy(r.stop,r)),r;return ce.map(l,H,c),ce.isFunction(c.opts.start)&&c.opts.start.call(e,c),ce.fx.timer(ce.extend(u,{elem:e,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function U(e){return e.getAttribute&&e.getAttribute("class")||""}function z(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(Te)||[];if(ce.isFunction(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function X(e,t,n,r){function i(a){var u;return o[a]=!0,ce.each(e[a]||[],function(e,a){var c=a(t,n,r);return"string"!=typeof c||s||o[c]?s?!(u=c):void 0:(t.dataTypes.unshift(c),i(c),!1)}),u}var o={},s=e===jt;return i(t.dataTypes[0])||!o["*"]&&i("*")}function G(e,t){var n,r,i=ce.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&ce.extend(!0,e,r),e}function J(e,t,n){for(var r,i,o,s,a=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}s||(s=i)}o=o||s}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Y(e,t,n,r){var i,o,s,a,u,c={},l=e.dataTypes.slice();if(l[1])for(s in e.converters)c[s.toLowerCase()]=e.converters[s];for(o=l.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=l.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(s=c[u+" "+o]||c["* "+o]))for(i in c)if(a=i.split(" "),a[1]===o&&(s=c[u+" "+a[0]]||c["* "+a[0]])){!0===s?s=c[i]:!0!==c[i]&&(o=a[0],l.unshift(a[1]));break}if(!0!==s)if(s&&e.throws)t=s(t);else try{t=s(t)}catch(e){return{state:"parsererror",error:s?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}function Q(e,t,n,r){var o;if(ce.isArray(t))ce.each(t,function(t,o){n||Mt.test(e)?r(e,o):Q(e+"["+("object"===(void 0===o?"undefined":i(o))&&null!=o?t:"")+"]",o,n,r)});else if(n||"object"!==ce.type(t))r(e,t);else for(o in t)Q(e+"["+o+"]",t[o],n,r)}function K(e){return ce.isWindow(e)?e:9===e.nodeType&&e.defaultView}var Z=[],ee=o.document,te=Z.slice,ne=Z.concat,re=Z.push,ie=Z.indexOf,oe={},se=oe.toString,ae=oe.hasOwnProperty,ue={},ce=function e(t,n){return new e.fn.init(t,n)},le=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,fe=/^-ms-/,he=/-([\da-z])/gi,de=function(e,t){return t.toUpperCase()};ce.fn=ce.prototype={jquery:"2.2.4",constructor:ce,selector:"",length:0,toArray:function(){return te.call(this)},get:function(e){return null!=e?e<0?this[e+this.length]:this[e]:te.call(this)},pushStack:function(e){var t=ce.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e){return ce.each(this,e)},map:function(e){return this.pushStack(ce.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(te.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:re,sort:Z.sort,splice:Z.splice},ce.extend=ce.fn.extend=function(){var e,t,n,r,o,s,a=arguments[0]||{},u=1,c=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[u]||{},u++),"object"===(void 0===a?"undefined":i(a))||ce.isFunction(a)||(a={}),u===c&&(a=this,u--);u<c;u++)if(null!=(e=arguments[u]))for(t in e)n=a[t],r=e[t],a!==r&&(l&&r&&(ce.isPlainObject(r)||(o=ce.isArray(r)))?(o?(o=!1,s=n&&ce.isArray(n)?n:[]):s=n&&ce.isPlainObject(n)?n:{},a[t]=ce.extend(l,s,r)):void 0!==r&&(a[t]=r));return a},ce.extend({expando:"jQuery"+("2.2.4"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===ce.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){var t=e&&e.toString();return!ce.isArray(e)&&t-parseFloat(t)+1>=0},isPlainObject:function(e){var t;if("object"!==ce.type(e)||e.nodeType||ce.isWindow(e))return!1;if(e.constructor&&!ae.call(e,"constructor")&&!ae.call(e.constructor.prototype||{},"isPrototypeOf"))return!1;for(t in e);return void 0===t||ae.call(e,t)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},type:function(e){return null==e?e+"":"object"===(void 0===e?"undefined":i(e))||"function"==typeof e?oe[se.call(e)]||"object":void 0===e?"undefined":i(e)},globalEval:function(e){var t,n=eval;(e=ce.trim(e))&&(1===e.indexOf("use strict")?(t=ee.createElement("script"),t.text=e,ee.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(fe,"ms-").replace(he,de)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var n,r=0;if(a(e))for(n=e.length;r<n&&!1!==t.call(e[r],r,e[r]);r++);else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(le,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(a(Object(e))?ce.merge(n,"string"==typeof e?[e]:e):re.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:ie.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,s=!n;i<o;i++)!t(e[i],i)!==s&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,s=[];if(a(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return ne.apply([],s)},guid:1,proxy:function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),ce.isFunction(e))return r=te.call(arguments,2),i=function(){return e.apply(t||this,r.concat(te.call(arguments)))},i.guid=e.guid=e.guid||ce.guid++,i},now:Date.now,support:ue}),"function"==typeof Symbol&&(ce.fn[Symbol.iterator]=Z[Symbol.iterator]),ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){oe["[object "+t+"]"]=t.toLowerCase()});var pe=/*!
  * Sizzle CSS Selector Engine v2.2.1
  * http://sizzlejs.com/
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license
  * http://jquery.org/license
  *
  * Date: 2015-10-17
  */
function(e){function t(e,t,n,r){var i,o,s,a,c,f,h,d,p=t&&t.ownerDocument,v=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==v&&9!==v&&11!==v)return n;if(!r&&((t?t.ownerDocument||t:F)!==O&&j(t),t=t||O,R)){if(11!==v&&(f=ve.exec(e)))if(i=f[1]){if(9===v){if(!(s=t.getElementById(i)))return n;if(s.id===i)return n.push(s),n}else if(p&&(s=p.getElementById(i))&&q(t,s)&&s.id===i)return n.push(s),n}else{if(f[2])return Y.apply(n,t.getElementsByTagName(e)),n;if((i=f[3])&&b.getElementsByClassName&&t.getElementsByClassName)return Y.apply(n,t.getElementsByClassName(i)),n}if(b.qsa&&!B[e+" "]&&(!M||!M.test(e))){if(1!==v)p=t,d=e;else if("object"!==t.nodeName.toLowerCase()){for((a=t.getAttribute("id"))?a=a.replace(ge,"\\$&"):t.setAttribute("id",a=I),h=S(e),o=h.length,c=le.test(a)?"#"+a:"[id='"+a+"']";o--;)h[o]=c+" "+l(h[o]);d=h.join(","),p=ye.test(e)&&u(t.parentNode)||t}if(d)try{return Y.apply(n,p.querySelectorAll(d)),n}catch(e){}finally{a===I&&t.removeAttribute("id")}}}return _(e.replace(oe,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>w.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[I]=!0,e}function i(e){var t=O.createElement("div");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)w.attrHandle[n[r]]=t}function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||U)-(~e.sourceIndex||U);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function a(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),s=o.length;s--;)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}function u(e){return e&&void 0!==e.getElementsByTagName&&e}function c(){}function l(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function f(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=$++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,s){var a,u,c,l=[P,o];if(s){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,s))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(c=t[I]||(t[I]={}),u=c[t.uniqueID]||(c[t.uniqueID]={}),(a=u[r])&&a[0]===P&&a[1]===o)return l[2]=a[2];if(u[r]=l,l[2]=e(t,n,s))return!0}}}function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function d(e,n,r){for(var i=0,o=n.length;i<o;i++)t(e,n[i],r);return r}function p(e,t,n,r,i){for(var o,s=[],a=0,u=e.length,c=null!=t;a<u;a++)(o=e[a])&&(n&&!n(o,r,i)||(s.push(o),c&&t.push(a)));return s}function v(e,t,n,i,o,s){return i&&!i[I]&&(i=v(i)),o&&!o[I]&&(o=v(o,s)),r(function(r,s,a,u){var c,l,f,h=[],v=[],y=s.length,g=r||d(t||"*",a.nodeType?[a]:a,[]),m=!e||!r&&t?g:p(g,h,e,a,u),b=n?o||(r?e:y||i)?[]:s:m;if(n&&n(m,b,a,u),i)for(c=p(b,v),i(c,[],a,u),l=c.length;l--;)(f=c[l])&&(b[v[l]]=!(m[v[l]]=f));if(r){if(o||e){if(o){for(c=[],l=b.length;l--;)(f=b[l])&&c.push(m[l]=f);o(null,b=[],c,u)}for(l=b.length;l--;)(f=b[l])&&(c=o?K(r,f):h[l])>-1&&(r[c]=!(s[c]=f))}}else b=p(b===s?b.splice(y,b.length):b),o?o(null,s,b,u):Y.apply(s,b)})}function y(e){for(var t,n,r,i=e.length,o=w.relative[e[0].type],s=o||w.relative[" "],a=o?1:0,u=f(function(e){return e===t},s,!0),c=f(function(e){return K(t,e)>-1},s,!0),d=[function(e,n,r){var i=!o&&(r||n!==A)||((t=n).nodeType?u(e,n,r):c(e,n,r));return t=null,i}];a<i;a++)if(n=w.relative[e[a].type])d=[f(h(d),n)];else{if(n=w.filter[e[a].type].apply(null,e[a].matches),n[I]){for(r=++a;r<i&&!w.relative[e[r].type];r++);return v(a>1&&h(d),a>1&&l(e.slice(0,a-1).concat({value:" "===e[a-2].type?"*":""})).replace(oe,"$1"),n,a<r&&y(e.slice(a,r)),r<i&&y(e=e.slice(r)),r<i&&l(e))}d.push(n)}return h(d)}function g(e,n){var i=n.length>0,o=e.length>0,s=function(r,s,a,u,c){var l,f,h,d=0,v="0",y=r&&[],g=[],m=A,b=r||o&&w.find.TAG("*",c),x=P+=null==m?1:Math.random()||.1,E=b.length;for(c&&(A=s===O||s||c);v!==E&&null!=(l=b[v]);v++){if(o&&l){for(f=0,s||l.ownerDocument===O||(j(l),a=!R);h=e[f++];)if(h(l,s||O,a)){u.push(l);break}c&&(P=x)}i&&((l=!h&&l)&&d--,r&&y.push(l))}if(d+=v,i&&v!==d){for(f=0;h=n[f++];)h(y,g,s,a);if(r){if(d>0)for(;v--;)y[v]||g[v]||(g[v]=G.call(u));g=p(g)}Y.apply(u,g),c&&!r&&g.length>0&&d+n.length>1&&t.uniqueSort(u)}return c&&(P=x,A=m),y};return i?r(s):s}var m,b,w,x,E,S,T,_,A,C,k,j,O,N,R,M,D,L,q,I="sizzle"+1*new Date,F=e.document,P=0,$=0,H=n(),W=n(),B=n(),V=function(e,t){return e===t&&(k=!0),0},U=1<<31,z={}.hasOwnProperty,X=[],G=X.pop,J=X.push,Y=X.push,Q=X.slice,K=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},Z="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ee="[\\x20\\t\\r\\n\\f]",te="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ne="\\["+ee+"*("+te+")(?:"+ee+"*([*^$|!~]?=)"+ee+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+te+"))|)"+ee+"*\\]",re=":("+te+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ne+")*)|.*)\\)|)",ie=new RegExp(ee+"+","g"),oe=new RegExp("^"+ee+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ee+"+$","g"),se=new RegExp("^"+ee+"*,"+ee+"*"),ae=new RegExp("^"+ee+"*([>+~]|"+ee+")"+ee+"*"),ue=new RegExp("="+ee+"*([^\\]'\"]*?)"+ee+"*\\]","g"),ce=new RegExp(re),le=new RegExp("^"+te+"$"),fe={ID:new RegExp("^#("+te+")"),CLASS:new RegExp("^\\.("+te+")"),TAG:new RegExp("^("+te+"|[*])"),ATTR:new RegExp("^"+ne),PSEUDO:new RegExp("^"+re),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ee+"*(even|odd|(([+-]|)(\\d*)n|)"+ee+"*(?:([+-]|)"+ee+"*(\\d+)|))"+ee+"*\\)|)","i"),bool:new RegExp("^(?:"+Z+")$","i"),needsContext:new RegExp("^"+ee+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ee+"*((?:-\\d)?\\d*)"+ee+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,de=/^h\d$/i,pe=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,ge=/'|\\/g,me=new RegExp("\\\\([\\da-f]{1,6}"+ee+"?|("+ee+")|.)","ig"),be=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},we=function(){j()};try{Y.apply(X=Q.call(F.childNodes),F.childNodes),X[F.childNodes.length].nodeType}catch(e){Y={apply:X.length?function(e,t){J.apply(e,Q.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}b=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},j=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:F;return r!==O&&9===r.nodeType&&r.documentElement?(O=r,N=O.documentElement,R=!E(O),(n=O.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",we,!1):n.attachEvent&&n.attachEvent("onunload",we)),b.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),b.getElementsByTagName=i(function(e){return e.appendChild(O.createComment("")),!e.getElementsByTagName("*").length}),b.getElementsByClassName=pe.test(O.getElementsByClassName),b.getById=i(function(e){return N.appendChild(e).id=I,!O.getElementsByName||!O.getElementsByName(I).length}),b.getById?(w.find.ID=function(e,t){if(void 0!==t.getElementById&&R){var n=t.getElementById(e);return n?[n]:[]}},w.filter.ID=function(e){var t=e.replace(me,be);return function(e){return e.getAttribute("id")===t}}):(delete w.find.ID,w.filter.ID=function(e){var t=e.replace(me,be);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),w.find.TAG=b.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):b.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},w.find.CLASS=b.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&R)return t.getElementsByClassName(e)},D=[],M=[],(b.qsa=pe.test(O.querySelectorAll))&&(i(function(e){N.appendChild(e).innerHTML="<a id='"+I+"'></a><select id='"+I+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&M.push("[*^$]="+ee+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||M.push("\\["+ee+"*(?:value|"+Z+")"),e.querySelectorAll("[id~="+I+"-]").length||M.push("~="),e.querySelectorAll(":checked").length||M.push(":checked"),e.querySelectorAll("a#"+I+"+*").length||M.push(".#.+[+~]")}),i(function(e){var t=O.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&M.push("name"+ee+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||M.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),M.push(",.*:")})),(b.matchesSelector=pe.test(L=N.matches||N.webkitMatchesSelector||N.mozMatchesSelector||N.oMatchesSelector||N.msMatchesSelector))&&i(function(e){b.disconnectedMatch=L.call(e,"div"),L.call(e,"[s!='']:x"),D.push("!=",re)}),M=M.length&&new RegExp(M.join("|")),D=D.length&&new RegExp(D.join("|")),t=pe.test(N.compareDocumentPosition),q=t||pe.test(N.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return k=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!b.sortDetached&&t.compareDocumentPosition(e)===n?e===O||e.ownerDocument===F&&q(F,e)?-1:t===O||t.ownerDocument===F&&q(F,t)?1:C?K(C,e)-K(C,t):0:4&n?-1:1)}:function(e,t){if(e===t)return k=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],u=[t];if(!i||!o)return e===O?-1:t===O?1:i?-1:o?1:C?K(C,e)-K(C,t):0;if(i===o)return s(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?s(a[r],u[r]):a[r]===F?-1:u[r]===F?1:0},O):O},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==O&&j(e),n=n.replace(ue,"='$1']"),b.matchesSelector&&R&&!B[n+" "]&&(!D||!D.test(n))&&(!M||!M.test(n)))try{var r=L.call(e,n);if(r||b.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return t(n,O,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==O&&j(e),q(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==O&&j(e);var n=w.attrHandle[t.toLowerCase()],r=n&&z.call(w.attrHandle,t.toLowerCase())?n(e,t,!R):void 0;return void 0!==r?r:b.attributes||!R?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(k=!b.detectDuplicates,C=!b.sortStable&&e.slice(0),e.sort(V),k){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return C=null,e},x=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=x(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=x(t);return n},w=t.selectors={cacheLength:50,createPseudo:r,match:fe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(me,be),e[3]=(e[3]||e[4]||e[5]||"").replace(me,be),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return fe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&ce.test(n)&&(t=S(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(me,be).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=H[e+" "];return t||(t=new RegExp("(^|"+ee+")"+e+"("+ee+"|$)"))&&H(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ie," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var c,l,f,h,d,p,v=o!==s?"nextSibling":"previousSibling",y=t.parentNode,g=a&&t.nodeName.toLowerCase(),m=!u&&!a,b=!1;if(y){if(o){for(;v;){for(h=t;h=h[v];)if(a?h.nodeName.toLowerCase()===g:1===h.nodeType)return!1;p=v="only"===e&&!p&&"nextSibling"}return!0}if(p=[s?y.firstChild:y.lastChild],s&&m){for(h=y,f=h[I]||(h[I]={}),l=f[h.uniqueID]||(f[h.uniqueID]={}),c=l[e]||[],d=c[0]===P&&c[1],b=d&&c[2],h=d&&y.childNodes[d];h=++d&&h&&h[v]||(b=d=0)||p.pop();)if(1===h.nodeType&&++b&&h===t){l[e]=[P,d,b];break}}else if(m&&(h=t,f=h[I]||(h[I]={}),l=f[h.uniqueID]||(f[h.uniqueID]={}),c=l[e]||[],d=c[0]===P&&c[1],b=d),!1===b)for(;(h=++d&&h&&h[v]||(b=d=0)||p.pop())&&((a?h.nodeName.toLowerCase()!==g:1!==h.nodeType)||!++b||(m&&(f=h[I]||(h[I]={}),l=f[h.uniqueID]||(f[h.uniqueID]={}),l[e]=[P,b]),h!==t)););return(b-=i)===r||b%r==0&&b/r>=0}}},PSEUDO:function(e,n){var i,o=w.pseudos[e]||w.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[I]?o(n):o.length>1?(i=[e,e,"",n],w.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),s=i.length;s--;)r=K(e,i[s]),e[r]=!(t[r]=i[s])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=T(e.replace(oe,"$1"));return i[I]?r(function(e,t,n,r){for(var o,s=i(e,null,r,[]),a=e.length;a--;)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(me,be),function(t){return(t.textContent||t.innerText||x(t)).indexOf(e)>-1}}),lang:r(function(e){return le.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(me,be).toLowerCase(),function(t){var n;do{if(n=R?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===N},focus:function(e){return e===O.activeElement&&(!O.hasFocus||O.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return!1===e.disabled},disabled:function(e){return!0===e.disabled},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return de.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:a(function(){return[0]}),last:a(function(e,t){return[t-1]}),eq:a(function(e,t,n){return[n<0?n+t:n]}),even:a(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:a(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:a(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:a(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},w.pseudos.nth=w.pseudos.eq;for(m in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[m]=function(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}(m);for(m in{submit:!0,reset:!0})w.pseudos[m]=function(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}(m);return c.prototype=w.filters=w.pseudos,w.setFilters=new c,S=t.tokenize=function(e,n){var r,i,o,s,a,u,c,l=W[e+" "];if(l)return n?0:l.slice(0);for(a=e,u=[],c=w.preFilter;a;){r&&!(i=se.exec(a))||(i&&(a=a.slice(i[0].length)||a),u.push(o=[])),r=!1,(i=ae.exec(a))&&(r=i.shift(),o.push({value:r,type:i[0].replace(oe," ")}),a=a.slice(r.length));for(s in w.filter)!(i=fe[s].exec(a))||c[s]&&!(i=c[s](i))||(r=i.shift(),o.push({value:r,type:s,matches:i}),a=a.slice(r.length));if(!r)break}return n?a.length:a?t.error(e):W(e,u).slice(0)},T=t.compile=function(e,t){var n,r=[],i=[],o=B[e+" "];if(!o){for(t||(t=S(e)),n=t.length;n--;)o=y(t[n]),o[I]?r.push(o):i.push(o);o=B(e,g(i,r)),o.selector=e}return o},_=t.select=function(e,t,n,r){var i,o,s,a,c,f="function"==typeof e&&e,h=!r&&S(e=f.selector||e);if(n=n||[],1===h.length){if(o=h[0]=h[0].slice(0),o.length>2&&"ID"===(s=o[0]).type&&b.getById&&9===t.nodeType&&R&&w.relative[o[1].type]){if(!(t=(w.find.ID(s.matches[0].replace(me,be),t)||[])[0]))return n;f&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=fe.needsContext.test(e)?0:o.length;i--&&(s=o[i],!w.relative[a=s.type]);)if((c=w.find[a])&&(r=c(s.matches[0].replace(me,be),ye.test(o[0].type)&&u(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&l(o)))return Y.apply(n,r),n;break}}return(f||T(e,h))(r,t,!R,n,!t||ye.test(e)&&u(t.parentNode)||t),n},b.sortStable=I.split("").sort(V).join("")===I,b.detectDuplicates=!!k,j(),b.sortDetached=i(function(e){return 1&e.compareDocumentPosition(O.createElement("div"))}),i(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),b.attributes&&i(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(Z,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(o);ce.find=pe,ce.expr=pe.selectors,ce.expr[":"]=ce.expr.pseudos,ce.uniqueSort=ce.unique=pe.uniqueSort,ce.text=pe.getText,ce.isXMLDoc=pe.isXML,ce.contains=pe.contains;var ve=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&ce(e).is(n))break;r.push(e)}return r},ye=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},ge=ce.expr.match.needsContext,me=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,be=/^.[^:#\[\.,]*$/;ce.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?ce.find.matchesSelector(r,e)?[r]:[]:ce.find.matches(e,ce.grep(t,function(e){return 1===e.nodeType}))},ce.fn.extend({find:function(e){var t,n=this.length,r=[],i=this;if("string"!=typeof e)return this.pushStack(ce(e).filter(function(){for(t=0;t<n;t++)if(ce.contains(i[t],this))return!0}));for(t=0;t<n;t++)ce.find(e,i[t],r);return r=this.pushStack(n>1?ce.unique(r):r),r.selector=this.selector?this.selector+" "+e:e,r},filter:function(e){return this.pushStack(u(this,e||[],!1))},not:function(e){return this.pushStack(u(this,e||[],!0))},is:function(e){return!!u(this,"string"==typeof e&&ge.test(e)?ce(e):e||[],!1).length}});var we,xe=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||we,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:xe.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:ee,!0)),me.test(r[1])&&ce.isPlainObject(t))for(r in t)ce.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=ee.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=ee,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):ce.isFunction(e)?void 0!==n.ready?n.ready(e):e(ce):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),ce.makeArray(e,this))}).prototype=ce.fn,we=ce(ee);var Ee=/^(?:parents|prev(?:Until|All))/,Se={children:!0,contents:!0,next:!0,prev:!0};ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(ce.contains(this,t[e]))return!0})},closest:function(e,t){for(var n,r=0,i=this.length,o=[],s=ge.test(e)||"string"!=typeof e?ce(e,t||this.context):0;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(s?s.index(n)>-1:1===n.nodeType&&ce.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?ce.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?ie.call(ce(e),this[0]):ie.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ce.uniqueSort(ce.merge(this.get(),ce(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ce.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return ve(e,"parentNode")},parentsUntil:function(e,t,n){return ve(e,"parentNode",n)},next:function(e){return c(e,"nextSibling")},prev:function(e){return c(e,"previousSibling")},nextAll:function(e){return ve(e,"nextSibling")},prevAll:function(e){return ve(e,"previousSibling")},nextUntil:function(e,t,n){return ve(e,"nextSibling",n)},prevUntil:function(e,t,n){return ve(e,"previousSibling",n)},siblings:function(e){return ye((e.parentNode||{}).firstChild,e)},children:function(e){return ye(e.firstChild)},contents:function(e){return e.contentDocument||ce.merge([],e.childNodes)}},function(e,t){ce.fn[e]=function(n,r){var i=ce.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=ce.filter(r,i)),this.length>1&&(Se[e]||ce.uniqueSort(i),Ee.test(e)&&i.reverse()),this.pushStack(i)}});var Te=/\S+/g;ce.Callbacks=function(e){e="string"==typeof e?l(e):ce.extend({},e);var t,n,r,i,o=[],s=[],a=-1,u=function(){for(i=e.once,r=t=!0;s.length;a=-1)for(n=s.shift();++a<o.length;)!1===o[a].apply(n[0],n[1])&&e.stopOnFalse&&(a=o.length,n=!1);e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},c={add:function(){return o&&(n&&!t&&(a=o.length-1,s.push(n)),function t(n){ce.each(n,function(n,r){ce.isFunction(r)?e.unique&&c.has(r)||o.push(r):r&&r.length&&"string"!==ce.type(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return ce.each(arguments,function(e,t){for(var n;(n=ce.inArray(t,o,n))>-1;)o.splice(n,1),n<=a&&a--}),this},has:function(e){return e?ce.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=s=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=s=[],n||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],s.push(n),t||u()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},ce.extend({Deferred:function(e){var t=[["resolve","done",ce.Callbacks("once memory"),"resolved"],["reject","fail",ce.Callbacks("once memory"),"rejected"],["notify","progress",ce.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return ce.Deferred(function(n){ce.each(t,function(t,o){var s=ce.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&ce.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?ce.extend(e,r):r}},i={};return r.pipe=r.then,ce.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=te.call(arguments),s=o.length,a=1!==s||e&&ce.isFunction(e.promise)?s:0,u=1===a?e:ce.Deferred(),c=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?te.call(arguments):i,r===t?u.notifyWith(n,r):--a||u.resolveWith(n,r)}};if(s>1)for(t=new Array(s),n=new Array(s),r=new Array(s);i<s;i++)o[i]&&ce.isFunction(o[i].promise)?o[i].promise().progress(c(i,n,t)).done(c(i,r,o)).fail(u.reject):--a;return a||u.resolveWith(r,o),u.promise()}});var _e;ce.fn.ready=function(e){return ce.ready.promise().done(e),this},ce.extend({isReady:!1,readyWait:1,holdReady:function(e){e?ce.readyWait++:ce.ready(!0)},ready:function(e){(!0===e?--ce.readyWait:ce.isReady)||(ce.isReady=!0,!0!==e&&--ce.readyWait>0||(_e.resolveWith(ee,[ce]),ce.fn.triggerHandler&&(ce(ee).triggerHandler("ready"),ce(ee).off("ready"))))}}),ce.ready.promise=function(e){return _e||(_e=ce.Deferred(),"complete"===ee.readyState||"loading"!==ee.readyState&&!ee.documentElement.doScroll?o.setTimeout(ce.ready):(ee.addEventListener("DOMContentLoaded",f),o.addEventListener("load",f))),_e.promise(e)},ce.ready.promise();var Ae=function e(t,n,r,i,o,s,a){var u=0,c=t.length,l=null==r;if("object"===ce.type(r)){o=!0;for(u in r)e(t,n,u,r[u],!0,s,a)}else if(void 0!==i&&(o=!0,ce.isFunction(i)||(a=!0),l&&(a?(n.call(t,i),n=null):(l=n,n=function(e,t,n){return l.call(ce(e),n)})),n))for(;u<c;u++)n(t[u],r,a?i:i.call(t[u],u,n(t[u],r)));return o?t:l?n.call(t):c?n(t[0],r):s},Ce=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};h.uid=1,h.prototype={register:function(e,t){var n=t||{};return e.nodeType?e[this.expando]=n:Object.defineProperty(e,this.expando,{value:n,writable:!0,configurable:!0}),e[this.expando]},cache:function(e){if(!Ce(e))return{};var t=e[this.expando];return t||(t={},Ce(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[t]=n;else for(r in t)i[r]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][t]},access:function(e,t,n){var r;return void 0===t||t&&"string"==typeof t&&void 0===n?(r=this.get(e,t),void 0!==r?r:this.get(e,ce.camelCase(t))):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r,i,o=e[this.expando];if(void 0!==o){if(void 0===t)this.register(e);else{ce.isArray(t)?r=t.concat(t.map(ce.camelCase)):(i=ce.camelCase(t),t in o?r=[t,i]:(r=i,r=r in o?[r]:r.match(Te)||[])),n=r.length;for(;n--;)delete o[r[n]]}(void 0===t||ce.isEmptyObject(o))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!ce.isEmptyObject(t)}};var ke=new h,je=new h,Oe=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Ne=/[A-Z]/g;ce.extend({hasData:function(e){return je.hasData(e)||ke.hasData(e)},data:function(e,t,n){return je.access(e,t,n)},removeData:function(e,t){je.remove(e,t)},_data:function(e,t,n){return ke.access(e,t,n)},_removeData:function(e,t){ke.remove(e,t)}}),ce.fn.extend({data:function(e,t){var n,r,o,s=this[0],a=s&&s.attributes;if(void 0===e){if(this.length&&(o=je.get(s),1===s.nodeType&&!ke.get(s,"hasDataAttrs"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf("data-")&&(r=ce.camelCase(r.slice(5)),d(s,r,o[r])));ke.set(s,"hasDataAttrs",!0)}return o}return"object"===(void 0===e?"undefined":i(e))?this.each(function(){je.set(this,e)}):Ae(this,function(t){var n,r;if(s&&void 0===t){if(void 0!==(n=je.get(s,e)||je.get(s,e.replace(Ne,"-$&").toLowerCase())))return n;if(r=ce.camelCase(e),void 0!==(n=je.get(s,r)))return n;if(void 0!==(n=d(s,r,void 0)))return n}else r=ce.camelCase(e),this.each(function(){var n=je.get(this,r);je.set(this,r,t),e.indexOf("-")>-1&&void 0!==n&&je.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){je.remove(this,e)})}}),ce.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=ke.get(e,t),n&&(!r||ce.isArray(n)?r=ke.access(e,t,ce.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=ce.queue(e,t),r=n.length,i=n.shift(),o=ce._queueHooks(e,t),s=function(){ce.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return ke.get(e,n)||ke.access(e,n,{empty:ce.Callbacks("once memory").add(function(){ke.remove(e,[t+"queue",n])})})}}),ce.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?ce.queue(this[0],e):void 0===t?this:this.each(function(){var n=ce.queue(this,e,t);ce._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&ce.dequeue(this,e)})},dequeue:function(e){return this.each(function(){ce.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=ce.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";s--;)(n=ke.get(o[s],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var Re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Me=new RegExp("^(?:([+-])=|)("+Re+")([a-z%]*)$","i"),De=["Top","Right","Bottom","Left"],Le=function(e,t){return e=t||e,"none"===ce.css(e,"display")||!ce.contains(e.ownerDocument,e)},qe=/^(?:checkbox|radio)$/i,Ie=/<([\w:-]+)/,Fe=/^$|\/(?:java|ecma)script/i,Pe={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Pe.optgroup=Pe.option,Pe.tbody=Pe.tfoot=Pe.colgroup=Pe.caption=Pe.thead,Pe.th=Pe.td;var $e=/<|&#?\w+;/;!function(){var e=ee.createDocumentFragment(),t=e.appendChild(ee.createElement("div")),n=ee.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),t.appendChild(n),ue.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="<textarea>x</textarea>",ue.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var He=/^key/,We=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Be=/^([^.]*)(?:\.(.+)|)/;ce.event={global:{},add:function(e,t,n,r,i){var o,s,a,u,c,l,f,h,d,p,v,y=ke.get(e);if(y)for(n.handler&&(o=n,n=o.handler,i=o.selector),n.guid||(n.guid=ce.guid++),(u=y.events)||(u=y.events={}),(s=y.handle)||(s=y.handle=function(t){return void 0!==ce&&ce.event.triggered!==t.type?ce.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(Te)||[""],c=t.length;c--;)a=Be.exec(t[c])||[],d=v=a[1],p=(a[2]||"").split(".").sort(),d&&(f=ce.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=ce.event.special[d]||{},l=ce.extend({type:d,origType:v,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ce.expr.match.needsContext.test(i),namespace:p.join(".")},o),(h=u[d])||(h=u[d]=[],h.delegateCount=0,f.setup&&!1!==f.setup.call(e,r,p,s)||e.addEventListener&&e.addEventListener(d,s)),f.add&&(f.add.call(e,l),l.handler.guid||(l.handler.guid=n.guid)),i?h.splice(h.delegateCount++,0,l):h.push(l),ce.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,s,a,u,c,l,f,h,d,p,v,y=ke.hasData(e)&&ke.get(e);if(y&&(u=y.events)){for(t=(t||"").match(Te)||[""],c=t.length;c--;)if(a=Be.exec(t[c])||[],d=v=a[1],p=(a[2]||"").split(".").sort(),d){for(f=ce.event.special[d]||{},d=(r?f.delegateType:f.bindType)||d,h=u[d]||[],a=a[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=h.length;o--;)l=h[o],!i&&v!==l.origType||n&&n.guid!==l.guid||a&&!a.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(h.splice(o,1),l.selector&&h.delegateCount--,f.remove&&f.remove.call(e,l));s&&!h.length&&(f.teardown&&!1!==f.teardown.call(e,p,y.handle)||ce.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)ce.event.remove(e,d+t[c],n,r,!0);ce.isEmptyObject(u)&&ke.remove(e,"handle events")}},dispatch:function(e){e=ce.event.fix(e);var t,n,r,i,o,s=[],a=te.call(arguments),u=(ke.get(this,"events")||{})[e.type]||[],c=ce.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,e)){for(s=ce.event.handlers.call(this,e,u),t=0;(i=s[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,void 0!==(r=((ce.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a))&&!1===(e.result=r)&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&(!0!==u.disabled||"click"!==e.type)){for(r=[],n=0;n<a;n++)o=t[n],i=o.selector+" ",void 0===r[i]&&(r[i]=o.needsContext?ce(i,this).index(u)>-1:ce.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return a<t.length&&s.push({elem:this,handlers:t.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,o=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||ee,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},fix:function(e){if(e[ce.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];for(s||(this.fixHooks[i]=s=We.test(i)?this.mouseHooks:He.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new ce.Event(o),t=r.length;t--;)n=r[t],e[n]=o[n];return e.target||(e.target=ee),3===e.target.nodeType&&(e.target=e.target.parentNode),s.filter?s.filter(e,o):e},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==w()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===w()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&ce.nodeName(this,"input"))return this.click(),!1},_default:function(e){return ce.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},ce.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},ce.Event=function(e,t){if(!(this instanceof ce.Event))return new ce.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?m:b):this.type=e,t&&ce.extend(this,t),this.timeStamp=e&&e.timeStamp||ce.now(),this[ce.expando]=!0},ce.Event.prototype={constructor:ce.Event,isDefaultPrevented:b,isPropagationStopped:b,isImmediatePropagationStopped:b,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=m,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=m,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=m,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},ce.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){ce.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||ce.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),ce.fn.extend({on:function(e,t,n,r){return x(this,e,t,n,r)},one:function(e,t,n,r){return x(this,e,t,n,r,1)},off:function(e,t,n){var r,o;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ce(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"===(void 0===e?"undefined":i(e))){for(o in e)this.off(o,t,e[o]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=b),this.each(function(){ce.event.remove(this,e,n,t)})}});var Ve=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Ue=/<script|<style|<link/i,ze=/checked\s*(?:[^=]|=\s*.checked.)/i,Xe=/^true\/(.*)/,Ge=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;ce.extend({htmlPrefilter:function(e){return e.replace(Ve,"<$1></$2>")},clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=ce.contains(e.ownerDocument,e);if(!(ue.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ce.isXMLDoc(e)))for(s=v(a),o=v(e),r=0,i=o.length;r<i;r++)A(o[r],s[r]);if(t)if(n)for(o=o||v(e),s=s||v(a),r=0,i=o.length;r<i;r++)_(o[r],s[r]);else _(e,a);return s=v(a,"script"),s.length>0&&y(s,!u&&v(e,"script")),a},cleanData:function(e){for(var t,n,r,i=ce.event.special,o=0;void 0!==(n=e[o]);o++)if(Ce(n)){if(t=n[ke.expando]){if(t.events)for(r in t.events)i[r]?ce.event.remove(n,r):ce.removeEvent(n,r,t.handle);n[ke.expando]=void 0}n[je.expando]&&(n[je.expando]=void 0)}}}),ce.fn.extend({domManip:C,detach:function(e){return k(this,e,!0)},remove:function(e){return k(this,e)},text:function(e){return Ae(this,function(e){return void 0===e?ce.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return C(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){E(this,e).appendChild(e)}})},prepend:function(){return C(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=E(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return C(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return C(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(ce.cleanData(v(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return ce.clone(this,e,t)})},html:function(e){return Ae(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ue.test(e)&&!Pe[(Ie.exec(e)||["",""])[1].toLowerCase()]){e=ce.htmlPrefilter(e);try{for(;n<r;n++)t=this[n]||{},1===t.nodeType&&(ce.cleanData(v(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return C(this,arguments,function(t){var n=this.parentNode;ce.inArray(this,e)<0&&(ce.cleanData(v(this)),n&&n.replaceChild(t,this))},e)}}),ce.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){ce.fn[e]=function(e){for(var n,r=[],i=ce(e),o=i.length-1,s=0;s<=o;s++)n=s===o?this:this.clone(!0),ce(i[s])[t](n),re.apply(r,n.get());return this.pushStack(r)}});var Je,Ye={HTML:"block",BODY:"block"},Qe=/^margin/,Ke=new RegExp("^("+Re+")(?!px)[a-z%]+$","i"),Ze=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=o),t.getComputedStyle(e)},et=function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i},tt=ee.documentElement;!function(){function e(){a.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",a.innerHTML="",tt.appendChild(s);var e=o.getComputedStyle(a);t="1%"!==e.top,i="2px"===e.marginLeft,n="4px"===e.width,a.style.marginRight="50%",r="4px"===e.marginRight,tt.removeChild(s)}var t,n,r,i,s=ee.createElement("div"),a=ee.createElement("div");a.style&&(a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",ue.clearCloneStyle="content-box"===a.style.backgroundClip,s.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",s.appendChild(a),ce.extend(ue,{pixelPosition:function(){return e(),t},boxSizingReliable:function(){return null==n&&e(),n},pixelMarginRight:function(){return null==n&&e(),r},reliableMarginLeft:function(){return null==n&&e(),i},reliableMarginRight:function(){var e,t=a.appendChild(ee.createElement("div"));return t.style.cssText=a.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",t.style.marginRight=t.style.width="0",a.style.width="1px",tt.appendChild(s),e=!parseFloat(o.getComputedStyle(t).marginRight),tt.removeChild(s),a.removeChild(t),e}}))}();var nt=/^(none|table(?!-c[ea]).+)/,rt={position:"absolute",visibility:"hidden",display:"block"},it={letterSpacing:"0",fontWeight:"400"},ot=["Webkit","O","Moz","ms"],st=ee.createElement("div").style;ce.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=N(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,s,a,u=ce.camelCase(t),c=e.style;if(t=ce.cssProps[u]||(ce.cssProps[u]=M(u)||u),a=ce.cssHooks[t]||ce.cssHooks[u],void 0===n)return a&&"get"in a&&void 0!==(o=a.get(e,!1,r))?o:c[t];s=void 0===n?"undefined":i(n),"string"===s&&(o=Me.exec(n))&&o[1]&&(n=p(e,t,o),s="number"),null!=n&&n===n&&("number"===s&&(n+=o&&o[3]||(ce.cssNumber[u]?"":"px")),ue.clearCloneStyle||""!==n||0!==t.indexOf("background")||(c[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(c[t]=n))}},css:function(e,t,n,r){var i,o,s,a=ce.camelCase(t);return t=ce.cssProps[a]||(ce.cssProps[a]=M(a)||a),s=ce.cssHooks[t]||ce.cssHooks[a],s&&"get"in s&&(i=s.get(e,!0,n)),void 0===i&&(i=N(e,t,r)),"normal"===i&&t in it&&(i=it[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),ce.each(["height","width"],function(e,t){ce.cssHooks[t]={get:function(e,n,r){if(n)return nt.test(ce.css(e,"display"))&&0===e.offsetWidth?et(e,rt,function(){return q(e,t,r)}):q(e,t,r)},set:function(e,n,r){var i,o=r&&Ze(e),s=r&&L(e,t,r,"border-box"===ce.css(e,"boxSizing",!1,o),o);return s&&(i=Me.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=ce.css(e,t)),D(e,n,s)}}}),ce.cssHooks.marginLeft=R(ue.reliableMarginLeft,function(e,t){if(t)return(parseFloat(N(e,"marginLeft"))||e.getBoundingClientRect().left-et(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),ce.cssHooks.marginRight=R(ue.reliableMarginRight,function(e,t){if(t)return et(e,{display:"inline-block"},N,[e,"marginRight"])}),ce.each({margin:"",padding:"",border:"Width"},function(e,t){ce.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+De[r]+t]=o[r]||o[r-2]||o[0];return i}},Qe.test(e)||(ce.cssHooks[e+t].set=D)}),ce.fn.extend({css:function(e,t){return Ae(this,function(e,t,n){var r,i,o={},s=0;if(ce.isArray(t)){for(r=Ze(e),i=t.length;s<i;s++)o[t[s]]=ce.css(e,t[s],!1,r);return o}return void 0!==n?ce.style(e,t,n):ce.css(e,t)},e,t,arguments.length>1)},show:function(){return I(this,!0)},hide:function(){return I(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Le(this)?ce(this).show():ce(this).hide()})}}),ce.Tween=F,F.prototype={constructor:F,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||ce.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(ce.cssNumber[n]?"":"px")},cur:function(){var e=F.propHooks[this.prop];return e&&e.get?e.get(this):F.propHooks._default.get(this)},run:function(e){var t,n=F.propHooks[this.prop];return this.options.duration?this.pos=t=ce.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):F.propHooks._default.set(this),this}},F.prototype.init.prototype=F.prototype,F.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=ce.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){ce.fx.step[e.prop]?ce.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[ce.cssProps[e.prop]]&&!ce.cssHooks[e.prop]?e.elem[e.prop]=e.now:ce.style(e.elem,e.prop,e.now+e.unit)}}},F.propHooks.scrollTop=F.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ce.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ce.fx=F.prototype.init,ce.fx.step={};var at,ut,ct=/^(?:toggle|show|hide)$/,lt=/queueHooks$/;ce.Animation=ce.extend(V,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return p(n.elem,e,Me.exec(t),n),n}]},tweener:function(e,t){ce.isFunction(e)?(t=e,e=["*"]):e=e.match(Te);for(var n,r=0,i=e.length;r<i;r++)n=e[r],V.tweeners[n]=V.tweeners[n]||[],V.tweeners[n].unshift(t)},prefilters:[W],prefilter:function(e,t){t?V.prefilters.unshift(e):V.prefilters.push(e)}}),ce.speed=function(e,t,n){var r=e&&"object"===(void 0===e?"undefined":i(e))?ce.extend({},e):{complete:n||!n&&t||ce.isFunction(e)&&e,duration:e,easing:n&&t||t&&!ce.isFunction(t)&&t};return r.duration=ce.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in ce.fx.speeds?ce.fx.speeds[r.duration]:ce.fx.speeds._default,null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){ce.isFunction(r.old)&&r.old.call(this),r.queue&&ce.dequeue(this,r.queue)},r},ce.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Le).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=ce.isEmptyObject(e),o=ce.speed(t,n,r),s=function(){var t=V(this,ce.extend({},e),o);(i||ke.get(this,"finish"))&&t.stop(!0)};return s.finish=s,i||!1===o.queue?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=ce.timers,s=ke.get(this);if(i)s[i]&&s[i].stop&&r(s[i]);else for(i in s)s[i]&&s[i].stop&&lt.test(i)&&r(s[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||ce.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=ke.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=ce.timers,s=r?r.length:0;for(n.finish=!0,ce.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<s;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),ce.each(["toggle","show","hide"],function(e,t){var n=ce.fn[t];ce.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate($(t,!0),e,r,i)}}),ce.each({slideDown:$("show"),slideUp:$("hide"),slideToggle:$("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){ce.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),ce.timers=[],ce.fx.tick=function(){var e,t=0,n=ce.timers;for(at=ce.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||ce.fx.stop(),at=void 0},ce.fx.timer=function(e){ce.timers.push(e),e()?ce.fx.start():ce.timers.pop()},ce.fx.interval=13,ce.fx.start=function(){ut||(ut=o.setInterval(ce.fx.tick,ce.fx.interval))},ce.fx.stop=function(){o.clearInterval(ut),ut=null},ce.fx.speeds={slow:600,fast:200,_default:400},ce.fn.delay=function(e,t){return e=ce.fx?ce.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=o.setTimeout(t,e);n.stop=function(){o.clearTimeout(r)}})},function(){var e=ee.createElement("input"),t=ee.createElement("select"),n=t.appendChild(ee.createElement("option"));e.type="checkbox",ue.checkOn=""!==e.value,ue.optSelected=n.selected,t.disabled=!0,ue.optDisabled=!n.disabled,e=ee.createElement("input"),e.value="t",e.type="radio",ue.radioValue="t"===e.value}();var ft,ht=ce.expr.attrHandle;ce.fn.extend({attr:function(e,t){return Ae(this,ce.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){ce.removeAttr(this,e)})}}),ce.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?ce.prop(e,t,n):(1===o&&ce.isXMLDoc(e)||(t=t.toLowerCase(),i=ce.attrHooks[t]||(ce.expr.match.bool.test(t)?ft:void 0)),void 0!==n?null===n?void ce.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:(r=ce.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!ue.radioValue&&"radio"===t&&ce.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(Te);if(o&&1===e.nodeType)for(;n=o[i++];)r=ce.propFix[n]||n,ce.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)}}),ft={set:function(e,t,n){return!1===t?ce.removeAttr(e,n):e.setAttribute(n,n),n}},ce.each(ce.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||ce.find.attr;ht[t]=function(e,t,r){var i,o;return r||(o=ht[t],ht[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,ht[t]=o),i}});var dt=/^(?:input|select|textarea|button)$/i,pt=/^(?:a|area)$/i;ce.fn.extend({prop:function(e,t){return Ae(this,ce.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[ce.propFix[e]||e]})}}),ce.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ce.isXMLDoc(e)||(t=ce.propFix[t]||t,i=ce.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=ce.find.attr(e,"tabindex");return t?parseInt(t,10):dt.test(e.nodeName)||pt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),ue.optSelected||(ce.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ce.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ce.propFix[this.toLowerCase()]=this});var vt=/[\t\r\n\f]/g;ce.fn.extend({addClass:function(e){var t,n,r,i,o,s,a,u=0;if(ce.isFunction(e))return this.each(function(t){ce(this).addClass(e.call(this,t,U(this)))});if("string"==typeof e&&e)for(t=e.match(Te)||[];n=this[u++];)if(i=U(n),r=1===n.nodeType&&(" "+i+" ").replace(vt," ")){for(s=0;o=t[s++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");a=ce.trim(r),i!==a&&n.setAttribute("class",a)}return this},removeClass:function(e){var t,n,r,i,o,s,a,u=0;if(ce.isFunction(e))return this.each(function(t){ce(this).removeClass(e.call(this,t,U(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(Te)||[];n=this[u++];)if(i=U(n),r=1===n.nodeType&&(" "+i+" ").replace(vt," ")){for(s=0;o=t[s++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");a=ce.trim(r),i!==a&&n.setAttribute("class",a)}return this},toggleClass:function(e,t){var n=void 0===e?"undefined":i(e);return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):ce.isFunction(e)?this.each(function(n){ce(this).toggleClass(e.call(this,n,U(this),t),t)}):this.each(function(){var t,r,i,o;if("string"===n)for(r=0,i=ce(this),o=e.match(Te)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||(t=U(this),t&&ke.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":ke.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+U(n)+" ").replace(vt," ").indexOf(t)>-1)return!0;return!1}});var yt=/\r/g,gt=/[\x20\t\r\n\f]+/g;ce.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=ce.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,ce(this).val()):e,null==i?i="":"number"==typeof i?i+="":ce.isArray(i)&&(i=ce.map(i,function(e){return null==e?"":e+""})),(t=ce.valHooks[this.type]||ce.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=ce.valHooks[i.type]||ce.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(yt,""):null==n?"":n)}}}),ce.extend({valHooks:{option:{get:function(e){var t=ce.find.attr(e,"value");return null!=t?t:ce.trim(ce.text(e)).replace(gt," ")}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||i<0,s=o?null:[],a=o?i+1:r.length,u=i<0?a:o?i:0;u<a;u++)if(n=r[u],(n.selected||u===i)&&(ue.optDisabled?!n.disabled:null===n.getAttribute("disabled"))&&(!n.parentNode.disabled||!ce.nodeName(n.parentNode,"optgroup"))){if(t=ce(n).val(),o)return t;s.push(t)}return s},set:function(e,t){for(var n,r,i=e.options,o=ce.makeArray(t),s=i.length;s--;)r=i[s],(r.selected=ce.inArray(ce.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),ce.each(["radio","checkbox"],function(){ce.valHooks[this]={set:function(e,t){if(ce.isArray(t))return e.checked=ce.inArray(ce(e).val(),t)>-1}},ue.checkOn||(ce.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var mt=/^(?:focusinfocus|focusoutblur)$/;ce.extend(ce.event,{trigger:function(e,t,n,r){var s,a,u,c,l,f,h,d=[n||ee],p=ae.call(e,"type")?e.type:e,v=ae.call(e,"namespace")?e.namespace.split("."):[];if(a=u=n=n||ee,3!==n.nodeType&&8!==n.nodeType&&!mt.test(p+ce.event.triggered)&&(p.indexOf(".")>-1&&(v=p.split("."),p=v.shift(),v.sort()),l=p.indexOf(":")<0&&"on"+p,e=e[ce.expando]?e:new ce.Event(p,"object"===(void 0===e?"undefined":i(e))&&e),e.isTrigger=r?2:3,e.namespace=v.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+v.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:ce.makeArray(t,[e]),h=ce.event.special[p]||{},r||!h.trigger||!1!==h.trigger.apply(n,t))){if(!r&&!h.noBubble&&!ce.isWindow(n)){for(c=h.delegateType||p,mt.test(c+p)||(a=a.parentNode);a;a=a.parentNode)d.push(a),u=a;u===(n.ownerDocument||ee)&&d.push(u.defaultView||u.parentWindow||o)}for(s=0;(a=d[s++])&&!e.isPropagationStopped();)e.type=s>1?c:h.bindType||p,f=(ke.get(a,"events")||{})[e.type]&&ke.get(a,"handle"),f&&f.apply(a,t),(f=l&&a[l])&&f.apply&&Ce(a)&&(e.result=f.apply(a,t),!1===e.result&&e.preventDefault());return e.type=p,r||e.isDefaultPrevented()||h._default&&!1!==h._default.apply(d.pop(),t)||!Ce(n)||l&&ce.isFunction(n[p])&&!ce.isWindow(n)&&(u=n[l],u&&(n[l]=null),ce.event.triggered=p,n[p](),ce.event.triggered=void 0,u&&(n[l]=u)),e.result}},simulate:function(e,t,n){var r=ce.extend(new ce.Event,n,{type:e,isSimulated:!0});ce.event.trigger(r,null,t)}}),ce.fn.extend({trigger:function(e,t){return this.each(function(){ce.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return ce.event.trigger(e,t,n,!0)}}),ce.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){ce.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),ce.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),ue.focusin="onfocusin"in o,ue.focusin||ce.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){ce.event.simulate(t,e.target,ce.event.fix(e))};ce.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=ke.access(r,t);i||r.addEventListener(e,n,!0),ke.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=ke.access(r,t)-1;i?ke.access(r,t,i):(r.removeEventListener(e,n,!0),ke.remove(r,t))}}});var bt=o.location,wt=ce.now(),xt=/\?/;ce.parseJSON=function(e){return JSON.parse(e+"")},ce.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new o.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||ce.error("Invalid XML: "+e),t};var Et=/#.*$/,St=/([?&])_=[^&]*/,Tt=/^(.*?):[ \t]*([^\r\n]*)$/gm,_t=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,At=/^(?:GET|HEAD)$/,Ct=/^\/\//,kt={},jt={},Ot="*/".concat("*"),Nt=ee.createElement("a");Nt.href=bt.href,ce.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:_t.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ot,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":ce.parseJSON,"text xml":ce.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?G(G(e,ce.ajaxSettings),t):G(ce.ajaxSettings,e)},ajaxPrefilter:z(kt),ajaxTransport:z(jt),ajax:function(e,t){function n(e,t,n,i){var u,l,h,b,w,E=t;2!==x&&(x=2,c&&o.clearTimeout(c),r=void 0,a=i||"",S.readyState=e>0?4:0,u=e>=200&&e<300||304===e,n&&(b=J(d,S,n)),b=Y(d,b,S,u),u?(d.ifModified&&(w=S.getResponseHeader("Last-Modified"),w&&(ce.lastModified[s]=w),(w=S.getResponseHeader("etag"))&&(ce.etag[s]=w)),204===e||"HEAD"===d.type?E="nocontent":304===e?E="notmodified":(E=b.state,l=b.data,h=b.error,u=!h)):(h=E,!e&&E||(E="error",e<0&&(e=0))),S.status=e,S.statusText=(t||E)+"",u?y.resolveWith(p,[l,E,S]):y.rejectWith(p,[S,E,h]),S.statusCode(m),m=void 0,f&&v.trigger(u?"ajaxSuccess":"ajaxError",[S,d,u?l:h]),g.fireWith(p,[S,E]),f&&(v.trigger("ajaxComplete",[S,d]),--ce.active||ce.event.trigger("ajaxStop")))}"object"===(void 0===e?"undefined":i(e))&&(t=e,e=void 0),t=t||{};var r,s,a,u,c,l,f,h,d=ce.ajaxSetup({},t),p=d.context||d,v=d.context&&(p.nodeType||p.jquery)?ce(p):ce.event,y=ce.Deferred(),g=ce.Callbacks("once memory"),m=d.statusCode||{},b={},w={},x=0,E="canceled",S={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!u)for(u={};t=Tt.exec(a);)u[t[1].toLowerCase()]=t[2];t=u[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=w[n]=w[n]||e,b[e]=t),this},overrideMimeType:function(e){return x||(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(x<2)for(t in e)m[t]=[m[t],e[t]];else S.always(e[S.status]);return this},abort:function(e){var t=e||E;return r&&r.abort(t),n(0,t),this}};if(y.promise(S).complete=g.add,S.success=S.done,S.error=S.fail,d.url=((e||d.url||bt.href)+"").replace(Et,"").replace(Ct,bt.protocol+"//"),d.type=t.method||t.type||d.method||d.type,d.dataTypes=ce.trim(d.dataType||"*").toLowerCase().match(Te)||[""],null==d.crossDomain){l=ee.createElement("a");try{l.href=d.url,l.href=l.href,d.crossDomain=Nt.protocol+"//"+Nt.host!=l.protocol+"//"+l.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&"string"!=typeof d.data&&(d.data=ce.param(d.data,d.traditional)),X(kt,d,t,S),2===x)return S;f=ce.event&&d.global,f&&0==ce.active++&&ce.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!At.test(d.type),s=d.url,d.hasContent||(d.data&&(s=d.url+=(xt.test(s)?"&":"?")+d.data,delete d.data),!1===d.cache&&(d.url=St.test(s)?s.replace(St,"$1_="+wt++):s+(xt.test(s)?"&":"?")+"_="+wt++)),d.ifModified&&(ce.lastModified[s]&&S.setRequestHeader("If-Modified-Since",ce.lastModified[s]),ce.etag[s]&&S.setRequestHeader("If-None-Match",ce.etag[s])),(d.data&&d.hasContent&&!1!==d.contentType||t.contentType)&&S.setRequestHeader("Content-Type",d.contentType),S.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Ot+"; q=0.01":""):d.accepts["*"]);for(h in d.headers)S.setRequestHeader(h,d.headers[h]);if(d.beforeSend&&(!1===d.beforeSend.call(p,S,d)||2===x))return S.abort();E="abort";for(h in{success:1,error:1,complete:1})S[h](d[h]);if(r=X(jt,d,t,S)){if(S.readyState=1,f&&v.trigger("ajaxSend",[S,d]),2===x)return S;d.async&&d.timeout>0&&(c=o.setTimeout(function(){S.abort("timeout")},d.timeout));try{x=1,r.send(b,n)}catch(e){if(!(x<2))throw e;n(-1,e)}}else n(-1,"No Transport");return S},getJSON:function(e,t,n){return ce.get(e,t,n,"json")},getScript:function(e,t){return ce.get(e,void 0,t,"script")}}),ce.each(["get","post"],function(e,t){ce[t]=function(e,n,r,i){return ce.isFunction(n)&&(i=i||r,r=n,n=void 0),ce.ajax(ce.extend({url:e,type:t,dataType:i,data:n,success:r},ce.isPlainObject(e)&&e))}}),ce._evalUrl=function(e){return ce.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,throws:!0})},ce.fn.extend({wrapAll:function(e){var t;return ce.isFunction(e)?this.each(function(t){ce(this).wrapAll(e.call(this,t))}):(this[0]&&(t=ce(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return ce.isFunction(e)?this.each(function(t){ce(this).wrapInner(e.call(this,t))}):this.each(function(){var t=ce(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=ce.isFunction(e);return this.each(function(n){ce(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){ce.nodeName(this,"body")||ce(this).replaceWith(this.childNodes)}).end()}}),ce.expr.filters.hidden=function(e){return!ce.expr.filters.visible(e)},ce.expr.filters.visible=function(e){return e.offsetWidth>0||e.offsetHeight>0||e.getClientRects().length>0};var Rt=/%20/g,Mt=/\[\]$/,Dt=/\r?\n/g,Lt=/^(?:submit|button|image|reset|file)$/i,qt=/^(?:input|select|textarea|keygen)/i;ce.param=function(e,t){var n,r=[],i=function(e,t){t=ce.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=ce.ajaxSettings&&ce.ajaxSettings.traditional),ce.isArray(e)||e.jquery&&!ce.isPlainObject(e))ce.each(e,function(){i(this.name,this.value)});else for(n in e)Q(n,e[n],t,i);return r.join("&").replace(Rt,"+")},ce.fn.extend({serialize:function(){return ce.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ce.prop(this,"elements");return e?ce.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ce(this).is(":disabled")&&qt.test(this.nodeName)&&!Lt.test(e)&&(this.checked||!qe.test(e))}).map(function(e,t){var n=ce(this).val();return null==n?null:ce.isArray(n)?ce.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}}),ce.ajaxSettings.xhr=function(){try{return new o.XMLHttpRequest}catch(e){}};var It={0:200,1223:204},Ft=ce.ajaxSettings.xhr();ue.cors=!!Ft&&"withCredentials"in Ft,ue.ajax=Ft=!!Ft,ce.ajaxTransport(function(e){var t,n;if(ue.cors||Ft&&!e.crossDomain)return{send:function(r,i){var s,a=e.xhr();if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(s in e.xhrFields)a[s]=e.xhrFields[s];e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(s in r)a.setRequestHeader(s,r[s]);t=function(e){return function(){t&&(t=n=a.onload=a.onerror=a.onabort=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!=typeof a.status?i(0,"error"):i(a.status,a.statusText):i(It[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=t(),n=a.onerror=t("error"),void 0!==a.onabort?a.onabort=n:a.onreadystatechange=function(){4===a.readyState&&o.setTimeout(function(){t&&n()})},t=t("abort");try{a.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}}),ce.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return ce.globalEval(e),e}}}),ce.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),ce.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=ce("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&i("error"===e.type?404:200,e.type)}),ee.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Pt=[],$t=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Pt.pop()||ce.expando+"_"+wt++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,s,a=!1!==e.jsonp&&($t.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&$t.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=ce.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace($t,"$1"+r):!1!==e.jsonp&&(e.url+=(xt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return s||ce.error(r+" was not called"),s[0]},e.dataTypes[0]="json",i=o[r],o[r]=function(){s=arguments},n.always(function(){void 0===i?ce(o).removeProp(r):o[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Pt.push(r)),s&&ce.isFunction(i)&&i(s[0]),s=i=void 0}),"script"}),ce.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||ee;var r=me.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=g([e],t,i),i&&i.length&&ce(i).remove(),ce.merge([],r.childNodes))};var Ht=ce.fn.load;ce.fn.load=function(e,t,n){if("string"!=typeof e&&Ht)return Ht.apply(this,arguments);var r,o,s,a=this,u=e.indexOf(" ");return u>-1&&(r=ce.trim(e.slice(u)),e=e.slice(0,u)),ce.isFunction(t)?(n=t,t=void 0):t&&"object"===(void 0===t?"undefined":i(t))&&(o="POST"),a.length>0&&ce.ajax({url:e,type:o||"GET",dataType:"html",data:t}).done(function(e){s=arguments,a.html(r?ce("<div>").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,s||[e.responseText,t,e])})}),this},ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.expr.filters.animated=function(e){return ce.grep(ce.timers,function(t){return e===t.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,c,l=ce.css(e,"position"),f=ce(e),h={};"static"===l&&(e.style.position="relative"),a=f.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),c=("absolute"===l||"fixed"===l)&&(o+u).indexOf("auto")>-1,c?(r=f.position(),s=r.top,i=r.left):(s=parseFloat(o)||0,i=parseFloat(u)||0),ce.isFunction(t)&&(t=t.call(e,n,ce.extend({},a))),null!=t.top&&(h.top=t.top-a.top+s),null!=t.left&&(h.left=t.left-a.left+i),"using"in t?t.using.call(e,h):f.css(h)}},ce.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){ce.offset.setOffset(this,e,t)});var t,n,r=this[0],i={top:0,left:0},o=r&&r.ownerDocument;if(o)return t=o.documentElement,ce.contains(t,r)?(i=r.getBoundingClientRect(),n=K(o),{top:i.top+n.pageYOffset-t.clientTop,left:i.left+n.pageXOffset-t.clientLeft}):i},position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return"fixed"===ce.css(n,"position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),ce.nodeName(e[0],"html")||(r=e.offset()),r.top+=ce.css(e[0],"borderTopWidth",!0),r.left+=ce.css(e[0],"borderLeftWidth",!0)),{top:t.top-r.top-ce.css(n,"marginTop",!0),left:t.left-r.left-ce.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===ce.css(e,"position");)e=e.offsetParent;return e||tt})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;ce.fn[e]=function(r){return Ae(this,function(e,r,i){var o=K(e);if(void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),ce.each(["top","left"],function(e,t){ce.cssHooks[t]=R(ue.pixelPosition,function(e,n){if(n)return n=N(e,t),Ke.test(n)?ce(e).position()[t]+"px":n})}),ce.each({Height:"height",Width:"width"},function(e,t){ce.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){ce.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),s=n||(!0===r||!0===i?"margin":"border");return Ae(this,function(t,n,r){var i;return ce.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===r?ce.css(t,n,s):ce.style(t,n,r,s)},t,o?r:void 0,o,null)}})}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},size:function(){return this.length}}),ce.fn.andSelf=ce.fn.addBack,n=[],void 0!==(r=function(){return ce}.apply(t,n))&&(e.exports=r);var Wt=o.jQuery,Bt=o.$;return ce.noConflict=function(e){return o.$===ce&&(o.$=Bt),e&&o.jQuery===ce&&(o.jQuery=Wt),ce},s||(o.jQuery=o.$=ce),ce})}).call(t,n(9)(e))},function(e,t,n){"use strict";e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,n){"use strict";function r(e){return function(t){var n=e;if(!t)return n;if(Array.isArray(t)){var r=e.match(/\:\w+/g);return r.length!==t.length?(console.error("It does not match the required input values."),n):(r.forEach(function(e,r){n=n.replace(e,encodeURIComponent(t[r]))}),n)}if("object"===(void 0===t?"undefined":i(t))){for(var o in t)t.hasOwnProperty(o)&&(n=n.replace(":"+o,encodeURIComponent(t[o])));return n}return console.error("Invalid params type"),n}}var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n(0).MIDDLEWARE,s=n(0).MIDDLEWARE_PROTOCOL,a=n(0).MiddlewareRunner,u=void 0;e.exports={routeTables:{},settings:null,layouts:[],currentView:"",currentLayout:"",bindLayout:function(e){this.layouts.push(e)},design:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];this.settings=t,this.router=null,u=n,this.bindRouter(Array.isArray(e)?e:[e])},bindRouter:function(e){var t=this,n={routes:{}},i=void 0,c=void 0;for(e=Array.from(e);e.length;)if(i=e.shift(),this.routeTables[i.routeName||i.view.viewname]=r(i.url),i.originUrl=i.url,i.url.startsWith("/")&&(i.url=i.url.substr(1)),c="r"+i.url.toLowerCase()+Date.now(),n.routes[i.url]=c,n[c]=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var i=window.location.href,c=Object.assign({},e);c.view&&delete c.view,c.pages&&delete c.pages;var l=u.getMiddleware(o.ROUTER,s.BEFORE);a.run(l,s.BEFORE,[c,u],function(){if(i===window.location.href){var t={},r={},f=0;if(e.url.startsWith("*"))t[e.url.split("*")[1]]=n[0];else{var h=!0,d=!1,p=void 0;try{for(var v,y=e.url.split("/")[Symbol.iterator]();!(h=(v=y.next()).done);h=!0){var g=v.value;g.startsWith(":")&&(t[g.substr(1)]=decodeURIComponent(n[f]),++f)}}catch(e){d=!0,p=e}finally{try{!h&&y.return&&y.return()}finally{if(d)throw p}}}var m=decodeURIComponent(n[n.length-1]||(window.location.search||"").substr(1));if(m&&~m.indexOf("=")){var b=m.split("&"),w=!0,x=!1,E=void 0;try{for(var S,T=b[Symbol.iterator]();!(w=(S=T.next()).done);w=!0){var _=S.value,A=_.split("=");2===A.length&&(r[A[0]]=A[1])}}catch(e){x=!0,E=e}finally{try{!w&&T.return&&T.return()}finally{if(x)throw E}}}if(e.layout){var C=this.layouts.find(function(t){return t.viewName===e.layout});this.currentLayout&&this.currentLayout.viewname===e.layout?C.options.update&&(this.currentLayout.params=t,this.currentLayout.query=r,this.currentLayout.updateView()):C&&(!!this.currentLayout&&this.currentLayout.close(),C.view.prototype.params=t,C.view.prototype.query=r,C.view.prototype.container=C.container,this.currentLayout=new C.view)}e.view.prototype.params=t,e.view.prototype.query=r,e.view.prototype.container=e.container;var k=new e.view;this.currentView&&this.currentView.close(),this.currentView=k,l=u.getMiddleware(o.ROUTER,s.AFTER),a.run(l,s.AFTER,[c,u])}}.bind(this))}.bind(this,i),i.pages&&i.pages.length){var l=i.originUrl||"",f=i.container||"",h=i.layout||"",d=!0,p=!1,v=void 0;try{for(var y,g=i.pages[Symbol.iterator]();!(d=(y=g.next()).done);d=!0){var m=y.value;m.url.startsWith("/")||(m.url=("/"===l?"":l)+"/"+m.url),m.container||(m.container=f),m.layout||(m.layout=h),e.push(m)}}catch(e){p=!0,v=e}finally{try{!d&&g.return&&g.return()}finally{if(p)throw v}}}n.routes["*actions"]="___NOT_FOUND___",n.___NOT_FOUND___=function(e){"empty"in t.settings&&t.settings.empty(e)},this.router=new(Backbone.Router.extend(n))}}},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var o=function(){function e(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var s,a=e[Symbol.iterator]();!(r=(s=a.next()).done)&&(n.push(s.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{!r&&a.return&&a.return()}finally{if(i)throw o}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=n(2),a=n(0).MIDDLEWARE,u=n(0).MIDDLEWARE_PROTOCOL,c=n(0).MiddlewareRunner,l=n(12),f=n(13),h=n(14),d=n(15),p=/^(\S+)\s*(.*)$/,v=/^\@(\w+)\s*(.*)$/,y=null,g=null,m=null;g=function(){var e=this.tagName,t=this.container,n=this.template,r=void 0,i=void 0;if(!t)throw new Error("["+this.viewname+'] Required attribute "container" is missing.');if("string"==typeof t&&(t=$(t)),!t||!t.length)throw new Error("["+this.viewname+'] "container" is undefined.');var o=this.getModel();if("function"==typeof this.viewWillMount&&(o=this.viewWillMount(o)||o),n){if(r="string"==typeof n?n:n(o),"div"===e){var s=this;e="";do{if(s.hasOwnProperty("tagName")&&s.tagName){e=s.tagName;break}}while((s=s.__proto__)&&"___WOOWA_VIEW___"!==s.viewname)}i=e||$(r).length>1?$("<"+(e||"div")+">"+r+"</"+(e||"div")+">"):$(r),this.className&&i.addClass(this.className),this._viewMounted?$.contains(t[0],this.el)?this.$el.replaceWith(i):t.html(i):this.append?t.append(i):this.prepend?t.prepend(i):this.after?t.after(i):t.html(i),this.setElement(i)}else this.setElement(t);this._viewMounted=!0,this._bindRef(),this._bindModel(),"function"==typeof this.viewComponentDidMount&&this.viewComponentDidMount(i);var l=void 0;"function"==typeof this.viewDidMount&&(l=this.viewDidMount.bind(this,i));var f=!1;"forceExcludeMiddleware"in this&&(f="function"==typeof this.forceExcludeMiddleware?this.forceExcludeMiddleware():this.forceExcludeMiddleware);var h=f?[]:m.getMiddleware(a.VIEW,u.AFTER);c.run(h,u.AFTER,[this],function(){var e=this;["viewDidMount","mount"].forEach(function(t){e.dispatch(Woowahan.Event.create(t,e)),e.trigger(t)})}.bind(this),l)},y=s.View.extend({super:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];y.prototype.initialize.apply(this,t)},initialize:function(e){this._viewMounted=!1,this._views={},this.container=this.container,e&&this.setModel(e);var t=!1;"forceExcludeMiddleware"in this&&(t="function"==typeof this.forceExcludeMiddleware?this.forceExcludeMiddleware():this.forceExcludeMiddleware);var n=t?[]:m.getMiddleware(a.VIEW,u.BEFORE);c.run(n,u.BEFORE,[this],function(){g.apply(this)}.bind(this))},_plugins:{text:l,"input-text":f,checkbox:h,select:d},delegateEvents:function(e){if(!(e=e||this.events))return this;this.undelegateEvents();for(var t in e)if(e.hasOwnProperty(t)){var n=e[t],r=t.match(p),i=t.match(v),o=void 0,s=void 0,a=void 0;if(i){var u=n.indexOf("("),c=[];o=i[1],s=i[2],~u&&(c=n.substring(u+1,n.length-1).split(",").map(function(e){return $.trim(e)}),n=n.substring(0,u)),a=function(e,t,n,r,i){var o=this,s=function(e){return e.is("input[type=checkbox]")||e.is("input[type=radio]")?e.is(":checked"):e.is("select")?e.val():e.val()||e.text()},a=r.map(function(e){return s(o.$(e))});if("submit"===e){var u={},c=!0,l=!1,f=void 0;try{for(var h,d=o.$(t).find("input, select, textarea")[Symbol.iterator]();!(c=(h=d.next()).done);c=!0){var p=h.value;u[$(p).attr("name")]=s($(p))}}catch(e){l=!0,f=e}finally{try{!c&&d.return&&d.return()}finally{if(l)throw f}}a.push(u)}"[object Function]"!==Object.prototype.toString.call(n)&&(n=this[n]);for(var v=arguments.length,y=Array(v>5?v-5:0),g=5;g<v;g++)y[g-5]=arguments[g];return n.apply(this,Array.prototype.concat.call(a,y,i))}.bind(this,o,s,n,c)}else{if("[object Function]"!==Object.prototype.toString.call(n)&&(n=this[n]),!n)continue;o=r[1],s=r[2],a=n.bind(this)}this.delegate(o,s,a)}return this},updateView:function(e,t){for(var n=arguments.length,r=Array(n>2?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];if(0===arguments.length)return this.close(!1),void g.apply(this);var o=void 0,s=void 0;if(o=this.$(e),o.length||(o=$(e)),!o.length)throw new Error("View must have container");if(s=o.data("ref")||o.selector||e,e&&!t)return void(this._views[s]&&(this._views[s].close(),delete this._views[s]));"function"!=typeof t&&(r=t);var l=this._views[s];if(l){l.setModel.apply(l,Array.prototype.concat.call(r,{silent:!0})),l.container=o;var f=!1;"forceExcludeMiddleware"in l&&(f="function"==typeof l.forceExcludeMiddleware?l.forceExcludeMiddleware():l.forceExcludeMiddleware);var h=f?[]:m.getMiddleware(a.VIEW,u.UNMOUNT);c.run(h,u.UNMOUNT,[this],function(){"function"==typeof l.viewWillUnmount&&l.viewWillUnmount.call(l),l.dispatch(Woowahan.Event.create("unmount",this)),l.trigger("unmount"),g.apply(this._views[s])}.bind(this))}else t.prototype.container=o,l=new(Function.prototype.bind.apply(t,Array.prototype.concat.call(t,r))),this._views[s]=l;return l},addView:function(e,t){this.removeView(e);for(var n=arguments.length,r=Array(n>2?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];return this.updateView.apply(this,[e,t].concat(r))},removeView:function(e){$(e).length&&this.updateView(e)},addPopup:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];"function"==typeof t&&(n=t,t={}),e="string"==typeof e?this.getComponent(e):e;var r=e.viewname,i=void 0,o=void 0,s=void 0;if(e){var a=t._id||r+"Container"+Date.now();if($("div[data-id="+a+"]").length)return;return i=a,o=$('<div data-id="'+i+'"></div>'),$("body").append(o),s=this.addView("div[data-id="+i+"]",e,Object.assign(t,{_id:a})),s.on("remove",function(){s.off("remove"),$("div[data-id="+i+"]").remove()}),s.closePopup=function(e,t,n){this.removeView("div[data-id="+e+"]"),t&&t.call(this,n)}.bind(this,i,n),s}console.error("undefined popup name ["+r+"]")},getStates:function(e){return m.getStates(e)},setStates:function(e,t){m.setStates(e,t)},getComponent:function(e){return m.getComponent(e).extend({})},getRouteTables:function(e,t,n){if(void 0===e)return m.getRouteTables();var r=m.getRouteTables()[e];return r?"string"==typeof t?r()+"?"+encodeURIComponent(t):"string"==typeof n?r(t)+"?"+encodeURIComponent(n):r(t):void console.error('"'+e+'" not found')},dispatch:function(e,t,n){var r;switch(e.__options=n||{},e.wwtype){case"event":(r=this.$el).trigger.apply(r,[e.type].concat(i(e.data)));break;case"action":t&&(t=t.bind(this)),m.dispatch(e,t)}},setModel:function(e,t){var n=void 0;if((n="string"==typeof e&&void 0!==t?r({},e,t):e)instanceof s.Model)return this.model&&this._unbindModel(),this.model=n.clone(),void(this._viewMounted&&this._bindModel());"[object Null]"!==Object.prototype.toString.call(n)&&this.model&&this.model instanceof s.Model||(this.model=new s.Model,this._viewMounted&&this._bindModel());for(var i in n)if(n.hasOwnProperty(i)){var o=this.model.get(i);o!==n[i]&&this.model.set(i,n[i])}},getModel:function(e){return this.model&&this.model instanceof s.Model||(this.model=new s.Model),e?this.model.clone().get(e):this.model.clone().toJSON()},log:function(){console.warn("View.log:: Deprecated and will be removed in a future release.")},logStamp:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];this.log(t)},close:function(e){this._unbindModel();var t=!1;"forceExcludeMiddleware"in this&&(t="function"==typeof this.forceExcludeMiddleware?this.forceExcludeMiddleware():this.forceExcludeMiddleware);var n=t?[]:m.getMiddleware(a.VIEW,u.UNMOUNT);c.run(n,u.UNMOUNT,[this],function(){var t=this;"function"==typeof this.viewWillUnmount&&this.viewWillUnmount(),this.refs&&Object.keys(this.refs).forEach(function(e){Array.isArray(t.refs[e])&&(t.refs[e]=[])}),this.dispatch(Woowahan.Event.create("unmount",this)),this.trigger("unmount"),this._removeChild(e),e+""!="false"&&this&&(this._unbindRef(),this.remove())}.bind(this))},remove:function(){this.dispatch(Woowahan.Event.create("remove",this)),this.trigger("remove");for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];s.View.prototype.remove.apply(this,t)},_syncElement:function(e,t){var n=$(e),r=$(t);n.is("input[type=text]")||n.is("input[type=number]")||n.is("input[type=tel]")||n.is("textarea")?r.val(n.val()):n.is("input[type=checkbox]")||n.is("input[type=radio]")?r.prop("checked",n.is(":checked")):n.is("select")&&r.val(n.val())},_bindRef:function(){this.refs||(this.refs={});var e=!0,t=!1,n=void 0;try{for(var r,i=this.$el.find("[data-ref]")[Symbol.iterator]();!(e=(r=i.next()).done);e=!0){var o=r.value,s=$(o),a=s.data("ref"),u=s.data("refGroup")||!1,c=s.data("refFormRestore")||!1;if(u)this.refs[a]?this.refs[a].push(o):this.refs[a]=[o];else{var l=this.refs[a];this.refs[a]=o,l&&(c&&this._syncElement(l,this.refs[a]),l=null)}}}catch(e){t=!0,n=e}finally{try{!e&&i.return&&i.return()}finally{if(t)throw n}}},_bindModel:function(){var e=this;this._unbindModel();var t=this.$el.find("[data-role=bind]"),n=void 0,r=!0,i=!1,s=void 0;try{for(var a,u=t[Symbol.iterator]();!(r=(a=u.next()).done);r=!0){n=a.value;var c=$(n).data("name"),l="change:"+c,f=($(n).data("type")||"text").toLowerCase(),h=this.model.get(c);this.listenTo(this.model,l,function(e,t,n){var r=this.model.get(t);this._plugins[n].call(this,e,r)}.bind(this,n,c,f)),void 0!==h&&this._plugins[f].call(this,n,h)}}catch(e){i=!0,s=e}finally{try{!r&&u.return&&u.return()}finally{if(i)throw s}}t=this.$el.find("[data-role=plugin]");var d=!0,p=!1,v=void 0;try{for(var y,g=t[Symbol.iterator]();!(d=(y=g.next()).done);d=!0){n=y.value;var m=$(n).data("plugins");if(!m)throw new Error("plugin must have plugins");m.split("+").map(function(e){return $.trim(e)}).forEach(function(t){var r=t.split("=>").map(function(e){return $.trim(e)}),i=o(r,2),s=i[0],a=i[1];s=s.split(",").map(function(e){return $.trim(e)}),a=a.toLowerCase(),s.forEach(function(t){if(""!==t){var r=e.model.get(t);e.listenTo(e.model,"change:"+t,function(e,t,n){var r=this.model.get(t);this._plugins[n].call(this,e,r)}.bind(e,n,t,a)),void 0!==r&&e._plugins[a].call(e,n,r)}})})}}catch(e){p=!0,v=e}finally{try{!d&&g.return&&g.return()}finally{if(p)throw v}}},_unbindRef:function(){for(var e in this.refs)this.refs.hasOwnProperty(e)&&(this.refs[e]=null);this.refs=null},_unbindModel:function(){this.stopListening(this.model)},_removeChild:function(e){for(var t in this._views)this._views.hasOwnProperty(t)&&(this._views[t].close.call(this._views[t],e),delete this._views[t])}}),y.create=function(e,t){var n=y.extend(t);return n.viewname=e,Object.defineProperty(n.prototype,"viewname",{value:e,writable:!1}),n},e.exports=function(e){return m||(m=e),y}},function(e,t,n){"use strict";e.exports=function(e,t){$(e).text(t)}},function(e,t,n){"use strict";e.exports=function(e,t){$(e).val(t)}},function(e,t,n){"use strict";e.exports=function(e,t){$(e).prop("checked",!!t)}},function(e,t,n){"use strict";var r=function(){function e(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var s,a=e[Symbol.iterator]();!(r=(s=a.next()).done)&&(n.push(s.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{!r&&a.return&&a.return()}finally{if(i)throw o}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();e.exports=function(e,t){var n=0,i=void 0;if(Array.isArray(t)){if(!t.length)return;i=Array.from(t)}else{if(void 0===t)return;i=Array.from([t])}e.innerHTML="";var o=!0,s=!1,a=void 0;try{for(var u,c=i.entries()[Symbol.iterator]();!(o=(u=c.next()).done);o=!0){var l=r(u.value,2),f=l[0],h=l[1],d=void 0,p=void 0;"string"==typeof h?(d=h,p=h):(d=h.label,p=h.value),h.selected&&(n=f),$(e).append('<option value="'+p+'">'+d+"</option>")}}catch(e){s=!0,a=e}finally{try{!o&&c.return&&c.return()}finally{if(s)throw a}}$(e).children("option").eq(n).attr("selected","selected"),$(e).trigger("change")}},function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=n(0).MIDDLEWARE,o=n(0).MIDDLEWARE_PROTOCOL,s=n(0).MiddlewareRunner,a={timeout:5e3},u=void 0,c=void 0;u={SUCCESS:"SUCCESS",FAIL:"FAIL",queueSuccess:[],queueFail:[],extend:function(e){var t=Object.assign({},this);return e.onSuccess&&t.queueSuccess.push(e.onSuccess),e.onFail&&t.queueFail.push(e.onFail),t},create:function(e,t,n){var u=this;if("function"==typeof t)n=t,t=void 0;else if("object"===(void 0===t?"undefined":r(t))&&"schema"!==t.wwtype)throw new Error("The second argument of reducer will only function, or schema objects.");var l=this,f=function(t,n){this._timestamp=Date.now(),this._id=e.toLowerCase()+this._timestamp,this.subscriber=n,this.queueSuccess=[],this.queueFail=[],this.useraction(t),this.addAction(this._id)};f.wwtype="reducer",f.actionName=e,f.schema=t;var h=Object.assign(f.prototype,{onSuccess:l.onSuccess,onFail:l.onFail});return h.useraction=n,h.id=function(){return u._id},h.actionName=e,h.createtime=function(){return u._timestamp},h.addAction=function(){var e;return(e=c).addAction.apply(e,arguments)},h.addError=function(){var e;return(e=c).addError.apply(e,arguments)},h.removeAction=function(){var e;return(e=c).removeAction.apply(e,arguments)},h.getStates=function(){var e;return(e=c).getStates.apply(e,arguments)},h.setStates=function(){var e;return(e=c).setStates.apply(e,arguments)},h.use=function(e,t){switch(e){case l.SUCCESS:if(!t)return;Array.isArray(t)?Array.prototype.push.apply(this.queueSuccess,t):this.queueSuccess.push(t);break;case l.FAIL:if(!t)return;Array.isArray(t)?Array.prototype.push.apply(this.queueFail,t):this.queueFail.push(t);break;default:throw new Error("undefined key")}},h.loadScript=function(e,t){t||(t=e.toLowerCase());var n=$("script[id="+t+"]");if(n.length)return void(this.onSuccess||this.success).call(this);n=document.createElement("script"),document.getElementsByTagName("head")[0].appendChild(n),n.addEventListener("load",(this.onSuccess||this.success).bind(this)),n.addEventListener("error",(this.onFail||this.fail).bind(this)),n.id=t,n.type="text/javascript",n.src=e},h.requestData=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"GET";t="object"===(void 0===e?"undefined":r(e))?Object.assign({},a,{url:e}):Object.assign({},a,t,{url:e}),t.type=n.toUpperCase();var u=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=Array.prototype.concat.call(l.queueSuccess,this.queueSuccess),a=c.getMiddleware(i.REDUCER,o.AFTER);s.run(a,o.AFTER,[c],function(){if(r.length||this.onSuccess){var e=!0,n=!1,i=void 0;try{for(var o,s=r[Symbol.iterator]();!(e=(o=s.next()).done);e=!0){o.value.apply(this,t)}}catch(e){n=!0,i=e}finally{try{!e&&s.return&&s.return()}finally{if(n)throw i}}!!this.onSuccess&&this.onSuccess.apply(this,t)}else this.success.apply(this,t)}.bind(this))},f=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=Array.prototype.concat.call(l.queueFail,this.queueFail),a=t[0],u=c.getMiddleware(i.REDUCER,o.AFTER);s.run(u,o.AFTER,[c],function(){if(a&&(t=[{status:a.status,statusText:a.statusText||"",response:a.responseJSON||a.responseText}]),r.length||this.onFail){var e=!0,n=!1,i=void 0;try{for(var o,s=r[Symbol.iterator]();!(e=(o=s.next()).done);e=!0){o.value.apply(this,t)}}catch(e){n=!0,i=e}finally{try{!e&&s.return&&s.return()}finally{if(n)throw i}}!!this.onFail&&this.onFail.apply(this,t)}else this.fail.apply(this,t)}.bind(this))},h=c.getMiddleware(i.REDUCER,o.BEFORE);s.run(h,o.BEFORE,[t,c],function(){return $.ajax(t).done(u.bind(this)).fail(f.bind(this))}.bind(this))},h.getData=function(e,t){return this.requestData(e,t,"get")},h.putData=function(e,t){return this.requestData(e,t,"put")},h.postData=function(e,t){return this.requestData(e,t,"post")},h.deleteData=function(e,t){return this.requestData(e,t,"delete")},h.success=function(e){},h.fail=function(e,t){"abort"in e&&e.abort(),this.removeAction(this._id),this.addError(t)},h.finish=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];this.subscriber&&this.subscriber.apply(this,t),this.removeAction(this._id)},h.env={},h.env.template=function(e,t){if("string"!=typeof e)return e;var n=e,r=e.match(/{{\w+}}/g);return r&&r.forEach(function(e){var r=e.replace("{{","").replace("}}","");r in t&&(n=n.replace(e,t[r]))}),n},f}},e.exports=function(e){return c||(c=e),u}},function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=n(4),o={STRING:"string",NUMBER:"number",ARRAY:"array",EMAIL:"email",PHONE:"phone",BOOLEAN:"boolean"},s="min",a="max",u={},c={},l=function(e,t){if("required"in this&&!c.required.call(this,t))return i.create('Required attribute "'+e+'" is missing.',{key:e,value:t});if(void 0!==t){if(!c[this.name].call(this,t))return i.create('"'+e+'" type property must be "'+this.name+'".',{key:e,value:t});if(this.name===o.NUMBER){if(s in this&&null!==this[s]&&!c[s].call(this,t))return i.create('"'+e+'" is greater than '+this[s]+".",{key:e,value:t});if(a in this&&null!==this[a]&&!c[a].call(this,t))return i.create('"'+e+'" may have a value of '+this[a]+" or less.",{key:e,value:t})}else if(this.name===o.STRING){if(s in this&&null!==this[s]&&!c[s].call(this,t))return i.create('"'+e+'" must be more than '+this[s]+" characters long.",{key:e,value:t});if(a in this&&null!==this[a]&&!c[a].call(this,t))return i.create('"'+e+'" should be no longer than '+this[a]+" characters.",{key:e,value:t})}}},f=function(e,t,n){var r={},i=void 0;return t.forEach(function(e){r[e]=u[e]}),i=Object.assign({name:e},r,n),i.__validate__=l,i};u.required=!1,u.defaultValue=null,u[s]=null,u[a]=null,u.format=null,c[o.STRING]=function(e){return(void 0===e?"undefined":r(e))===o.STRING},c[o.NUMBER]=function(e){if("number"==typeof e)return!0;var t=String(e),n=t.match(/^[+-]?(\d+\.?\d*)$|(\d*\.?\d+)$/g);return!!n&&(!(n.length>1)&&n[0].length===t.length)},c[o.ARRAY]=function(e){return Array.isArray(e)},c[o.EMAIL]=function(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)},c[o.BOOLEAN]=function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},c.required=function(e){return!this.required||void 0!==e&&null!==e},c[s]=function(e){return this.name===o.NUMBER?e>=this[s]:this.name!==o.STRING||e.length>=this[s]},c[a]=function(e){return this.name===o.NUMBER?e<=this[a]:this.name!==o.STRING||e.length<=this[a]},e.exports={String:function(e){return f(o.STRING,["required","defaultValue",s,a,"format"],Object.assign({defaultValue:""},e))},Number:function(e){return f(o.NUMBER,["required","defaultValue",s,a],Object.assign({defaultValue:0},e))},Array:function(e){return f(o.ARRAY,["required","defaultValue"],Object.assign({defaultValue:[]},e))},Email:function(e){return f(o.EMAIL,["required"],Object.assign({},e))},Boolean:function(e){return f(o.BOOLEAN,["required"],Object.assign({},e))}}},function(e,t,n){"use strict";e.exports={create:function(e){return{wwtype:"store",store:e}}}},function(e,t,n){"use strict";e.exports={create:function(e){return{wwtype:"action",type:e,data:arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}}}}},function(e,t,n){"use strict";e.exports={create:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return{wwtype:"event",type:e,data:n}}}},function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};e.exports={create:function(e,t){function n(e){var n={};for(var r in t)t.hasOwnProperty(r)&&(n[r]=void 0);return Object.assign(n,e)}var i={wwtype:"schema",schemaName:e};return i.validate=function(e){var i=n(e),o=[];for(var s in i)if(i.hasOwnProperty(s)){var a=t[s];if(a&&a.hasOwnProperty("__validate__")){var u=a.__validate__.call(a,s,e[s]);u&&o.push(u)}else"object"===("undefined"==typeof window?"undefined":r(window))&&console.warn('Is not defined in the schema field "'+s+'" is present.')}return 0===o.length?void 0:o},i.toSchema=function(){return t},i}}},function(e,t,n){"use strict";e.exports=function(e,t,n){return{view:t,container:e,options:Object.assign({update:!0},n),viewName:t.viewname,wwtype:"layout"}}},function(e,t,n){"use strict";e.exports=function(e,t){return{view:t,name:e,viewName:t.viewname,wwtype:"component"}}},function(e,t,n){"use strict";e.exports=function(e,t){return{type:e,plugin:t,wwtype:"plugin"}}},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var i=n(2).Collection,o=n(1),s=n(5),a=[s.SELECTED_ROW,s.SELECTED_CELL],u=void 0,c=void 0;u=o.View.create("CollectionView",{super:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];u.prototype.initialize.apply(this,t)},initialize:function(){this.collection=this.collection||new i,this.collection.on("add",this.addRowView,this),this.rowViews=[],this.reverse=!1;for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];o.View.prototype.initialize.apply(this,t)},viewWillUnmount:function(){for(var e=void 0;e=this.collection.first();)this.collection.remove(e);this.rowViews=[]},addRowView:function(e){var t=this,n=this.$(this.rowContainer);if(!n.length&&(n=this.$el,!this.$el.is(this.rowContainer)))throw new Error("undefined rowContainer");this.rowView.prototype.container=n,this.reverse?this.rowView.prototype.prepend=!0:this.rowView.prototype.append=!0;var r=new this.rowView(e);this.rowViews.push(r),e.on("remove",function(){t.rowViews.splice(t.rowViews.indexOf(r),1),r.close()},r),e.on("change",function(e){r.setModel(e.toJSON()),r.updateView()},r),a.forEach(function(e){return r.on(e,t["on"+e.charAt(0).toUpperCase()+e.slice(1)],t)})},reload:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("[object Object]"!==Object.prototype.toString.call(n))throw new Error("invalid options!!!");var i=n.uid,o=t.filter(function(e){return!!e}).map(function(t){if(i){var n=e.collection.findWhere(r({},i,t[i]));if(n)return n.set(t),n}return t});this.reverse="reverse"in n&&n.reverse,this.collection.set(o,{remove:!("reset"in n)||n.reset})},getCollection:function(){return this.rowViews.map(function(e){return e.getModel()})},onSelectedRow:function(){this.log("selectedRow")},onSelectedCell:function(){this.log("selectedCell")},onAction:function(){this.log("onAction")},onClose:function(){this.rowViews.forEach(function(e){return e.close()})}}),u.create=function(e,t){var n=u.extend(t);return n.viewname=e,Object.defineProperty(n.prototype,"viewname",{value:e,writable:!1}),n},e.exports=function(e){return c||(c=e),u}},function(e,t,n){"use strict";var r=n(1),i=n(5),o=void 0,s=void 0;o=r.View.create("ItemView",{events:{click:"_onSelectedRow"},super:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];o.prototype.initialize.apply(this,t)},initialize:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];r.View.prototype.initialize.apply(this,t)},_onSelectedRow:function(e){this.onSelectedRow&&"function"==typeof this.onSelectedRow&&this.onSelectedRow(e,function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];this.trigger.apply(this,Array.prototype.concat.call([],i.SELECTED_ROW,t))}.bind(this))},_onSelectedCell:function(e){this.onSelectedCell&&"function"==typeof this.onSelectedCell&&this.onSelectedRow(e,function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];this.trigger.apply(this,Array.prototype.concat.call([],i.SELECTED_CELL,t))}.bind(this))}}),o.create=function(e,t){var n=o.extend(t);return n.viewname=e,Object.defineProperty(n.prototype,"viewname",{value:e,writable:!1}),n},e.exports=function(e){return s||(s=e),o}},function(e,t,n){"use strict";var r=n(1),i=void 0,o=void 0,s=1e3,a={position:"fixed",top:0,left:0,right:0,bottom:0,background:"#000",opacity:.7},u={overflowY:"auto",display:"block",position:"absolute",top:"50%",left:"50%",width:"80%",maxHeight:"80%",background:"#fff",webkitTransform:"translate(-50%, -50%)",transform:"translate(-50%, -50%)"};i=r.View.create("PopupView",{overlayClassName:"",overlayCss:{},css:{},showOverlay:!0,useDefaultCss:!0,super:function(){i.prototype.initialize.apply(this,this.arguments)},initialize:function(){this.overlay=$("<div></div>");for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];r.View.prototype.initialize.apply(this,t)},viewComponentDidMount:function(e){var t=this.getModel();if(Object.keys(t).map(function(e){switch(e){case"css":case"overlayCss":this[e]=Object.assign({},this[e],t[e]);break;case"overlayClassName":case"showOverlay":case"useDefaultCss":this[e]=t[e];break;case"buttons":var n=t.buttons;this.events||(this.events={});for(var r in n)n.hasOwnProperty(r)&&(this.events["click "+r]=n[r].bind(this));this.delegateEvents()}}.bind(this)),this.showOverlay){var n=this.overlay;n.addClass(this.overlayClassName),n.css(Object.assign({zIndex:s},a,this.overlayCss)),this.$el.parent().prepend(n),s+=100,$(n).on("click",function(){this.dispatch(r.Event.create("overlayClicked",this))}.bind(this))}this.useDefaultCss&&e.css(u),e.css(Object.assign({zIndex:s},this.css)),s+=100}}),i.create=function(e,t){var n=i.extend(t);return n.viewname=e,Object.defineProperty(n.prototype,"viewname",{value:e,writable:!1}),n},e.exports=function(e){return o||(o=e),i}}]);

================================================
FILE: docs/README.md
================================================
# WoowahanJS 기초

프로젝트 구성 환경은 [Webpack](https://webpack.github.io)(권장) 또는 [Browserify](http://browserify.org) 와 같은 번들러를 이용한 구성을 권장합니다.
앱을 번들링하기 위한 초기 구성은 [프로젝트 환경 구성](./project-setup.md) 내용을 참고하여 주십시오.

* [프로젝트 환경 구성](./project-setup.md)
* [첫 번째 앱 만들기](./first-app.md)
* [뷰](./view.md)
* [뷰모델 및 데이타 바인딩](./view-model.md)
* [뷰의 DOM 참조](./dom-refs.md)
* [컬렉션 뷰](./collection-view.md)
* [팝업 뷰](./popup-view.md)
* [이벤트](./event.md)
* [액션과 리듀서](./action-reducer.md)
* [스토어](./store.md)
* [라우터](./route.md)

================================================
FILE: docs/action-reducer.md
================================================
# 액션과 리듀서

UI 관련 코드와 상태(데이타) 및 상태 관리 코드를 분리하기 위해 Action & Reducer를 제공합니다.
Action은 특정 작업을 시작하게하는 "키"로서 정의되며 Reducer와 1:1 관계를 가집니다.
Action을 Reducer에 전달하기 위해서 dispatch를 제공하며 어떤 View에서도 호출할 수 있습니다.

## 액션

액션의 형태는 다음과 같습니다.

```javascript
{
  type: 'ActionName',
  data: {

  }
}
```

액션을 쉽게 만들 수 있는 Action Creator 유틸리티를 제공합니다.
dispatch에 전달된 액션 객체를 직접 기술할 수도 있으나 Action Creator를 사용하면 좀 더 편리합니다.

```javascript
Woowahan.Action.create('ActionName', data);
```

## Dispatch

모든 뷰는 dispatch를 제공합니다. dispatch로 액션을 보낼 수 있으며 액션의 수행 결과는 지정한 핸들러를 통해 받을 수 있습니다.
핸들러가 없는 액션이 있을 수도 있기 때문에 핸들러는 옵션입니다.
다음과 같이 사용할 수 있습니다.

```javascript
onReceive(data) {

}

onAction(data) {
  this.dispatch(Woowahan.Action.create('SearchOrders', data), this.onReceive);
}
```

## 리듀서

Reducer Creator로 리듀서를 만들 수 있습니다.
리듀서는 액션과 달리 반드시 Reducer Creator로만 만들 수 있습니다.

WoowahanJS에서 리듀서의 역할은 약속된 액션의 작업을 처리하는 작업 처리자입니다.
웹 어플리케이션에서 작업 처리자가 처리해야할 주된 작업 중 하나는 API 호출과 관련되어있습니다.
Ajax로 대변되는 XHR 처리는 리듀서가 담당하며 보다 효과적인 처리를 위해 몇 가지 헬퍼 함수가 제공됩니다.

사용자 정보 API를 호출한 후 결과를 반환하는 전형적인 코드는 다음과 같습니다.

```javascript
const FETCH_USER_INFO = 'fetch-user-info';

Woowahan.Reducer.create(FETCH_USER_INFO, function(data) {
  this.onSuccess = function(response) {
    this.finish(response);
  };

  this.getData('/api/users/'+data.userid);
});
```

getData는 GET XHR 요청을 보내는 함수이며 첫 번째 인자로 URL을 받습니다.
HTTP 메소드 타입에 대응하는 postData, putData, deleteData가 제공됩니다.
XHR 요청이 완료되면 this.onSuccess로 결과 값이 반환됩니다.
응답 처리를 위해 onSuccess 구현은 필수 요소입니다.

요청 실패시 필요한 작업이 있다면 onFail을 구현하면 됩니다.
onFail이 구현되지 않았다면 WoowahanJS 는 error 이벤트를 글로벌 이벤트로 생성합니다.
글로벌 이벤트는 어플리케이션 이벤트라 부르며 이벤트 부분에서 자세한 내용을 알 수 있습니다.

리듀서의 처리 결과를 dispatch한 핸들러에 보내기 위해 **finish** 메소드가 제공됩니다.
리듀서 내에서 언제든 finish 메소드를 호출함으로서 리듀서 수행을 종료하고 결과를 dispatch시 지정된 핸들러로 전송할 수 있습니다.

## 리듀서 등록

만들어진 리듀서가 사용되기 위해선 등록 과정이 필요합니다.
리듀서 등록은 어플리케이션이 처리합니다.

```javascript
import Woowahan from 'woowahan';
import FetchUserReducer from './reducer/fetch-user';

let app = new Woowahan();

app.use(FetchUserReducer);

app.start();
```

이제 어떤 뷰에서든 dispatch를 통하여 FetchUserReducer를 이용할 수 있습니다.

## 스키마


================================================
FILE: docs/collection-view.md
================================================
# 컬렉션 뷰

컬렉션 뷰<sub>CollectionView</sub>는 `Woowahan`에서 제공하는 뷰 컴포넌트입니다.
[뷰]('./view.md)<sub>View</sub>의 기능들을 상속하며, 컬렉션 데이터를 나타내기 위한 기능들을 제공합니다

아래는 기본적인 컬렉션 뷰의 형태입니다.

#### basic-collection-view.js

```javascript
import Woowahan from 'woowahan';
import BasicItemView from './basic-item-view';
import Template from './basic-collection-view.hbs';

export default Woowahan.CollectionView.create('BasicCollectionView', {
  template: Template,
  rowView: BasicItemView,
  rowContainer: '#basicContainer',
  
  viewDidMount() {
    const collectionData = [
      { name: '홍길동', age: 573 },
      { name: '이순신', age: 534 },
      // ...
    ];
    
    this.reload(collectionData);
  }
});
```

## rowContainer

컬렉션 데이터의 뷰를 추가할 컨테이너입니다.
     
## rowView

컬렉션 데이터를 뷰 모델로 가지는 아이템 뷰<sub>ItemView</sub>입니다.

## reload

컬렉션 뷰의 `reload` 메소드의 인자로 컬렉션 데이터를 전달하면 뷰 리스트가 자동으로 갱신됩니다.  
`reload` 메소드를 통해 전달된 컬렉션 데이터는 컬렉션 뷰의 내부에서 이전에 전달된 컬렉션 데이터와 비교를 통해 필요한 `row`만 추가, 삭제, 변경합니다.  
`reload` 메소드는 두 번째 인자로 옵션 객체를 받을 수 있으며, 옵션 객체의 구성은 아래와 같습니다.
 
- `uid` : 컬렉션 뷰 내부에서 `row`를 비교하기 위한 기준이 되는 속성명입니다.
- `reset`: 기존 `row`를 제거할지 여부를 설정합니다. 기본 값은 `true`입니다.
- `reverse`: `row`를 아래에서 위로 추가할 수 있는 옵션입니다. 기본 값은 `false`입니다.

```javascript
// phoneNumber 속성을 기준으로, 새로 전달된 collectionData에 없는 기존 row는 제거 되며 row는 아래에서 위로 추가됩니다
this.reload(collectionData, { uid: 'phoneNumber', reset: true, reverse: true });
````

## getCollection

컬렉션 뷰의 `getCollection` 메소드를 통해 현재의 컬렉션 데이터를 `JSON` 형태로 가져올 수 있습니다.  
`reload` 메소드를 통해 전달한 데이터를 `rowView`에서 제어하는 경우에도 항상 최신의 데이터를 반환합니다.

```javascript
// 현재 rowView들이 가진 뷰 모델 리스트를 가져옵니다.
console.log(this.getCollection());
```

================================================
FILE: docs/dom-refs.md
================================================
# 뷰의 DOM 참조

뷰 코드 안에서 DOM에 접근해야할 필요가 있습니다.
뷰가 로드된 시점 이후에 DOM API를 사용하여 접근하거나 편리하게 jQuery를 이용할 수 도 있습니다.
다음의 코드는 jQuery를 이용하여 UI내 엘리먼트를 토클하는 예제입니다.

```html
<div class="container">
    <div class="alert alert-success" role="alert">문제가 발생했습니다.</div>
    <button type="button" class="btn btn-toggle">Toggle</button>
</div>
```

```javascript
Woowahan.View.create('Foo', {
  template: Template,
  events: {
    'click .btn-toggle': 'onToggleElement'
  },

  onToggleElement(event) {
    this.$el.find('.alert').toggle();
  }
});
```

## Refs

뷰 코드 내에서 DOM 접근을 셀렉터 기반으로 기술하면 UI 구조와(CSS 네이밍 포함) 강력한 종속성으로 결합됩니다.
결합의 강도가 강하면 UI 변경에 따른 뷰의 정상 동작을 보증할 수 없게됩니다.
UI와(DOM) 의 결합을 느슨하게 유지하는 방법으로 DOM 참조를 제공합니다.
다음 예제는 이전 예제와 동일하지만 DOM 참조 기능을 이용하여 다시 구현한 것입니다.
차이점을 비교해 보세요.

```html
<div class="container">
    <div class="alert alert-success" role="alert" data-ref="alert">문제가 발생했습니다.</div>
    <button type="button" class="btn btn-toggle">Toggle</button>
</div>
```

```javascript
Woowahan.View.create('Foo', {
  template: Template,
  events: {
    'click .btn-toggle': 'onToggleElement'
  },

  onToggleElement(event) {
    this.$(this.refs.alert).toggle();
  }
});
```

뷰에서 참조할 data-ref 속성을 템플릿에 기술하면 this.refs 객체에 할당되어 DOM 로딩 후 언제든 해당 엘리먼트에 접근할 수 있습니다.
이제 UI 변경과 상관없이 뷰는 정상 동작이 보장되는 느슨한 결합도를 갖게 되었습니다.

## 폼 요소 참조하기 및 복원

data-ref 속성은 어떤 DOM 요소라도 가능합니다.
FORM 컨트롤들은 다른 요소들과 다르게 사용자의 입력을 처리합니다.
입력된 값들은 뷰 코드가 수집하기 전에 updateView 호출로 뷰가 새로 랜더링되면 모두 유실됩니다.
참조로 명시된 폼 요소 중 몇 몇 타입들은 (INPUT:text, INPUT:number, TEXTAREA) 사용자가 입력한 값들을 updateView에 의해 뷰가 새로 랜더링되어도 값을 유지할 수 있는 옵션을 제공합니다.

```html
<div class="container">
    <input type="text" name="keyword" data-ref="keyword" data-ref-form-restore="true">
    <button type="submit" class="btn btn-default">Submit</button>
    <button type="button" class="btn btn-reset">Reset</button>
</div>
```

```javascript
Woowahan.View.create('Foo', {
  template: Template,
  events: {
    'click .btn-reset': 'onReset'
  },

  onReset(event) {
    this.updateView();    
  }
});
```

위 예제 코드는 Reset 버튼을 클릭하여 뷰를 새로 랜더링 해도 사용자가 입력한 TEXT 값을 유지되는 것을 보여줍니다.


================================================
FILE: docs/event.md
================================================
# 이벤트

UI에서 발생하는 이벤트와 이벤트 핸들러는 events 속성 설정으로 쉽게 연결할 수 있습니다.
events 속성은 뷰 생성시 정의하며 기본 형식은 다음과 같습니다.

```javascript
Woowahan.View.create('ViewName', {

  events: {
    "eventName DOM-Selector":            "EventHandler", // 기본 형태 설명
    "click .btn.btn-save":               "onSave",
    "dbclick .nav.ico-logout":           "onLogout",
    "keypress .form-control.txt-search": "onAutoSearch"
  },
  
  onSave(event) { 
    // Do something
  },
  
  onLogout(event) { 
    // Do something
  },
  
  onAutoSearch(event) {
    // Do something
  }
  
});
```

이벤트 핸들러는 DOM on-event 핸들러와 동일하며 같은 방식으로 작성하여 사용할 수 있습니다. 마우스 커서의 이동을 감지하여 좌표를 콘솔에 출력하고, Text Input 요소에 입력 값을 출려하는 다음 예제를 참고하세요.

```javascript
events: {
  'mousemove .canvas': 'detectMounsePosition',
  'keypress .input-box': 'detectInputValue'
},

detectMounsePosition(event) {
  console.log('x: %s, y: %s', event.screenX, event.screenY);
},

detectInputValue(event) {
  console.log(event.target.value);
}
```

## 자식 뷰와의 커뮤니케이션

뷰의 행위가 뷰 내에서 모두 다루어지는 경우도 있지만 뷰 밖의 영역으로 뷰 내의 행위를 알려야하는 경우도 있습니다.
부모 뷰와 자식 뷰간에는 더욱 더 빈번할 수 있습니다.
자식 뷰에서 발생하는 이벤트를 부모 뷰로 보내기 위해선 다음과 같은 과정이 필요합니다.

```html
<!-- parentView 시작 -->
<div class="search-form">
  <!-- childView 시작 -->
  <form>
    <input type="text" name="input-search">
    <button type="button" class="btn btn-search">Search</button>
  </form>
  <!-- childView 끝 -->
</div>
<div>
  <table>
  </table>
</div>
<!-- parentView 끝 -->
```

```javascript
var childView = Woowahan.View.create('Child', {
 
});

var parentView = Woowahan.View.create('Parent', {
  events: {
    'click .btn.btn-search': 'onSearch'
  },
    
  viewDidMount() {
    this.updateView('.search-form', childView);
  },
  
  onSearch() {
    // Do something... 
  }
});

```
이 셈플과 같은 방식의 문제점은 parentView와 childView간 HTML 종속성이 만들어진다는 것입니다.
parentView 입장에선 childView의 HTML 구조를 알아야하며 childView 입장에선 부모가 자신의 UI 중 일부의 이벤트 핸들러를 부모 뷰가 한다는 것도 기억해야합니다.
코드로 기술되지 못하기 때문에 내용을 알지 못한다면 숨겨진 로직이 될 수 밖에 없습니다.

부모 뷰와 자식 뷰간 종속성을 없애고 처리 방식도 손쉽게 할 수 있는  @이벤트가 제공됩니다.
@이벤트를 이용하여 개선한 코드는 다음과 같습니다. 
(HTML 코드는 동일하여 반복 기술하지 않습니다)

```javascript
var childView = Woowahan.View.create('Child', {
  events: {
    'click .btn.btn-search': 'onSearch'
  },
  
  onSearch() {
    this.dispatch(Woowahan.Event.create('search'));
  }
});

var parentView = Woowahan.View.create('Parent', {
  events: {
    '@search': 'onSearch'
  }
    
  viewDidMount() {
    this.updateView('.search-form', childView);
  },
  
  onSearch() {
    // Do something... 
  }
});

```

parentView와 childView는 명시적으로 `search` 이벤트로 커뮤니케이션하도록 변경되었습니다.
마크업 구조의 종속성은 제거되어 childView는 parentView와 상관 없이 마크업 구조 등을 변경할 수 있게되었습니다.

childView는 btn-search 버튼이 클릭되면 외부로 이벤트를 내보낸다는 것이 명시적인 코드로 표현되었습니다.
숨겨진 로직은 사라졌기 때문에 명확하게 코드를 관리할 수 있게 되었습니다.

이 셈플에서 두 가지 다루지 않았던 표현이 등장합니다. 
이벤트를 외부로 발행하고, 자식 뷰의 이벤트를 수신받는 표현입니다.

## 이벤트 발행하기

외부로 이벤트를 발행할 때도 dispatch가 사용됩니다.
dispatch 메소드로 발행할 수 있는 이벤트를 생성하기 위해서 Woowahan.Event.create 핼퍼 함수가 제공됩니다.
예제와 같이 생성한 이벤트를 dispatch 할 수 있습니다.
이벤트와 함께 데이타를 전달해야 한다면 이벤트 이름 다음 인수로 데이타를 기술할 있으며 개수와 타입은 제한이 없습니다.

```javascript
this.dispatch(Woowahan.Event.create('search', { keyword: 'javascript' }));
```

## 자식 뷰 이벤트 수신하기

자식 뷰가 dispatch한 이벤트를 부모 뷰가 수신하기 위해선 단지 events 속성에 @이벤트이름 형식으로 이벤트 핸들러와 함께 지정하기만 하면 됩니다.

```javascript
events: {
  '@search': 'onSearch'
}
```

@이벤트의 경우 DOM on-event와 표현과 달리 이벤트 이름 다음에 오는 selector가 생략 가능합니다.
selector를 생략하지 않는다면 updateView로 자식 뷰를 추가할 때 명시했던 selector를 기술합니다.
위 예제를 기준으로 한다면 다음과 같이 기술할 수 있습니다.

```javascript
events: {
  '@search .search-form': 'onSearch'
}
```

자식 뷰의 이벤트 수신에 selector가 필요한 경우는 자식 뷰를 서로 다른 container에 추가한 경우입니다.
N 개의 자식 뷰가 N 개의 container에 추가된 구조일 경우 명시적으로 selector 지정이 필요합니다.

## 이벤트와 함께 입력 데이타 수집

사용자가 입력한 데이타를 이벤트와 함께 수집해야하는 경우가 있습니다.
검색창에 검색어를 입력한 후 검색 버튼을 클릭하는 UI 라면 검색 버튼의 클릭 이벤트 핸들러에선 검색창의 데이타를 가져오는 코드가 필요합니다. 
때로는 회원가입 입력 폼과 수집되어야 하는 데이타가 수십개에 이를 수 도 있습니다.

웹 UI는 사용자 데이타를 입력받기 위한 다양한 폼 요소를 지원하며 요소의 타입에 따라 값을 얻어오는 방식이 다릅니다.
각각의 방식을 개발자가 학습해야할 필요가 있고 데이타를 수집하는 반복적인 코드를 작성해야만 합니다.

@이벤트 방식의 두 번째 기능은 이벤트와 데이타를 함께 결합해 주는 것입니다.
이전 예제의 onSearch를 생각해 봅시다.
검색 버튼이 클릭 되었을 때 search 이벤트와 함께 사용자가 입력한 검색어를 전달해야합니다.
사용자가 입력한 검색어는 name="input-search"인 INPUT 엘리먼트에 담겨 있습니다.
관련 기능을 추가하면 다음과 같습니다.

```javascript
var childView = Woowahan.View.create('Child', {
  events: {
    'click .btn.btn-search': 'onSearch'
  },
  
  onSearch() {
    var keyword = this.$el.find('input[name=keyword]').val();
    
    this.dispatch(Woowahan.Event.create('search', keyword));
  }
});

var parentView = Woowahan.View.create('Parent', {
  events: {
    '@search': 'onSearch'
  },
  
  onSearch(keyword) {
    // Do something... 
  }
});
```

> this.$el은 뷰가 제공하는 DOM 접근을 위한 뷰의 jQuery DOM 참조 객체입니다. 
> jQuery 객체이며 뷰와 관련된 jQuery 연산을 동일하게 사용 가능합니다.

DOM 처리가 코드로 기술되어야 하기 때문에 불편함이 발생합니다.
@이벤트를 이용하여 DOM 처리 코드를 제거해 보겠습니다.

```javascript
var childView = Woowahan.View.create('Child', {
  events: {
    'click .btn.btn-search': 'onSearch(input[name=keyword])'
  },
  
  onSearch(keyword) {
    this.dispatch(Woowahan.Event.create('search', keyword));
  }
});

/* parentView 코드는 동일하여 생략 */
```

이벤트 핸들러 함수 표현에 수집할 데이타의 selector 를 지정함으로서 간단히 이벤트 핸들러에 데이타를 결합할 수 있습니다.
만약 검색 옵션도 있다면 다음과 같이 되겠죠.
이벤트 핸들러와 결합될 데이타의 수에는 제한이 없습니다. 
필요한 만큼 사용하시면 됩니다.

지정된 셀렉터의 엘리먼트 타입의 형식에 맞춰 데이타가 수집됩니다.

```javascript
  events: {
    '@click .btn-search': 'onSearch(input[name=keyword], .search.option)'
  }
  
  onSearch(keyword, option) {
    // Do search
  }
```

FORM submit과 같이 폼 데이타를 수집해야 한다면 다음과 같이 작성할 수 있습니다.

```javascript
  events: {
    '@submit .join-form': 'onJoin()'
  }
  
  onJoin(form) {
    /*
     form.name
     form.password
     form.gender
     ...
    */
    // Do Something
  }
```

@이벤트의 selector 가 FORM인 경우 하위 FORM 요소의 모든 데이타를 수집하여 이벤트 핸들러에 전달합니다.

## 어플리케이션 이벤트

어플리케이션 범위의 이벤트가 지원됩니다.
개별 뷰 범위를 떠나 앱 전체에 걸쳐 발생하는 이벤트입니다.
새로운 작업(Action -> Reducer)이 시작되거나 모든 작업이 완료되었을 경우 각각 정의된 이벤트가 발생합니다.

만약 어플리케이션 이벤트를 수신받고자 한다면 다음과 같이 할 수 있습니다.

```javascript
var app = new Woowahan();

app.on('start', function() {
  // Do something
  console.log(app.numberOfAction());
  console.log(app.numberOfWorkAction());
});

app.on('finish', function() {
  // Do something
});

app.on('error', function(errs) {
  // Do something
});
```

전역 이벤트 수신자에선 작업 진행 상황 및 오류 처리에 대한 처리를 어플리케이션 수준에서 - 토스트 팝업을 표시한다거나 - 구현할 할 때 유용한 구조를 제공합니다.


================================================
FILE: docs/first-app.md
================================================
# 첫 번째 앱 만들기

WoowahanJS로 작성된 단일 페이지 어플리케이션은 1개 이상의 뷰 컴포넌트와 이들 뷰를 관리하는 하나의 Application으로 구성됩니다.

다음 예제는 하나의 뷰와 하나의 어플리케이션 만으로 작동되는 아주 간단한 예제 코드입니다.

#### hello-view.js

```javascript
import Woowahan from 'woowahan';

export default Woowahan.View.create('Hello', {
  template: '<h1>Hello, WoowahanJs</h1>'
});
```

#### main.js

```javascript
import Woowahan from 'woowahan';
import HelloView from './hello-view';

const app = Woowahan();

app.start({
  url: '/', container: 'body', view: HelloView
});
```

`Woowahan.View.create` 정적 메소드로 새로운 뷰를 생성할 수 있습니다. 뷰는 이름과 옵션 객체로 구성됩니다.
뷰 이름은 문자열이라면 어떤 제약도 없으며 뷰를 구분할 수 있는 이름을 지어주시면 됩니다.
뷰 이름의 중복도 허용됩니다.
다만 브라우저 콘솔에서 로그 출력시 뷰 이름이 기본으로 출력되기 때문에 용이한 식별을 위해선 충분히 식별 가능한 이름을 권장합니다.

어플리케이션인 `app = Woowahan()`을 start 함으로서 전체 앱을 구동시킬 수 있습니다.
start의 첫 번째 파라메터는 라우팅 경로와 연결될 View의 구성 정보로 이루어진 객체를 받습니다.

```javascript
app.start({
  url: '/',
  view: MainView,
  container: 'body',
  pages: [
    { url: 'users', container: '.contents', view: UserView },
    { url: 'orders', container: '.contents', view: OrderView, pages: [
        { url: ':orderno', view: OrderDetailView, pages: [
            { url: 'edit', view: OrderEditView }
          ] 
        },
        { url: 'search', view: OrderSearchView }
      ]
    }
  ]
});
```

위와 같은 앱의 라우팅 경로 구성은 다음과 같이 됩니다.

* / => MainView
* /users => UserView
* /orders => OrderView
* /orders/10 => OrderDetailView
* /orders/10/edit => OrderEditView
* /orders/search => OrderSearchView

`Woowahan.View.create`로 만들어진 뷰의 UI 는 HTML로 생성할 수 있으며 Woowahan.View는 이를 template 으로 기술합니다. 만약 UI 가 없는 뷰를 만든다면 아래와 같이 할 수 있습니다.

```javascript
const emptyView = Woowahan.View.create('EmptyView');
```

template에 HTML이 설정되지 않았다고 해서 실제로 View 가 아무 마크업도 없는 것은 아닙니다. HTML이 공급되지 않으면 `<div></div>`와 같은 상태가 됩니다. 

뷰는 UI가 필요하기 때문에 UI를 작성하기 위해서 첫 번째 셈플 코드와 같이 template에 HTML을 작성합니다. 빌드 후 브라우저를 구동하면 Hello, WoowahanJs이 표시되는 것을 보실 수 있습니다.

[뷰 소개 및 기초](./view.md)



================================================
FILE: docs/popup-view.md
================================================
# 팝업 뷰

팝업 뷰<sub>PopupView</sub>는 `Woowahan`에서 제공하는 뷰 컴포넌트입니다.
[뷰]('./view.md')<sub>View</sub>의 기능들을 상속하며, 팝업 뷰를 나타내기 위한 기능들을 제공합니다.

아래는 기본적인 팝업 뷰의 형태입니다.

#### basic-popup-view.js

```javascript
import Woowahan from 'woowahan';
import Template from './basic-popup-view.hbs';

export default Woowahan.PopupView.create('BasicPopupView', {
  template: Template,
  css: { background: '#000' },
  overlayCss: { background: '#FFF' },
  className: 'basic-popup',
  overlayClassName: 'basic-popup-overlay',
  showOverlay: true,
  
  viewDidMount() {
    this.overlay.css({ background: '#FF0000' });
  }
});
```

## overlay

오버레이<sub>overlay</sub>는 팝업 뷰의 뒤로 나타나는 딤드<sub>dimmed</sub> 영역입니다.

팝업 뷰에서는 `overlay` 속성을 통해 이 영역에 접근할 수 있습니다.
`jQuery` 객체로 제공되므로 `jQuery` 기능을 사용하여 자유롭게 제어가능합니다.

## css

팝업 뷰는 기본 `css`를 가지고 있습니다.
`css` 속성으로 추가한 스타일이 기본 `css`를 덮어쓰는 형태로 적용됩니다.

**기본 css 속성들**

> overflowY: 'auto'  
> display: 'block'  
> position: 'absolute'  
> top: '50%'  
> left: '50%'  
> width: '80%'  
> maxHeight: '80%'  
> background: '#fff'  
> webkitTransform: 'translate(-50%, -50%)'  
> transform: 'translate(-50%, -50%)'  
> zIndex: 1100  

## overlayCss

팝업 뷰의 오버레이는 기본 `css`를 가지고 있습니다.
`overlayCss` 속성으로 추가한 스타일들이 기본 `css`를 덮어쓰는 형태로 적용됩니다.

**오버레이의 기본 css 속성들**

> position: 'fixed'  
> top: 0  
> left: 0  
> right: 0  
> bottom: 0  
> background: '#000'  
> opacity: 0.7  
> zIndex: 1000  

## overlayClassName

`overlayClassName` 속성을 통해 오버레이에 `className`을 추가할 수 있습니다.

## showOverlay

`showOverlay` 속성을 통해 오버레이를 노출할지 여부를 설정할 수 있습니다.

## closePopup

`closePopup` 메소드를 호출하여 팝업 뷰를 닫을 수 있습니다.
팝업 뷰 스스로 닫는 경우는 `this.closePopup()` 형태로 호출할 수 있습니다.

`closePopup` 메소드의 인자로 데이터를 전달할 수도 있습니다.

## overlayClicked 이벤트

오버레이가 클릭되는 경우 `overlayClicked` 이벤트가 발생합니다.
`overlayClick` 이벤트를 수신하여 팝업 뷰 외부가 클릭되는 이벤트를 수신할 수 있습니다.

```javascript
export default Woowahan.PopupView.create('BasicPopupView', {
  events: {
    'overlayClicked': 'onOverlayClick'
  },
  
  onOverlayClick() {
    console.log('overlay clicked');
    
    this.closePopup();
  }
});
```

## 팝업 뷰 추가 

팝업 뷰를 추가하기 위해 [뷰](./view.md)의 `addPopup` 메소드를 사용합니다.

```javascript
this.addPopup(BasicPopupView, { css, overlayCss, overlayClassName, showOverlay, buttons, popupData }, function(popupData) {
  console.log(popupData);
});
```

`addPopup` 메소드는 최대 3개의 인자를 받습니다.

- 첫 번째 인자는 팝업으로 사용할 팝업 뷰 컴포넌트를 전달합니다. 필수인자입니다.
- 두 번째 인자는 팝업으로 전달할 데이터입니다. 전달할 데이터가 없다면 생략할 수 있습니다.
- 세 번째 인자는 팝업 뷰가 닫히고 나서 호출되는 콜백 함수입니다. `PopupView`에서 전달하는 데이터를 인자로 받을 수 있습니다. 콜백을 전달할 필요가 없다면 생략할 수 있습니다.

두 번째 인자로 사용하는 데이터에는 팝업 뷰의 형태를 제어하는 데이터를 추가할 수 있습니다

- `css`: 팝업 뷰에 `css`를 추가할 수 있습니다.
- `overlayCss`: 팝업 뷰의 오버레이에 `css`를 추가할 수 있습니다.
- `overlayClassName`: 팝업 뷰의 오버레이에 `className`을 추가할 수 있습니다.
- `showOverlay`: 팝업 뷰의 오버레이를 보여줄지 여부를 `true` 또는 `false`로 제어할 수 있습니다.
- `buttons`: 팝업 뷰의 버튼이 선택되었을 때 실행할 함수를 전달할 수 있습니다.
- `_id` : 팝업 뷰에 `id`를 지정할 수 있습니다. 같은 `id`를 지정한 팝업 뷰를 `addPopup`하는 경우 나중에 전달된 팝업 뷰는 무시됩니다.

```javascript
this.addPopup(BasicPopupView, {
  css: {
    color: '#FFF'
  },
  overlayCss: {
    backgroundColor: '#000'
  },
  overlayClassName: 'cool-overlay',
  showOverlay: true,
  buttons: {
    '#btn-ok': function() {
      this.closePopup();
    }
  },
  _id: 'coolPopup'
});
```

================================================
FILE: docs/project-setup.md
================================================
# 프로젝트 환경 구성

현대의 웹 어플리케이션은 많은 컴포넌트와 페이지로 구성됩니다.
다수의 파일을 효과적으로 구성하기 위한 다양한 방법이 존재합니다.

WoowahanJS는 번들러를 이용한 구성과 Script 태그로 로딩하여 사용하는 방법 모두를 지원합니다.
프로젝트의 특성에 맞춰 적절한 방법을 선택하실 수 있습니다.

## 번들링 프로젝트

많은 프로젝트 모듈들을 효과적으로 개발하기 위해서 CommonJS 또는 ES6가 지원하는 방식으로 컴포넌트를 모듈화할 수 있습니다.
그러나 아직까지 이 방식을 지원하지 않는 브라우저가 많기 때문에 브라우저 호환성을 위해 트랜스파일링의 과정을 거치게됩니다.

예제 디렉토리의 많은 앱들을 참고해주세요.
Webpack과 Babel을 이용한 구성으로 되어있습니다.

[Examples](../examples)

## 번들링 하지 않는 구성

간단한 프로젝트의 경우 번들링이 필요없는 구성일 수 있습니다.
woowahanjs 는 일반적인 라이브러리처럼 script 태그로 로딩될 수 있습니다.

포함된 예제 중 타이머 예제는 번들링 하지 않고 간단히 script 태그로 로딩하여 작성되었습니다.
[Timer example](../examples/timer)


================================================
FILE: docs/route.md
================================================
# Route

어플리케이션인 `app = Woowahan()`을 start 함으로서 전체 앱을 구동시킬 수 있습니다.
start의 첫 번째 파라메터는 라우팅 경로와 연결될 View의 구성 정보로 이루어진 객체를 받습니다.

```javascript
app.start({
  url: '/',
  view: MainView,
  container: 'body',
  pages: [
    { url: 'users', container: '.contents', view: UserView },
    { url: 'orders', container: '.contents', view: OrderView, pages: [
        { url: ':orderno', view: OrderDetailView, pages: [
            { url: 'edit', view: OrderEditView }
          ]
        },
        { url: 'search', view: OrderSearchView }
      ]
    }
  ]
});
```

위와 같은 앱의 라우팅 경로 구성은 다음과 같이 됩니다.

* / => MainView
* /users => UserView
* /orders => OrderView
* /orders/10 => OrderDetailView
* /orders/10/edit => OrderEditView
* /orders/search => OrderSearchView

## 뷰에서 라우트 경로 얻기

어플리케이션이 라우트 테이블 기준으로 동작시키는 뷰 이외에도 개별 뷰 컴포넌트에서 특정 라우트 경로로 이동해야하는 경우가 있습니다.
모든 뷰에는 `this.getRouteTables` 메소드가 제공되며 이 메소드를 이용하여 app.start에 기술된 모든 라이트 경로를 얻을 수 있습니다.

## getRouteTables

메소드의 사용 방법은 다음과 같습니다.

```javascript
/*
 * getRouteTables (ViewName [,Params][,QueryString])
 */

// UserView의 경로를 얻습니다.
this.getRouteTables('UserView'); /* '/users' 문자열 반환 */

// OrderDetailView의 경로 반환
this.getRouteTables('OrderDetailView', { orderno: 3 }); /* '/orders/3' 문자열 반환 */
// 배열을 이용한 방법. 이 경우 URL에 기술된 Params Key 순서와 입력된 배열의 순서가 일치해야 합니다.
this.getRouteTables('OrderDetailView', [3]); /* '/orders/3' 문자열 반환 */

// OrderSearchView의 경로 반환. QueryString 포함
this.getRouteTables('OrderSearchView', 'keyword=1234'); /* '/orders/search?keyword=1234' 문자열 반환 */
// params 가 있는 경우
this.getRouteTables('OrderSearchView', [], 'keyword=1234');
this.getRouteTables('OrderSearchView', {}, 'keyword=1234');

// 모든 경로 목록 얻기
let tables = this.getRouteTables();

// OrderDetailView 경로 얻기
tables.OrderDetailView({ orderno: 3}); /* '/orders/3' 문자열 반환 */
```

라우트 경로를 얻기위해 필수적인 키는 뷰 이름이 이용됩니다.
뷰 이름은 `Woowahan.View.create` 함수의 첫 번째 인수입니다.
그러나 라우트 테이블에 뷰를 연결할 때 뷰 이름과 다른 이름을 지정할 수 있습니다.
이 때는 뷰 이름을 알기위해 뷰 본체의 내용을 확인해야하는 번거로움이 발생합니다. 라우트 테이블 정의시 외부 참조용으로 뷰 이름의 Alias를 제공하며 다음과 같이 작성됩니다.

```javascript
 app.start({
   url: '/',
   view: MainView,
   container: 'body',
   pages: [
     { url: 'users', container: '.contents', view: UserView, routeName: 'UsersView' },
     { url: 'orders', container: '.contents', view: OrderView, routeName: 'OrdersView', pages: [
         { url: ':orderno', view: OrderDetailView, pages: [
             { url: 'edit', view: OrderEditView }
           ]
         },
         { url: 'search', view: OrderSearchView }
       ]
     }
   ]
 });
 ```

routeName은 getRouteTables 호출의 키 로서 사용되며 기술하지 않으면 View 이름을 기본값으로 사용합니다.


================================================
FILE: docs/store.md
================================================
# 스토어

================================================
FILE: docs/view-model.md
================================================
# 뷰 모델 및 데이타 바인딩

## 뷰 모델

모든 뷰는 필요한 경우 상태를 가질 수 있습니다.
뷰가 가진 상태를 `뷰 모델`이라 합니다.
뷰 모델은 뷰의 템플릿과 결합되어 뷰의 UI를 구성합니다.

뷰가 유지되는 동안 함께 유지되어야하는 상태가 있다면 initialize에서 초기화 하는 것을 권장합니다.

```javascript
Woowahan.View.create('MyView', {
  initialize() {
    this.setModel({
      title: '사용자 목록'
    });
  }
});
```

뷰 모델을 만들기 위해 setModel 메소드가 제공됩니다.
인자로 모델 객체를 받으며 형식에 제한은 없습니다.

## 상태 주입 및 변경

뷰를 랜더링하기전 viewWillMount에서 상태를 변경하거나 추가 할 수 있습니다.

#### myview.hbs
```handlebars
<time{{#if holiday}} class="holiday"{{/if}}>{{today}}</time>
```

```javascript
import Template from './myview.hbs';

Woowahan.View.create('MyView', {
  template: Template,
  initialize() {
    this.setModel({
      today: '2001-10-21'
    });
    
    this.super();
  },
  
  viewWillMount(renderData) {
    let today = new Date(this.getModel('today'));
    let day = today.getDay();
    
    if (day === 0 || day === 6) {
      renderData.holiday = true;
    } else {
      renderData.holiday = false;
    }
    
    return renderData;
  },
  
  viewDidMount($el) {
    console.log(this.getModel('holiday')); /* undefined */
  }
});
```

뷰가 랜더링된 이후 HTML 결과는 다음과 같습니다.

```html
<time class="holiday">2001-10-21</time>
```

템플릿과 결합하기 전 예제에선 today가 휴일인지 아닌지를 검사하여 holiday 값을 추가합니다.
이때 추가된 holiday 값은 템플릿 내에서 참조되어 적용됩니다.
그러나 랜더링이 끝난 후 호출되는 viewDidMount에서 getModel 로 holiday 값을 모델에서 얻고자 하면 값이 없습니다. 이는 viewWillMount로 전달되는 renderData가 랜더링 직전 사용되는 일회용 값 이라는 것을 의미합니다.

## 데이타 바인딩

모델로 설정된 상태 값은 HTML 태그에 연결시킬 수 있습니다.
다음 예제는 버튼을 누르면 타이머가 시작되고 다시 버튼을 누르면 타이머가 종료되는 간단한 예제입니다.
전체 코드는 examples/timer에서 확인하실 수 있습니다.

```handlebars
<button data-role="bind" data-name="buttonLabel">{{buttonLabel}}</button>
<time data-role="bind" data-name="time">{{time}}</time>
```

```javascript
Woowahan.View.create('TimerView', {
  template: Template,

  events: {
    'click button': 'onTimerToggle'
  },

  initialize() {
    this.updateHandle = null;
    this.startTime = 0;
    
    this.setModel({ 
      time: this.startTime, 
      buttonLabel: 'START' 
    });

    this.super();
  },

  onTimerToggle() {
    if (this.updateHandle) this.stopTimer();
    else this.startTimer();
  },

  stopTimer() {
    clearInterval(this.updateHandle);

    this.updateHandle = null;
    this.setModel({ buttonLabel: 'START' });
  },

  startTimer() {
    this.setModel({ buttonLabel: 'STOP' });
    this.startTime = Date.now();

    this.updateHandle = setInterval(() => {
      this.setModel({ 
        time: (Date.now() - this.startTime) / 1000 
      });
    }, 1000/30);
  },
  
  viewWillUnmount() {
    this.updateHandle && clearInterval(this.updateHandle);
  }
});
```

#### 셈플 코드 실행 화면
![타이머 예제 실행 화면](../assets/timer.gif)

데이타 바인딩은 HTML 태그에 data-role="bind" 속성으로 표현합니다.
바인딩된 태그와 연결될 모델 내 키 값은 data-name="model-attr-name" 으로 지정됩니다.
data-type에 따라 연결된 모델 속성 값이 변경되면 해당 태그를 다시 랜더링합니다.

지원하는 data-type 은 text, select 등이 있고 지원 타입 현황에서 확인하실 수 있습니다.

데이타 바인딩은 One-way 바인딩 방식입니다.
즉, 모델의 값이 변경되면 UI에 적용될 뿐 UI에 값이 변경된다 해서 Model에 값을 반영하진 않습니다.
양방향 바인딩을 - Two-way - 지원하는 AngularJS와는 다른 단방향 바인딩 방식을 지원합니다.



================================================
FILE: docs/view.md
================================================
# 뷰


뷰는 어플리케이션을 구성하는 컴포넌트의 기본 단위입니다.
뷰는 라우터에 연결될 수 있으며 하나 이상의 자식 뷰를 가질 수 있습니다.
뷰는 재사용될 수 있도록 의도적인 구성이 아니라면 구성 독립성을 지원합니다.
즉, 어떤 뷰든 자식 뷰도 될 수 있고 부모 뷰도 될 수 있습니다.

앞서 가장 간단한 뷰를 만드는 방법을 보았습니다. 
이제 실무에서 사용될 수 있는 기본적인 뷰 형태를 살펴보겠습니다.

##### basic-view.hbs

```handlebars
<h1>{{lastName}} {{firstName}}</h1>
<p>
  <button id="how-old-are-you">나이가 몇 살 일까요?</button>
</p>
```

##### basic-view.js

```javascript
import Woowahan from 'woowahan';
import Template from 'basic-view.hbs';

export default Woowahan.View.create('BasicView', {
  tagName: 'div',
  className: 'main light',
  template: Template,
  
  events: {
    'click #how-old-are-you': 'onHowOldAreYou'
  },
  
  initialize() {
    this.setModel({
      firstName: '길동',
      lastName: '홍',
      age: 573
    });
    
    this.super();
  },
  
  viewWillMount(renderData) {
    this.log(renderData);
    
    return renderData;
  },
  
  viewDidMount($el) {
  
  },
  
  viewWillUnmount() {
  
  },
  
  onHowOldAreYou() {
    alert(this.getModel('age'));
  }
});
```

## 뷰 초기화

뷰가 생성시 initialize 함수가 작성되어 있다면 가장 먼저 실행됩니다.
따라서 뷰 컴포넌트 생성시 필요한 초기화 작업을 기술할 수 있습니다.
만약 초기화 작업이 필요 없다면 initialize 함수는 생략할 수 있습니다.

## 뷰 모델

뷰는 뷰가 유지되고 있는 동안 스스로의 상태 즉, 모델을 가질 수 있습니다.
모델은 Javascript의 기본 객체의 형태지만 추가적으로 유용한 몇 가지 기능을 제공합니다.
모델의 디자인은 뷰가 어떤 작업을 수행하느냐에 따라 달라질 수 있으며 이는 전적으로 개발자가 결정해야할 문제입니다.

모델은 상황에 따라 initialize 에서 처음 설정하기도 하며, 외부에서 주입된 데이타로 구성될 수 도 있습니다.
어떤 경우라 하더라도 모델을 설정하거나 설정된 모델의 값을 얻어올 때 this.setModel()과 this.getModel() 메소드를 사용하십시오.

예제 코드의 initialize 에서 setModel을 이용하여 모델을 설정하고 있습니다.
setModel은 반복하여 여러번 호출될 수 있으며 호출시 포함된 키가 중복되지 않는다면 이전의 키 값은 유지됩니다.

```javascript
this.setModel({ name: 'foo' }); // name=foo  <- new key
this.setModel({ gender: 'male' }); // name=foo, gender=male <- new key
this.setModel({ name: 'bar', age: 30 }); // name=bar, gender=male, age=30 <- new & edit key
```

getModel은 뷰가 가지고 있는 모델의 값을 반환합니다. this.getModel('name') 이라면 'bar' 값을 반환합니다.
getModel의 인자값 없이 호출되면 model 값 전체를 반환합니다.
반환되는 값은 순수한 Javascript Object 입니다.

```javascript
var model = this.getModel();
/*
model = { name: 'bar', gender: 'male', age: 30 }
*/
```

다음과 같은 코드의 의도가 모델의 값을 변경하는 것 이었다면 의도대로 작동하지 않습니다.
```javascript
var model = this.getModel();

model.name = 'foo'; // 뷰 모델 name 값은 변경되지 않습니다.

this.setModel({ name: 'foo' }); // 뷰 모델 name 값이 'foo'로 변경됩니다.
```

모델의 값을 변경하려 한다면 반드시 setModel을 사용하십시오.

## 템플릿

UI를 구성하는 HTML은 기본적으로 Template 문자열입니다.
WoowahanJS 0.1.* 버전에선 아쉽지만 Handlebars 단일 템플릿 엔진만을 지원합니다.
Handlebars 템플릿 파일을 import 구문을 이용하여 사용하는 것은 [프로젝트 환경 구성](./project-setup.md)항목에 자세히 설명되어 있습니다.

뷰의 UI가 화면에 그려질 때 - 이를 랜더링되었다 라고 표현하겠습니다 - 뷰의 모델 데이타와 합성됩니다.
따라서 템플릿 작성자는 뷰가 어떤 형태의 모델 데이타를 제공하는지 알아야합니다. 
뷰를 개발하는 개발자와 UI 엔지니어가 다르다면 모델의 디자인에 대해서 충분히 협의되어야합니다.

Handlebars 템플릿 엔진은 다양한 표현식을 제공하며 이에대한 학습이 필요합니다.
심화 과정에서 실무에 필요한 상세한 내용을 학습할 수 있으나 Handlebars가 제공하는 기본적인 정보는 [Handlebars 공식 사이트](http://handlebarsjs.com)에서 확인하실 수 있습니다.

## 뷰 태그

뷰의 최상위 DOM 엘리먼트는 지정하지 않는다면 항상 DIV 입니다.
뷰의 형태에 따라 필요한 Tag로 변경할 수 있으며 tagName 으로 설정됩니다.
tagName은 당연하게도 자식 요소를 가질 수 있는 Tag여야하며 그렇지 않은 BR 등은 사용할 수 없습니다.

## 뷰 클래스

tagName의 class 속성입니다.

## 뷰 라이프사이클

뷰 컴포넌트는 `initialize` -> `viewWillMount` -> **_rendering_** -> `viewDidMount` -> `viewWillUnmount` -> `remove` 와 같은 라이프사이클을 가집니다. 
initialize는 뷰 생성시 단 한번만 실행되며 viewWillMount <----> viewWillUnmount는 1번 이상 반복되어 실행될 수 있습니다.

개발자는 랜더링에(Rendering) 직접적으로 관여할 수 없지만 랜더링되기 전과 랜더링 완료 후에 필요한 작업을 주입할 수 있습니다.
(랜더링이란 뷰의 템플릿과 뷰의 모델을 합성하여 완성된 HTML 문자열을 만들고 DOM로딩을 수행하는 과정을 의미합니다)

viewWillMount에서 랜더링에 사용되는 모델 데이타를 수정할 수 있습니다.
인수로 제공되는 renderData를 변경 함으로서 랜더링에 간접적으로 개입할 수 있습니다.
모델 데이타 수정이 완료되면 반드시 renderData를 반환합니다.
반환하지 않을 경우 변경된 데이타는 랜더링시 적용되지 않고 원래의 모델 데이타가 적용됩니다.

viewWillMount 에서 변경한 renderData는 뷰 모델의 사본 객체이며 따라서 실제 뷰 모델을 변경시키지는 않습니다.
다음 코드에서 올바른 viewWillMount 작성법과 올바르지 않은 viewWillMount 작성법을 확인할 수 있습니다.

```javascript
/*
 * Good
 */
viewWillMount(renderData) {
  renderData.name = `이름은 ${renderData.name}`;
  return renderData;
}

/*
 * Bad - renderData를 반환하지 않음
 */
viewWillMount(renderData) {
  renderData.name = `이름은 ${renderData.name}`;
}

/*
 * Bad - 모델값을 직접 변경. 모델 값은 변경되나 랜더링에 반영되지 않음
 */
viewWillMount(renderData) {
  this.setModel({ name: `이름은 ${renderData.name}` });
  return renderData;
}
```

viewDidMount는 랜더링이 완료되고 DOM로딩이 완료된 직후에 호출됩니다.
인자로는 제공되는 $el은 뷰의 DOM 객체이며 jQuery 객체로 제공되기 때문에 jQuery 기능을 완전하게 사용할 수 있습니다.

```javascript
viewDidMount($el) {
  $el.find('.switch').toggleClass('on');
}
```

## 자식 뷰

모든 뷰는 자식 뷰 즉, 하위 뷰 요소를 가질 수 있습니다.
UI를 구성함에 있어 하나의 거대한 단일 뷰로 디자인할 것인지, 아니면 좀 더 작은 단위의 UI요소로 분해하여 조립할지는 전적으로 개발자의 디자인에 의존합니다.

그러나 아주 단순한 앱이 아니라면 대부분의
Download .txt
gitextract_la2rqcub/

├── .babelrc
├── .gitignore
├── CONTRIBUTING.md
├── README.en.md
├── README.md
├── dist/
│   └── woowahan.js
├── docs/
│   ├── README.md
│   ├── action-reducer.md
│   ├── collection-view.md
│   ├── dom-refs.md
│   ├── event.md
│   ├── first-app.md
│   ├── popup-view.md
│   ├── project-setup.md
│   ├── route.md
│   ├── store.md
│   ├── view-model.md
│   └── view.md
├── examples/
│   ├── README.md
│   ├── bind/
│   │   ├── .babelrc
│   │   ├── gulpfile.js
│   │   ├── hello-view.hbs
│   │   ├── hello-view.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── plugin/
│   │   │   └── index.js
│   │   └── webpack.config.js
│   ├── collection/
│   │   ├── .babelrc
│   │   ├── collection-first.js
│   │   ├── collection-second.js
│   │   ├── gulpfile.js
│   │   ├── hello-view.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   └── webpack.config.js
│   ├── domrefs/
│   │   ├── .babelrc
│   │   ├── gulpfile.js
│   │   ├── index.html
│   │   ├── main-view.hbs
│   │   ├── main-view.js
│   │   ├── main.js
│   │   ├── package.json
│   │   └── webpack.config.js
│   ├── hello-yarn/
│   │   ├── README.md
│   │   ├── app/
│   │   │   ├── hello-view.js
│   │   │   └── index.js
│   │   ├── index.html
│   │   ├── package.json
│   │   └── webpack.config.js
│   ├── helloworld/
│   │   ├── .babelrc
│   │   ├── gulpfile.js
│   │   ├── hello-view.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   └── webpack.config.js
│   ├── listview/
│   │   ├── .babelrc
│   │   ├── action/
│   │   │   └── index.js
│   │   ├── global.config.js
│   │   ├── gulpfile.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── plugin.config.js
│   │   ├── reducer/
│   │   │   ├── core-reducer.js
│   │   │   ├── one-user.js
│   │   │   └── users.js
│   │   ├── server/
│   │   │   ├── data/
│   │   │   │   └── users.json
│   │   │   ├── demo.js
│   │   │   └── proxy.js
│   │   ├── view/
│   │   │   ├── control/
│   │   │   │   ├── pager.hbs
│   │   │   │   └── pager.js
│   │   │   ├── layout.hbs
│   │   │   ├── layout.js
│   │   │   ├── not-found.js
│   │   │   ├── users/
│   │   │   │   ├── index.hbs
│   │   │   │   ├── index.js
│   │   │   │   ├── user-detail.js
│   │   │   │   ├── user.hbs
│   │   │   │   └── user.js
│   │   │   ├── welcome.hbs
│   │   │   └── welcome.js
│   │   └── webpack.config.js
│   ├── middleware/
│   │   ├── app.js
│   │   ├── index.html
│   │   └── woowahan.js
│   ├── modal/
│   │   ├── .babelrc
│   │   ├── gulpfile.js
│   │   ├── hello-view.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── sass/
│   │   │   └── main.scss
│   │   ├── view/
│   │   │   ├── modal-view-bootstrap/
│   │   │   │   ├── modal-view-bootstrap.hbs
│   │   │   │   └── modal-view-bootstrap.js
│   │   │   └── modal-view-normal/
│   │   │       ├── modal-view-normal.hbs
│   │   │       └── modal-view-normal.js
│   │   └── webpack.config.js
│   ├── plugin/
│   │   ├── .babelrc
│   │   ├── gulpfile.js
│   │   ├── hello-view.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── plugin/
│   │   │   └── list.js
│   │   └── webpack.config.js
│   ├── popup/
│   │   ├── .babelrc
│   │   ├── gulpfile.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── scss/
│   │   │   └── main.scss
│   │   ├── view/
│   │   │   ├── component/
│   │   │   │   ├── alert-view.hbs
│   │   │   │   ├── alert-view.js
│   │   │   │   ├── base-view.hbs
│   │   │   │   ├── base-view.js
│   │   │   │   ├── index.js
│   │   │   │   ├── popup-view.hbs
│   │   │   │   └── popup-view.js
│   │   │   └── layout/
│   │   │       ├── main-layout.hbs
│   │   │       └── main-layout.js
│   │   └── webpack.config.js
│   ├── route/
│   │   ├── .babelrc
│   │   ├── action/
│   │   │   └── index.js
│   │   ├── gulpfile.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── middleware/
│   │   │   └── index.js
│   │   ├── package.json
│   │   ├── sass/
│   │   │   └── main.scss
│   │   ├── template/
│   │   │   ├── main.hbs
│   │   │   ├── sub1.hbs
│   │   │   ├── sub2-2.hbs
│   │   │   └── sub2.hbs
│   │   ├── view/
│   │   │   ├── child.js
│   │   │   ├── content1.hbs
│   │   │   ├── content1.js
│   │   │   ├── content2.hbs
│   │   │   ├── content2.js
│   │   │   ├── content3.hbs
│   │   │   ├── content3.js
│   │   │   ├── index.js
│   │   │   ├── layout1.hbs
│   │   │   ├── layout1.js
│   │   │   ├── layout2.hbs
│   │   │   ├── layout2.js
│   │   │   ├── layout3.hbs
│   │   │   ├── layout3.js
│   │   │   ├── main.hbs
│   │   │   ├── main.js
│   │   │   ├── main1.hbs
│   │   │   ├── main1.js
│   │   │   ├── main2.hbs
│   │   │   ├── main2.js
│   │   │   ├── main3.hbs
│   │   │   ├── main3.js
│   │   │   ├── sub-child.js
│   │   │   ├── sub-content1.hbs
│   │   │   ├── sub-content1.js
│   │   │   ├── sub-content2.hbs
│   │   │   └── sub-content2.js
│   │   └── webpack.config.js
│   ├── schema/
│   │   ├── .babelrc
│   │   ├── gulpfile.js
│   │   ├── hello-view.js
│   │   ├── index.html
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── schema.hbs
│   │   └── webpack.config.js
│   ├── timer/
│   │   ├── index.html
│   │   └── js/
│   │       ├── main.js
│   │       └── woowahan.js
│   ├── todo/
│   │   ├── .babelrc
│   │   ├── action/
│   │   │   └── index.js
│   │   ├── global.config.js
│   │   ├── gulpfile.js
│   │   ├── index.html
│   │   ├── keycode.js
│   │   ├── main.js
│   │   ├── package.json
│   │   ├── reducer/
│   │   │   └── todos.js
│   │   ├── schema/
│   │   │   └── todo.js
│   │   ├── template/
│   │   │   ├── todo-app.hbs
│   │   │   ├── todo-item.hbs
│   │   │   └── todo-state.hbs
│   │   ├── view/
│   │   │   ├── todo-app.js
│   │   │   ├── todo-item.js
│   │   │   └── todo-state.js
│   │   └── webpack.config.js
│   └── transition/
│       ├── .babelrc
│       ├── gulpfile.js
│       ├── index.html
│       ├── main.js
│       ├── package.json
│       ├── view/
│       │   ├── component/
│       │   │   ├── base-view.hbs
│       │   │   ├── base-view.js
│       │   │   └── index.js
│       │   └── layout/
│       │       ├── main-layout.hbs
│       │       └── main-layout.js
│       └── webpack.config.js
├── index.js
├── lib/
│   ├── action.js
│   ├── collection-view.js
│   ├── component.js
│   ├── error.js
│   ├── event.js
│   ├── events.js
│   ├── item-view.js
│   ├── layout.js
│   ├── middleware.js
│   ├── plugin/
│   │   ├── checkbox.js
│   │   ├── input-text.js
│   │   ├── select.js
│   │   └── text.js
│   ├── plugin.js
│   ├── popup-view.js
│   ├── reducer.js
│   ├── router.js
│   ├── schema.js
│   ├── store.js
│   ├── types.js
│   ├── view.js
│   └── woowahan.js
├── package.json
├── src/
│   ├── action.js
│   ├── collection-view.js
│   ├── component.js
│   ├── error.js
│   ├── event.js
│   ├── events.js
│   ├── item-view.js
│   ├── layout.js
│   ├── middleware.js
│   ├── plugin/
│   │   ├── checkbox.js
│   │   ├── input-text.js
│   │   ├── select.js
│   │   └── text.js
│   ├── plugin.js
│   ├── popup-view.js
│   ├── reducer.js
│   ├── router.js
│   ├── schema.js
│   ├── store.js
│   ├── types.js
│   ├── view.js
│   └── woowahan.js
└── test/
    ├── mocha.opts
    ├── schema.js
    ├── store.js
    └── types.js
Download .txt
SYMBOL INDEX (659 symbols across 68 files)

FILE: dist/woowahan.js
  function t (line 1) | function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{...
  function r (line 1) | function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.len...
  method isRunning (line 1) | get isRunning(){return o}
  function r (line 1) | function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enume...
  function i (line 1) | function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a ...
  function e (line 1) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  method dispatch (line 1) | get dispatch(){return d.dispatch.bind(d)}
  method getMiddleware (line 1) | get getMiddleware(){return d.getMiddleware.bind(d)}
  method getStates (line 1) | get getStates(){return d.getStates.bind(d)}
  method setStates (line 1) | get setStates(){return d.setStates.bind(d)}
  method getComponent (line 1) | get getComponent(){return d.getComponent.bind(d)}
  method getRouteTables (line 1) | get getRouteTables(){return d.getRouteTables.bind(d)}
  method addAction (line 1) | get addAction(){return d.addAction.bind(d)}
  method removeAction (line 1) | get removeAction(){return d.removeAction.bind(d)}
  method addError (line 1) | get addError(){return d.addError.bind(d)}
  function e (line 1) | function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function n (line 1) | function n(e){function t(t,n,r,i,o,s){for(;o>=0&&o<s;o+=e){var a=i?i[o]:...
  function s (line 1) | function s(e){return function(t,n,r){n=_(n,r);for(var i=O(t),o=e>0?0:i-1...
  function a (line 1) | function a(e,t,n){return function(r,i,o){var s=0,a=O(r);if("number"==typ...
  function u (line 1) | function u(e,t){var n=q.length,r=e.constructor,i=S.isFunction(r)&&r.prot...
  function a (line 14) | function a(e){var t=!!e&&"length"in e&&e.length,n=ce.type(e);return"func...
  function u (line 14) | function u(e,t,n){if(ce.isFunction(t))return ce.grep(e,function(e,r){ret...
  function c (line 14) | function c(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}
  function l (line 14) | function l(e){var t={};return ce.each(e.match(Te)||[],function(e,n){t[n]...
  function f (line 14) | function f(){ee.removeEventListener("DOMContentLoaded",f),o.removeEventL...
  function h (line 14) | function h(){this.expando=ce.expando+h.uid++}
  function d (line 14) | function d(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.rep...
  function p (line 14) | function p(e,t,n,r){var i,o=1,s=20,a=r?function(){return r.cur()}:functi...
  function v (line 14) | function v(e,t){var n=void 0!==e.getElementsByTagName?e.getElementsByTag...
  function y (line 14) | function y(e,t){for(var n=0,r=e.length;n<r;n++)ke.set(e[n],"globalEval",...
  function g (line 14) | function g(e,t,n,r,i){for(var o,s,a,u,c,l,f=t.createDocumentFragment(),h...
  function m (line 14) | function m(){return!0}
  function b (line 14) | function b(){return!1}
  function w (line 14) | function w(){try{return ee.activeElement}catch(e){}}
  function x (line 14) | function x(e,t,n,r,o,s){var a,u;if("object"===(void 0===t?"undefined":i(...
  function E (line 14) | function E(e,t){return ce.nodeName(e,"table")&&ce.nodeName(11!==t.nodeTy...
  function S (line 14) | function S(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
  function T (line 14) | function T(e){var t=Xe.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function _ (line 14) | function _(e,t){var n,r,i,o,s,a,u,c;if(1===t.nodeType){if(ke.hasData(e)&...
  function A (line 14) | function A(e,t){var n=t.nodeName.toLowerCase();"input"===n&&qe.test(e.ty...
  function C (line 14) | function C(e,t,n,r){t=ne.apply([],t);var i,o,s,a,u,c,l=0,f=e.length,h=f-...
  function k (line 14) | function k(e,t,n){for(var r,i=t?ce.filter(t,e):e,o=0;null!=(r=i[o]);o++)...
  function j (line 14) | function j(e,t){var n=ce(t.createElement(e)).appendTo(t.body),r=ce.css(n...
  function O (line 14) | function O(e){var t=ee,n=Ye[e];return n||(n=j(e,t),"none"!==n&&n||(Je=(J...
  function N (line 14) | function N(e,t,n){var r,i,o,s,a=e.style;return n=n||Ze(e),s=n?n.getPrope...
  function R (line 14) | function R(e,t){return{get:function(){return e()?void delete this.get:(t...
  function M (line 14) | function M(e){if(e in st)return e;for(var t=e[0].toUpperCase()+e.slice(1...
  function D (line 14) | function D(e,t,n){var r=Me.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3...
  function L (line 14) | function L(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t...
  function q (line 14) | function q(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=...
  function I (line 14) | function I(e,t){for(var n,r,i,o=[],s=0,a=e.length;s<a;s++)r=e[s],r.style...
  function F (line 14) | function F(e,t,n,r,i){return new F.prototype.init(e,t,n,r,i)}
  function P (line 14) | function P(){return o.setTimeout(function(){at=void 0}),at=ce.now()}
  function $ (line 14) | function $(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)n=De[r],i[...
  function H (line 14) | function H(e,t,n){for(var r,i=(V.tweeners[t]||[]).concat(V.tweeners["*"]...
  function W (line 14) | function W(e,t,n){var r,i,o,s,a,u,c,l=this,f={},h=e.style,d=e.nodeType&&...
  function B (line 14) | function B(e,t){var n,r,i,o,s;for(n in e)if(r=ce.camelCase(n),i=t[r],o=e...
  function V (line 14) | function V(e,t,n){var r,i,o=0,s=V.prefilters.length,a=ce.Deferred().alwa...
  function U (line 14) | function U(e){return e.getAttribute&&e.getAttribute("class")||""}
  function z (line 14) | function z(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function X (line 14) | function X(e,t,n,r){function i(a){var u;return o[a]=!0,ce.each(e[a]||[],...
  function G (line 14) | function G(e,t){var n,r,i=ce.ajaxSettings.flatOptions||{};for(n in t)voi...
  function J (line 14) | function J(e,t,n){for(var r,i,o,s,a=e.contents,u=e.dataTypes;"*"===u[0];...
  function Y (line 14) | function Y(e,t,n,r){var i,o,s,a,u,c={},l=e.dataTypes.slice();if(l[1])for...
  function Q (line 14) | function Q(e,t,n,r){var o;if(ce.isArray(t))ce.each(t,function(t,o){n||Mt...
  function K (line 14) | function K(e){return ce.isWindow(e)?e:9===e.nodeType&&e.defaultView}
  function t (line 24) | function t(e,t,n,r){var i,o,s,a,c,f,h,d,p=t&&t.ownerDocument,v=t?t.nodeT...
  function n (line 24) | function n(){function e(n,r){return t.push(n+" ")>w.cacheLength&&delete ...
  function r (line 24) | function r(e){return e[I]=!0,e}
  function i (line 24) | function i(e){var t=O.createElement("div");try{return!!e(t)}catch(e){ret...
  function o (line 24) | function o(e,t){for(var n=e.split("|"),r=n.length;r--;)w.attrHandle[n[r]...
  function s (line 24) | function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sour...
  function a (line 24) | function a(e){return r(function(t){return t=+t,r(function(n,r){for(var i...
  function u (line 24) | function u(e){return e&&void 0!==e.getElementsByTagName&&e}
  function c (line 24) | function c(){}
  function l (line 24) | function l(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function f (line 24) | function f(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=$++;return t.first...
  function h (line 24) | function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)...
  function d (line 24) | function d(e,n,r){for(var i=0,o=n.length;i<o;i++)t(e,n[i],r);return r}
  function p (line 24) | function p(e,t,n,r,i){for(var o,s=[],a=0,u=e.length,c=null!=t;a<u;a++)(o...
  function v (line 24) | function v(e,t,n,i,o,s){return i&&!i[I]&&(i=v(i)),o&&!o[I]&&(o=v(o,s)),r...
  function y (line 24) | function y(e){for(var t,n,r,i=e.length,o=w.relative[e[0].type],s=o||w.re...
  function g (line 24) | function g(e,n){var i=n.length>0,o=e.length>0,s=function(r,s,a,u,c){var ...
  function e (line 24) | function e(){a.style.cssText="-webkit-box-sizing:border-box;-moz-box-siz...
  function n (line 24) | function n(e,t,n,i){var u,l,h,b,w,E=t;2!==x&&(x=2,c&&o.clearTimeout(c),r...
  function r (line 24) | function r(e){return function(t){var n=e;if(!t)return n;if(Array.isArray...
  function r (line 24) | function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enume...
  function i (line 24) | function i(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.len...
  function e (line 24) | function e(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var s,a=e[Symbol.ite...
  function e (line 24) | function e(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var s,a=e[Symbol.ite...
  function n (line 24) | function n(e){var n={};for(var r in t)t.hasOwnProperty(r)&&(n[r]=void 0)...
  function r (line 24) | function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enume...

FILE: examples/bind/hello-view.js
  method initialize (line 20) | initialize() {
  method onChangeDepth1 (line 35) | onChangeDepth1(val) {
  method onChangeDepth2 (line 39) | onChangeDepth2(val) {
  method onChangeSel (line 43) | onChangeSel(val) {

FILE: examples/collection/collection-first.js
  method viewDidMount (line 6) | viewDidMount($el) {
  method viewDidMount (line 16) | viewDidMount() {
  method viewWillUnmount (line 20) | viewWillUnmount() {

FILE: examples/collection/collection-second.js
  method viewDidMount (line 6) | viewDidMount($el) {
  method viewDidMount (line 16) | viewDidMount() {
  method viewDidMount (line 24) | viewDidMount($el) {
  method viewDidMount (line 38) | viewDidMount() {
  method viewWillUnmount (line 42) | viewWillUnmount() {

FILE: examples/collection/hello-view.js
  method viewDidMount (line 29) | viewDidMount() {
  method onClickUpdateFirst (line 34) | onClickUpdateFirst() {
  method onClickUpdateSecond (line 41) | onClickUpdateSecond() {

FILE: examples/domrefs/main-view.js
  method viewDidMount (line 28) | viewDidMount() {
  method onChangeSkinColor (line 32) | onChangeSkinColor(event) {
  method onToggle (line 40) | onToggle() {
  method onUpdateView (line 44) | onUpdateView() {

FILE: examples/listview/action/index.js
  constant FETCH_USERS (line 1) | const FETCH_USERS = 'FETCH_USERS';
  constant FETCH_ONE_USER (line 2) | const FETCH_ONE_USER = 'FETCH_ONE_USER';

FILE: examples/listview/reducer/core-reducer.js
  method onFail (line 4) | onFail(jqXHR, textStatus, message) {

FILE: examples/listview/server/proxy.js
  function saveCached (line 14) | function saveCached(url, body) {
  function getCached (line 25) | function getCached(url) {

FILE: examples/listview/view/control/pager.js
  method initialize (line 13) | initialize(model) {
  method viewWillMount (line 19) | viewWillMount(renderData) {
  method onPaging (line 43) | onPaging(event) {

FILE: examples/listview/view/layout.js
  method initialize (line 8) | initialize() {

FILE: examples/listview/view/not-found.js
  method initialize (line 6) | initialize() {

FILE: examples/listview/view/users/index.js
  method initialize (line 17) | initialize() {
  method viewDidMount (line 27) | viewDidMount() {
  method fetchUsers (line 31) | fetchUsers(data) {
  method fetchOneUser (line 43) | fetchOneUser(data) {
  method onSelectedRow (line 47) | onSelectedRow(row) {
  method onRefresh (line 51) | onRefresh() {
  method onPaging (line 57) | onPaging(page) {

FILE: examples/listview/view/users/user-detail.js
  method viewDidMount (line 10) | viewDidMount($el) {
  method onClickBack (line 15) | onClickBack() {

FILE: examples/listview/view/users/user.js
  method onSelectedRow (line 8) | onSelectedRow(event, trigger) {

FILE: examples/listview/view/welcome.js
  method initialize (line 8) | initialize() {

FILE: examples/middleware/app.js
  constant DOTIT (line 7) | const DOTIT = 'doit';
  constant COLOR (line 9) | const COLOR = {
  method onClick (line 47) | onClick() {
  method viewDidMount (line 63) | viewDidMount() {
  method onChange (line 67) | onChange() {
  method onDoit (line 71) | onDoit() {
  method onName (line 77) | onName() {
  method onUpdate (line 81) | onUpdate() {
  function logger (line 89) | function logger() {
  function customHeader (line 98) | function customHeader(headers) {
  function jsonHeader (line 107) | function jsonHeader() {
  function GALogger (line 116) | function GALogger(gaKey) {
  function WoowahanDevtools (line 125) | function WoowahanDevtools() {

FILE: examples/middleware/woowahan.js
  function t (line 1) | function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,lo...
  function r (line 1) | function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enume...
  function i (line 1) | function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a ...
  function e (line 1) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  method dispatch (line 1) | get dispatch(){return y.dispatch.bind(y)}
  method getMiddleware (line 1) | get getMiddleware(){return y.getMiddleware.bind(y)}
  method getStates (line 1) | get getStates(){return y.getStates.bind(y)}
  method setStates (line 1) | get setStates(){return y.setStates.bind(y)}
  method getComponent (line 1) | get getComponent(){return y.getComponent.bind(y)}
  method getRouteTables (line 1) | get getRouteTables(){return y.getRouteTables.bind(y)}
  method addAction (line 1) | get addAction(){return y.addAction.bind(y)}
  method removeAction (line 1) | get removeAction(){return y.removeAction.bind(y)}
  method addError (line 1) | get addError(){return y.addError.bind(y)}
  function e (line 1) | function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function i (line 1) | function i(e,n){var r={seen:[],stylize:s};return arguments.length>=3&&(r...
  function o (line 1) | function o(e,t){var n=i.styles[t];return n?"["+i.colors[n][0]+"m"+e+"[...
  function s (line 1) | function s(e,t){return e}
  function a (line 1) | function a(e){var t={};return e.forEach(function(e,n){t[e]=!0}),t}
  function u (line 1) | function u(e,n,r){if(e.customInspect&&n&&_(n.inspect)&&n.inspect!==t.ins...
  function c (line 1) | function c(e,t){if(x(t))return e.stylize("undefined","undefined");if(b(t...
  function l (line 1) | function l(e){return"["+Error.prototype.toString.call(e)+"]"}
  function f (line 1) | function f(e,t,n,r,i){for(var o=[],s=0,a=t.length;s<a;++s)N(t,String(s))...
  function h (line 1) | function h(e,t,n,r,i,o){var s,a,c;if(c=Object.getOwnPropertyDescriptor(t...
  function p (line 1) | function p(e,t,n){var r=0,i=e.reduce(function(e,t){return r++,t.indexOf(...
  function d (line 1) | function d(e){return Array.isArray(e)}
  function v (line 1) | function v(e){return"boolean"==typeof e}
  function g (line 1) | function g(e){return null===e}
  function y (line 1) | function y(e){return null==e}
  function m (line 1) | function m(e){return"number"==typeof e}
  function b (line 1) | function b(e){return"string"==typeof e}
  function w (line 1) | function w(e){return"symbol"==typeof e}
  function x (line 1) | function x(e){return void 0===e}
  function E (line 1) | function E(e){return T(e)&&"[object RegExp]"===k(e)}
  function T (line 1) | function T(e){return"object"==typeof e&&null!==e}
  function S (line 1) | function S(e){return T(e)&&"[object Date]"===k(e)}
  function A (line 1) | function A(e){return T(e)&&("[object Error]"===k(e)||e instanceof Error)}
  function _ (line 1) | function _(e){return"function"==typeof e}
  function C (line 1) | function C(e){return null===e||"boolean"==typeof e||"number"==typeof e||...
  function k (line 1) | function k(e){return Object.prototype.toString.call(e)}
  function j (line 1) | function j(e){return e<10?"0"+e.toString(10):e.toString(10)}
  function O (line 1) | function O(){var e=new Date,t=[j(e.getHours()),j(e.getMinutes()),j(e.get...
  function N (line 1) | function N(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function o (line 1) | function o(){if(!s){if(r.throwDeprecation)throw new Error(i);r.traceDepr...
  function n (line 1) | function n(){throw new Error("setTimeout has not been defined")}
  function r (line 1) | function r(){throw new Error("clearTimeout has not been defined")}
  function i (line 1) | function i(e){if(l===setTimeout)return setTimeout(e,0);if((l===n||!l)&&s...
  function o (line 1) | function o(e){if(f===clearTimeout)return clearTimeout(e);if((f===r||!f)&...
  function s (line 1) | function s(){v&&p&&(v=!1,p.length?d=p.concat(d):g=-1,d.length&&a())}
  function a (line 1) | function a(){if(!v){var e=i(s);v=!0;for(var t=d.length;t;){for(p=d,d=[];...
  function u (line 1) | function u(e,t){this.fun=e,this.array=t}
  function c (line 1) | function c(){}
  function i (line 1) | function i(){return!(!window||!window.process||"renderer"!==window.proce...
  function o (line 1) | function o(e){var n=this.useColors;if(e[0]=(n?"%c":"")+this.namespace+(n...
  function s (line 1) | function s(){return"object"==typeof console&&console.log&&Function.proto...
  function a (line 1) | function a(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=...
  function u (line 1) | function u(){var e;try{e=t.storage.debug}catch(e){}return!e&&"undefined"...
  function c (line 1) | function c(){try{return window.localStorage}catch(e){}}
  function r (line 1) | function r(e){var n,r=0;for(n in e)r=(r<<5)-r+e.charCodeAt(n),r|=0;retur...
  function i (line 1) | function i(e){function n(){if(n.enabled){var e=n,r=+new Date,i=r-(c||r);...
  function o (line 1) | function o(e){t.save(e),t.names=[],t.skips=[];for(var n=("string"==typeo...
  function s (line 1) | function s(){t.enable("")}
  function a (line 1) | function a(e){var n,r;for(n=0,r=t.skips.length;n<r;n++)if(t.skips[n].tes...
  function u (line 1) | function u(e){return e instanceof Error?e.stack||e.message:e}
  function n (line 1) | function n(e){if(e=String(e),!(e.length>100)){var t=/^((?:\d+)?\.?\d+) *...
  function r (line 1) | function r(e){return e>=c?Math.round(e/c)+"d":e>=u?Math.round(e/u)+"h":e...
  function i (line 1) | function i(e){return o(e,c,"day")||o(e,u,"hour")||o(e,a,"minute")||o(e,s...
  function o (line 1) | function o(e,t,n){if(!(e<t))return e<1.5*t?Math.floor(e/t)+" "+n:Math.ce...
  function n (line 2) | function n(e){function t(t,n,r,i,o,s){for(;o>=0&&o<s;o+=e){var a=i?i[o]:...
  function o (line 2) | function o(e){return function(t,n,r){n=S(n,r);for(var i=j(t),o=e>0?0:i-1...
  function s (line 2) | function s(e,t,n){return function(r,i,o){var s=0,a=j(r);if("number"==typ...
  function a (line 2) | function a(e,t){var n=L.length,r=e.constructor,i=E.isFunction(r)&&r.prot...
  function s (line 2) | function s(e){var t=!!e&&"length"in e&&e.length,n=ce.type(e);return"func...
  function a (line 2) | function a(e,t,n){if(ce.isFunction(t))return ce.grep(e,function(e,r){ret...
  function u (line 2) | function u(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}
  function c (line 2) | function c(e){var t={};return ce.each(e.match(Ae)||[],function(e,n){t[n]...
  function l (line 2) | function l(){Z.removeEventListener("DOMContentLoaded",l),n.removeEventLi...
  function f (line 2) | function f(){this.expando=ce.expando+f.uid++}
  function h (line 2) | function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.rep...
  function p (line 2) | function p(e,t,n,r){var i,o=1,s=20,a=r?function(){return r.cur()}:functi...
  function d (line 2) | function d(e,t){var n="undefined"!=typeof e.getElementsByTagName?e.getEl...
  function v (line 2) | function v(e,t){for(var n=0,r=e.length;n<r;n++)je.set(e[n],"globalEval",...
  function g (line 2) | function g(e,t,n,r,i){for(var o,s,a,u,c,l,f=t.createDocumentFragment(),h...
  function y (line 2) | function y(){return!0}
  function m (line 2) | function m(){return!1}
  function b (line 2) | function b(){try{return Z.activeElement}catch(e){}}
  function w (line 2) | function w(e,t,n,r,i,o){var s,a;if("object"==typeof t){"string"!=typeof ...
  function x (line 2) | function x(e,t){return ce.nodeName(e,"table")&&ce.nodeName(11!==t.nodeTy...
  function E (line 2) | function E(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
  function T (line 2) | function T(e){var t=Xe.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function S (line 2) | function S(e,t){var n,r,i,o,s,a,u,c;if(1===t.nodeType){if(je.hasData(e)&...
  function A (line 2) | function A(e,t){var n=t.nodeName.toLowerCase();"input"===n&&qe.test(e.ty...
  function _ (line 2) | function _(e,t,n,r){t=te.apply([],t);var i,o,s,a,u,c,l=0,f=e.length,h=f-...
  function C (line 2) | function C(e,t,n){for(var r,i=t?ce.filter(t,e):e,o=0;null!=(r=i[o]);o++)...
  function k (line 2) | function k(e,t){var n=ce(t.createElement(e)).appendTo(t.body),r=ce.css(n...
  function j (line 2) | function j(e){var t=Z,n=Qe[e];return n||(n=k(e,t),"none"!==n&&n||(Ye=(Ye...
  function O (line 2) | function O(e,t,n){var r,i,o,s,a=e.style;return n=n||et(e),s=n?n.getPrope...
  function N (line 2) | function N(e,t){return{get:function(){return e()?void delete this.get:(t...
  function R (line 2) | function R(e){if(e in at)return e;for(var t=e[0].toUpperCase()+e.slice(1...
  function D (line 2) | function D(e,t,n){var r=Me.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3...
  function M (line 2) | function M(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t...
  function L (line 2) | function L(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=...
  function I (line 2) | function I(e,t){for(var n,r,i,o=[],s=0,a=e.length;s<a;s++)r=e[s],r.style...
  function q (line 3) | function q(e,t,n,r,i){return new q.prototype.init(e,t,n,r,i)}
  function F (line 3) | function F(){return n.setTimeout(function(){ut=void 0}),ut=ce.now()}
  function P (line 3) | function P(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)n=Le[r],i[...
  function $ (line 3) | function $(e,t,n){for(var r,i=(B.tweeners[t]||[]).concat(B.tweeners["*"]...
  function H (line 3) | function H(e,t,n){var r,i,o,s,a,u,c,l,f=this,h={},p=e.style,d=e.nodeType...
  function W (line 3) | function W(e,t){var n,r,i,o,s;for(n in e)if(r=ce.camelCase(n),i=t[r],o=e...
  function B (line 3) | function B(e,t,n){var r,i,o=0,s=B.prefilters.length,a=ce.Deferred().alwa...
  function U (line 3) | function U(e){return e.getAttribute&&e.getAttribute("class")||""}
  function z (line 3) | function z(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function V (line 3) | function V(e,t,n,r){function i(a){var u;return o[a]=!0,ce.each(e[a]||[],...
  function J (line 3) | function J(e,t){var n,r,i=ce.ajaxSettings.flatOptions||{};for(n in t)voi...
  function X (line 3) | function X(e,t,n){for(var r,i,o,s,a=e.contents,u=e.dataTypes;"*"===u[0];...
  function G (line 3) | function G(e,t,n,r){var i,o,s,a,u,c={},l=e.dataTypes.slice();if(l[1])for...
  function Y (line 3) | function Y(e,t,n,r){var i;if(ce.isArray(t))ce.each(t,function(t,i){n||Mt...
  function Q (line 3) | function Q(e){return ce.isWindow(e)?e:9===e.nodeType&&e.defaultView}
  function t (line 3) | function t(e,t,n,r){var i,o,s,a,u,c,f,p,d=t&&t.ownerDocument,v=t?t.nodeT...
  function n (line 3) | function n(){function e(n,r){return t.push(n+" ")>E.cacheLength&&delete ...
  function r (line 3) | function r(e){return e[P]=!0,e}
  function i (line 3) | function i(e){var t=R.createElement("div");try{return!!e(t)}catch(e){ret...
  function o (line 3) | function o(e,t){for(var n=e.split("|"),r=n.length;r--;)E.attrHandle[n[r]...
  function s (line 3) | function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sour...
  function a (line 3) | function a(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
  function u (line 3) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
  function c (line 3) | function c(e){return r(function(t){return t=+t,r(function(n,r){for(var i...
  function l (line 3) | function l(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
  function f (line 3) | function f(){}
  function h (line 3) | function h(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function p (line 3) | function p(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=W++;return t.first...
  function d (line 3) | function d(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)...
  function v (line 3) | function v(e,n,r){for(var i=0,o=n.length;i<o;i++)t(e,n[i],r);return r}
  function g (line 3) | function g(e,t,n,r,i){for(var o,s=[],a=0,u=e.length,c=null!=t;a<u;a++)(o...
  function y (line 3) | function y(e,t,n,i,o,s){return i&&!i[P]&&(i=y(i)),o&&!o[P]&&(o=y(o,s)),r...
  function m (line 3) | function m(e){for(var t,n,r,i=e.length,o=E.relative[e[0].type],s=o||E.re...
  function b (line 3) | function b(e,n){var i=n.length>0,o=e.length>0,s=function(r,s,a,u,c){var ...
  function e (line 4) | function e(){a.style.cssText="-webkit-box-sizing:border-box;-moz-box-siz...
  function r (line 5) | function r(e,t,r,a){var c,f,m,b,x,T=t;2!==w&&(w=2,u&&n.clearTimeout(u),i...
  function r (line 5) | function r(e){return function(t){var n=e;if(!t)return n;if(Array.isArray...
  function n (line 5) | function n(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.len...
  function r (line 5) | function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enume...
  function i (line 5) | function i(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.len...
  function e (line 5) | function e(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var s,a=e[Symbol.ite...
  function r (line 6) | function r(e){var n={};for(var r in t)t.hasOwnProperty(r)&&(n[r]=void 0)...
  function r (line 6) | function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enume...

FILE: examples/modal/hello-view.js
  method initialize (line 16) | initialize() {
  method onClickModalNormal (line 23) | onClickModalNormal() {
  method onClickModalBootstrap (line 33) | onClickModalBootstrap() {
  method onUpdateModal (line 45) | onUpdateModal(count) {
  method onCloseModal (line 49) | onCloseModal() {

FILE: examples/modal/view/modal-view-bootstrap/modal-view-bootstrap.js
  method initialize (line 13) | initialize() {
  method show (line 19) | show() {
  method onClickTab (line 29) | onClickTab(event) {
  method onClickClose (line 35) | onClickClose() {
  method onHideModal (line 41) | onHideModal() {

FILE: examples/modal/view/modal-view-normal/modal-view-normal.js
  method initialize (line 13) | initialize(data) {
  method viewWillMount (line 21) | viewWillMount(renderData) {
  method viewDidMount (line 27) | viewDidMount() {
  method onUpdateCount (line 33) | onUpdateCount() {
  method onClickClose (line 39) | onClickClose() {

FILE: examples/plugin/hello-view.js
  method initialize (line 8) | initialize() {

FILE: examples/popup/view/component/base-view.js
  method onClickPopup (line 12) | onClickPopup() {

FILE: examples/popup/view/component/popup-view.js
  method viewDidMount (line 13) | viewDidMount($el) {
  method onSubmitForm (line 17) | onSubmitForm(data) {
  method onClickCancel (line 43) | onClickCancel() {
  method onOverlayClick (line 49) | onOverlayClick(event) {

FILE: examples/route/action/index.js
  constant DISPATCH_ACTION (line 1) | const DISPATCH_ACTION = 'DISPATCH_ACTION';

FILE: examples/route/view/child.js
  method viewDidMount (line 7) | viewDidMount() {

FILE: examples/route/view/content1.js
  method initialize (line 13) | initialize() {
  method viewWillMount (line 21) | viewWillMount(renderData) {
  method viewDidMount (line 27) | viewDidMount(el) {
  method viewWillUnmount (line 33) | viewWillUnmount() {
  method onClick (line 37) | onClick() {

FILE: examples/route/view/content2.js
  method onClickDispatch (line 12) | onClickDispatch() {

FILE: examples/route/view/content3.js
  method initialize (line 7) | initialize() {

FILE: examples/route/view/layout1.js
  method viewWillMount (line 7) | viewWillMount(renderData) {
  method getLinks (line 13) | getLinks(routeTables) {

FILE: examples/route/view/layout2.js
  method initialize (line 7) | initialize() {
  method viewWillMount (line 11) | viewWillMount(renderData) {
  method getLinks (line 17) | getLinks(routeTables) {

FILE: examples/route/view/layout3.js
  method initialize (line 7) | initialize() {
  method viewWillMount (line 11) | viewWillMount(renderData) {
  method getLinks (line 17) | getLinks(routeTables) {

FILE: examples/route/view/main.js
  method initialize (line 7) | initialize() {
  method viewWillMount (line 11) | viewWillMount(renderData) {
  method getLinks (line 17) | getLinks(routeTables) {

FILE: examples/route/view/main1.js
  method initialize (line 7) | initialize() {
  method viewWillMount (line 13) | viewWillMount(renderData) {
  method getLinks (line 19) | getLinks(routeTables) {

FILE: examples/route/view/main2.js
  method viewWillMount (line 7) | viewWillMount(renderData) {
  method getLinks (line 13) | getLinks(routeTables) {

FILE: examples/route/view/main3.js
  method viewWillMount (line 7) | viewWillMount(renderData) {
  method getLinks (line 13) | getLinks(routeTables) {

FILE: examples/route/view/sub-child.js
  method viewDidMount (line 10) | viewDidMount() {
  method onClickTest (line 14) | onClickTest() {

FILE: examples/route/view/sub-content2.js
  method onClickUpdate (line 11) | onClickUpdate() {

FILE: examples/schema/hello-view.js
  method initialize (line 11) | initialize() {
  method viewWillMount (line 15) | viewWillMount(renderData) {
  method viewDidMount (line 20) | viewDidMount($el) {
  method onSave (line 24) | onSave(id, name, email, inputs) {
  method onCompleteSave (line 35) | onCompleteSave(data) {

FILE: examples/timer/js/main.js
  method initialize (line 15) | initialize() {
  method viewWillUnmount (line 27) | viewWillUnmount() {
  method onTimerToggle (line 31) | onTimerToggle() {
  method stopTimer (line 36) | stopTimer() {
  method startTimer (line 43) | startTimer() {

FILE: examples/timer/js/woowahan.js
  function t (line 1) | function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,lo...
  function r (line 1) | function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enume...
  function i (line 1) | function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a ...
  function e (line 1) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  method dispatch (line 1) | get dispatch(){return y.dispatch.bind(y)}
  method getMiddleware (line 1) | get getMiddleware(){return y.getMiddleware.bind(y)}
  method getStates (line 1) | get getStates(){return y.getStates.bind(y)}
  method setStates (line 1) | get setStates(){return y.setStates.bind(y)}
  method getComponent (line 1) | get getComponent(){return y.getComponent.bind(y)}
  method getRouteTables (line 1) | get getRouteTables(){return y.getRouteTables.bind(y)}
  method addAction (line 1) | get addAction(){return y.addAction.bind(y)}
  method removeAction (line 1) | get removeAction(){return y.removeAction.bind(y)}
  method addError (line 1) | get addError(){return y.addError.bind(y)}
  function e (line 1) | function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function i (line 1) | function i(e,n){var r={seen:[],stylize:s};return arguments.length>=3&&(r...
  function o (line 1) | function o(e,t){var n=i.styles[t];return n?"["+i.colors[n][0]+"m"+e+"[...
  function s (line 1) | function s(e,t){return e}
  function a (line 1) | function a(e){var t={};return e.forEach(function(e,n){t[e]=!0}),t}
  function u (line 1) | function u(e,n,r){if(e.customInspect&&n&&_(n.inspect)&&n.inspect!==t.ins...
  function c (line 1) | function c(e,t){if(x(t))return e.stylize("undefined","undefined");if(b(t...
  function l (line 1) | function l(e){return"["+Error.prototype.toString.call(e)+"]"}
  function f (line 1) | function f(e,t,n,r,i){for(var o=[],s=0,a=t.length;s<a;++s)N(t,String(s))...
  function h (line 1) | function h(e,t,n,r,i,o){var s,a,c;if(c=Object.getOwnPropertyDescriptor(t...
  function p (line 1) | function p(e,t,n){var r=0,i=e.reduce(function(e,t){return r++,t.indexOf(...
  function d (line 1) | function d(e){return Array.isArray(e)}
  function v (line 1) | function v(e){return"boolean"==typeof e}
  function g (line 1) | function g(e){return null===e}
  function y (line 1) | function y(e){return null==e}
  function m (line 1) | function m(e){return"number"==typeof e}
  function b (line 1) | function b(e){return"string"==typeof e}
  function w (line 1) | function w(e){return"symbol"==typeof e}
  function x (line 1) | function x(e){return void 0===e}
  function E (line 1) | function E(e){return T(e)&&"[object RegExp]"===k(e)}
  function T (line 1) | function T(e){return"object"==typeof e&&null!==e}
  function S (line 1) | function S(e){return T(e)&&"[object Date]"===k(e)}
  function A (line 1) | function A(e){return T(e)&&("[object Error]"===k(e)||e instanceof Error)}
  function _ (line 1) | function _(e){return"function"==typeof e}
  function C (line 1) | function C(e){return null===e||"boolean"==typeof e||"number"==typeof e||...
  function k (line 1) | function k(e){return Object.prototype.toString.call(e)}
  function j (line 1) | function j(e){return e<10?"0"+e.toString(10):e.toString(10)}
  function O (line 1) | function O(){var e=new Date,t=[j(e.getHours()),j(e.getMinutes()),j(e.get...
  function N (line 1) | function N(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function o (line 1) | function o(){if(!s){if(r.throwDeprecation)throw new Error(i);r.traceDepr...
  function n (line 1) | function n(){throw new Error("setTimeout has not been defined")}
  function r (line 1) | function r(){throw new Error("clearTimeout has not been defined")}
  function i (line 1) | function i(e){if(l===setTimeout)return setTimeout(e,0);if((l===n||!l)&&s...
  function o (line 1) | function o(e){if(f===clearTimeout)return clearTimeout(e);if((f===r||!f)&...
  function s (line 1) | function s(){v&&p&&(v=!1,p.length?d=p.concat(d):g=-1,d.length&&a())}
  function a (line 1) | function a(){if(!v){var e=i(s);v=!0;for(var t=d.length;t;){for(p=d,d=[];...
  function u (line 1) | function u(e,t){this.fun=e,this.array=t}
  function c (line 1) | function c(){}
  function i (line 1) | function i(){return!(!window||!window.process||"renderer"!==window.proce...
  function o (line 1) | function o(e){var n=this.useColors;if(e[0]=(n?"%c":"")+this.namespace+(n...
  function s (line 1) | function s(){return"object"==typeof console&&console.log&&Function.proto...
  function a (line 1) | function a(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=...
  function u (line 1) | function u(){var e;try{e=t.storage.debug}catch(e){}return!e&&"undefined"...
  function c (line 1) | function c(){try{return window.localStorage}catch(e){}}
  function r (line 1) | function r(e){var n,r=0;for(n in e)r=(r<<5)-r+e.charCodeAt(n),r|=0;retur...
  function i (line 1) | function i(e){function n(){if(n.enabled){var e=n,r=+new Date,i=r-(c||r);...
  function o (line 1) | function o(e){t.save(e),t.names=[],t.skips=[];for(var n=("string"==typeo...
  function s (line 1) | function s(){t.enable("")}
  function a (line 1) | function a(e){var n,r;for(n=0,r=t.skips.length;n<r;n++)if(t.skips[n].tes...
  function u (line 1) | function u(e){return e instanceof Error?e.stack||e.message:e}
  function n (line 1) | function n(e){if(e=String(e),!(e.length>100)){var t=/^((?:\d+)?\.?\d+) *...
  function r (line 1) | function r(e){return e>=c?Math.round(e/c)+"d":e>=u?Math.round(e/u)+"h":e...
  function i (line 1) | function i(e){return o(e,c,"day")||o(e,u,"hour")||o(e,a,"minute")||o(e,s...
  function o (line 1) | function o(e,t,n){if(!(e<t))return e<1.5*t?Math.floor(e/t)+" "+n:Math.ce...
  function n (line 2) | function n(e){function t(t,n,r,i,o,s){for(;o>=0&&o<s;o+=e){var a=i?i[o]:...
  function o (line 2) | function o(e){return function(t,n,r){n=S(n,r);for(var i=j(t),o=e>0?0:i-1...
  function s (line 2) | function s(e,t,n){return function(r,i,o){var s=0,a=j(r);if("number"==typ...
  function a (line 2) | function a(e,t){var n=L.length,r=e.constructor,i=E.isFunction(r)&&r.prot...
  function s (line 2) | function s(e){var t=!!e&&"length"in e&&e.length,n=ce.type(e);return"func...
  function a (line 2) | function a(e,t,n){if(ce.isFunction(t))return ce.grep(e,function(e,r){ret...
  function u (line 2) | function u(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}
  function c (line 2) | function c(e){var t={};return ce.each(e.match(Ae)||[],function(e,n){t[n]...
  function l (line 2) | function l(){Z.removeEventListener("DOMContentLoaded",l),n.removeEventLi...
  function f (line 2) | function f(){this.expando=ce.expando+f.uid++}
  function h (line 2) | function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.rep...
  function p (line 2) | function p(e,t,n,r){var i,o=1,s=20,a=r?function(){return r.cur()}:functi...
  function d (line 2) | function d(e,t){var n="undefined"!=typeof e.getElementsByTagName?e.getEl...
  function v (line 2) | function v(e,t){for(var n=0,r=e.length;n<r;n++)je.set(e[n],"globalEval",...
  function g (line 2) | function g(e,t,n,r,i){for(var o,s,a,u,c,l,f=t.createDocumentFragment(),h...
  function y (line 2) | function y(){return!0}
  function m (line 2) | function m(){return!1}
  function b (line 2) | function b(){try{return Z.activeElement}catch(e){}}
  function w (line 2) | function w(e,t,n,r,i,o){var s,a;if("object"==typeof t){"string"!=typeof ...
  function x (line 2) | function x(e,t){return ce.nodeName(e,"table")&&ce.nodeName(11!==t.nodeTy...
  function E (line 2) | function E(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
  function T (line 2) | function T(e){var t=Xe.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function S (line 2) | function S(e,t){var n,r,i,o,s,a,u,c;if(1===t.nodeType){if(je.hasData(e)&...
  function A (line 2) | function A(e,t){var n=t.nodeName.toLowerCase();"input"===n&&qe.test(e.ty...
  function _ (line 2) | function _(e,t,n,r){t=te.apply([],t);var i,o,s,a,u,c,l=0,f=e.length,h=f-...
  function C (line 2) | function C(e,t,n){for(var r,i=t?ce.filter(t,e):e,o=0;null!=(r=i[o]);o++)...
  function k (line 2) | function k(e,t){var n=ce(t.createElement(e)).appendTo(t.body),r=ce.css(n...
  function j (line 2) | function j(e){var t=Z,n=Qe[e];return n||(n=k(e,t),"none"!==n&&n||(Ye=(Ye...
  function O (line 2) | function O(e,t,n){var r,i,o,s,a=e.style;return n=n||et(e),s=n?n.getPrope...
  function N (line 2) | function N(e,t){return{get:function(){return e()?void delete this.get:(t...
  function R (line 2) | function R(e){if(e in at)return e;for(var t=e[0].toUpperCase()+e.slice(1...
  function D (line 2) | function D(e,t,n){var r=Me.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3...
  function M (line 2) | function M(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t...
  function L (line 2) | function L(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=...
  function I (line 2) | function I(e,t){for(var n,r,i,o=[],s=0,a=e.length;s<a;s++)r=e[s],r.style...
  function q (line 3) | function q(e,t,n,r,i){return new q.prototype.init(e,t,n,r,i)}
  function F (line 3) | function F(){return n.setTimeout(function(){ut=void 0}),ut=ce.now()}
  function P (line 3) | function P(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)n=Le[r],i[...
  function $ (line 3) | function $(e,t,n){for(var r,i=(B.tweeners[t]||[]).concat(B.tweeners["*"]...
  function H (line 3) | function H(e,t,n){var r,i,o,s,a,u,c,l,f=this,h={},p=e.style,d=e.nodeType...
  function W (line 3) | function W(e,t){var n,r,i,o,s;for(n in e)if(r=ce.camelCase(n),i=t[r],o=e...
  function B (line 3) | function B(e,t,n){var r,i,o=0,s=B.prefilters.length,a=ce.Deferred().alwa...
  function U (line 3) | function U(e){return e.getAttribute&&e.getAttribute("class")||""}
  function z (line 3) | function z(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function V (line 3) | function V(e,t,n,r){function i(a){var u;return o[a]=!0,ce.each(e[a]||[],...
  function J (line 3) | function J(e,t){var n,r,i=ce.ajaxSettings.flatOptions||{};for(n in t)voi...
  function X (line 3) | function X(e,t,n){for(var r,i,o,s,a=e.contents,u=e.dataTypes;"*"===u[0];...
  function G (line 3) | function G(e,t,n,r){var i,o,s,a,u,c={},l=e.dataTypes.slice();if(l[1])for...
  function Y (line 3) | function Y(e,t,n,r){var i;if(ce.isArray(t))ce.each(t,function(t,i){n||Mt...
  function Q (line 3) | function Q(e){return ce.isWindow(e)?e:9===e.nodeType&&e.defaultView}
  function t (line 3) | function t(e,t,n,r){var i,o,s,a,u,c,f,p,d=t&&t.ownerDocument,v=t?t.nodeT...
  function n (line 3) | function n(){function e(n,r){return t.push(n+" ")>E.cacheLength&&delete ...
  function r (line 3) | function r(e){return e[P]=!0,e}
  function i (line 3) | function i(e){var t=R.createElement("div");try{return!!e(t)}catch(e){ret...
  function o (line 3) | function o(e,t){for(var n=e.split("|"),r=n.length;r--;)E.attrHandle[n[r]...
  function s (line 3) | function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sour...
  function a (line 3) | function a(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
  function u (line 3) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
  function c (line 3) | function c(e){return r(function(t){return t=+t,r(function(n,r){for(var i...
  function l (line 3) | function l(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
  function f (line 3) | function f(){}
  function h (line 3) | function h(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function p (line 3) | function p(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=W++;return t.first...
  function d (line 3) | function d(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)...
  function v (line 3) | function v(e,n,r){for(var i=0,o=n.length;i<o;i++)t(e,n[i],r);return r}
  function g (line 3) | function g(e,t,n,r,i){for(var o,s=[],a=0,u=e.length,c=null!=t;a<u;a++)(o...
  function y (line 3) | function y(e,t,n,i,o,s){return i&&!i[P]&&(i=y(i)),o&&!o[P]&&(o=y(o,s)),r...
  function m (line 3) | function m(e){for(var t,n,r,i=e.length,o=E.relative[e[0].type],s=o||E.re...
  function b (line 3) | function b(e,n){var i=n.length>0,o=e.length>0,s=function(r,s,a,u,c){var ...
  function e (line 4) | function e(){a.style.cssText="-webkit-box-sizing:border-box;-moz-box-siz...
  function r (line 5) | function r(e,t,r,a){var c,f,m,b,x,T=t;2!==w&&(w=2,u&&n.clearTimeout(u),i...
  function r (line 5) | function r(e){return function(t){var n=e;if(!t)return n;if(Array.isArray...
  function n (line 5) | function n(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.len...
  function r (line 5) | function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enume...
  function i (line 5) | function i(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.len...
  function e (line 5) | function e(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var s,a=e[Symbol.ite...
  function r (line 6) | function r(e){var n={};for(var r in t)t.hasOwnProperty(r)&&(n[r]=void 0)...
  function r (line 6) | function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enume...

FILE: examples/todo/action/index.js
  constant LOAD_TODOS (line 1) | const LOAD_TODOS = 'LOAD-TODOS';
  constant ALL_TODOS (line 2) | const ALL_TODOS = 'ALL-TODOS';
  constant NEW_TODO (line 3) | const NEW_TODO = 'NEW-TODO';
  constant EDIT_TODO (line 4) | const EDIT_TODO = 'EDIT-TODO';
  constant DELETE_TODO (line 5) | const DELETE_TODO = 'DELETE-TODO';
  constant COMPLETED_TODO (line 6) | const COMPLETED_TODO = 'COMPLETED-TODO';
  constant ALL_COMPLETED (line 7) | const ALL_COMPLETED = 'ALL-COMPLETED';

FILE: examples/todo/keycode.js
  constant ENTER (line 1) | const ENTER = 13;
  constant ESC (line 2) | const ESC = 27;

FILE: examples/todo/view/todo-app.js
  method initialize (line 20) | initialize() {
  method updateFooterView (line 29) | updateFooterView() {
  method viewDidMount (line 33) | viewDidMount() {
  method loadTodos (line 37) | loadTodos(todos) {
  method updateState (line 63) | updateState() {
  method createOnEnter (line 71) | createOnEnter(title, event) {
  method toggleAllComplete (line 77) | toggleAllComplete() {

FILE: examples/todo/view/todo-item.js
  method selfUpdate (line 17) | selfUpdate(todo) {
  method toggleCompleted (line 23) | toggleCompleted() {
  method edit (line 28) | edit() {
  method closeEdit (line 32) | closeEdit() {
  method clear (line 36) | clear() {
  method revertOnEscape (line 40) | revertOnEscape(value, event) {
  method updateOnEnter (line 51) | updateOnEnter(value, event) {
  method viewWillUnmount (line 58) | viewWillUnmount() {

FILE: examples/todo/view/todo-state.js
  method initialize (line 7) | initialize(model) {
  method viewWillMount (line 12) | viewWillMount(renderData) {

FILE: examples/transition/view/component/base-view.js
  method startTransition (line 7) | startTransition() {

FILE: examples/transition/view/layout/main-layout.js
  method onViewMount (line 12) | onViewMount(view) {
  method onCompleteTransition (line 22) | onCompleteTransition() {

FILE: lib/collection-view.js
  function _defineProperty (line 3) | function _defineProperty(obj, key, value) { if (key in obj) { Object.def...

FILE: lib/middleware.js
  function _toConsumableArray (line 7) | function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i ...
  method isRunning (line 27) | get isRunning() {

FILE: lib/plugin/select.js
  function sliceIterator (line 3) | function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = ...

FILE: lib/router.js
  function urlBuilder (line 11) | function urlBuilder(path) {

FILE: lib/schema.js
  function mixedDataWithSchema (line 12) | function mixedDataWithSchema(data) {

FILE: lib/view.js
  function sliceIterator (line 3) | function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = ...
  function _defineProperty (line 5) | function _defineProperty(obj, key, value) { if (key in obj) { Object.def...
  function _toConsumableArray (line 7) | function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i ...

FILE: lib/woowahan.js
  function defineProperties (line 5) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _defineProperty (line 7) | function _defineProperty(obj, key, value) { if (key in obj) { Object.def...
  function _classCallCheck (line 9) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  method dispatch (line 20) | get dispatch() {
  method getMiddleware (line 24) | get getMiddleware() {
  method getStates (line 28) | get getStates() {
  method setStates (line 32) | get setStates() {
  method getComponent (line 36) | get getComponent() {
  method getRouteTables (line 40) | get getRouteTables() {
  method addAction (line 44) | get addAction() {
  method removeAction (line 48) | get removeAction() {
  method addError (line 52) | get addError() {
  function Woowahan (line 67) | function Woowahan() {

FILE: src/action.js
  method create (line 2) | create(type, data = {}) {

FILE: src/collection-view.js
  method super (line 14) | super(...args) {
  method initialize (line 18) | initialize(...args) {
  method viewWillUnmount (line 28) | viewWillUnmount() {
  method addRowView (line 38) | addRowView(model) {
  method reload (line 75) | reload(data = [], options = {}) {
  method getCollection (line 101) | getCollection() {
  method onSelectedRow (line 105) | onSelectedRow() {
  method onSelectedCell (line 109) | onSelectedCell() {
  method onAction (line 113) | onAction() {
  method onClose (line 117) | onClose() {

FILE: src/event.js
  method create (line 2) | create(type, ...args) {

FILE: src/item-view.js
  method super (line 13) | super(...args) {
  method initialize (line 17) | initialize(...args) {
  method _onSelectedRow (line 21) | _onSelectedRow(event) {
  method _onSelectedCell (line 29) | _onSelectedCell(event) {

FILE: src/middleware.js
  constant MIDDLEWARE (line 1) | const MIDDLEWARE = {
  constant MIDDLEWARE_PROTOCOL (line 8) | const MIDDLEWARE_PROTOCOL = {
  method isRunning (line 19) | get isRunning() {
  method run (line 22) | run(middlewares, protocol, params, callback, preprocess) {

FILE: src/popup-view.js
  method super (line 37) | super() {
  method initialize (line 41) | initialize(...args) {
  method viewComponentDidMount (line 47) | viewComponentDidMount($el) {

FILE: src/reducer.js
  constant MIDDLEWARE (line 1) | const MIDDLEWARE = require('./middleware').MIDDLEWARE;
  constant MIDDLEWARE_PROTOCOL (line 3) | const MIDDLEWARE_PROTOCOL = require('./middleware').MIDDLEWARE_PROTOCOL;
  method extend (line 18) | extend(protoProps) {
  method create (line 31) | create(actionName, schema, handler) {

FILE: src/router.js
  constant MIDDLEWARE (line 1) | const MIDDLEWARE = require('./middleware').MIDDLEWARE;
  constant MIDDLEWARE_PROTOCOL (line 2) | const MIDDLEWARE_PROTOCOL = require('./middleware').MIDDLEWARE_PROTOCOL;
  function urlBuilder (line 7) | function urlBuilder(path) {
  method bindLayout (line 53) | bindLayout(layout) {
  method design (line 57) | design(pages, settings = {}, toolset) {
  method bindRouter (line 66) | bindRouter(pages) {

FILE: src/schema.js
  method create (line 3) | create(schemaName, defineSchema) {

FILE: src/store.js
  method create (line 2) | create(states) {

FILE: src/types.js
  constant TYPE (line 3) | const TYPE = {
  constant REQUIRED (line 11) | const REQUIRED = 'required';
  constant DEFAULT_VALUE (line 12) | const DEFAULT_VALUE = 'defaultValue';
  constant MIN (line 13) | const MIN = 'min';
  constant MAX (line 14) | const MAX = 'max';
  constant FORMAT (line 15) | const FORMAT = 'format';
  method String (line 124) | String(options) {
  method Number (line 134) | Number(options) {
  method Array (line 143) | Array(options) {
  method Email (line 150) | Email(options) {
  method Boolean (line 156) | Boolean(options) {

FILE: src/view.js
  constant MIDDLEWARE (line 3) | const MIDDLEWARE = require('./middleware').MIDDLEWARE;
  constant MIDDLEWARE_PROTOCOL (line 4) | const MIDDLEWARE_PROTOCOL = require('./middleware').MIDDLEWARE_PROTOCOL;
  constant DEFAULT_ATTR_TYPE (line 14) | const DEFAULT_ATTR_TYPE = 'text';
  method super (line 129) | super(...args) {
  method initialize (line 133) | initialize(model) {
  method delegateEvents (line 162) | delegateEvents(events) {
  method updateView (line 242) | updateView(container, ChildView, ...args) {
  method addView (line 315) | addView(container, ChildView, ...args) {
  method removeView (line 321) | removeView(container) {
  method addPopup (line 327) | addPopup(view, options = {}, callback) { // TODO: options 추가
  method getStates (line 375) | getStates(key) {
  method setStates (line 379) | setStates(key, value) {
  method getComponent (line 383) | getComponent(name) {
  method getRouteTables (line 387) | getRouteTables(routeName, params, query) {
  method dispatch (line 410) | dispatch(action, subscriber, options) {
  method setModel (line 427) | setModel(key, value) {
  method getModel (line 468) | getModel(key) {
  method log (line 480) | log() {
  method logStamp (line 484) | logStamp(...args) {
  method close (line 488) | close(remove) {
  method remove (line 524) | remove(...args) {
  method _syncElement (line 531) | _syncElement(source, target) {
  method _bindRef (line 544) | _bindRef() {
  method _bindModel (line 574) | _bindModel() {
  method _unbindRef (line 625) | _unbindRef() {
  method _unbindModel (line 635) | _unbindModel() {
  method _removeChild (line 639) | _removeChild(remove) {

FILE: src/woowahan.js
  constant MIDDLEWARE (line 3) | const MIDDLEWARE = require('./middleware').MIDDLEWARE;
  constant MIDDLEWARE_PROTOCOL (line 4) | const MIDDLEWARE_PROTOCOL = require('./middleware').MIDDLEWARE_PROTOCOL;
  constant INTERVAL (line 7) | const INTERVAL = 1000/60;
  method dispatch (line 10) | get dispatch() {
  method getMiddleware (line 14) | get getMiddleware() {
  method getStates (line 18) | get getStates() {
  method setStates (line 22) | get setStates() {
  method getComponent (line 26) | get getComponent() {
  method getRouteTables (line 30) | get getRouteTables() {
  method addAction (line 34) | get addAction() {
  method removeAction (line 38) | get removeAction() {
  method addError (line 42) | get addError() {
  class Woowahan (line 57) | class Woowahan {
    method constructor (line 59) | constructor(settings = {}) {
    method import (line 94) | import(Package) {
    method getView (line 100) | getView(viewname) {
    method enableQueue (line 104) | enableQueue() {
    method disableQueue (line 108) | disableQueue() {
    method addAction (line 112) | addAction(id) {
    method removeAction (line 120) | removeAction(id) {
    method addError (line 128) | addError(err) {
    method queuing (line 132) | queuing() {
    method bindStore (line 169) | bindStore(store) {
    method bindReducer (line 173) | bindReducer(reducer) {
    method bindComponent (line 177) | bindComponent(component) {
    method bindPlugin (line 181) | bindPlugin(plugin) {
    method combineReducer (line 191) | combineReducer(reducers) {
    method getStates (line 199) | getStates(key) {
    method setStates (line 203) | setStates(key, value) {
    method getMiddleware (line 219) | getMiddleware(type, delegate) {
    method getComponent (line 223) | getComponent(name) {
    method getRouteTables (line 231) | getRouteTables() {
    method dispatch (line 235) | dispatch(action, subscriber) {
    method use (line 239) | use(module) {
    method useModule (line 254) | useModule(module) {
    method set (line 275) | set(middleware, options = {}) {
    method start (line 287) | start(design, options = {}) {
    method numberOfAction (line 320) | numberOfAction() {
    method numberOfWorkAction (line 324) | numberOfWorkAction() {
Condensed preview — 253 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (898K chars).
[
  {
    "path": ".babelrc",
    "chars": 27,
    "preview": "{\n  \"presets\": [\"es2015\"]\n}"
  },
  {
    "path": ".gitignore",
    "chars": 1637,
    "preview": "# Created by .ignore support plugin (hsz.mobi)\n### Node template\n# Logs\nlogs\n*.log\nnpm-debug.log*\n\n# Runtime data\npids\n*"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 809,
    "preview": "# WoowahanJS에 기여하기\n\n:+1::tada: WoowahanJS에 관심을 가져주셔서 감사합니다. :tada::+1:\n\n## 이슈 제출\n\n* [여기](https://github.com/woowabros/Wo"
  },
  {
    "path": "README.en.md",
    "chars": 1380,
    "preview": "# WoowahanJS\n\nWoowahanJS는 보다 큰 규모의 웹 어플리케이션 개발을 위한 프레임워크입니다.\n\n현대의 웹 어플리케이션은 많은 수의 컴포넌트로 복잡하게 구성된 뷰와 상태를 관리하는 HTTP 기반 클라이"
  },
  {
    "path": "README.md",
    "chars": 1703,
    "preview": "\n\n# WoowahanJS\n\n[![npm](https://img.shields.io/npm/v/woowahan.svg?style=flat-square)]()\n[![npm (tag)](https://img.shield"
  },
  {
    "path": "dist/woowahan.js",
    "chars": 163824,
    "preview": "!function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.e"
  },
  {
    "path": "docs/README.md",
    "chars": 499,
    "preview": "# WoowahanJS 기초\n\n프로젝트 구성 환경은 [Webpack](https://webpack.github.io)(권장) 또는 [Browserify](http://browserify.org) 와 같은 번들러를 이"
  },
  {
    "path": "docs/action-reducer.md",
    "chars": 2061,
    "preview": "# 액션과 리듀서\n\nUI 관련 코드와 상태(데이타) 및 상태 관리 코드를 분리하기 위해 Action & Reducer를 제공합니다.\nAction은 특정 작업을 시작하게하는 \"키\"로서 정의되며 Reducer와 1:1 "
  },
  {
    "path": "docs/collection-view.md",
    "chars": 1619,
    "preview": "# 컬렉션 뷰\n\n컬렉션 뷰<sub>CollectionView</sub>는 `Woowahan`에서 제공하는 뷰 컴포넌트입니다.\n[뷰]('./view.md)<sub>View</sub>의 기능들을 상속하며, 컬렉션 데이터"
  },
  {
    "path": "docs/dom-refs.md",
    "chars": 2074,
    "preview": "# 뷰의 DOM 참조\n\n뷰 코드 안에서 DOM에 접근해야할 필요가 있습니다.\n뷰가 로드된 시점 이후에 DOM API를 사용하여 접근하거나 편리하게 jQuery를 이용할 수 도 있습니다.\n다음의 코드는 jQuery를 "
  },
  {
    "path": "docs/event.md",
    "chars": 6264,
    "preview": "# 이벤트\n\nUI에서 발생하는 이벤트와 이벤트 핸들러는 events 속성 설정으로 쉽게 연결할 수 있습니다.\nevents 속성은 뷰 생성시 정의하며 기본 형식은 다음과 같습니다.\n\n```javascript\nWoowa"
  },
  {
    "path": "docs/first-app.md",
    "chars": 1913,
    "preview": "# 첫 번째 앱 만들기\n\nWoowahanJS로 작성된 단일 페이지 어플리케이션은 1개 이상의 뷰 컴포넌트와 이들 뷰를 관리하는 하나의 Application으로 구성됩니다.\n\n다음 예제는 하나의 뷰와 하나의 어플리케이"
  },
  {
    "path": "docs/popup-view.md",
    "chars": 3211,
    "preview": "# 팝업 뷰\n\n팝업 뷰<sub>PopupView</sub>는 `Woowahan`에서 제공하는 뷰 컴포넌트입니다.\n[뷰]('./view.md')<sub>View</sub>의 기능들을 상속하며, 팝업 뷰를 나타내기 위한"
  },
  {
    "path": "docs/project-setup.md",
    "chars": 615,
    "preview": "# 프로젝트 환경 구성\n\n현대의 웹 어플리케이션은 많은 컴포넌트와 페이지로 구성됩니다.\n다수의 파일을 효과적으로 구성하기 위한 다양한 방법이 존재합니다.\n\nWoowahanJS는 번들러를 이용한 구성과 Script 태"
  },
  {
    "path": "docs/route.md",
    "chars": 2589,
    "preview": "# Route\n\n어플리케이션인 `app = Woowahan()`을 start 함으로서 전체 앱을 구동시킬 수 있습니다.\nstart의 첫 번째 파라메터는 라우팅 경로와 연결될 View의 구성 정보로 이루어진 객체를 받"
  },
  {
    "path": "docs/store.md",
    "chars": 5,
    "preview": "# 스토어"
  },
  {
    "path": "docs/view-model.md",
    "chars": 3033,
    "preview": "# 뷰 모델 및 데이타 바인딩\n\n## 뷰 모델\n\n모든 뷰는 필요한 경우 상태를 가질 수 있습니다.\n뷰가 가진 상태를 `뷰 모델`이라 합니다.\n뷰 모델은 뷰의 템플릿과 결합되어 뷰의 UI를 구성합니다.\n\n뷰가 유지되는"
  },
  {
    "path": "docs/view.md",
    "chars": 6331,
    "preview": "# 뷰\n\n\n뷰는 어플리케이션을 구성하는 컴포넌트의 기본 단위입니다.\n뷰는 라우터에 연결될 수 있으며 하나 이상의 자식 뷰를 가질 수 있습니다.\n뷰는 재사용될 수 있도록 의도적인 구성이 아니라면 구성 독립성을 지원합니"
  },
  {
    "path": "examples/README.md",
    "chars": 670,
    "preview": "# 예제\n\n## helloword\n\nWoowahanJS판 HelloWorld 입니다.\n\n## bind\n\nOne-way 데이타 바인딩의 구현한 간단한 예제입니다.\n\n## listview\n\nAPI 서버로 부터 유입된 컬"
  },
  {
    "path": "examples/bind/.babelrc",
    "chars": 27,
    "preview": "{\n  \"presets\": [\"es2015\"]\n}"
  },
  {
    "path": "examples/bind/gulpfile.js",
    "chars": 1021,
    "preview": "var path = require('path');\nvar _ = require('lodash');\nvar gulp = require('gulp');\nvar del = require('del');\nvar $ = req"
  },
  {
    "path": "examples/bind/hello-view.hbs",
    "chars": 1028,
    "preview": "<div>\n  <select id=\"sel-depth1\" class=\"form-control form-control-sm\" data-role=\"bind\" data-name=\"depth1\" data-type=\"sele"
  },
  {
    "path": "examples/bind/hello-view.js",
    "chars": 1090,
    "preview": "import Woowahan from '../../index';\nimport Template from './hello-view.hbs';\n\nconst sampleData = {\n  'korean': ['맛집', '산"
  },
  {
    "path": "examples/bind/index.html",
    "chars": 478,
    "preview": "<!doctype html>\n<html>\n<head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrom"
  },
  {
    "path": "examples/bind/main.js",
    "chars": 306,
    "preview": "import Woowahan from '../../index';\nimport HelloView from './hello-view';\nimport { TextDecoPlugin } from './plugin';\n\ngl"
  },
  {
    "path": "examples/bind/package.json",
    "chars": 1105,
    "preview": "{\n  \"name\": \"helloworld\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"main.js\",\n  \"scripts\": {\n    \"build\": \"g"
  },
  {
    "path": "examples/bind/plugin/index.js",
    "chars": 153,
    "preview": "export const TextDecoPlugin = (element, value) => {\n  const text = $(element).text();\n\n  $(element).text(text === '없음' ?"
  },
  {
    "path": "examples/bind/webpack.config.js",
    "chars": 429,
    "preview": "var webpack = require('webpack');\nvar entry = './main.js';\nvar output = {\n  path: __dirname,\n  filename: 'bundle.js'\n};\n"
  },
  {
    "path": "examples/collection/.babelrc",
    "chars": 27,
    "preview": "{\n  \"presets\": [\"es2015\"]\n}"
  },
  {
    "path": "examples/collection/collection-first.js",
    "chars": 484,
    "preview": "import Woowahan from '../../index';\n\nconst RowView = Woowahan.ItemView.create('RowView', {\n  template: '<li></li>',\n\n  v"
  },
  {
    "path": "examples/collection/collection-second.js",
    "chars": 1093,
    "preview": "import Woowahan from '../../index';\n\nconst RowItemView = Woowahan.CollectionView.create('RowItemView', {\n  template: '<l"
  },
  {
    "path": "examples/collection/gulpfile.js",
    "chars": 819,
    "preview": "var path = require('path');\nvar _ = require('lodash');\nvar gulp = require('gulp');\nvar del = require('del');\nvar $ = req"
  },
  {
    "path": "examples/collection/hello-view.js",
    "chars": 1797,
    "preview": "import Woowahan from '../../index';\nimport CollectionFirst from './collection-first';\nimport CollectionSecond from './co"
  },
  {
    "path": "examples/collection/index.html",
    "chars": 421,
    "preview": "<!doctype html>\n<html>\n<head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrom"
  },
  {
    "path": "examples/collection/main.js",
    "chars": 212,
    "preview": "import Woowahan from '../../index';\nimport HelloView from './hello-view';\n\nglobal.$ = global.jQuery = Woowahan.$;\n\nvar a"
  },
  {
    "path": "examples/collection/package.json",
    "chars": 1076,
    "preview": "{\n  \"name\": \"helloworld\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"main.js\",\n  \"scripts\": {\n    \"build\": \"g"
  },
  {
    "path": "examples/collection/webpack.config.js",
    "chars": 350,
    "preview": "var webpack = require('webpack');\nvar entry = './main.js';\nvar output = {\n  path: __dirname,\n  filename: 'bundle.js'\n};\n"
  },
  {
    "path": "examples/domrefs/.babelrc",
    "chars": 27,
    "preview": "{\n  \"presets\": [\"es2015\"]\n}"
  },
  {
    "path": "examples/domrefs/gulpfile.js",
    "chars": 1021,
    "preview": "var path = require('path');\nvar _ = require('lodash');\nvar gulp = require('gulp');\nvar del = require('del');\nvar $ = req"
  },
  {
    "path": "examples/domrefs/index.html",
    "chars": 451,
    "preview": "<!doctype html>\n<html>\n<head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrom"
  },
  {
    "path": "examples/domrefs/main-view.hbs",
    "chars": 1381,
    "preview": "<div class=\"container\">\n    <h1>뷰의 DOM 참조</h1>\n\n    <div class=\"alert alert-success\" role=\"alert\" data-ref=\"alertMessage"
  },
  {
    "path": "examples/domrefs/main-view.js",
    "chars": 1228,
    "preview": "import Woowahan from '../../index';\nimport Template from './main-view.hbs';\n\nconst peopleColors = [\n  { color: 'white', "
  },
  {
    "path": "examples/domrefs/main.js",
    "chars": 344,
    "preview": "import Woowahan from '../../index';\nimport MainView from './main-view';\n\nglobal.$ = global.jQuery = Woowahan.$;\n\nvar Oth"
  },
  {
    "path": "examples/domrefs/package.json",
    "chars": 1096,
    "preview": "{\n  \"name\": \"domrefs\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"main.js\",\n  \"scripts\": {\n    \"build\": \"gulp"
  },
  {
    "path": "examples/domrefs/webpack.config.js",
    "chars": 429,
    "preview": "var webpack = require('webpack');\nvar entry = './main.js';\nvar output = {\n  path: __dirname,\n  filename: 'bundle.js'\n};\n"
  },
  {
    "path": "examples/hello-yarn/README.md",
    "chars": 490,
    "preview": "# hello-yarn\n\n[Yarn](https://yarnpkg.com/) 설치:\n\n```\n$ npm install -g yarn\n```\n\n개발 도구 설치:\n\n```\n$ yarn add --dev webpack w"
  },
  {
    "path": "examples/hello-yarn/app/hello-view.js",
    "chars": 132,
    "preview": "import Woowahan from '../../../index';\n\nexport default Woowahan.View.create('Hello', {\n  template: '<h1>Hello, WoowahanJ"
  },
  {
    "path": "examples/hello-yarn/app/index.js",
    "chars": 174,
    "preview": "import Woowahan from '../../../index';\nimport HelloView from './hello-view';\n\nconst app = new Woowahan();\n\napp.start({\n "
  },
  {
    "path": "examples/hello-yarn/index.html",
    "chars": 413,
    "preview": "<!doctype html>\n<html>\n<head>\n  <meta charset=\"utf-8\" />\n  <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'"
  },
  {
    "path": "examples/hello-yarn/package.json",
    "chars": 167,
    "preview": "{\n  \"scripts\": {\n    \"start\": \"webpack-dev-server\"\n  },\n  \"devDependencies\": {\n    \"webpack\": \"^2.3.2\",\n    \"webpack-dev"
  },
  {
    "path": "examples/hello-yarn/webpack.config.js",
    "chars": 112,
    "preview": "module.exports = {\n  entry: './app/index.js',\n  output: {\n    filename: 'bundle.js',\n    path: __dirname\n  }\n};\n"
  },
  {
    "path": "examples/helloworld/.babelrc",
    "chars": 27,
    "preview": "{\n  \"presets\": [\"es2015\"]\n}"
  },
  {
    "path": "examples/helloworld/gulpfile.js",
    "chars": 819,
    "preview": "var path = require('path');\nvar _ = require('lodash');\nvar gulp = require('gulp');\nvar del = require('del');\nvar $ = req"
  },
  {
    "path": "examples/helloworld/hello-view.js",
    "chars": 129,
    "preview": "import Woowahan from '../../index';\n\nexport default Woowahan.View.create('Hello', {\n  template: '<h1>Hello, WoowahanJs</"
  },
  {
    "path": "examples/helloworld/index.html",
    "chars": 421,
    "preview": "<!doctype html>\n<html>\n<head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrom"
  },
  {
    "path": "examples/helloworld/main.js",
    "chars": 212,
    "preview": "import Woowahan from '../../index';\nimport HelloView from './hello-view';\n\nglobal.$ = global.jQuery = Woowahan.$;\n\nvar a"
  },
  {
    "path": "examples/helloworld/package.json",
    "chars": 1076,
    "preview": "{\n  \"name\": \"helloworld\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"main.js\",\n  \"scripts\": {\n    \"build\": \"g"
  },
  {
    "path": "examples/helloworld/webpack.config.js",
    "chars": 350,
    "preview": "var webpack = require('webpack');\nvar entry = './main.js';\nvar output = {\n  path: __dirname,\n  filename: 'bundle.js'\n};\n"
  },
  {
    "path": "examples/listview/.babelrc",
    "chars": 27,
    "preview": "{\n  \"presets\": [\"es2015\"]\n}"
  },
  {
    "path": "examples/listview/action/index.js",
    "chars": 89,
    "preview": "export const FETCH_USERS = 'FETCH_USERS';\nexport const FETCH_ONE_USER = 'FETCH_ONE_USER';"
  },
  {
    "path": "examples/listview/global.config.js",
    "chars": 55,
    "preview": "export default {\n  Request: {\n    Timeout: 3000\n  }\n};\n"
  },
  {
    "path": "examples/listview/gulpfile.js",
    "chars": 1782,
    "preview": "var path = require('path');\nvar _ = require('lodash');\nvar gulp = require('gulp');\nvar del = require('del');\nvar $ = req"
  },
  {
    "path": "examples/listview/index.html",
    "chars": 530,
    "preview": "<!doctype html>\n<html>\n<head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrom"
  },
  {
    "path": "examples/listview/main.js",
    "chars": 674,
    "preview": "import Woowahan from '../../index';\nimport Users from './reducer/users';\nimport OneUser from './reducer/one-user';\nimpor"
  },
  {
    "path": "examples/listview/package.json",
    "chars": 1043,
    "preview": "{\n  \"name\": \"listview\",\n  \"version\": \"0.1.3\",\n  \"description\": \"\",\n  \"main\": \"main.js\",\n  \"scripts\": {\n    \"build\": \"gul"
  },
  {
    "path": "examples/listview/plugin.config.js",
    "chars": 54,
    "preview": "import text from './plugin/text';\n\nexport {\n  text\n};\n"
  },
  {
    "path": "examples/listview/reducer/core-reducer.js",
    "chars": 197,
    "preview": "import Woowahan from '../../../index';\n\nexport default Woowahan.Reducer.extend({\n  onFail(jqXHR, textStatus, message) {\n"
  },
  {
    "path": "examples/listview/reducer/one-user.js",
    "chars": 298,
    "preview": "import CoreReducer from './core-reducer';\nimport { FETCH_ONE_USER } from '../action';\n\nvar OneUser = CoreReducer.create("
  },
  {
    "path": "examples/listview/reducer/users.js",
    "chars": 297,
    "preview": "import CoreReducer from './core-reducer';\nimport { FETCH_USERS } from '../action';\n\nvar Users = CoreReducer.create(FETCH"
  },
  {
    "path": "examples/listview/server/data/users.json",
    "chars": 29108,
    "preview": "[\n  {\n    \"id\": 0,\n    \"name\": \"Stephanie Cabrera\",\n    \"age\": 23,\n    \"gender\": \"female\",\n    \"company\": \"Waab\",\n    \"j"
  },
  {
    "path": "examples/listview/server/demo.js",
    "chars": 791,
    "preview": "var path = require('path');\nvar express = require('express');\nvar morgan = require('morgan');\nvar app = express();\nvar u"
  },
  {
    "path": "examples/listview/server/proxy.js",
    "chars": 1229,
    "preview": "var format = require('util').format;\nvar express = require('express');\nvar morgan = require('morgan');\nvar request = req"
  },
  {
    "path": "examples/listview/view/control/pager.hbs",
    "chars": 727,
    "preview": "<nav class=\"text-center\">\n  <ul class=\"pagination\">\n    {{#if prev}}\n    <li class=\"page-item\">\n      <a class=\"page-lin"
  },
  {
    "path": "examples/listview/view/control/pager.js",
    "chars": 1138,
    "preview": "import Woowahan from '../../../../index';\nimport Template from './pager.hbs';\n\nexport default Woowahan.View.create('Page"
  },
  {
    "path": "examples/listview/view/layout.hbs",
    "chars": 1026,
    "preview": "<nav class=\"navbar navbar-default\">\n    <div class=\"container-fluid\">\n        <div class=\"navbar-header\">\n            <b"
  },
  {
    "path": "examples/listview/view/layout.js",
    "chars": 220,
    "preview": "import Woowahan from '../../../index';\nimport Template from './layout.hbs';\n\nexport default Woowahan.View.create('Layout"
  },
  {
    "path": "examples/listview/view/not-found.js",
    "chars": 156,
    "preview": "import { CoreView } from '../core';\n\nexport default CoreView.extend({\n  template: '<strong>Empty Page</strong>',\n\n  init"
  },
  {
    "path": "examples/listview/view/users/index.hbs",
    "chars": 748,
    "preview": "<div>\n    <h2>사용자 목록</h2>\n</div>\n\n<div>\n    <ol class=\"breadcrumb\">\n        <li><a href=\"#\">Home</a></li>\n        <li cl"
  },
  {
    "path": "examples/listview/view/users/index.js",
    "chars": 1432,
    "preview": "import Woowahan from '../../../../index';\nimport { FETCH_USERS, FETCH_ONE_USER } from '../../action';\nimport Template fr"
  },
  {
    "path": "examples/listview/view/users/user-detail.js",
    "chars": 463,
    "preview": "import Woowahan from '../../../../index';\n\nexport default Woowahan.View.create('UserDetail', {\n  template: '<p id=\"name\""
  },
  {
    "path": "examples/listview/view/users/user.hbs",
    "chars": 364,
    "preview": "<td data-role=\"bind\" data-name=\"name\"></td>\n<td data-role=\"bind\" data-name=\"gender\"></td>\n<td data-role=\"bind\" data-name"
  },
  {
    "path": "examples/listview/view/users/user.js",
    "chars": 252,
    "preview": "import Template from './user.hbs';\nimport Woowahan from '../../../../index';\n\nexport default Woowahan.ItemView.create('U"
  },
  {
    "path": "examples/listview/view/welcome.hbs",
    "chars": 29,
    "preview": "\n<h1>Hello, Woowahan JS</h1>\n"
  },
  {
    "path": "examples/listview/view/welcome.js",
    "chars": 222,
    "preview": "import Woowahan from '../../../index';\nimport Template from './welcome.hbs';\n\nexport default Woowahan.View.create('Welco"
  },
  {
    "path": "examples/listview/webpack.config.js",
    "chars": 1055,
    "preview": "var webpack = require('webpack');\nvar entry = './main.js';\nvar output = {\n  path: __dirname,\n  filename: 'bundle.js'\n};\n"
  },
  {
    "path": "examples/middleware/app.js",
    "chars": 6444,
    "preview": "Woowahan.config = {\n  testMode: true\n};\n\nwindow.$ = window.jQuery = Woowahan.$;\n\nconst DOTIT = 'doit';\nconst app = new W"
  },
  {
    "path": "examples/middleware/index.html",
    "chars": 4374,
    "preview": "<html>\n  <head>\n    <title>Middleware</title>\n    <link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap"
  },
  {
    "path": "examples/middleware/woowahan.js",
    "chars": 171511,
    "preview": "!function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports"
  },
  {
    "path": "examples/modal/.babelrc",
    "chars": 27,
    "preview": "{\n  \"presets\": [\"es2015\"]\n}"
  },
  {
    "path": "examples/modal/gulpfile.js",
    "chars": 1204,
    "preview": "var path = require('path');\nvar _ = require('lodash');\nvar gulp = require('gulp');\nvar del = require('del');\nvar $ = req"
  },
  {
    "path": "examples/modal/hello-view.js",
    "chars": 1412,
    "preview": "import Woowahan from '../../index';\n\nexport default Woowahan.View.create('Hello', {\n  template: `<h1>Hello, WoowahanJs</"
  },
  {
    "path": "examples/modal/index.html",
    "chars": 577,
    "preview": "<!doctype html>\n<html>\n<head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrom"
  },
  {
    "path": "examples/modal/main.js",
    "chars": 515,
    "preview": "import Woowahan from '../../index';\nimport HelloView from './hello-view';\nimport ModalViewNormal from './view/modal-view"
  },
  {
    "path": "examples/modal/package.json",
    "chars": 1130,
    "preview": "{\n  \"name\": \"helloworld\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"main.js\",\n  \"scripts\": {\n    \"build\": \"g"
  },
  {
    "path": "examples/modal/sass/main.scss",
    "chars": 1690,
    "preview": "html, body {\n  margin: 0; padding: 0;\n}\n\n.modal-overlay {\n  position:fixed;\n  top:0;\n  left:0;\n  right:0;\n  bottom:0;\n  "
  },
  {
    "path": "examples/modal/view/modal-view-bootstrap/modal-view-bootstrap.hbs",
    "chars": 3038,
    "preview": "<div id=\"myModal\" class=\"modal fade\" role=\"dialog\">\n    <div class=\"modal-dialog\">\n\n        <!-- Modal content-->\n      "
  },
  {
    "path": "examples/modal/view/modal-view-bootstrap/modal-view-bootstrap.js",
    "chars": 890,
    "preview": "import Woowahan from '../../../../index';\nimport Template from './modal-view-bootstrap.hbs';\n\nexport default Woowahan.Vi"
  },
  {
    "path": "examples/modal/view/modal-view-normal/modal-view-normal.hbs",
    "chars": 428,
    "preview": "<div class=\"modal-overlay\"></div>\n<div class=\"modal-box\">\n<!--<div class=\"modal-box sticky\">-->\n<!--<div class=\"modal-bo"
  },
  {
    "path": "examples/modal/view/modal-view-normal/modal-view-normal.js",
    "chars": 827,
    "preview": "import Woowahan from '../../../../index';\nimport Template from './modal-view-normal.hbs';\n\nexport default Woowahan.View."
  },
  {
    "path": "examples/modal/webpack.config.js",
    "chars": 429,
    "preview": "var webpack = require('webpack');\nvar entry = './main.js';\nvar output = {\n  path: __dirname,\n  filename: 'bundle.js'\n};\n"
  },
  {
    "path": "examples/plugin/.babelrc",
    "chars": 27,
    "preview": "{\n  \"presets\": [\"es2015\"]\n}"
  },
  {
    "path": "examples/plugin/gulpfile.js",
    "chars": 819,
    "preview": "var path = require('path');\nvar _ = require('lodash');\nvar gulp = require('gulp');\nvar del = require('del');\nvar $ = req"
  },
  {
    "path": "examples/plugin/hello-view.js",
    "chars": 617,
    "preview": "import Woowahan from '../../index';\n\nexport default Woowahan.View.create('Hello', {\n  template: '<h1>Hello, WoowahanJs</"
  },
  {
    "path": "examples/plugin/index.html",
    "chars": 421,
    "preview": "<!doctype html>\n<html>\n<head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrom"
  },
  {
    "path": "examples/plugin/main.js",
    "chars": 299,
    "preview": "import Woowahan from '../../index';\nimport HelloView from './hello-view';\nimport ListPlugin from './plugin/list';\n\ngloba"
  },
  {
    "path": "examples/plugin/package.json",
    "chars": 1076,
    "preview": "{\n  \"name\": \"helloworld\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"main.js\",\n  \"scripts\": {\n    \"build\": \"g"
  },
  {
    "path": "examples/plugin/plugin/list.js",
    "chars": 196,
    "preview": "module.exports = function(element, value) {\n  let domStr = '';\n\n  for (const item of value) {\n    domStr += `<li data-ta"
  },
  {
    "path": "examples/plugin/webpack.config.js",
    "chars": 350,
    "preview": "var webpack = require('webpack');\nvar entry = './main.js';\nvar output = {\n  path: __dirname,\n  filename: 'bundle.js'\n};\n"
  },
  {
    "path": "examples/popup/.babelrc",
    "chars": 27,
    "preview": "{\n  \"presets\": [\"es2015\"]\n}"
  },
  {
    "path": "examples/popup/gulpfile.js",
    "chars": 1031,
    "preview": "var path = require('path');\nvar _ = require('lodash');\nvar gulp = require('gulp');\nvar del = require('del');\nvar $ = req"
  },
  {
    "path": "examples/popup/index.html",
    "chars": 478,
    "preview": "<!doctype html>\n<html>\n<head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrom"
  },
  {
    "path": "examples/popup/main.js",
    "chars": 399,
    "preview": "import Woowahan from '../../index';\nimport { MainLayout } from './view/layout/main-layout';\nimport { BaseView } from './"
  },
  {
    "path": "examples/popup/package.json",
    "chars": 1094,
    "preview": "{\n  \"name\": \"transition\",\n  \"version\": \"1.0.0\",\n  \"description\": \"transition example\",\n  \"main\": \"main.js\",\n  \"scripts\":"
  },
  {
    "path": "examples/popup/scss/main.scss",
    "chars": 394,
    "preview": "html, body {\n  margin: 0; padding: 0;\n}\n\n.modal-overlay {\n  position:fixed;\n  top:0;\n  left:0;\n  right:0;\n  bottom:0;\n  "
  },
  {
    "path": "examples/popup/view/component/alert-view.hbs",
    "chars": 225,
    "preview": "<div style=\"text-align: right; padding: 10px\">\n  <button data-ref=\"btnClose\">X</button>\n</div>\n<div style=\"text-align: c"
  },
  {
    "path": "examples/popup/view/component/alert-view.js",
    "chars": 174,
    "preview": "import Woowahan from '../../../../index';\nimport Template from './alert-view.hbs';\n\nexport const AlertView = Woowahan.Po"
  },
  {
    "path": "examples/popup/view/component/base-view.hbs",
    "chars": 175,
    "preview": "<div>\n  <h1>this is base view</h1>\n  <div>\n    <button data-ref=\"btnPopup\">ADD POPUP</button>\n  </div>\n  <div>\n    <p da"
  },
  {
    "path": "examples/popup/view/component/base-view.js",
    "chars": 921,
    "preview": "import Woowahan from '../../../../index';\nimport Template from './base-view.hbs';\nimport { PopupView } from './popup-vie"
  },
  {
    "path": "examples/popup/view/component/index.js",
    "chars": 58,
    "preview": "export * from './base-view';\nexport * from './popup-view';"
  },
  {
    "path": "examples/popup/view/component/popup-view.hbs",
    "chars": 452,
    "preview": "<div data-role=\"bind\" data-name=\"title\"></div>\n<form name=\"popup-form\" data-ref=\"popupForm\"  data-ref-form-restore=\"true"
  },
  {
    "path": "examples/popup/view/component/popup-view.js",
    "chars": 1061,
    "preview": "import Woowahan from '../../../../index';\nimport Template from './popup-view.hbs';\nimport { AlertView } from './alert-vi"
  },
  {
    "path": "examples/popup/view/layout/main-layout.hbs",
    "chars": 76,
    "preview": "<div>\n  <h1>This is MainLayout</h1>\n  <div id=\"mainContent\">\n  </div>\n</div>"
  },
  {
    "path": "examples/popup/view/layout/main-layout.js",
    "chars": 173,
    "preview": "import Woowahan from '../../../../index';\nimport Template from './main-layout.hbs';\n\nexport const MainLayout = Woowahan."
  },
  {
    "path": "examples/popup/webpack.config.js",
    "chars": 429,
    "preview": "var webpack = require('webpack');\nvar entry = './main.js';\nvar output = {\n  path: __dirname,\n  filename: 'bundle.js'\n};\n"
  },
  {
    "path": "examples/route/.babelrc",
    "chars": 27,
    "preview": "{\n  \"presets\": [\"es2015\"]\n}"
  },
  {
    "path": "examples/route/action/index.js",
    "chars": 49,
    "preview": "export const DISPATCH_ACTION = 'DISPATCH_ACTION';"
  },
  {
    "path": "examples/route/gulpfile.js",
    "chars": 1002,
    "preview": "var path = require('path');\nvar _ = require('lodash');\nvar gulp = require('gulp');\nvar del = require('del');\nvar $ = req"
  },
  {
    "path": "examples/route/index.html",
    "chars": 478,
    "preview": "<!doctype html>\n<html>\n<head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrom"
  },
  {
    "path": "examples/route/main.js",
    "chars": 4144,
    "preview": "import Woowahan from '../../index';\n\nglobal.$ = global.jQuery = Woowahan.$;\n\nglobal.log = function(log, color) {\n  conso"
  },
  {
    "path": "examples/route/middleware/index.js",
    "chars": 4736,
    "preview": "export const AppMiddlewarePre = function() {\n  this.mwtype = 'app';\n  this.testVal = 'testVal';\n\n  this.before = functio"
  },
  {
    "path": "examples/route/package.json",
    "chars": 1049,
    "preview": "{\n  \"name\": \"route\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"main.js\",\n  \"scripts\": {\n    \"build\": \"gulp b"
  },
  {
    "path": "examples/route/sass/main.scss",
    "chars": 259,
    "preview": "html, body {\n  margin: 0; padding: 0;\n  height: 100%;\n}\n\n.rect {\n  width: 100%; height: 100%;\n}\n\n.white {\n  @extend .rec"
  },
  {
    "path": "examples/route/template/main.hbs",
    "chars": 145,
    "preview": "<h1>메인 페이지</h1>\n<ul>\n    <li><a href=\"/\">메인 페이지</a></li>\n    <li><a href=\"#sub1\">서브 1페이지</a></li>\n    <li><a href=\"#sub2"
  },
  {
    "path": "examples/route/template/sub1.hbs",
    "chars": 146,
    "preview": "<h1>서브 1 페이지</h1>\n<ul>\n    <li><a href=\"/\">메인 페이지</a></li>\n    <li><a href=\"#sub1\">서브 1페이지</a></li>\n    <li><a href=\"#su"
  },
  {
    "path": "examples/route/template/sub2-2.hbs",
    "chars": 19,
    "preview": "<h3>서브 2-2 컨텐츠</h3>"
  },
  {
    "path": "examples/route/template/sub2.hbs",
    "chars": 268,
    "preview": "<h1>서브 2 페이지</h1>\n<div class=\"content\"></div>\n<ul>\n    <li><a href=\"/\">메인 페이지</a></li>\n    <li><a href=\"#sub1\">서브 1페이지</"
  },
  {
    "path": "examples/route/view/child.js",
    "chars": 283,
    "preview": "import Woowahan from '../../../index';\nimport SubChildView from './sub-child';\n\nexport default Woowahan.View.create('Chi"
  },
  {
    "path": "examples/route/view/content1.hbs",
    "chars": 82,
    "preview": "<h2>콘텐츠 1</h2>\n<p>첫번째 콘텐츠입니다.</p>\n<p>{{text}}</p>\n<div id=\"child-container\"></div>"
  },
  {
    "path": "examples/route/view/content1.js",
    "chars": 721,
    "preview": "import Woowahan from '../../../index';\nimport Template from './content1.hbs';\nimport ChildView from './child';\n\nexport d"
  },
  {
    "path": "examples/route/view/content2.hbs",
    "chars": 80,
    "preview": "<h2>콘텐츠 2</h2>\n<p>두번째 콘텐츠입니다.</p>\n<button class=\"btn-dispatch\">dispatch</button>"
  },
  {
    "path": "examples/route/view/content2.js",
    "chars": 402,
    "preview": "import Woowahan from '../../../index';\nimport Template from './content2.hbs';\nimport { DISPATCH_ACTION } from '../action"
  },
  {
    "path": "examples/route/view/content3.hbs",
    "chars": 33,
    "preview": "<h2>콘텐츠 3</h2>\n<p>세번째 콘텐츠입니다.</p>"
  },
  {
    "path": "examples/route/view/content3.js",
    "chars": 198,
    "preview": "import Woowahan from '../../../index';\nimport Template from './content3.hbs';\n\nexport default Woowahan.View.create('Cont"
  },
  {
    "path": "examples/route/view/index.js",
    "chars": 633,
    "preview": "import LayoutView1 from './layout1';\nimport LayoutView2 from './layout2';\nimport LayoutView3 from './layout3';\n\nimport M"
  },
  {
    "path": "examples/route/view/layout1.hbs",
    "chars": 2326,
    "preview": "<h1>레이아웃 뷰 1</h1>\n{{#with links}}\n<ul>\n  <li>\n    <a href=\"{{Layout1Link}}\">레이아웃 뷰 1</a>\n    <ul>\n      <li><a href=\"{{L"
  },
  {
    "path": "examples/route/view/layout1.js",
    "chars": 411,
    "preview": "import Woowahan from '../../../index';\nimport Template from './layout1.hbs';\n\nexport default Woowahan.View.create('Layou"
  },
  {
    "path": "examples/route/view/layout2.hbs",
    "chars": 2450,
    "preview": "<h1>레이아웃 뷰 2</h1>\n{{#with links}}\n  <ul>\n    <li>\n      <a href=\"{{Layout1Link}}\">레이아웃 뷰 1</a>\n      <ul>\n        <li><a"
  },
  {
    "path": "examples/route/view/layout2.js",
    "chars": 452,
    "preview": "import Woowahan from '../../../index';\nimport Template from './layout2.hbs';\n\nexport default Woowahan.View.create('Layou"
  },
  {
    "path": "examples/route/view/layout3.hbs",
    "chars": 2450,
    "preview": "<h1>레이아웃 뷰 3</h1>\n{{#with links}}\n  <ul>\n    <li>\n      <a href=\"{{Layout1Link}}\">레이아웃 뷰 1</a>\n      <ul>\n        <li><a"
  },
  {
    "path": "examples/route/view/layout3.js",
    "chars": 452,
    "preview": "import Woowahan from '../../../index';\nimport Template from './layout3.hbs';\n\nexport default Woowahan.View.create('Layou"
  },
  {
    "path": "examples/route/view/main.hbs",
    "chars": 200,
    "preview": "<h1>메인 뷰</h1>\n{{#with links}}\n<ul>\n  <li><a href=\"{{Layout1Link}}\">레이아웃 뷰 1</a></li>\n  <li><a href=\"{{Layout2Link}}\">레이아"
  },
  {
    "path": "examples/route/view/main.js",
    "chars": 446,
    "preview": "import Woowahan from '../../../index';\nimport Template from './main.hbs';\n\nexport default Woowahan.View.create('MainView"
  },
  {
    "path": "examples/route/view/main1.hbs",
    "chars": 244,
    "preview": "<h2>메인 1</h2>\n<p>첫번째 레이아웃 메인입니다.</p>\n{{#with links}}\n<ul>\n  <li><a href=\"{{Layout1Content1Link}}\">콘텐츠 뷰 1</a></li>\n  <li"
  },
  {
    "path": "examples/route/view/main1.js",
    "chars": 488,
    "preview": "import Woowahan from '../../../index';\nimport Template from './main1.hbs';\n\nexport default Woowahan.View.create('MainVie"
  },
  {
    "path": "examples/route/view/main2.hbs",
    "chars": 244,
    "preview": "<h2>메인 2</h2>\n<p>두번째 레이아웃 메인입니다.</p>\n{{#with links}}\n<ul>\n  <li><a href=\"{{Layout2Content1Link}}\">콘텐츠 뷰 1</a></li>\n  <li"
  },
  {
    "path": "examples/route/view/main2.js",
    "chars": 407,
    "preview": "import Woowahan from '../../../index';\nimport Template from './main2.hbs';\n\nexport default Woowahan.View.create('MainVie"
  },
  {
    "path": "examples/route/view/main3.hbs",
    "chars": 244,
    "preview": "<h2>메인 3</h2>\n<p>세번째 레이아웃 메인입니다.</p>\n{{#with links}}\n<ul>\n  <li><a href=\"{{Layout3Content1Link}}\">콘텐츠 뷰 1</a></li>\n  <li"
  },
  {
    "path": "examples/route/view/main3.js",
    "chars": 407,
    "preview": "import Woowahan from '../../../index';\nimport Template from './main3.hbs';\n\nexport default Woowahan.View.create('MainVie"
  },
  {
    "path": "examples/route/view/sub-child.js",
    "chars": 330,
    "preview": "import Woowahan from '../../../index';\n\nexport default Woowahan.View.create('ChildView', {\n  template: `<p>Sub Child Vie"
  },
  {
    "path": "examples/route/view/sub-content1.hbs",
    "chars": 39,
    "preview": "<h2>서브 콘텐츠 1</h2>\n<p>첫번째 서브 콘텐츠입니다.</p>"
  },
  {
    "path": "examples/route/view/sub-content1.js",
    "chars": 164,
    "preview": "import Woowahan from '../../../index';\nimport Template from './sub-content1.hbs';\n\nexport default Woowahan.View.create('"
  },
  {
    "path": "examples/route/view/sub-content2.hbs",
    "chars": 86,
    "preview": "<h2>서브 콘텐츠 2</h2>\n<p>두번째 서브 콘텐츠입니다.</p>\n<button class=\"btn-update\">UpdateView</button>"
  },
  {
    "path": "examples/route/view/sub-content2.js",
    "chars": 272,
    "preview": "import Woowahan from '../../../index';\nimport Template from './sub-content2.hbs';\n\nexport default Woowahan.View.create('"
  },
  {
    "path": "examples/route/webpack.config.js",
    "chars": 389,
    "preview": "var webpack = require('webpack');\nvar entry = './main.js';\nvar output = {\n  path: __dirname,\n  filename: 'bundle.js'\n};\n"
  },
  {
    "path": "examples/schema/.babelrc",
    "chars": 27,
    "preview": "{\n  \"presets\": [\"es2015\"]\n}"
  },
  {
    "path": "examples/schema/gulpfile.js",
    "chars": 1021,
    "preview": "var path = require('path');\nvar _ = require('lodash');\nvar gulp = require('gulp');\nvar del = require('del');\nvar $ = req"
  },
  {
    "path": "examples/schema/hello-view.js",
    "chars": 740,
    "preview": "import Woowahan from '../../index';\nimport Template from './schema.hbs';\n\nexport default Woowahan.View.create('Index', {"
  },
  {
    "path": "examples/schema/index.html",
    "chars": 512,
    "preview": "<!doctype html>\n<html>\n<head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrom"
  },
  {
    "path": "examples/schema/main.js",
    "chars": 814,
    "preview": "/*global _*/\n\nimport Woowahan from '../../index';\nimport HelloView from './hello-view';\nimport _ from 'underscore';\n\nglo"
  },
  {
    "path": "examples/schema/package.json",
    "chars": 1047,
    "preview": "{\n  \"name\": \"schema\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"main.js\",\n  \"scripts\": {\n    \"build\": \"gulp "
  },
  {
    "path": "examples/schema/schema.hbs",
    "chars": 596,
    "preview": "<h1>Schema Example</h1>\n\n<form>\n  <div class=\"form-group\">\n    <label for=\"id\">ID</label>\n    <input type=\"text\" class=\""
  },
  {
    "path": "examples/schema/webpack.config.js",
    "chars": 429,
    "preview": "var webpack = require('webpack');\nvar entry = './main.js';\nvar output = {\n  path: __dirname,\n  filename: 'bundle.js'\n};\n"
  },
  {
    "path": "examples/timer/index.html",
    "chars": 1313,
    "preview": "<!doctype html>\n<html>\n<head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrom"
  },
  {
    "path": "examples/timer/js/main.js",
    "chars": 1220,
    "preview": "var app = new Woowahan();\n\nwindow.$ = window.jQuery = Woowahan.$;\n\nvar HelloView = Woowahan.View.create('HelloView', {\n "
  },
  {
    "path": "examples/timer/js/woowahan.js",
    "chars": 171511,
    "preview": "!function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports"
  },
  {
    "path": "examples/todo/.babelrc",
    "chars": 27,
    "preview": "{\n  \"presets\": [\"es2015\"]\n}"
  },
  {
    "path": "examples/todo/action/index.js",
    "chars": 289,
    "preview": "export const LOAD_TODOS = 'LOAD-TODOS';\nexport const ALL_TODOS = 'ALL-TODOS';\nexport const NEW_TODO = 'NEW-TODO';\nexport"
  },
  {
    "path": "examples/todo/global.config.js",
    "chars": 55,
    "preview": "export default {\n  Request: {\n    Timeout: 3000\n  }\n};\n"
  },
  {
    "path": "examples/todo/gulpfile.js",
    "chars": 1410,
    "preview": "var path = require('path');\nvar _ = require('lodash');\nvar gulp = require('gulp');\nvar del = require('del');\nvar $ = req"
  },
  {
    "path": "examples/todo/index.html",
    "chars": 504,
    "preview": "<!doctype html>\n<html>\n<head>\n    <meta charset=\"utf-8\">\n    <title>Woowahan.js - Todo</title>\n    <link rel=\"stylesheet"
  },
  {
    "path": "examples/todo/keycode.js",
    "chars": 47,
    "preview": "export const ENTER = 13;\nexport const ESC = 27;"
  },
  {
    "path": "examples/todo/main.js",
    "chars": 434,
    "preview": "import Woowahan from '../../index';\nimport TodoApp from './view/todo-app';\nimport { LOAD_TODOS } from './action';\nimport"
  },
  {
    "path": "examples/todo/package.json",
    "chars": 1160,
    "preview": "{\n  \"name\": \"todo\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"main.js\",\n  \"scripts\": {\n    \"build\": \"gulp bu"
  },
  {
    "path": "examples/todo/reducer/todos.js",
    "chars": 2095,
    "preview": "import Woowahan from '../../../index';\nimport Dexie from 'dexie';\nimport * as Action from '../action';\nimport TodoSchema"
  },
  {
    "path": "examples/todo/schema/todo.js",
    "chars": 156,
    "preview": "import Woowahan from '../../../index';\n\nexport default Woowahan.Schema.create('TodoSchema', {\n  title: Woowahan.Types.St"
  },
  {
    "path": "examples/todo/template/todo-app.hbs",
    "chars": 347,
    "preview": "<header class=\"header\">\n    <h1>todos</h1>\n    <input class=\"new-todo\" placeholder=\"What needs to be done?\" autofocus>\n<"
  },
  {
    "path": "examples/todo/template/todo-item.hbs",
    "chars": 386,
    "preview": "<li{{#if completed}} class=\"completed\"{{/if}}>\n    <div class=\"view\">\n        <input class=\"toggle\" type=\"checkbox\" {{#i"
  },
  {
    "path": "examples/todo/template/todo-state.hbs",
    "chars": 512,
    "preview": "<span class=\"todo-count\"><strong data-role=\"bind\" data-name=\"remaining\"></strong> item{{#if items}}s{{/if}} left</span>\n"
  },
  {
    "path": "examples/todo/view/todo-app.js",
    "chars": 1842,
    "preview": "import Woowahan from '../../../index';\nimport Template from '../template/todo-app.hbs';\nimport TodoItem from './todo-ite"
  },
  {
    "path": "examples/todo/view/todo-item.js",
    "chars": 1614,
    "preview": "import Woowahan from '../../../index';\nimport Template from '../template/todo-item.hbs';\nimport { COMPLETED_TODO, DELETE"
  },
  {
    "path": "examples/todo/view/todo-state.js",
    "chars": 506,
    "preview": "import Woowahan from '../../../index';\nimport Template from '../template/todo-state.hbs';\n\nexport default Woowahan.View."
  },
  {
    "path": "examples/todo/webpack.config.js",
    "chars": 1055,
    "preview": "var webpack = require('webpack');\nvar entry = './main.js';\nvar output = {\n  path: __dirname,\n  filename: 'bundle.js'\n};\n"
  },
  {
    "path": "examples/transition/.babelrc",
    "chars": 27,
    "preview": "{\n  \"presets\": [\"es2015\"]\n}"
  },
  {
    "path": "examples/transition/gulpfile.js",
    "chars": 819,
    "preview": "var path = require('path');\nvar _ = require('lodash');\nvar gulp = require('gulp');\nvar del = require('del');\nvar $ = req"
  },
  {
    "path": "examples/transition/index.html",
    "chars": 421,
    "preview": "<!doctype html>\n<html>\n<head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrom"
  },
  {
    "path": "examples/transition/main.js",
    "chars": 486,
    "preview": "import Woowahan from '../../index';\nimport { MainLayout } from './view/layout/main-layout';\nimport { BaseView } from './"
  },
  {
    "path": "examples/transition/package.json",
    "chars": 1094,
    "preview": "{\n  \"name\": \"transition\",\n  \"version\": \"1.0.0\",\n  \"description\": \"transition example\",\n  \"main\": \"main.js\",\n  \"scripts\":"
  },
  {
    "path": "examples/transition/view/component/base-view.hbs",
    "chars": 155,
    "preview": "<div>\n  <h1>this is base view</h1>\n  <p data-role=\"bind\" data-name=\"num\"></p>\n  <div data-ref=\"colorBox\" style=\"width: 1"
  },
  {
    "path": "examples/transition/view/component/base-view.js",
    "chars": 555,
    "preview": "import Woowahan from '../../../../index';\nimport Template from './base-view.hbs';\n\nexport const BaseView = Woowahan.View"
  },
  {
    "path": "examples/transition/view/component/index.js",
    "chars": 28,
    "preview": "export * from './base-view';"
  }
]

// ... and 53 more files (download for full content)

About this extraction

This page contains the full source code of the woowabros/WoowahanJS GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 253 files (810.8 KB), approximately 270.5k tokens, and a symbol index with 659 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!