Replaced old implementation at root 43/57343/2
authorvempo <vitaliy.emporopulo@amdocs.com>
Tue, 24 Jul 2018 14:34:04 +0000 (17:34 +0300)
committervempo <vitaliy.emporopulo@amdocs.com>
Wed, 25 Jul 2018 08:39:10 +0000 (11:39 +0300)
Old project files and directories has been moved
under 'deprecated-workflow-designer'. The old project
is not built by the CI anymore, but can be still built manually.
New modules/directories have been moved up and integrated with
the CI system.

Change-Id: I1528c792bcbcce9e50bfc294a1328a20e72c91cf
Issue-ID: SDC-1559
Signed-off-by: vempo <vitaliy.emporopulo@amdocs.com>
804 files changed:
README.md [moved from workflow/README.md with 100% similarity]
deprecated-workflow-designer/DEPRECATION.md [new file with mode: 0644]
deprecated-workflow-designer/distribution/pom.xml [moved from distribution/pom.xml with 99% similarity]
deprecated-workflow-designer/distribution/src/main/assembly/bin/find_kill_process.bat [moved from distribution/src/main/assembly/bin/find_kill_process.bat with 96% similarity]
deprecated-workflow-designer/distribution/src/main/assembly/bin/run.bat [moved from distribution/src/main/assembly/bin/run.bat with 97% similarity]
deprecated-workflow-designer/distribution/src/main/assembly/bin/run.sh [moved from distribution/src/main/assembly/bin/run.sh with 100% similarity]
deprecated-workflow-designer/distribution/src/main/assembly/bin/stop.bat [moved from distribution/src/main/assembly/bin/stop.bat with 96% similarity]
deprecated-workflow-designer/distribution/src/main/assembly/bin/stop.sh [moved from distribution/src/main/assembly/bin/stop.sh with 100% similarity]
deprecated-workflow-designer/distribution/src/main/assembly/conf/workflow-designer.yml [moved from distribution/src/main/assembly/conf/workflow-designer.yml with 100% similarity]
deprecated-workflow-designer/distribution/src/main/assembly/ext-activities-display-info.json [moved from distribution/src/main/assembly/ext-activities-display-info.json with 100% similarity]
deprecated-workflow-designer/distribution/src/main/assembly/ext-activities.json [moved from distribution/src/main/assembly/ext-activities.json with 100% similarity]
deprecated-workflow-designer/distribution/src/main/assembly/temp_workflow.json [moved from distribution/src/main/assembly/temp_workflow.json with 95% similarity]
deprecated-workflow-designer/distribution/src/main/docker/Dockerfile [moved from distribution/src/main/docker/Dockerfile with 100% similarity]
deprecated-workflow-designer/docker_run.sh [moved from docker_run.sh with 100% similarity]
deprecated-workflow-designer/docs/index.rst [moved from docs/index.rst with 100% similarity]
deprecated-workflow-designer/docs/platform/architecture.rst [moved from docs/platform/architecture.rst with 100% similarity]
deprecated-workflow-designer/docs/platform/consumedapis.rst [moved from docs/platform/consumedapis.rst with 100% similarity]
deprecated-workflow-designer/docs/platform/delivery.rst [moved from docs/platform/delivery.rst with 100% similarity]
deprecated-workflow-designer/docs/platform/human-interfaces.rst [moved from docs/platform/human-interfaces.rst with 100% similarity]
deprecated-workflow-designer/docs/platform/images/workflow architecture.PNG [moved from docs/platform/images/workflow architecture.PNG with 100% similarity]
deprecated-workflow-designer/docs/platform/index.rst [moved from docs/platform/index.rst with 100% similarity]
deprecated-workflow-designer/docs/platform/installation.rst [moved from docs/platform/installation.rst with 100% similarity]
deprecated-workflow-designer/docs/platform/offeredapis.rst [moved from docs/platform/offeredapis.rst with 100% similarity]
deprecated-workflow-designer/docs/release-notes.rst [moved from docs/release-notes.rst with 100% similarity]
deprecated-workflow-designer/pom.xml [new file with mode: 0644]
deprecated-workflow-designer/sdc-workflow-designer-server/pom.xml [moved from sdc-workflow-designer-server/pom.xml with 98% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/assembly/ext-activities-display-info.json [moved from sdc-workflow-designer-server/src/main/assembly/ext-activities-display-info.json with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/assembly/ext-activities.json [moved from sdc-workflow-designer-server/src/main/assembly/ext-activities.json with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/assembly/temp_workflow.json [moved from sdc-workflow-designer-server/src/main/assembly/temp_workflow.json with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/ActivitySpecServiceProxyInfo.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/ActivitySpecServiceProxyInfo.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/SDCServiceProxyInfo.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/SDCServiceProxyInfo.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/WorkflowDesignerApp.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/WorkflowDesignerApp.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/WorkflowDesignerConfiguration.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/WorkflowDesignerConfiguration.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/common/ActivitySpecProxyException.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/common/ActivitySpecProxyException.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/common/SDCProxyException.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/common/SDCProxyException.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/config/AdapterType.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/config/AdapterType.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/config/AppConfig.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/config/AppConfig.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/config/Config.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/config/Config.java with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/ActivitySpecService.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/ActivitySpecService.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/ActivitySpecServiceProxy.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/ActivitySpecServiceProxy.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/SDCService.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/SDCService.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/SDCServiceProxy.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/SDCServiceProxy.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/ActivityContent.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/ActivityContent.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/ActivitySpec.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/ActivitySpec.java with 94% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/GenericCollectionWrapper.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/GenericCollectionWrapper.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/Parameter.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/Parameter.java with 94% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/WorkflowArtifactInfo.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/WorkflowArtifactInfo.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/DataObject.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/DataObject.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/Element.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/Element.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/EndEvent.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/EndEvent.java with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ErrorEndEvent.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ErrorEndEvent.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ErrorStartEvent.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ErrorStartEvent.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ExclusiveGateway.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ExclusiveGateway.java with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/IntermediateCatchEvent.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/IntermediateCatchEvent.java with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ParallelGateway.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ParallelGateway.java with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/Parameter.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/Parameter.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/Position.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/Position.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/Process.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/Process.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/RestServiceTask.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/RestServiceTask.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ScriptTask.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ScriptTask.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/SequenceFlow.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/SequenceFlow.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ServiceTask.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ServiceTask.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/StartEvent.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/StartEvent.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/TimerEventDefinition.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/TimerEventDefinition.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/parser/Bpmn4ToscaJsonParser.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/parser/Bpmn4ToscaJsonParser.java with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/parser/JsonKeys.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/parser/JsonKeys.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/ExtendActivityResource.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/ExtendActivityResource.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/HealthCheckResource.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/HealthCheckResource.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/WorkflowModelerResource.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/WorkflowModelerResource.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/CategoryData.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/CategoryData.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/Content.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/Content.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/ExtActivity.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/ExtActivity.java with 94% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/ExtActivityDisplayInfo.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/ExtActivityDisplayInfo.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/I18nString.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/I18nString.java with 94% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/IconData.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/IconData.java with 94% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/InputOutput.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/InputOutput.java with 94% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/NodeCategory.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/NodeCategory.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/WorkflowInfo.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/entity/WorkflowInfo.java with 94% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/utils/FileCommonConstants.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/utils/FileCommonConstants.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/utils/FileCommonUtils.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/utils/FileCommonUtils.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/utils/JsonUtils.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/utils/JsonUtils.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/utils/RestUtils.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/utils/RestUtils.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/utils/ToolUtils.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/utils/ToolUtils.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/utils/entity/CommonErrorResponse.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/utils/entity/CommonErrorResponse.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/writer/BpmnPlanArtefactWriter.java [moved from sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/writer/BpmnPlanArtefactWriter.java with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/META-INF/MANIFEST.MF [moved from sdc-workflow-designer-server/src/main/resources/api-doc/META-INF/MANIFEST.MF with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/WEB-INF/web.xml [moved from sdc-workflow-designer-server/src/main/resources/api-doc/WEB-INF/web.xml with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/css/reset.css [moved from sdc-workflow-designer-server/src/main/resources/api-doc/css/reset.css with 92% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/css/screen.css [moved from sdc-workflow-designer-server/src/main/resources/api-doc/css/screen.css with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/css/typography.css [moved from sdc-workflow-designer-server/src/main/resources/api-doc/css/typography.css with 98% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-700.eot [moved from sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-700.eot with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-700.svg [moved from sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-700.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-700.ttf [moved from sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-700.ttf with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-700.woff [moved from sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-700.woff with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-700.woff2 [moved from sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-700.woff2 with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-regular.eot [moved from sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-regular.eot with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-regular.svg [moved from sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-regular.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-regular.ttf [moved from sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-regular.ttf with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-regular.woff [moved from sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-regular.woff with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-regular.woff2 [moved from sdc-workflow-designer-server/src/main/resources/api-doc/fonts/droid-sans-v6-latin-regular.woff2 with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/images/explorer_icons.png [moved from sdc-workflow-designer-server/src/main/resources/api-doc/images/explorer_icons.png with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/images/logo_small.png [moved from sdc-workflow-designer-server/src/main/resources/api-doc/images/logo_small.png with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/images/pet_store_api.png [moved from sdc-workflow-designer-server/src/main/resources/api-doc/images/pet_store_api.png with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/images/throbber.gif [moved from sdc-workflow-designer-server/src/main/resources/api-doc/images/throbber.gif with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/images/wordnik_api.png [moved from sdc-workflow-designer-server/src/main/resources/api-doc/images/wordnik_api.png with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/index.html [moved from sdc-workflow-designer-server/src/main/resources/api-doc/index.html with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/lib/backbone-min.js [moved from sdc-workflow-designer-server/src/main/resources/api-doc/lib/backbone-min.js with 99% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/lib/handlebars-2.0.0.js [moved from sdc-workflow-designer-server/src/main/resources/api-doc/lib/handlebars-2.0.0.js with 99% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/lib/highlight.7.3.pack.js [moved from sdc-workflow-designer-server/src/main/resources/api-doc/lib/highlight.7.3.pack.js with 99% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/lib/jquery-1.8.0.min.js [moved from sdc-workflow-designer-server/src/main/resources/api-doc/lib/jquery-1.8.0.min.js with 99% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/lib/jquery.ba-bbq.min.js [moved from sdc-workflow-designer-server/src/main/resources/api-doc/lib/jquery.ba-bbq.min.js with 98% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/lib/jquery.slideto.min.js [moved from sdc-workflow-designer-server/src/main/resources/api-doc/lib/jquery.slideto.min.js with 98% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/lib/jquery.wiggle.min.js [moved from sdc-workflow-designer-server/src/main/resources/api-doc/lib/jquery.wiggle.min.js with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/lib/marked.js [moved from sdc-workflow-designer-server/src/main/resources/api-doc/lib/marked.js with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/lib/shred.bundle.js [moved from sdc-workflow-designer-server/src/main/resources/api-doc/lib/shred.bundle.js with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/lib/shred/content.js [moved from sdc-workflow-designer-server/src/main/resources/api-doc/lib/shred/content.js with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/lib/swagger-client.js [moved from sdc-workflow-designer-server/src/main/resources/api-doc/lib/swagger-client.js with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/lib/swagger-oauth.js [moved from sdc-workflow-designer-server/src/main/resources/api-doc/lib/swagger-oauth.js with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/lib/underscore-min.js [moved from sdc-workflow-designer-server/src/main/resources/api-doc/lib/underscore-min.js with 99% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/o2c.html [moved from sdc-workflow-designer-server/src/main/resources/api-doc/o2c.html with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/swagger-ui.js [moved from sdc-workflow-designer-server/src/main/resources/api-doc/swagger-ui.js with 99% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/api-doc/swagger-ui.min.js [moved from sdc-workflow-designer-server/src/main/resources/api-doc/swagger-ui.min.js with 99% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_dataObject_template.xml [moved from sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_dataObject_template.xml with 90% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_endEvent_template.xml [moved from sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_endEvent_template.xml with 79% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_errorEndEvent_template.xml [moved from sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_errorEndEvent_template.xml with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_errorStartEvent_template.xml [moved from sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_errorStartEvent_template.xml with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_exclusiveGateway_template.xml [moved from sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_exclusiveGateway_template.xml with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_intermediateCatchEvent_template.xml [moved from sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_intermediateCatchEvent_template.xml with 93% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_parallelGateway_template.xml [moved from sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_parallelGateway_template.xml with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_restTask_template.xml [moved from sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_restTask_template.xml with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_scriptTask_template.xml [moved from sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_scriptTask_template.xml with 91% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_serviceTask_template.xml [moved from sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_serviceTask_template.xml with 94% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_startEvent_template.xml [moved from sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_startEvent_template.xml with 93% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_sequenceFlow_template.xml [moved from sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_sequenceFlow_template.xml with 93% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_template.xml [moved from sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_template.xml with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/main/resources/bpmn.config.properties [moved from sdc-workflow-designer-server/src/main/resources/bpmn.config.properties with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/SDCServiceProxyInfoTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/SDCServiceProxyInfoTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/WorkflowDesignerConfigurationTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/WorkflowDesignerConfigurationTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/config/AdapterTypeTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/config/AdapterTypeTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/config/ConfigTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/config/ConfigTest.java with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/ActivityContentTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/ActivityContentTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/ActivitySpecTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/ActivitySpecTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/ParameterTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/ParameterTest.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/WorkflowArtifactInfoTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/externalservice/sdc/entity/WorkflowArtifactInfoTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/DataObjectTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/DataObjectTest.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/ElementTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/ElementTest.java with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/ErrorEndEventTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/ErrorEndEventTest.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/ParameterTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/ParameterTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/PositionTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/PositionTest.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/ProcessTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/ProcessTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/RestServiceTaskTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/RestServiceTaskTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/ScriptTaskTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/ScriptTaskTest.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/SequenceFlowTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/SequenceFlowTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/ServiceTaskTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/ServiceTaskTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/TimerEventDefinitionTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/model/TimerEventDefinitionTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/parser/Bpmn4ToscaJsonParserTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/parser/Bpmn4ToscaJsonParserTest.java with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/planwriter/BpmnPlanArtefactWriterTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/planwriter/BpmnPlanArtefactWriterTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/ExtendActivityResourceTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/ExtendActivityResourceTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/WorkflowModelerResourceTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/WorkflowModelerResourceTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/CategoryDataTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/CategoryDataTest.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/ContentTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/ContentTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/ExtActivityDisplayInfoTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/ExtActivityDisplayInfoTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/ExtendActivityTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/ExtendActivityTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/I18nStringTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/I18nStringTest.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/IconDataTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/IconDataTest.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/InputOutputTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/InputOutputTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/NodeCategoryTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/NodeCategoryTest.java with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/WorkflowInfoTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/resources/entity/WorkflowInfoTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/utils/FileCommonUtilsTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/utils/FileCommonUtilsTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/utils/JsonUtilsTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/utils/JsonUtilsTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/utils/entity/CommonErrorResponseTest.java [moved from sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/utils/entity/CommonErrorResponseTest.java with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/resources/workflow/template-test.bpmn20.xml [moved from sdc-workflow-designer-server/src/test/resources/workflow/template-test.bpmn20.xml with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-server/src/test/resources/workflow/workflow.json [moved from sdc-workflow-designer-server/src/test/resources/workflow/workflow.json with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/.angular-cli.json [moved from sdc-workflow-designer-ui/.angular-cli.json with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/.editorconfig [moved from sdc-workflow-designer-ui/.editorconfig with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/.gitignore [moved from sdc-workflow-designer-ui/.gitignore with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/README.md [moved from sdc-workflow-designer-ui/README.md with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/e2e/app.e2e-spec.ts [moved from sdc-workflow-designer-ui/e2e/app.e2e-spec.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/e2e/app.po.ts [moved from sdc-workflow-designer-ui/e2e/app.po.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/e2e/tsconfig.e2e.json [moved from sdc-workflow-designer-ui/e2e/tsconfig.e2e.json with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/karma.conf.js [moved from sdc-workflow-designer-ui/karma.conf.js with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/package-lock.json [moved from sdc-workflow-designer-ui/package-lock.json with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/package.json [moved from sdc-workflow-designer-ui/package.json with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/pom.xml [moved from sdc-workflow-designer-ui/pom.xml with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/protractor.conf.js [moved from sdc-workflow-designer-ui/protractor.conf.js with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/app.component.css [moved from sdc-workflow-designer-ui/src/app/app.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/app.component.html [moved from sdc-workflow-designer-ui/src/app/app.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/app.component.spec.ts [moved from sdc-workflow-designer-ui/src/app/app.component.spec.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/app.component.ts [moved from sdc-workflow-designer-ui/src/app/app.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/app.module.ts [moved from sdc-workflow-designer-ui/src/app/app.module.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/.gitkeep [moved from sdc-workflow-designer-ui/src/app/assets/.gitkeep with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/css/bootstrap4.0.css [moved from sdc-workflow-designer-ui/src/app/assets/components/css/bootstrap4.0.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/css/font-awesome.min.css [moved from sdc-workflow-designer-ui/src/app/assets/components/css/font-awesome.min.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/css/iconfont.css [moved from sdc-workflow-designer-ui/src/app/assets/components/css/iconfont.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/css/ngict-component.css [moved from sdc-workflow-designer-ui/src/app/assets/components/css/ngict-component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/css/prism.css [moved from sdc-workflow-designer-ui/src/app/assets/components/css/prism.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/css/style.css [moved from sdc-workflow-designer-ui/src/app/assets/components/css/style.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/FontAwesome.otf [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/FontAwesome.otf with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/ZteIctIcons.eot [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/ZteIctIcons.eot with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/ZteIctIcons.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/ZteIctIcons.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/ZteIctIcons.ttf [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/ZteIctIcons.ttf with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/ZteIctIcons.woff [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/ZteIctIcons.woff with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/ZteTableIcons.eot [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/ZteTableIcons.eot with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/ZteTableIcons.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/ZteTableIcons.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/ZteTableIcons.ttf [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/ZteTableIcons.ttf with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/ZteTableIcons.woff [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/ZteTableIcons.woff with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/fontawesome-webfont.eot [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/fontawesome-webfont.eot with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/fontawesome-webfont.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/fontawesome-webfont.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/fontawesome-webfont.ttf [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/fontawesome-webfont.ttf with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/fontawesome-webfont.woff [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/fontawesome-webfont.woff with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/fontawesome-webfont.woff2 [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/fontawesome-webfont.woff2 with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/iconfont.eot [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/iconfont.eot with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/iconfont.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/iconfont.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/iconfont.ttf [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/iconfont.ttf with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/iconfont.woff [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/iconfont.woff with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/plx-icons.eot [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/plx-icons.eot with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/plx-icons.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/plx-icons.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/plx-icons.ttf [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/plx-icons.ttf with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/fonts/plx-icons.woff [moved from sdc-workflow-designer-ui/src/app/assets/components/fonts/plx-icons.woff with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/images/backtop/backtop.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/images/backtop/backtop.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/images/backtop/backtop_hover.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/images/backtop/backtop_hover.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/checkbox-checked-disabled.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/checkbox-checked-disabled.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/checkbox-disabled.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/checkbox-disabled.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/checkbox-hover.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/checkbox-hover.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/checkbox-init.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/checkbox-init.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/radio-checked-disabled.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/radio-checked-disabled.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/radio-checked.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/radio-checked.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/radio-disabled.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/radio-disabled.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/radio-hover.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/radio-hover.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/radio-init.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/radio-init.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/test/checkbox-checked.svg [moved from sdc-workflow-designer-ui/src/app/assets/components/images/checkbox-radio/test/checkbox-checked.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/themes/NIV/NIV-theme.less [moved from sdc-workflow-designer-ui/src/app/assets/components/themes/NIV/NIV-theme.less with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/themes/NIV/theme.css [moved from sdc-workflow-designer-ui/src/app/assets/components/themes/NIV/theme.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/themes/NIV/theme.less [moved from sdc-workflow-designer-ui/src/app/assets/components/themes/NIV/theme.less with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/themes/common.less [moved from sdc-workflow-designer-ui/src/app/assets/components/themes/common.less with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/themes/common/common.less [moved from sdc-workflow-designer-ui/src/app/assets/components/themes/common/common.less with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/themes/common/plx-button.less [moved from sdc-workflow-designer-ui/src/app/assets/components/themes/common/plx-button.less with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/themes/common/plx-checkbox.less [moved from sdc-workflow-designer-ui/src/app/assets/components/themes/common/plx-checkbox.less with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/themes/common/plx-form.less [moved from sdc-workflow-designer-ui/src/app/assets/components/themes/common/plx-form.less with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/themes/common/plx-input.less [moved from sdc-workflow-designer-ui/src/app/assets/components/themes/common/plx-input.less with 94% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/themes/common/plx-radio.less [moved from sdc-workflow-designer-ui/src/app/assets/components/themes/common/plx-radio.less with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/themes/common/plx-step.less [moved from sdc-workflow-designer-ui/src/app/assets/components/themes/common/plx-step.less with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/themes/common/plx-text-input.less [moved from sdc-workflow-designer-ui/src/app/assets/components/themes/common/plx-text-input.less with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/themes/default/NIV-theme.less [moved from sdc-workflow-designer-ui/src/app/assets/components/themes/default/NIV-theme.less with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/themes/default/theme.css [moved from sdc-workflow-designer-ui/src/app/assets/components/themes/default/theme.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/assets/components/themes/default/theme.less [moved from sdc-workflow-designer-ui/src/app/assets/components/themes/default/theme.less with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/container/container.component.css [moved from sdc-workflow-designer-ui/src/app/components/container/container.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/container/container.component.html [moved from sdc-workflow-designer-ui/src/app/components/container/container.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/container/container.component.ts [moved from sdc-workflow-designer-ui/src/app/components/container/container.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/editable-property/editable-property.component.css [moved from sdc-workflow-designer-ui/src/app/components/editable-property/editable-property.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/editable-property/editable-property.component.html [moved from sdc-workflow-designer-ui/src/app/components/editable-property/editable-property.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/editable-property/editable-property.component.ts [moved from sdc-workflow-designer-ui/src/app/components/editable-property/editable-property.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/global-notice/global-notice.component.css [moved from sdc-workflow-designer-ui/src/app/components/global-notice/global-notice.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/global-notice/global-notice.component.html [moved from sdc-workflow-designer-ui/src/app/components/global-notice/global-notice.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/global-notice/global-notice.component.spec.ts [moved from sdc-workflow-designer-ui/src/app/components/global-notice/global-notice.component.spec.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/global-notice/global-notice.component.ts [moved from sdc-workflow-designer-ui/src/app/components/global-notice/global-notice.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/menus/menus.component.css [moved from sdc-workflow-designer-ui/src/app/components/menus/menus.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/menus/menus.component.html [moved from sdc-workflow-designer-ui/src/app/components/menus/menus.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/menus/menus.component.spec.ts [moved from sdc-workflow-designer-ui/src/app/components/menus/menus.component.spec.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/menus/menus.component.ts [moved from sdc-workflow-designer-ui/src/app/components/menus/menus.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/menus/rest-config/rest-config-detail/rest-config-detail.component.html [moved from sdc-workflow-designer-ui/src/app/components/menus/rest-config/rest-config-detail/rest-config-detail.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/menus/rest-config/rest-config-detail/rest-config-detail.component.ts [moved from sdc-workflow-designer-ui/src/app/components/menus/rest-config/rest-config-detail/rest-config-detail.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/menus/rest-config/rest-config-list/rest-config-list.component.css [moved from sdc-workflow-designer-ui/src/app/components/menus/rest-config/rest-config-list/rest-config-list.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/menus/rest-config/rest-config-list/rest-config-list.component.html [moved from sdc-workflow-designer-ui/src/app/components/menus/rest-config/rest-config-list/rest-config-list.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/menus/rest-config/rest-config-list/rest-config-list.component.ts [moved from sdc-workflow-designer-ui/src/app/components/menus/rest-config/rest-config-list/rest-config-list.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/menus/rest-config/rest-config.component.html [moved from sdc-workflow-designer-ui/src/app/components/menus/rest-config/rest-config.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/menus/rest-config/rest-config.component.ts [moved from sdc-workflow-designer-ui/src/app/components/menus/rest-config/rest-config.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/node/node.component.css [moved from sdc-workflow-designer-ui/src/app/components/node/node.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/node/node.component.html [moved from sdc-workflow-designer-ui/src/app/components/node/node.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/node/node.component.ts [moved from sdc-workflow-designer-ui/src/app/components/node/node.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.css [moved from sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.html [moved from sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.ts [moved from sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/error-event/error-event.component.html [moved from sdc-workflow-designer-ui/src/app/components/property/error-event/error-event.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/error-event/error-event.component.ts [moved from sdc-workflow-designer-ui/src/app/components/property/error-event/error-event.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.html [moved from sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.ts [moved from sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/node-template/node-template.component.html [moved from sdc-workflow-designer-ui/src/app/components/property/node-template/node-template.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/node-template/node-template.component.ts [moved from sdc-workflow-designer-ui/src/app/components/property/node-template/node-template.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/properties.component.css [moved from sdc-workflow-designer-ui/src/app/components/property/properties.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/properties.component.html [moved from sdc-workflow-designer-ui/src/app/components/property/properties.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/properties.component.ts [moved from sdc-workflow-designer-ui/src/app/components/property/properties.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/rest-task/node-parameters/node-parameters.component.css [moved from sdc-workflow-designer-ui/src/app/components/property/rest-task/node-parameters/node-parameters.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/rest-task/node-parameters/node-parameters.component.html [moved from sdc-workflow-designer-ui/src/app/components/property/rest-task/node-parameters/node-parameters.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/rest-task/node-parameters/node-parameters.component.ts [moved from sdc-workflow-designer-ui/src/app/components/property/rest-task/node-parameters/node-parameters.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/rest-task/node-parameters/parameter-tree/parameter-tree.component.css [moved from sdc-workflow-designer-ui/src/app/components/property/rest-task/node-parameters/parameter-tree/parameter-tree.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/rest-task/node-parameters/parameter-tree/parameter-tree.component.html [moved from sdc-workflow-designer-ui/src/app/components/property/rest-task/node-parameters/parameter-tree/parameter-tree.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/rest-task/node-parameters/parameter-tree/parameter-tree.component.ts [moved from sdc-workflow-designer-ui/src/app/components/property/rest-task/node-parameters/parameter-tree/parameter-tree.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-parameters/rest-parameters.component.css [moved from sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-parameters/rest-parameters.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-parameters/rest-parameters.component.html [moved from sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-parameters/rest-parameters.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-parameters/rest-parameters.component.spec.ts [moved from sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-parameters/rest-parameters.component.spec.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-parameters/rest-parameters.component.ts [moved from sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-parameters/rest-parameters.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-task.component.html [moved from sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-task.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-task.component.ts [moved from sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-task.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/script-task/script-task.component.html [moved from sdc-workflow-designer-ui/src/app/components/property/script-task/script-task.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/script-task/script-task.component.ts [moved from sdc-workflow-designer-ui/src/app/components/property/script-task/script-task.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/service-task/service-task.component.css [moved from sdc-workflow-designer-ui/src/app/components/property/service-task/service-task.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/service-task/service-task.component.html [moved from sdc-workflow-designer-ui/src/app/components/property/service-task/service-task.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/service-task/service-task.component.spec.ts [moved from sdc-workflow-designer-ui/src/app/components/property/service-task/service-task.component.spec.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/service-task/service-task.component.ts [moved from sdc-workflow-designer-ui/src/app/components/property/service-task/service-task.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/start-event/start-event.component.css [moved from sdc-workflow-designer-ui/src/app/components/property/start-event/start-event.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/start-event/start-event.component.html [moved from sdc-workflow-designer-ui/src/app/components/property/start-event/start-event.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/property/start-event/start-event.component.ts [moved from sdc-workflow-designer-ui/src/app/components/property/start-event/start-event.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/sequence-flow/sequence-flow.component.css [moved from sdc-workflow-designer-ui/src/app/components/sequence-flow/sequence-flow.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/sequence-flow/sequence-flow.component.html [moved from sdc-workflow-designer-ui/src/app/components/sequence-flow/sequence-flow.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/sequence-flow/sequence-flow.component.ts [moved from sdc-workflow-designer-ui/src/app/components/sequence-flow/sequence-flow.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/toolbar/toolbar-node/toolbar-node.component.html [moved from sdc-workflow-designer-ui/src/app/components/toolbar/toolbar-node/toolbar-node.component.html with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/toolbar/toolbar-node/toolbar-node.component.ts [moved from sdc-workflow-designer-ui/src/app/components/toolbar/toolbar-node/toolbar-node.component.ts with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/toolbar/toolbar.component.css [moved from sdc-workflow-designer-ui/src/app/components/toolbar/toolbar.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/toolbar/toolbar.component.html [moved from sdc-workflow-designer-ui/src/app/components/toolbar/toolbar.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/toolbar/toolbar.component.ts [moved from sdc-workflow-designer-ui/src/app/components/toolbar/toolbar.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/directive/resizable/resizable.directive.ts [moved from sdc-workflow-designer-ui/src/app/directive/resizable/resizable.directive.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/model.ts [moved from sdc-workflow-designer-ui/src/app/model/model.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/node-data-type/display-name.ts [moved from sdc-workflow-designer-ui/src/app/model/node-data-type/display-name.ts with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/node-data-type/icon.ts [moved from sdc-workflow-designer-ui/src/app/model/node-data-type/icon.ts with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/node-data-type/node-data-type.ts [moved from sdc-workflow-designer-ui/src/app/model/node-data-type/node-data-type.ts with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/notice-type.enum.ts [moved from sdc-workflow-designer-ui/src/app/model/notice-type.enum.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/notice.ts [moved from sdc-workflow-designer-ui/src/app/model/notice.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/plan-model.ts [moved from sdc-workflow-designer-ui/src/app/model/plan-model.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/plan-treeview-item.ts [moved from sdc-workflow-designer-ui/src/app/model/plan-treeview-item.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/rest-config.ts [moved from sdc-workflow-designer-ui/src/app/model/rest-config.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/swagger-setting.ts [moved from sdc-workflow-designer-ui/src/app/model/swagger-setting.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/swagger.ts [moved from sdc-workflow-designer-ui/src/app/model/swagger.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/topology/node-template.ts [moved from sdc-workflow-designer-ui/src/app/model/topology/node-template.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/value-object.ts [moved from sdc-workflow-designer-ui/src/app/model/value-object.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/value-source.enum.ts [moved from sdc-workflow-designer-ui/src/app/model/value-source.enum.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/value-type.enum.ts [moved from sdc-workflow-designer-ui/src/app/model/value-type.enum.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/end-event.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/end-event.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/error-event.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/error-event.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/exclusive-gateway.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/exclusive-gateway.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/intermediate-catch-event.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/intermediate-catch-event.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/node-type.enum.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/node-type.enum.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/parameter.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/parameter.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/position.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/position.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/rest-parameter.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/rest-parameter.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/rest-task.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/rest-task.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/script-task.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/script-task.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/sequence-flow.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/sequence-flow.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/service-task.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/service-task.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/start-event.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/start-event.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/sub-process.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/sub-process.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-base-parameter.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-base-parameter.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-body-parameter.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-body-parameter.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-collection-format.enum.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-collection-format.enum.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-data-format.enum.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-data-format.enum.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-data-type.enum.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-data-type.enum.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-in.enum.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-in.enum.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-items.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-items.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-normal-parameter.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-normal-parameter.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-parameter.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-parameter.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-response.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-response.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-schema.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/swagger/swagger-schema.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/timer-event-definition.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/timer-event-definition.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/tosca-node-task.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/tosca-node-task.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/workflow-element.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/workflow-element.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/model/workflow/workflow-node.ts [moved from sdc-workflow-designer-ui/src/app/model/workflow/workflow-node.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/css/bootstrap4.0.css [moved from sdc-workflow-designer-ui/src/app/paletx/assets/css/bootstrap4.0.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/css/font-awesome.min.css [moved from sdc-workflow-designer-ui/src/app/paletx/assets/css/font-awesome.min.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/css/iconfont.css [moved from sdc-workflow-designer-ui/src/app/paletx/assets/css/iconfont.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/css/ngict-component.css [moved from sdc-workflow-designer-ui/src/app/paletx/assets/css/ngict-component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/css/prism.css [moved from sdc-workflow-designer-ui/src/app/paletx/assets/css/prism.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/css/style.css [moved from sdc-workflow-designer-ui/src/app/paletx/assets/css/style.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/FontAwesome.otf [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/FontAwesome.otf with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/ZteIctIcons.eot [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/ZteIctIcons.eot with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/ZteIctIcons.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/ZteIctIcons.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/ZteIctIcons.ttf [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/ZteIctIcons.ttf with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/ZteIctIcons.woff [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/ZteIctIcons.woff with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/ZteTableIcons.eot [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/ZteTableIcons.eot with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/ZteTableIcons.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/ZteTableIcons.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/ZteTableIcons.ttf [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/ZteTableIcons.ttf with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/ZteTableIcons.woff [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/ZteTableIcons.woff with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/fontawesome-webfont.eot [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/fontawesome-webfont.eot with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/fontawesome-webfont.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/fontawesome-webfont.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/fontawesome-webfont.ttf [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/fontawesome-webfont.ttf with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/fontawesome-webfont.woff [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/fontawesome-webfont.woff with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/fontawesome-webfont.woff2 [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/fontawesome-webfont.woff2 with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/iconfont.eot [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/iconfont.eot with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/iconfont.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/iconfont.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/iconfont.ttf [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/iconfont.ttf with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/iconfont.woff [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/iconfont.woff with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/plx-icons.eot [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/plx-icons.eot with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/plx-icons.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/plx-icons.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/plx-icons.ttf [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/plx-icons.ttf with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/fonts/plx-icons.woff [moved from sdc-workflow-designer-ui/src/app/paletx/assets/fonts/plx-icons.woff with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/images/backtop/backtop.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/images/backtop/backtop.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/images/backtop/backtop_hover.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/images/backtop/backtop_hover.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/checkbox-checked-disabled.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/checkbox-checked-disabled.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/checkbox-disabled.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/checkbox-disabled.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/checkbox-hover.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/checkbox-hover.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/checkbox-init.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/checkbox-init.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/radio-checked-disabled.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/radio-checked-disabled.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/radio-checked.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/radio-checked.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/radio-disabled.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/radio-disabled.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/radio-hover.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/radio-hover.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/radio-init.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/radio-init.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/test/checkbox-checked.svg [moved from sdc-workflow-designer-ui/src/app/paletx/assets/images/checkbox-radio/test/checkbox-checked.svg with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/themes/NIV/NIV-theme.less [moved from sdc-workflow-designer-ui/src/app/paletx/assets/themes/NIV/NIV-theme.less with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/themes/NIV/theme.css [moved from sdc-workflow-designer-ui/src/app/paletx/assets/themes/NIV/theme.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/themes/NIV/theme.less [moved from sdc-workflow-designer-ui/src/app/paletx/assets/themes/NIV/theme.less with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/themes/common.less [moved from sdc-workflow-designer-ui/src/app/paletx/assets/themes/common.less with 98% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/themes/default/NIV-theme.less [moved from sdc-workflow-designer-ui/src/app/paletx/assets/themes/default/NIV-theme.less with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/themes/default/theme.css [moved from sdc-workflow-designer-ui/src/app/paletx/assets/themes/default/theme.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/assets/themes/default/theme.less [moved from sdc-workflow-designer-ui/src/app/paletx/assets/themes/default/theme.less with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/common/shared.ts [moved from sdc-workflow-designer-ui/src/app/paletx/common/shared.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/boolean-field-value.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/boolean-field-value.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/domhandler.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/domhandler.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/number-wrapper-parse.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/number-wrapper-parse.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/fullscreen-overlay-container.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/fullscreen-overlay-container.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/generic-component-type.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/generic-component-type.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/index.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/index.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay-container.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay-container.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay-directives.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay-directives.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay-position-map.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay-position-map.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay-ref.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay-ref.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay-state.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay-state.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/position/connected-position-strategy.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/position/connected-position-strategy.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/position/connected-position.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/position/connected-position.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/position/fake-viewport-ruler.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/position/fake-viewport-ruler.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/position/free-position-strategy.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/position/free-position-strategy.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/position/global-position-strategy.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/position/global-position-strategy.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/position/overlay-position-builder.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/position/overlay-position-builder.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/position/position-strategy.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/position/position-strategy.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/position/viewport-ruler.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/position/viewport-ruler.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/block-scroll-strategy.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/block-scroll-strategy.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/close-scroll-strategy.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/close-scroll-strategy.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/index.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/index.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/noop-scroll-strategy.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/noop-scroll-strategy.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/reposition-scroll-strategy.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/reposition-scroll-strategy.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/scroll-dispatcher.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/scroll-dispatcher.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/scroll-strategy-options.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/scroll-strategy-options.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/scroll-strategy.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/scroll-strategy.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/scrollable.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlay/scroll/scrollable.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlaypanel/index.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlaypanel/index.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/overlaypanel/overlaypanel.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/overlaypanel/overlaypanel.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/pxbutton/button-state.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/pxbutton/button-state.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/pxbutton/button.directive.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/pxbutton/button.directive.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/pxbutton/button.module.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/pxbutton/button.module.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/pxbutton/index.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/pxbutton/index.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/select.service.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/select.service.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/core/uuid.ts [moved from sdc-workflow-designer-ui/src/app/paletx/core/uuid.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/numberedFixLen.pipe.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/numberedFixLen.pipe.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/picker.component.css [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/picker.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/picker.component.html [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/picker.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/picker.component.less [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/picker.component.less with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/picker.component.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/picker.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/picker.module.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/picker.module.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/pickerrange.component.css [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/pickerrange.component.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/pickerrange.component.html [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/pickerrange.component.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/pickerrange.component.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/pickerrange.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/popover-config.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/popover-config.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/popover.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/popover.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/time.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/time.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/timepicker-config.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/timepicker-config.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/timepicker.less [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/timepicker.less with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/timepicker.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/timepicker.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/util/popup.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/util/popup.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/util/positioning.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/util/positioning.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/util/triggers.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/util/triggers.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/util/util.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-datepicker/util/util.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal-backdrop.spec.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal-backdrop.spec.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal-backdrop.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal-backdrop.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal-dismiss-reasons.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal-dismiss-reasons.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal-ref.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal-ref.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal-stack.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal-stack.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal-window.spec.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal-window.spec.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal-window.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal-window.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal.less [moved from sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal.less with 95% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal.module.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal.module.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal.spec.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal.spec.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-modal/modal.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-text-input/index.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-text-input/index.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-text-input/ipv4-validator.directive.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-text-input/ipv4-validator.directive.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-text-input/ipv6-validator.directive.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-text-input/ipv6-validator.directive.ts with 98% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-text-input/max-validator.directive.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-text-input/max-validator.directive.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-text-input/min-validator.directive.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-text-input/min-validator.directive.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-text-input/text-input-ip-address.component.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-text-input/text-input-ip-address.component.ts with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-text-input/text-input-ip.component.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-text-input/text-input-ip.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-text-input/text-input.component.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-text-input/text-input.component.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-text-input/text-input.html [moved from sdc-workflow-designer-ui/src/app/paletx/plx-text-input/text-input.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-text-input/text-input.less [moved from sdc-workflow-designer-ui/src/app/paletx/plx-text-input/text-input.less with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-text-input/text-input.module.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-text-input/text-input.module.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-text-input/validate-on-blur.directive.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-text-input/validate-on-blur.directive.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-tooltip/plx-tooltip-config.spec.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-tooltip/plx-tooltip-config.spec.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-tooltip/plx-tooltip-config.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-tooltip/plx-tooltip-config.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-tooltip/plx-tooltip.less [moved from sdc-workflow-designer-ui/src/app/paletx/plx-tooltip/plx-tooltip.less with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-tooltip/plx-tooltip.module.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-tooltip/plx-tooltip.module.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-tooltip/plx-tooltip.spec.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-tooltip/plx-tooltip.spec.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/plx-tooltip/plx-tooltip.ts [moved from sdc-workflow-designer-ui/src/app/paletx/plx-tooltip/plx-tooltip.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/util/popup.ts [moved from sdc-workflow-designer-ui/src/app/paletx/util/popup.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/util/positioning.ts [moved from sdc-workflow-designer-ui/src/app/paletx/util/positioning.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/util/triggers.ts [moved from sdc-workflow-designer-ui/src/app/paletx/util/triggers.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/paletx/util/util.ts [moved from sdc-workflow-designer-ui/src/app/paletx/util/util.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/services/auth.service.spec.ts [moved from sdc-workflow-designer-ui/src/app/services/auth.service.spec.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/services/auth.service.ts [moved from sdc-workflow-designer-ui/src/app/services/auth.service.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/services/broadcast.service.ts [moved from sdc-workflow-designer-ui/src/app/services/broadcast.service.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/services/display-info.service.ts [moved from sdc-workflow-designer-ui/src/app/services/display-info.service.ts with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/services/interface.service.spec.ts [moved from sdc-workflow-designer-ui/src/app/services/interface.service.spec.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/services/interface.service.ts [moved from sdc-workflow-designer-ui/src/app/services/interface.service.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/services/jsplumb.service.ts [moved from sdc-workflow-designer-ui/src/app/services/jsplumb.service.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/services/model.service.ts [moved from sdc-workflow-designer-ui/src/app/services/model.service.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/services/node-type.service.ts [moved from sdc-workflow-designer-ui/src/app/services/node-type.service.ts with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/services/notice.service.ts [moved from sdc-workflow-designer-ui/src/app/services/notice.service.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/services/rest.service.ts [moved from sdc-workflow-designer-ui/src/app/services/rest.service.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/services/setting.service.spec.ts [moved from sdc-workflow-designer-ui/src/app/services/setting.service.spec.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/services/setting.service.ts [moved from sdc-workflow-designer-ui/src/app/services/setting.service.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/services/swagger-tree-converter.service.ts [moved from sdc-workflow-designer-ui/src/app/services/swagger-tree-converter.service.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/services/tosca.service.spec.ts [moved from sdc-workflow-designer-ui/src/app/services/tosca.service.spec.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/services/tosca.service.ts [moved from sdc-workflow-designer-ui/src/app/services/tosca.service.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/shared/input/validators.ts [moved from sdc-workflow-designer-ui/src/app/shared/input/validators.ts with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/shared/input/wfm-text-input.component.ts [moved from sdc-workflow-designer-ui/src/app/shared/input/wfm-text-input.component.ts with 97% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/shared/input/wfm-text-input.module.ts [moved from sdc-workflow-designer-ui/src/app/shared/input/wfm-text-input.module.ts with 96% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/shared/shared.module.ts [moved from sdc-workflow-designer-ui/src/app/shared/shared.module.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/util/http.service.ts [moved from sdc-workflow-designer-ui/src/app/util/http.service.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/util/rxjs-operators.ts [moved from sdc-workflow-designer-ui/src/app/util/rxjs-operators.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/util/workflow-util.ts [moved from sdc-workflow-designer-ui/src/app/util/workflow-util.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/assets/.gitkeep [moved from sdc-workflow-designer-ui/src/assets/.gitkeep with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/assets/global-setting.json [moved from sdc-workflow-designer-ui/src/assets/global-setting.json with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/assets/i18n/en.json [moved from sdc-workflow-designer-ui/src/assets/i18n/en.json with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/assets/i18n/zh-CN.json [moved from sdc-workflow-designer-ui/src/assets/i18n/zh-CN.json with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/assets/images/apds_rest.svg [moved from sdc-workflow-designer-ui/src/assets/images/apds_rest.svg with 98% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/assets/images/apds_script.svg [moved from sdc-workflow-designer-ui/src/assets/images/apds_script.svg with 98% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/assets/images/apds_service.svg [moved from sdc-workflow-designer-ui/src/assets/images/apds_service.svg with 98% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/assets/images/default.svg [moved from sdc-workflow-designer-ui/src/assets/images/default.svg with 98% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/assets/images/toscaNodeManagementTask.svg [moved from sdc-workflow-designer-ui/src/assets/images/toscaNodeManagementTask.svg with 98% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/environments/environment.prod.ts [moved from sdc-workflow-designer-ui/src/environments/environment.prod.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/environments/environment.ts [moved from sdc-workflow-designer-ui/src/environments/environment.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/index.html [moved from sdc-workflow-designer-ui/src/index.html with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/main.ts [moved from sdc-workflow-designer-ui/src/main.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/polyfills.ts [moved from sdc-workflow-designer-ui/src/polyfills.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/styles.css [moved from sdc-workflow-designer-ui/src/styles.css with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/test.ts [moved from sdc-workflow-designer-ui/src/test.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/tsconfig.app.json [moved from sdc-workflow-designer-ui/src/tsconfig.app.json with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/tsconfig.spec.json [moved from sdc-workflow-designer-ui/src/tsconfig.spec.json with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/src/typings.d.ts [moved from sdc-workflow-designer-ui/src/typings.d.ts with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/tsconfig.json [moved from sdc-workflow-designer-ui/tsconfig.json with 100% similarity]
deprecated-workflow-designer/sdc-workflow-designer-ui/tslint.json [moved from sdc-workflow-designer-ui/tslint.json with 100% similarity]
pom.xml
version.properties
workflow-bdd/.gitignore [moved from workflow/workflow-bdd/.gitignore with 100% similarity]
workflow-bdd/README.txt [moved from workflow/workflow-bdd/README.txt with 100% similarity]
workflow-bdd/config.json [moved from workflow/workflow-bdd/config.json with 100% similarity]
workflow-bdd/cucumber.js [moved from workflow/workflow-bdd/cucumber.js with 100% similarity]
workflow-bdd/features/Version.feature [moved from workflow/workflow-bdd/features/Version.feature with 100% similarity]
workflow-bdd/features/VersionState.feature [moved from workflow/workflow-bdd/features/VersionState.feature with 100% similarity]
workflow-bdd/features/Workflow.feature [moved from workflow/workflow-bdd/features/Workflow.feature with 100% similarity]
workflow-bdd/features/WorkflowList.feature [moved from workflow/workflow-bdd/features/WorkflowList.feature with 100% similarity]
workflow-bdd/package.json [moved from workflow/workflow-bdd/package.json with 100% similarity]
workflow-bdd/plugins/README.md [moved from workflow/workflow-bdd/plugins/README.md with 100% similarity]
workflow-bdd/plugins/jsdoc_config.json [moved from workflow/workflow-bdd/plugins/jsdoc_config.json with 100% similarity]
workflow-bdd/plugins/reporter.js [moved from workflow/workflow-bdd/plugins/reporter.js with 100% similarity]
workflow-bdd/plugins/steps.js [moved from workflow/workflow-bdd/plugins/steps.js with 100% similarity]
workflow-bdd/pom.xml [moved from workflow/workflow-bdd/pom.xml with 100% similarity]
workflow-bdd/resources/json/createVersionWithInputsOutputs.json [moved from workflow/workflow-bdd/resources/json/createVersionWithInputsOutputs.json with 100% similarity]
workflow-bdd/resources/json/createWorkflow.json [moved from workflow/workflow-bdd/resources/json/createWorkflow.json with 100% similarity]
workflow-bdd/stepDefinitions/Collaboration_Steps.js [moved from workflow/workflow-bdd/stepDefinitions/Collaboration_Steps.js with 100% similarity]
workflow-bdd/stepDefinitions/General_Steps.js [moved from workflow/workflow-bdd/stepDefinitions/General_Steps.js with 100% similarity]
workflow-bdd/stepDefinitions/InputData_steps.js [moved from workflow/workflow-bdd/stepDefinitions/InputData_steps.js with 100% similarity]
workflow-bdd/stepDefinitions/InterfaceOperationSteps.js [moved from workflow/workflow-bdd/stepDefinitions/InterfaceOperationSteps.js with 100% similarity]
workflow-bdd/stepDefinitions/Item_steps.js [moved from workflow/workflow-bdd/stepDefinitions/Item_steps.js with 100% similarity]
workflow-bdd/stepDefinitions/REST_Steps.js [moved from workflow/workflow-bdd/stepDefinitions/REST_Steps.js with 100% similarity]
workflow-bdd/stepDefinitions/Utils.js [moved from workflow/workflow-bdd/stepDefinitions/Utils.js with 100% similarity]
workflow-bdd/stepDefinitions/Workflow_Steps.js [moved from workflow/workflow-bdd/stepDefinitions/Workflow_Steps.js with 100% similarity]
workflow-bdd/stepDefinitions/world.js [moved from workflow/workflow-bdd/stepDefinitions/world.js with 100% similarity]
workflow-designer-be/pom.xml [moved from workflow/workflow-designer-be/pom.xml with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/RestUtils.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/RestUtils.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/SpringBootWebApplication.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/SpringBootWebApplication.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/RestConstants.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/RestConstants.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowController.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowController.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowVersionController.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowVersionController.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/exceptionshandlers/CustomizedResponseEntityExceptionHandler.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/exceptionshandlers/CustomizedResponseEntityExceptionHandler.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/types/CollectionWrapper.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/types/CollectionWrapper.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/types/VersionStateDto.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/types/VersionStateDto.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/validator/WorkflowVersionValidator.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/validator/WorkflowVersionValidator.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/ArtifactRepository.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/ArtifactRepository.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/ParameterRepository.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/ParameterRepository.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/UniqueValueRepository.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/UniqueValueRepository.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/impl/ArtifactRepositoryImpl.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/impl/ArtifactRepositoryImpl.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/impl/ParameterRepositoryImpl.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/impl/ParameterRepositoryImpl.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/ArtifactEntity.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/ArtifactEntity.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/ParameterEntity.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/ParameterEntity.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/ParameterPropertyName.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/ParameterPropertyName.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/ParameterRole.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/ParameterRole.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/ParameterType.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/ParameterType.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/UniqueValueEntity.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/UniqueValueEntity.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/Workflow.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/Workflow.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowElementType.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowElementType.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowProperty.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowProperty.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersion.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersion.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersionState.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersionState.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/server/config/SwaggerConfig.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/server/config/SwaggerConfig.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/server/config/ZusammenConfig.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/server/config/ZusammenConfig.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/server/filters/SessionContextFilter.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/server/filters/SessionContextFilter.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/UniqueValueService.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/UniqueValueService.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/WorkflowManager.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/WorkflowManager.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/WorkflowNameComparator.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/WorkflowNameComparator.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/WorkflowVersionManager.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/WorkflowVersionManager.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/EntityNotFoundException.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/EntityNotFoundException.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/InvalidArtifactException.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/InvalidArtifactException.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/InvalidPaginationParameterException.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/InvalidPaginationParameterException.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/UniqueValueViolationException.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/UniqueValueViolationException.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionCreationException.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionCreationException.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionModificationException.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionModificationException.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionStateModificationException.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionStateModificationException.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/CollaborationConfiguration.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/CollaborationConfiguration.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImpl.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImpl.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImpl.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImpl.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapper.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapper.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionStateMapper.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionStateMapper.java with 100% similarity]
workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/WorkflowMapper.java [moved from workflow/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/WorkflowMapper.java with 100% similarity]
workflow-designer-be/src/main/resources/application.properties [moved from workflow/workflow-designer-be/src/main/resources/application.properties with 100% similarity]
workflow-designer-be/src/test/java/org/onap/sdc/workflow/RestPath.java [moved from workflow/workflow-designer-be/src/test/java/org/onap/sdc/workflow/RestPath.java with 100% similarity]
workflow-designer-be/src/test/java/org/onap/sdc/workflow/TestUtil.java [moved from workflow/workflow-designer-be/src/test/java/org/onap/sdc/workflow/TestUtil.java with 100% similarity]
workflow-designer-be/src/test/java/org/onap/sdc/workflow/api/WorkflowControllerTest.java [moved from workflow/workflow-designer-be/src/test/java/org/onap/sdc/workflow/api/WorkflowControllerTest.java with 100% similarity]
workflow-designer-be/src/test/java/org/onap/sdc/workflow/api/WorkflowVersionControllerTest.java [moved from workflow/workflow-designer-be/src/test/java/org/onap/sdc/workflow/api/WorkflowVersionControllerTest.java with 100% similarity]
workflow-designer-be/src/test/java/org/onap/sdc/workflow/persistence/impl/ArtifactRepositoryTest.java [moved from workflow/workflow-designer-be/src/test/java/org/onap/sdc/workflow/persistence/impl/ArtifactRepositoryTest.java with 100% similarity]
workflow-designer-be/src/test/java/org/onap/sdc/workflow/persistence/impl/ParameterRepositoryTest.java [moved from workflow/workflow-designer-be/src/test/java/org/onap/sdc/workflow/persistence/impl/ParameterRepositoryTest.java with 100% similarity]
workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/UniqueValueServiceTest.java [moved from workflow/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/UniqueValueServiceTest.java with 100% similarity]
workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImplTest.java [moved from workflow/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImplTest.java with 100% similarity]
workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImplTest.java [moved from workflow/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImplTest.java with 100% similarity]
workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapperTest.java [moved from workflow/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapperTest.java with 100% similarity]
workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/VersionStateMapperTest.java [moved from workflow/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/VersionStateMapperTest.java with 100% similarity]
workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/WorkflowMapperTest.java [moved from workflow/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/WorkflowMapperTest.java with 100% similarity]
workflow-designer-init/pom.xml [moved from workflow/workflow-designer-init/pom.xml with 100% similarity]
workflow-designer-init/src/main/docker/Dockerfile [moved from workflow/workflow-designer-init/src/main/docker/Dockerfile with 100% similarity]
workflow-designer-init/src/main/docker/create_workflow_db.cql [moved from workflow/workflow-designer-init/src/main/docker/create_workflow_db.cql with 100% similarity]
workflow-designer-init/src/main/docker/start.sh [moved from workflow/workflow-designer-init/src/main/docker/start.sh with 100% similarity]
workflow-designer-ui/pom.xml [moved from workflow/workflow-designer-ui/pom.xml with 100% similarity, mode: 0644]
workflow-designer-ui/src/main/frontend/.babelrc [moved from workflow/workflow-designer-ui/src/main/frontend/.babelrc with 100% similarity]
workflow-designer-ui/src/main/frontend/.eslintignore [moved from workflow/workflow-designer-ui/src/main/frontend/.eslintignore with 100% similarity]
workflow-designer-ui/src/main/frontend/.eslintrc [moved from workflow/workflow-designer-ui/src/main/frontend/.eslintrc with 100% similarity]
workflow-designer-ui/src/main/frontend/.gitignore [moved from workflow/workflow-designer-ui/src/main/frontend/.gitignore with 100% similarity]
workflow-designer-ui/src/main/frontend/__mocks__/fileMock.js [moved from workflow/workflow-designer-ui/src/main/frontend/__mocks__/fileMock.js with 100% similarity]
workflow-designer-ui/src/main/frontend/__mocks__/sdc-ui/lib/react/SVGIcon.js [moved from workflow/workflow-designer-ui/src/main/frontend/__mocks__/sdc-ui/lib/react/SVGIcon.js with 100% similarity]
workflow-designer-ui/src/main/frontend/external-resources/ping/ping [moved from workflow/workflow-designer-ui/src/main/frontend/external-resources/ping/ping with 100% similarity]
workflow-designer-ui/src/main/frontend/index.html [moved from workflow/workflow-designer-ui/src/main/frontend/index.html with 100% similarity]
workflow-designer-ui/src/main/frontend/jest.config.js [moved from workflow/workflow-designer-ui/src/main/frontend/jest.config.js with 100% similarity]
workflow-designer-ui/src/main/frontend/jsconfig.json [moved from workflow/workflow-designer-ui/src/main/frontend/jsconfig.json with 100% similarity]
workflow-designer-ui/src/main/frontend/package.json [moved from workflow/workflow-designer-ui/src/main/frontend/package.json with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/_common.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/_common.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/_components.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/_components.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/_features.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/_features.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/common/_customVariables.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/common/_customVariables.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/common/_fonts.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/common/_fonts.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/common/_utils.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/common/_utils.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/components/_customModal.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/components/_customModal.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/components/_expandableInput.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/components/_expandableInput.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/components/_inputOptions.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/components/_inputOptions.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/components/_layout.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/components/_layout.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/components/_loader.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/components/_loader.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/components/_navigationSideBar.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/components/_navigationSideBar.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/components/_notifications.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/components/_notifications.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/components/_searchInput.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/components/_searchInput.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/components/_tree.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/components/_tree.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/components/_validationForm.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/components/_validationForm.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/components/_versionController.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/components/_versionController.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/features/_catalog.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/features/_catalog.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/features/_composition.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/features/_composition.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/features/_general.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/features/_general.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/features/_inputOutput.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/features/_inputOutput.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/features/_overview.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/features/_overview.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/features/_workflow.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/features/_workflow.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/resources/scss/style.scss [moved from workflow/workflow-designer-ui/src/main/frontend/resources/scss/style.scss with 100% similarity]
workflow-designer-ui/src/main/frontend/src/App.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/App.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/appConstants.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/appConstants.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/appSelectors.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/appSelectors.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/config/Configuration.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/config/Configuration.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/config/config.json [moved from workflow/workflow-designer-ui/src/main/frontend/src/config/config.json with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/catalog/Catalog.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/catalog/Catalog.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/catalog/CatalogView.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/catalog/CatalogView.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/catalog/__tests__/catalogActions-test.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/catalog/__tests__/catalogActions-test.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/catalog/__tests__/catalogReducer-test.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/catalog/__tests__/catalogReducer-test.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/catalog/__tests__/catalogSagas-test.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/catalog/__tests__/catalogSagas-test.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/catalog/catalogActions.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/catalog/catalogActions.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/catalog/catalogApi.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/catalog/catalogApi.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/catalog/catalogConstants.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/catalog/catalogConstants.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/catalog/catalogReducer.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/catalog/catalogReducer.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/catalog/catalogSagas.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/catalog/catalogSagas.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/catalog/views/AddWorkflow.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/catalog/views/AddWorkflow.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/catalog/views/Header.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/catalog/views/Header.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/catalog/views/Main.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/catalog/views/Main.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/catalog/views/Workflows.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/catalog/views/Workflows.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/Version.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/Version.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/VersionView.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/VersionView.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/composition/CompositionView.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/composition/CompositionView.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/composition/newDiagram.bpmn [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/composition/newDiagram.bpmn with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/create/CreateVersion.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/create/CreateVersion.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/create/CreateVersionView.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/create/CreateVersionView.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/create/createVersionConstants.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/create/createVersionConstants.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/create/views/NewVersionContainer.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/create/views/NewVersionContainer.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/general/General.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/general/General.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/general/GeneralView.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/general/GeneralView.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/general/generalApi.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/general/generalApi.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/general/generalSelectors.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/general/generalSelectors.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/InputOutput.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/InputOutput.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/InputOutputView.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/InputOutputView.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/__tests__/inputOutputActions-test.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/__tests__/inputOutputActions-test.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/__tests__/inputOutputReducer-test.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/__tests__/inputOutputReducer-test.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/__tests__/inputOutputSelectors-test.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/__tests__/inputOutputSelectors-test.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/inputOutputActions.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/inputOutputActions.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/inputOutputConstants.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/inputOutputConstants.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/inputOutputReducer.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/inputOutputReducer.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/inputOutputSelectors.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/inputOutputSelectors.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/inputOutputValidations.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/inputOutputValidations.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/views/DataRow.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/views/DataRow.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/views/NoDataRow.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/views/NoDataRow.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/views/Tab.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/views/Tab.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/views/TableBody.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/views/TableBody.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/views/TableHead.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/views/TableHead.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/versionApi.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/versionApi.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/versionConstants.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/versionConstants.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/versionController/VersionController.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/versionController/VersionController.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/versionController/VersionControllerView.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/versionController/VersionControllerView.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/versionController/__tests__/VersionControllerView_snapshot-test.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/versionController/__tests__/VersionControllerView_snapshot-test.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/versionController/__tests__/__snapshots__/VersionControllerView_snapshot-test.js.snap [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/versionController/__tests__/__snapshots__/VersionControllerView_snapshot-test.js.snap with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/versionController/versionControllerConstants.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/versionController/versionControllerConstants.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/versionController/versionControllerSelectors.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/versionController/versionControllerSelectors.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/versionController/views/ActionButtons.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/versionController/views/ActionButtons.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/versionController/views/SvgButton.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/versionController/views/SvgButton.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/versionController/views/VersionButton.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/versionController/views/VersionButton.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/versionController/views/VersionSelect.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/versionController/views/VersionSelect.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/versionController/views/VersionsContainer.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/versionController/views/VersionsContainer.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/versionController/views/WorkflowTitle.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/versionController/views/WorkflowTitle.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/versionReducer.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/versionReducer.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/version/versionSaga.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/version/versionSaga.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/create/CreateWorkflow.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/create/CreateWorkflow.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/create/CreateWorkflowView.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/create/CreateWorkflowView.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/create/__tests__/CreateWorkflowView_snapshot-test.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/create/__tests__/CreateWorkflowView_snapshot-test.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/create/__tests__/__snapshots__/CreateWorkflowView_snapshot-test.js.snap [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/create/__tests__/__snapshots__/CreateWorkflowView_snapshot-test.js.snap with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/create/__tests__/createWorkflowSaga-test.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/create/__tests__/createWorkflowSaga-test.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/create/__tests__/createWorkflowSelector-test.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/create/__tests__/createWorkflowSelector-test.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/create/createWorkflowApi.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/create/createWorkflowApi.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/create/createWorkflowConstants.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/create/createWorkflowConstants.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/create/createWorkflowSaga.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/create/createWorkflowSaga.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/create/createWorkflowSelector.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/create/createWorkflowSelector.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/overview/Overview.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/overview/Overview.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/overview/OverviewView.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/overview/OverviewView.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/overview/overviewApi.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/overview/overviewApi.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/overview/overviewConstansts.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/overview/overviewConstansts.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/overview/overviewReducer.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/overview/overviewReducer.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/overview/overviewSagas.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/overview/overviewSagas.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/overview/overviewSelectors.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/overview/overviewSelectors.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/overview/views/VersionList/VersionListItem.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/overview/views/VersionList/VersionListItem.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/overview/views/VersionList/index.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/overview/views/VersionList/index.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/overview/views/VersionTree.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/overview/views/VersionTree.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/overview/views/WorkflowDetails.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/overview/views/WorkflowDetails.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/overview/views/WorkflowHeader.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/overview/views/WorkflowHeader.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/overview/views/WorkflowVersions.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/overview/views/WorkflowVersions.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/workflowConstants.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/workflowConstants.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/workflowReducer.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/workflowReducer.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/features/workflow/workflowSelectors.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/features/workflow/workflowSelectors.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/i18n/I18n.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/i18n/I18n.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/i18n/i18next-scanner.config.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/i18n/i18next-scanner.config.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/i18n/languages.json [moved from workflow/workflow-designer-ui/src/main/frontend/src/i18n/languages.json with 100% similarity]
workflow-designer-ui/src/main/frontend/src/i18n/translationSaga.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/i18n/translationSaga.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/index.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/index.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/rootReducers.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/rootReducers.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/rootSaga.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/rootSaga.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/routes.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/routes.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/services/restAPIUtil.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/services/restAPIUtil.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/components/Description/index.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/components/Description/index.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/components/Select/index.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/components/Select/index.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/components/VersionInfo/index.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/components/VersionInfo/index.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/errorResponseHandler/errorResponseHandler.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/errorResponseHandler/errorResponseHandler.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/loader/Loader.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/loader/Loader.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/loader/LoaderConstants.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/loader/LoaderConstants.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/loader/LoaderReducer.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/loader/LoaderReducer.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/loader/__tests__/loaderReducer-test.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/loader/__tests__/loaderReducer-test.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/modal/ModalWrapper.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/modal/ModalWrapper.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/modal/ModalWrapperView.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/modal/ModalWrapperView.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/modal/__tests__/modalWrapperActions-test.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/modal/__tests__/modalWrapperActions-test.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/modal/__tests__/modalWrapperReducer-test.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/modal/__tests__/modalWrapperReducer-test.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/modal/modalWrapperActions.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/modal/modalWrapperActions.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/modal/modalWrapperComponents.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/modal/modalWrapperComponents.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/modal/modalWrapperReducer.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/modal/modalWrapperReducer.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/navigationSideBar/NavigationLink.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/navigationSideBar/NavigationLink.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/navigationSideBar/NavigationMenu.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/navigationSideBar/NavigationMenu.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/navigationSideBar/NavigationMenuItem.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/navigationSideBar/NavigationMenuItem.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/navigationSideBar/NavigationMenuItems.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/navigationSideBar/NavigationMenuItems.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/navigationSideBar/index.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/navigationSideBar/index.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/notifications/Notifications.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/notifications/Notifications.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/notifications/NotificationsView.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/notifications/NotificationsView.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/notifications/__tests__/NotificationView_snapshot-test.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/notifications/__tests__/NotificationView_snapshot-test.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/notifications/__tests__/__snapshots__/NotificationView_snapshot-test.js.snap [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/notifications/__tests__/__snapshots__/NotificationView_snapshot-test.js.snap with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/notifications/__tests__/notificationsReducer-test.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/notifications/__tests__/notificationsReducer-test.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/notifications/notificationsActions.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/notifications/notificationsActions.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/notifications/notificationsConstants.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/notifications/notificationsConstants.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/notifications/notificationsReducer.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/notifications/notificationsReducer.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/notifications/notificationsSagas.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/notifications/notificationsSagas.js with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/searchInput/SearchInput.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/searchInput/SearchInput.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/shared/tree/Tree.jsx [moved from workflow/workflow-designer-ui/src/main/frontend/src/shared/tree/Tree.jsx with 100% similarity]
workflow-designer-ui/src/main/frontend/src/store.js [moved from workflow/workflow-designer-ui/src/main/frontend/src/store.js with 100% similarity]
workflow-designer-ui/src/main/frontend/testSetup/fileTransform.js [moved from workflow/workflow-designer-ui/src/main/frontend/testSetup/fileTransform.js with 100% similarity]
workflow-designer-ui/src/main/frontend/tools/ModuleRedirectPlugin.js [moved from workflow/workflow-designer-ui/src/main/frontend/tools/ModuleRedirectPlugin.js with 100% similarity]
workflow-designer-ui/src/main/frontend/tools/devConfig.defaults.json [moved from workflow/workflow-designer-ui/src/main/frontend/tools/devConfig.defaults.json with 100% similarity]
workflow-designer-ui/src/main/frontend/tools/getDevConfig.js [moved from workflow/workflow-designer-ui/src/main/frontend/tools/getDevConfig.js with 100% similarity]
workflow-designer-ui/src/main/frontend/tools/mocks/mock.js [moved from workflow/workflow-designer-ui/src/main/frontend/tools/mocks/mock.js with 100% similarity]
workflow-designer-ui/src/main/frontend/tools/proxy-server.js [moved from workflow/workflow-designer-ui/src/main/frontend/tools/proxy-server.js with 100% similarity]
workflow-designer-ui/src/main/frontend/webpack.config.js [moved from workflow/workflow-designer-ui/src/main/frontend/webpack.config.js with 100% similarity]
workflow-designer-ui/src/main/frontend/yarn.lock [moved from workflow/workflow-designer-ui/src/main/frontend/yarn.lock with 100% similarity]
workflow-designer-ui/src/main/java/org/onap/workflow/web/TransparentProxy.java [moved from workflow/workflow-designer-ui/src/main/java/org/onap/workflow/web/TransparentProxy.java with 100% similarity, mode: 0644]
workflow-designer-ui/src/main/webapp/WEB-INF/jetty-web.xml [moved from workflow/workflow-designer-ui/src/main/webapp/WEB-INF/jetty-web.xml with 100% similarity, mode: 0644]
workflow-designer-ui/src/main/webapp/WEB-INF/web.xml [moved from workflow/workflow-designer-ui/src/main/webapp/WEB-INF/web.xml with 100% similarity, mode: 0644]
workflow/pom.xml [deleted file]

similarity index 100%
rename from workflow/README.md
rename to README.md
diff --git a/deprecated-workflow-designer/DEPRECATION.md b/deprecated-workflow-designer/DEPRECATION.md
new file mode 100644 (file)
index 0000000..c46e804
--- /dev/null
@@ -0,0 +1 @@
+This implementation of SDC Workflow Designer is **deprecated**.
\ No newline at end of file
similarity index 99%
rename from distribution/pom.xml
rename to deprecated-workflow-designer/distribution/pom.xml
index 6b15fd2..583f466 100644 (file)
     <parent>
         <groupId>org.onap.sdc.sdc-workflow-designer</groupId>
         <artifactId>sdc-workflow-designer</artifactId>
-        <version>1.1.0-SNAPSHOT</version>
+        <version>1.2.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
-    <groupId>org.onap.sdc.sdc-workflow-designer</groupId>
     <artifactId>distribution</artifactId>
     <name>distribution</name>
     <packaging>pom</packaging>
@@ -1,20 +1,20 @@
-@REM\r
-@REM Copyright (c) 2017 ZTE Corporation.\r
-@REM All rights reserved. This program and the accompanying materials\r
-@REM are made available under the terms of the Eclipse Public License v1.0\r
-@REM and the Apache License 2.0 which both accompany this distribution,\r
-@REM and are available at http://www.eclipse.org/legal/epl-v10.html\r
-@REM and http://www.apache.org/licenses/LICENSE-2.0\r
-@REM\r
-@REM Contributors:\r
-@REM     ZTE - initial API and implementation and/or initial documentation\r
-@REM\r
-\r
-echo %1 | findstr %2 >NUL\r
-echo ERRORLEVEL=%ERRORLEVEL%\r
-IF ERRORLEVEL 1 goto findend\r
-for /f "tokens=1" %%a in (%1) do (  \r
-    echo kill %1\r
-    taskkill /F /pid %%a\r
-)\r
+@REM
+@REM Copyright (c) 2017 ZTE Corporation.
+@REM All rights reserved. This program and the accompanying materials
+@REM are made available under the terms of the Eclipse Public License v1.0
+@REM and the Apache License 2.0 which both accompany this distribution,
+@REM and are available at http://www.eclipse.org/legal/epl-v10.html
+@REM and http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Contributors:
+@REM     ZTE - initial API and implementation and/or initial documentation
+@REM
+
+echo %1 | findstr %2 >NUL
+echo ERRORLEVEL=%ERRORLEVEL%
+IF ERRORLEVEL 1 goto findend
+for /f "tokens=1" %%a in (%1) do (  
+    echo kill %1
+    taskkill /F /pid %%a
+)
 :findend
\ No newline at end of file
@@ -1,37 +1,37 @@
-@REM\r
-@REM Copyright (c) 2017 ZTE Corporation.\r
-@REM All rights reserved. This program and the accompanying materials\r
-@REM are made available under the terms of the Eclipse Public License v1.0\r
-@REM and the Apache License 2.0 which both accompany this distribution,\r
-@REM and are available at http://www.eclipse.org/legal/epl-v10.html\r
-@REM and http://www.apache.org/licenses/LICENSE-2.0\r
-@REM\r
-@REM Contributors:\r
-@REM     ZTE - initial API and implementation and/or initial documentation\r
-@REM\r
-\r
-@echo off\r
-title sdc-workflow-designer\r
-\r
-set RUNHOME=%~dp0\r
-echo ### RUNHOME: %RUNHOME%\r
-echo ### Starting sdc-workflow-designer\r
-set main_path=%RUNHOME%..\\r
-cd /d %main_path%\r
-set JAVA="%JAVA_HOME%\bin\java.exe"\r
-set port=12345\r
-set jvm_opts=-Xms50m -Xmx128m\r
-set jvm_opts=%jvm_opts% -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=%port%,server=y,suspend=n\r
-set class_path=%main_path%;%main_path%sdc-workflow-designer.jar\r
-echo ### jvm_opts: %jvm_opts%\r
-echo ### class_path: %class_path%\r
-\r
-%JAVA% -classpath %class_path% %jvm_opts% org.onap.sdc.workflowdesigner.WorkflowDesignerApp server %main_path%conf/workflow-designer.yml\r
-\r
-IF ERRORLEVEL 1 goto showerror\r
-exit\r
-:showerror\r
-echo WARNING: Error occurred during startup or Server abnormally stopped by way of killing the process,Please check!\r
-echo After checking, press any key to close \r
-pause\r
+@REM
+@REM Copyright (c) 2017 ZTE Corporation.
+@REM All rights reserved. This program and the accompanying materials
+@REM are made available under the terms of the Eclipse Public License v1.0
+@REM and the Apache License 2.0 which both accompany this distribution,
+@REM and are available at http://www.eclipse.org/legal/epl-v10.html
+@REM and http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Contributors:
+@REM     ZTE - initial API and implementation and/or initial documentation
+@REM
+
+@echo off
+title sdc-workflow-designer
+
+set RUNHOME=%~dp0
+echo ### RUNHOME: %RUNHOME%
+echo ### Starting sdc-workflow-designer
+set main_path=%RUNHOME%..\
+cd /d %main_path%
+set JAVA="%JAVA_HOME%\bin\java.exe"
+set port=12345
+set jvm_opts=-Xms50m -Xmx128m
+set jvm_opts=%jvm_opts% -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=%port%,server=y,suspend=n
+set class_path=%main_path%;%main_path%sdc-workflow-designer.jar
+echo ### jvm_opts: %jvm_opts%
+echo ### class_path: %class_path%
+
+%JAVA% -classpath %class_path% %jvm_opts% org.onap.sdc.workflowdesigner.WorkflowDesignerApp server %main_path%conf/workflow-designer.yml
+
+IF ERRORLEVEL 1 goto showerror
+exit
+:showerror
+echo WARNING: Error occurred during startup or Server abnormally stopped by way of killing the process,Please check!
+echo After checking, press any key to close 
+pause
 exit
\ No newline at end of file
@@ -1,30 +1,30 @@
-@REM\r
-@REM Copyright (c) 2017 ZTE Corporation.\r
-@REM All rights reserved. This program and the accompanying materials\r
-@REM are made available under the terms of the Eclipse Public License v1.0\r
-@REM and the Apache License 2.0 which both accompany this distribution,\r
-@REM and are available at http://www.eclipse.org/legal/epl-v10.html\r
-@REM and http://www.apache.org/licenses/LICENSE-2.0\r
-@REM\r
-@REM Contributors:\r
-@REM     ZTE - initial API and implementation and/or initial documentation\r
-@REM\r
-\r
-@echo off\r
-title stopping sdc-workflow-designer\r
-\r
-set HOME=%~dp0\r
-set Main_Class="org.onap.sdc.workflowdesigner.WorkflowDesignerApp"\r
-\r
-echo ================== sdc-workflow-designer info =============================================\r
-echo HOME=$HOME\r
-echo Main_Class=%Main_Class%\r
-echo ===============================================================================\r
-\r
-echo ### Stopping sdc-workflow-designer\r
-cd /d %HOME%\r
-\r
-for /f "delims=" %%i in ('"%JAVA_HOME%\bin\jcmd"') do (\r
-  call find_kill_process "%%i" %Main_Class%\r
-)\r
+@REM
+@REM Copyright (c) 2017 ZTE Corporation.
+@REM All rights reserved. This program and the accompanying materials
+@REM are made available under the terms of the Eclipse Public License v1.0
+@REM and the Apache License 2.0 which both accompany this distribution,
+@REM and are available at http://www.eclipse.org/legal/epl-v10.html
+@REM and http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Contributors:
+@REM     ZTE - initial API and implementation and/or initial documentation
+@REM
+
+@echo off
+title stopping sdc-workflow-designer
+
+set HOME=%~dp0
+set Main_Class="org.onap.sdc.workflowdesigner.WorkflowDesignerApp"
+
+echo ================== sdc-workflow-designer info =============================================
+echo HOME=$HOME
+echo Main_Class=%Main_Class%
+echo ===============================================================================
+
+echo ### Stopping sdc-workflow-designer
+cd /d %HOME%
+
+for /f "delims=" %%i in ('"%JAVA_HOME%\bin\jcmd"') do (
+  call find_kill_process "%%i" %Main_Class%
+)
 exit
\ No newline at end of file
-{\r
-  "id": "id12345",\r
-  "name": "test",\r
-  "scene": "abcd",\r
-  "data": {\r
-    "nodes": [\r
-      {\r
-        "id": "startEvent",\r
-        "type": "startEvent",\r
-        "name": "Start",\r
-        "parentId": "root",\r
-        "position": {\r
-          "left": 73,\r
-          "top": 160,\r
-          "width": 56,\r
-          "height": 56\r
-        },\r
-        "connection": [\r
-          {\r
-            "sourceRef": "startEvent",\r
-            "targetRef": "scriptTask"\r
-          }\r
-        ],\r
-        "parameters": []\r
-      },\r
-      {\r
-        "id": "scriptTask",\r
-        "type": "scriptTask",\r
-        "typeId": "apds_scriptA",\r
-        "icon": "apds_script",\r
-        "name": "Stop traffic",\r
-        "parentId": "root",\r
-        "position": {\r
-          "left": 175,\r
-          "top": 160,\r
-          "width": 56,\r
-          "height": 56\r
-        },\r
-        "connection": [\r
-          {\r
-            "sourceRef": "scriptTask",\r
-            "targetRef": "scriptTask_2"\r
-          }\r
-        ],\r
-        "scriptFormat": "JavaScript",\r
-        "script": "abc"\r
-      },\r
-      {\r
-        "id": "scriptTask_2",\r
-        "type": "scriptTask",\r
-        "typeId": "apds_scriptB",\r
-        "icon": "apds_script",\r
-        "name": "Drain traffic",\r
-        "parentId": "root",\r
-        "position": {\r
-          "left": 289,\r
-          "top": 160,\r
-          "width": 56,\r
-          "height": 56\r
-        },\r
-        "connection": [\r
-          {\r
-            "sourceRef": "scriptTask_2",\r
-            "targetRef": "serviceTask"\r
-          }\r
-        ],\r
-        "scriptFormat": "Groovy",\r
-        "script": "xyz"\r
-      },\r
-      {\r
-        "id": "serviceTask",\r
-        "type": "serviceTask",\r
-        "typeId": "apds_serviceA",\r
-        "icon": "apds_service",\r
-        "name": "Stop VNF",\r
-        "parentId": "root",\r
-        "position": {\r
-          "left": 392,\r
-          "top": 160,\r
-          "width": 56,\r
-          "height": 56\r
-        },\r
-        "connection": [\r
-          {\r
-            "sourceRef": "serviceTask",\r
-            "targetRef": "serviceTask_2"\r
-          }\r
-        ],\r
-        "className": "",\r
-        "inputs": [\r
-          {\r
-            "name": "param1",\r
-            "value": "default",\r
-            "valueSource": "string",\r
-            "type": "string",\r
-            "required": false,\r
-            "show": true,\r
-            "errorMsg": ""\r
-          },\r
-          {\r
-            "name": "param2",\r
-            "value": null,\r
-            "valueSource": "string",\r
-            "type": "string",\r
-            "required": true,\r
-            "show": true,\r
-            "errorMsg": ""\r
-          },\r
-          {\r
-            "name": "param3",\r
-            "value": "value3",\r
-            "valueSource": "string",\r
-            "type": "string",\r
-            "required": true,\r
-            "show": true,\r
-            "errorMsg": ""\r
-          }\r
-        ],\r
-        "outputs": [\r
-          {\r
-            "name": "out1",\r
-            "value": null,\r
-            "valueSource": "string",\r
-            "type": "string",\r
-            "required": false,\r
-            "show": true,\r
-            "errorMsg": ""\r
-          }\r
-        ]\r
-      },\r
-      {\r
-        "id": "serviceTask_2",\r
-        "type": "serviceTask",\r
-        "typeId": "apds_serviceB",\r
-        "icon": "apds_service",\r
-        "name": "Create VNF",\r
-        "parentId": "root",\r
-        "position": {\r
-          "left": 500,\r
-          "top": 160,\r
-          "width": 56,\r
-          "height": 56\r
-        },\r
-        "connection": [\r
-          {\r
-            "sourceRef": "serviceTask_2",\r
-            "targetRef": "serviceTask_3"\r
-          }\r
-        ]\r
-      },\r
-      {\r
-        "id": "serviceTask_3",\r
-        "type": "serviceTask",\r
-        "typeId": "apds_service",\r
-        "icon": "apds_service",\r
-        "name": "Start VNF",\r
-        "parentId": "root",\r
-        "position": {\r
-          "left": 620,\r
-          "top": 160,\r
-          "width": 56,\r
-          "height": 56\r
-        },\r
-        "connection": [\r
-          {\r
-            "sourceRef": "serviceTask_3",\r
-            "targetRef": "endEvent"\r
-          }\r
-        ],\r
-        "className": "",\r
-        "inputs": [],\r
-        "outputs": []\r
-      },\r
-      {\r
-        "id": "endEvent",\r
-        "type": "endEvent",\r
-        "name": "End",\r
-        "parentId": "root",\r
-        "position": {\r
-          "left": 744,\r
-          "top": 160,\r
-          "width": 56,\r
-          "height": 56\r
-        },\r
-        "connection": []\r
-      }\r
-    ]\r
-  }\r
-}\r
+{
+  "id": "id12345",
+  "name": "test",
+  "scene": "abcd",
+  "data": {
+    "nodes": [
+      {
+        "id": "startEvent",
+        "type": "startEvent",
+        "name": "Start",
+        "parentId": "root",
+        "position": {
+          "left": 73,
+          "top": 160,
+          "width": 56,
+          "height": 56
+        },
+        "connection": [
+          {
+            "sourceRef": "startEvent",
+            "targetRef": "scriptTask"
+          }
+        ],
+        "parameters": []
+      },
+      {
+        "id": "scriptTask",
+        "type": "scriptTask",
+        "typeId": "apds_scriptA",
+        "icon": "apds_script",
+        "name": "Stop traffic",
+        "parentId": "root",
+        "position": {
+          "left": 175,
+          "top": 160,
+          "width": 56,
+          "height": 56
+        },
+        "connection": [
+          {
+            "sourceRef": "scriptTask",
+            "targetRef": "scriptTask_2"
+          }
+        ],
+        "scriptFormat": "JavaScript",
+        "script": "abc"
+      },
+      {
+        "id": "scriptTask_2",
+        "type": "scriptTask",
+        "typeId": "apds_scriptB",
+        "icon": "apds_script",
+        "name": "Drain traffic",
+        "parentId": "root",
+        "position": {
+          "left": 289,
+          "top": 160,
+          "width": 56,
+          "height": 56
+        },
+        "connection": [
+          {
+            "sourceRef": "scriptTask_2",
+            "targetRef": "serviceTask"
+          }
+        ],
+        "scriptFormat": "Groovy",
+        "script": "xyz"
+      },
+      {
+        "id": "serviceTask",
+        "type": "serviceTask",
+        "typeId": "apds_serviceA",
+        "icon": "apds_service",
+        "name": "Stop VNF",
+        "parentId": "root",
+        "position": {
+          "left": 392,
+          "top": 160,
+          "width": 56,
+          "height": 56
+        },
+        "connection": [
+          {
+            "sourceRef": "serviceTask",
+            "targetRef": "serviceTask_2"
+          }
+        ],
+        "className": "",
+        "inputs": [
+          {
+            "name": "param1",
+            "value": "default",
+            "valueSource": "string",
+            "type": "string",
+            "required": false,
+            "show": true,
+            "errorMsg": ""
+          },
+          {
+            "name": "param2",
+            "value": null,
+            "valueSource": "string",
+            "type": "string",
+            "required": true,
+            "show": true,
+            "errorMsg": ""
+          },
+          {
+            "name": "param3",
+            "value": "value3",
+            "valueSource": "string",
+            "type": "string",
+            "required": true,
+            "show": true,
+            "errorMsg": ""
+          }
+        ],
+        "outputs": [
+          {
+            "name": "out1",
+            "value": null,
+            "valueSource": "string",
+            "type": "string",
+            "required": false,
+            "show": true,
+            "errorMsg": ""
+          }
+        ]
+      },
+      {
+        "id": "serviceTask_2",
+        "type": "serviceTask",
+        "typeId": "apds_serviceB",
+        "icon": "apds_service",
+        "name": "Create VNF",
+        "parentId": "root",
+        "position": {
+          "left": 500,
+          "top": 160,
+          "width": 56,
+          "height": 56
+        },
+        "connection": [
+          {
+            "sourceRef": "serviceTask_2",
+            "targetRef": "serviceTask_3"
+          }
+        ]
+      },
+      {
+        "id": "serviceTask_3",
+        "type": "serviceTask",
+        "typeId": "apds_service",
+        "icon": "apds_service",
+        "name": "Start VNF",
+        "parentId": "root",
+        "position": {
+          "left": 620,
+          "top": 160,
+          "width": 56,
+          "height": 56
+        },
+        "connection": [
+          {
+            "sourceRef": "serviceTask_3",
+            "targetRef": "endEvent"
+          }
+        ],
+        "className": "",
+        "inputs": [],
+        "outputs": []
+      },
+      {
+        "id": "endEvent",
+        "type": "endEvent",
+        "name": "End",
+        "parentId": "root",
+        "position": {
+          "left": 744,
+          "top": 160,
+          "width": 56,
+          "height": 56
+        },
+        "connection": []
+      }
+    ]
+  }
+}
diff --git a/deprecated-workflow-designer/pom.xml b/deprecated-workflow-designer/pom.xml
new file mode 100644 (file)
index 0000000..5776029
--- /dev/null
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <parent>
+        <groupId>org.onap.oparent</groupId>
+        <artifactId>oparent</artifactId>
+        <version>1.1.0</version>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.onap.sdc.sdc-workflow-designer</groupId>
+    <artifactId>sdc-workflow-designer</artifactId>
+    <name>sdc-sdc-workflow-designer</name>
+    <version>1.2.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>sdc-workflow-designer-ui</module>
+        <module>sdc-workflow-designer-server</module>
+        <module>distribution</module>
+    </modules>
+    
+    <properties>
+        <onap.nexus.javadocs-url>dav:https://nexus.onap.org/content/sites/site/org/onap/sdc/sdc-workflow-designer/${project.version}</onap.nexus.javadocs-url>
+    </properties>
+
+    <repositories>
+        <repository>
+            <id>ecomp-releases</id>
+            <name>Release Repository</name>
+            <url>https://nexus.onap.org/content/repositories/releases/</url>
+        </repository>
+        <repository>
+            <id>ecomp-snapshots</id>
+            <name>Snapshots Repository</name>
+            <url>https://nexus.onap.org/content/repositories/snapshots/</url>
+        </repository>
+        <repository>
+            <id>ecomp-public</id>
+            <name>Public Repository</name>
+            <url>https://nexus.onap.org/content/repositories/public/</url>
+        </repository>
+    </repositories>
+
+    <distributionManagement>
+      <site>
+        <id>ecomp-site</id>
+        <url>${onap.nexus.javadocs-url}</url>
+      </site>
+    </distributionManagement>
+    
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-dependency-plugin</artifactId>
+                    <version>2.10</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-antrun-plugin</artifactId>
+                    <version>1.8</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+</project>
     <parent>
         <groupId>org.onap.sdc.sdc-workflow-designer</groupId>
         <artifactId>sdc-workflow-designer</artifactId>
-        <version>1.1.0-SNAPSHOT</version>
+        <version>1.2.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
-    <groupId>org.onap.sdc.sdc-workflow-designer</groupId>
     <artifactId>sdc-workflow-designer-server</artifactId>
     <name>sdc-workflow-designer-server</name>
     <packaging>jar</packaging>
-{\r
-    "id":"id12345",\r
-    "name":"test",\r
-    "scene":"abcd",\r
-    "data":{\r
-        "nodes":[\r
-            {\r
-                "id":"node0",\r
-                "type":"startEvent",\r
-                "name":"开始",\r
-                "parentId":"root",\r
-                "position":{\r
-                    "left":100,\r
-                    "top":136,\r
-                    "width":56,\r
-                    "height":56\r
-                },\r
-                "connection":[\r
-                    {\r
-                        "sourceRef":"node0",\r
-                        "targetRef":"node1"\r
-                    }\r
-                ],\r
-                "parameters":[\r
-\r
-                ]\r
-            },\r
-            {\r
-                "id":"node1",\r
-                "type":"restTask",\r
-                "name":"REST",\r
-                "parentId":"root",\r
-                "position":{\r
-                    "left":254,\r
-                    "top":136,\r
-                    "width":56,\r
-                    "height":56\r
-                },\r
-                "connection":[\r
-                    {\r
-                        "sourceRef":"node1",\r
-                        "targetRef":"node2"\r
-                    }\r
-                ],\r
-                "produces":[\r
-                    "application/json; charset=utf-8"\r
-                ],\r
-                "parameters":[\r
-                    {\r
-                        "name":"body",\r
-                        "value":{\r
-                            "value":{\r
-                                "type":{\r
-                                    "value":"jhgjhv",\r
-                                    "valueSource":"String"\r
-                                },\r
-                                "provider":{\r
-                                    "value":"",\r
-                                    "valueSource":"Variable"\r
-                                },\r
-                                "serviceType":{\r
-                                    "value":"",\r
-                                    "valueSource":"String"\r
-                                },\r
-                                "start":{\r
-                                    "value":{\r
-                                        "year":{\r
-                                            "value":"",\r
-                                            "valueSource":"String"\r
-                                        },\r
-                                        "month":{\r
-                                            "value":"",\r
-                                            "valueSource":"String"\r
-                                        },\r
-                                        "day":{\r
-                                            "value":"",\r
-                                            "valueSource":"String"\r
-                                        }\r
-                                    },\r
-                                    "valueSource":"Definition"\r
-                                },\r
-                                "end":{\r
-                                    "value":{\r
-                                        "year":{\r
-                                            "value":"",\r
-                                            "valueSource":"String"\r
-                                        },\r
-                                        "month":{\r
-                                            "value":"",\r
-                                            "valueSource":"String"\r
-                                        },\r
-                                        "day":{\r
-                                            "value":"",\r
-                                            "valueSource":"String"\r
-                                        }\r
-                                    },\r
-                                    "valueSource":"Definition"\r
-                                }\r
-                            },\r
-                            "valueSource":"Definition"\r
-                        },\r
-                        "valueSource":"String",\r
-                        "type":"String",\r
-                        "required":false,\r
-                        "position":"body",\r
-                        "schema":{\r
-                            "$ref":"#/definitions/PackageQueryParams"\r
-                        }\r
-                    },\r
-                    {\r
-                        "name":"language-option",\r
-                        "value":"",\r
-                        "valueSource":"String",\r
-                        "type":"String",\r
-                        "required":false,\r
-                        "position":"header"\r
-                    }\r
-                ],\r
-                "responses":[\r
-\r
-                ],\r
-                "restConfigId":"catalog.v1",\r
-                "path":"/csars",\r
-                "method":"post"\r
-            },\r
-            {\r
-                "id":"node2",\r
-                "type":"endEvent",\r
-                "name":"结束",\r
-                "parentId":"root",\r
-                "position":{\r
-                    "left":396,\r
-                    "top":136,\r
-                    "width":56,\r
-                    "height":56\r
-                },\r
-                "connection":[\r
-\r
-                ]\r
-            }\r
-        ]\r
-    }\r
+{
+    "id":"id12345",
+    "name":"test",
+    "scene":"abcd",
+    "data":{
+        "nodes":[
+            {
+                "id":"node0",
+                "type":"startEvent",
+                "name":"开始",
+                "parentId":"root",
+                "position":{
+                    "left":100,
+                    "top":136,
+                    "width":56,
+                    "height":56
+                },
+                "connection":[
+                    {
+                        "sourceRef":"node0",
+                        "targetRef":"node1"
+                    }
+                ],
+                "parameters":[
+
+                ]
+            },
+            {
+                "id":"node1",
+                "type":"restTask",
+                "name":"REST",
+                "parentId":"root",
+                "position":{
+                    "left":254,
+                    "top":136,
+                    "width":56,
+                    "height":56
+                },
+                "connection":[
+                    {
+                        "sourceRef":"node1",
+                        "targetRef":"node2"
+                    }
+                ],
+                "produces":[
+                    "application/json; charset=utf-8"
+                ],
+                "parameters":[
+                    {
+                        "name":"body",
+                        "value":{
+                            "value":{
+                                "type":{
+                                    "value":"jhgjhv",
+                                    "valueSource":"String"
+                                },
+                                "provider":{
+                                    "value":"",
+                                    "valueSource":"Variable"
+                                },
+                                "serviceType":{
+                                    "value":"",
+                                    "valueSource":"String"
+                                },
+                                "start":{
+                                    "value":{
+                                        "year":{
+                                            "value":"",
+                                            "valueSource":"String"
+                                        },
+                                        "month":{
+                                            "value":"",
+                                            "valueSource":"String"
+                                        },
+                                        "day":{
+                                            "value":"",
+                                            "valueSource":"String"
+                                        }
+                                    },
+                                    "valueSource":"Definition"
+                                },
+                                "end":{
+                                    "value":{
+                                        "year":{
+                                            "value":"",
+                                            "valueSource":"String"
+                                        },
+                                        "month":{
+                                            "value":"",
+                                            "valueSource":"String"
+                                        },
+                                        "day":{
+                                            "value":"",
+                                            "valueSource":"String"
+                                        }
+                                    },
+                                    "valueSource":"Definition"
+                                }
+                            },
+                            "valueSource":"Definition"
+                        },
+                        "valueSource":"String",
+                        "type":"String",
+                        "required":false,
+                        "position":"body",
+                        "schema":{
+                            "$ref":"#/definitions/PackageQueryParams"
+                        }
+                    },
+                    {
+                        "name":"language-option",
+                        "value":"",
+                        "valueSource":"String",
+                        "type":"String",
+                        "required":false,
+                        "position":"header"
+                    }
+                ],
+                "responses":[
+
+                ],
+                "restConfigId":"catalog.v1",
+                "path":"/csars",
+                "method":"post"
+            },
+            {
+                "id":"node2",
+                "type":"endEvent",
+                "name":"结束",
+                "parentId":"root",
+                "position":{
+                    "left":396,
+                    "top":136,
+                    "width":56,
+                    "height":56
+                },
+                "connection":[
+
+                ]
+            }
+        ]
+    }
 }
\ No newline at end of file
@@ -1,74 +1,74 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner;\r
-\r
-import com.fasterxml.jackson.annotation.JsonProperty;\r
-\r
-/**\r
- *\r
- */\r
-public class SDCServiceProxyInfo {\r
-  private String serviceAddr;\r
-  \r
-  private String xEcompInstanceId;\r
-  \r
-  private String authorization;\r
-\r
-  /**\r
-   * @return the serviceAddr\r
-   */\r
-  @JsonProperty\r
-  public String getServiceAddr() {\r
-    return serviceAddr;\r
-  }\r
-\r
-  /**\r
-   * @param serviceAddr the serviceAddr to set\r
-   */\r
-  @JsonProperty\r
-  public void setServiceAddr(String serviceAddr) {\r
-    this.serviceAddr = serviceAddr;\r
-  }\r
-\r
-  /**\r
-   * @return the xEcompInstanceId\r
-   */\r
-  @JsonProperty\r
-  public String getxEcompInstanceId() {\r
-    return xEcompInstanceId;\r
-  }\r
-\r
-  /**\r
-   * @param xEcompInstanceId the xEcompInstanceId to set\r
-   */\r
-  @JsonProperty\r
-  public void setxEcompInstanceId(String xEcompInstanceId) {\r
-    this.xEcompInstanceId = xEcompInstanceId;\r
-  }\r
-\r
-  /**\r
-   * @return the authorization\r
-   */\r
-  @JsonProperty\r
-  public String getAuthorization() {\r
-    return authorization;\r
-  }\r
-\r
-  /**\r
-   * @param authorization the authorization to set\r
-   */\r
-  @JsonProperty\r
-  public void setAuthorization(String authorization) {\r
-    this.authorization = authorization;\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ *
+ */
+public class SDCServiceProxyInfo {
+  private String serviceAddr;
+  
+  private String xEcompInstanceId;
+  
+  private String authorization;
+
+  /**
+   * @return the serviceAddr
+   */
+  @JsonProperty
+  public String getServiceAddr() {
+    return serviceAddr;
+  }
+
+  /**
+   * @param serviceAddr the serviceAddr to set
+   */
+  @JsonProperty
+  public void setServiceAddr(String serviceAddr) {
+    this.serviceAddr = serviceAddr;
+  }
+
+  /**
+   * @return the xEcompInstanceId
+   */
+  @JsonProperty
+  public String getxEcompInstanceId() {
+    return xEcompInstanceId;
+  }
+
+  /**
+   * @param xEcompInstanceId the xEcompInstanceId to set
+   */
+  @JsonProperty
+  public void setxEcompInstanceId(String xEcompInstanceId) {
+    this.xEcompInstanceId = xEcompInstanceId;
+  }
+
+  /**
+   * @return the authorization
+   */
+  @JsonProperty
+  public String getAuthorization() {
+    return authorization;
+  }
+
+  /**
+   * @param authorization the authorization to set
+   */
+  @JsonProperty
+  public void setAuthorization(String authorization) {
+    this.authorization = authorization;
+  }
+
+}
@@ -1,20 +1,20 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.config;\r
-\r
-/**\r
- *\r
- */\r
-public enum AdapterType {\r
-  DEFAULT, SDC\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.config;
+
+/**
+ *
+ */
+public enum AdapterType {
+  DEFAULT, SDC
+
+}
@@ -1,54 +1,54 @@
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.config;\r
-\r
-import java.io.FileNotFoundException;\r
-import java.io.IOException;\r
-import java.io.InputStream;\r
-import java.util.Properties;\r
-\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-public class Config {\r
-    private static Logger log = LoggerFactory.getLogger(Config.class);\r
-    private static String configFilePath = "bpmn.config.properties";\r
-    public final static String HANDLER_ClASS = "handlerClass";\r
-    public final static String TEMPLATE_PATH = "templatePath";\r
-\r
-    public final static Properties PROPERTIES = load();\r
-\r
-    public static Properties load() {\r
-        Properties properties = new Properties();\r
-        InputStream in = null;\r
-        try {\r
-            in = Config.class.getClassLoader().getResourceAsStream(configFilePath);\r
-            properties.load(in);\r
-        } catch (FileNotFoundException e) {\r
-            log.error(configFilePath, e);\r
-        } catch (IOException e) {\r
-            log.error(configFilePath, e);\r
-        } catch (Exception e) {\r
-            log.error(configFilePath, e);\r
-        } finally {\r
-            if (in != null) {\r
-                try {\r
-                    in.close();\r
-                } catch (IOException e) {\r
-                    log.error(configFilePath, e);\r
-                }\r
-            }\r
-        }\r
-\r
-        return properties;\r
-    }\r
-}\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.config;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class Config {
+    private static Logger log = LoggerFactory.getLogger(Config.class);
+    private static String configFilePath = "bpmn.config.properties";
+    public final static String HANDLER_ClASS = "handlerClass";
+    public final static String TEMPLATE_PATH = "templatePath";
+
+    public final static Properties PROPERTIES = load();
+
+    public static Properties load() {
+        Properties properties = new Properties();
+        InputStream in = null;
+        try {
+            in = Config.class.getClassLoader().getResourceAsStream(configFilePath);
+            properties.load(in);
+        } catch (FileNotFoundException e) {
+            log.error(configFilePath, e);
+        } catch (IOException e) {
+            log.error(configFilePath, e);
+        } catch (Exception e) {
+            log.error(configFilePath, e);
+        } finally {
+            if (in != null) {
+                try {
+                    in.close();
+                } catch (IOException e) {
+                    log.error(configFilePath, e);
+                }
+            }
+        }
+
+        return properties;
+    }
+}
@@ -1,59 +1,59 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.externalservice.sdc.entity;\r
-\r
-import com.fasterxml.jackson.annotation.JsonProperty;\r
-import com.google.gson.annotations.SerializedName;\r
-\r
-/**\r
- *\r
- */\r
-public class ActivityContent {\r
-  @JsonProperty(value="class") // for dropwizard's Jackson\r
-  @SerializedName("class")  // for Gson\r
-  public String clazz;\r
-  \r
-  private String scriptFormat;\r
-  \r
-  private String script;\r
-\r
-\r
-  /**\r
-   * @return the scriptFormat\r
-   */\r
-  public String getScriptFormat() {\r
-    return scriptFormat;\r
-  }\r
-\r
-  /**\r
-   * @param scriptFormat the scriptFormat to set\r
-   */\r
-  public void setScriptFormat(String scriptFormat) {\r
-    this.scriptFormat = scriptFormat;\r
-  }\r
-\r
-  /**\r
-   * @return the script\r
-   */\r
-  public String getScript() {\r
-    return script;\r
-  }\r
-\r
-  /**\r
-   * @param script the script to set\r
-   */\r
-  public void setScript(String script) {\r
-    this.script = script;\r
-  }\r
-  \r
-  \r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.externalservice.sdc.entity;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.gson.annotations.SerializedName;
+
+/**
+ *
+ */
+public class ActivityContent {
+  @JsonProperty(value="class") // for dropwizard's Jackson
+  @SerializedName("class")  // for Gson
+  public String clazz;
+  
+  private String scriptFormat;
+  
+  private String script;
+
+
+  /**
+   * @return the scriptFormat
+   */
+  public String getScriptFormat() {
+    return scriptFormat;
+  }
+
+  /**
+   * @param scriptFormat the scriptFormat to set
+   */
+  public void setScriptFormat(String scriptFormat) {
+    this.scriptFormat = scriptFormat;
+  }
+
+  /**
+   * @return the script
+   */
+  public String getScript() {
+    return script;
+  }
+
+  /**
+   * @param script the script to set
+   */
+  public void setScript(String script) {
+    this.script = script;
+  }
+  
+  
+}
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.externalservice.sdc.entity;\r
-\r
-/**\r
- *\r
- */\r
-public class ActivitySpec {\r
-  private String id;\r
-  \r
-  private String versionId;\r
-  \r
-  private String name;\r
-  \r
-  private String description;\r
-  \r
-  private String type;\r
-  \r
-  private String content;\r
-  \r
-  private String[] categoryList;\r
-\r
-  private Parameter[] inputs;\r
-  \r
-  private Parameter[] outputs;\r
-\r
-  private String status;\r
-\r
-  /**\r
-   * @return the id\r
-   */\r
-  public String getId() {\r
-    return id;\r
-  }\r
-\r
-  /**\r
-   * @param id the id to set\r
-   */\r
-  public void setId(String id) {\r
-    this.id = id;\r
-  }\r
-\r
-  /**\r
-   * @return the versionId\r
-   */\r
-  public String getVersionId() {\r
-    return versionId;\r
-  }\r
-\r
-  /**\r
-   * @param versionId the versionId to set\r
-   */\r
-  public void setVersionId(String versionId) {\r
-    this.versionId = versionId;\r
-  }\r
-\r
-  /**\r
-   * @return the name\r
-   */\r
-  public String getName() {\r
-    return name;\r
-  }\r
-\r
-  /**\r
-   * @param name the name to set\r
-   */\r
-  public void setName(String name) {\r
-    this.name = name;\r
-  }\r
-\r
-  /**\r
-   * @return the description\r
-   */\r
-  public String getDescription() {\r
-    return description;\r
-  }\r
-\r
-  /**\r
-   * @param description the description to set\r
-   */\r
-  public void setDescription(String description) {\r
-    this.description = description;\r
-  }\r
-\r
-  /**\r
-   * @return the type\r
-   */\r
-  public String getType() {\r
-    return type;\r
-  }\r
-\r
-  /**\r
-   * @param type the type to set\r
-   */\r
-  public void setType(String type) {\r
-    this.type = type;\r
-  }\r
-\r
-  /**\r
-   * @return the content\r
-   */\r
-  public String getContent() {\r
-    return content;\r
-  }\r
-\r
-  /**\r
-   * @param content the content to set\r
-   */\r
-  public void setContent(String content) {\r
-    this.content = content;\r
-  }\r
-\r
-  /**\r
-   * @return the categoryList\r
-   */\r
-  public String[] getCategoryList() {\r
-    return categoryList;\r
-  }\r
-\r
-  /**\r
-   * @param categoryList the categoryList to set\r
-   */\r
-  public void setCategoryList(String[] categoryList) {\r
-    this.categoryList = categoryList;\r
-  }\r
-\r
-  /**\r
-   * @return the inputs\r
-   */\r
-  public Parameter[] getInputs() {\r
-    return inputs;\r
-  }\r
-\r
-  /**\r
-   * @param inputs the inputs to set\r
-   */\r
-  public void setInputs(Parameter[] inputs) {\r
-    this.inputs = inputs;\r
-  }\r
-\r
-  /**\r
-   * @return the outputs\r
-   */\r
-  public Parameter[] getOutputs() {\r
-    return outputs;\r
-  }\r
-\r
-  /**\r
-   * @param outputs the outputs to set\r
-   */\r
-  public void setOutputs(Parameter[] outputs) {\r
-    this.outputs = outputs;\r
-  }\r
-\r
-  /**\r
-   * @return the status\r
-   */\r
-  public String getStatus() {\r
-    return status;\r
-  }\r
-\r
-  /**\r
-   * @param status the status to set\r
-   */\r
-  public void setStatus(String status) {\r
-    this.status = status;\r
-  }\r
-  \r
-  \r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.externalservice.sdc.entity;
+
+/**
+ *
+ */
+public class ActivitySpec {
+  private String id;
+  
+  private String versionId;
+  
+  private String name;
+  
+  private String description;
+  
+  private String type;
+  
+  private String content;
+  
+  private String[] categoryList;
+
+  private Parameter[] inputs;
+  
+  private Parameter[] outputs;
+
+  private String status;
+
+  /**
+   * @return the id
+   */
+  public String getId() {
+    return id;
+  }
+
+  /**
+   * @param id the id to set
+   */
+  public void setId(String id) {
+    this.id = id;
+  }
+
+  /**
+   * @return the versionId
+   */
+  public String getVersionId() {
+    return versionId;
+  }
+
+  /**
+   * @param versionId the versionId to set
+   */
+  public void setVersionId(String versionId) {
+    this.versionId = versionId;
+  }
+
+  /**
+   * @return the name
+   */
+  public String getName() {
+    return name;
+  }
+
+  /**
+   * @param name the name to set
+   */
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  /**
+   * @return the description
+   */
+  public String getDescription() {
+    return description;
+  }
+
+  /**
+   * @param description the description to set
+   */
+  public void setDescription(String description) {
+    this.description = description;
+  }
+
+  /**
+   * @return the type
+   */
+  public String getType() {
+    return type;
+  }
+
+  /**
+   * @param type the type to set
+   */
+  public void setType(String type) {
+    this.type = type;
+  }
+
+  /**
+   * @return the content
+   */
+  public String getContent() {
+    return content;
+  }
+
+  /**
+   * @param content the content to set
+   */
+  public void setContent(String content) {
+    this.content = content;
+  }
+
+  /**
+   * @return the categoryList
+   */
+  public String[] getCategoryList() {
+    return categoryList;
+  }
+
+  /**
+   * @param categoryList the categoryList to set
+   */
+  public void setCategoryList(String[] categoryList) {
+    this.categoryList = categoryList;
+  }
+
+  /**
+   * @return the inputs
+   */
+  public Parameter[] getInputs() {
+    return inputs;
+  }
+
+  /**
+   * @param inputs the inputs to set
+   */
+  public void setInputs(Parameter[] inputs) {
+    this.inputs = inputs;
+  }
+
+  /**
+   * @return the outputs
+   */
+  public Parameter[] getOutputs() {
+    return outputs;
+  }
+
+  /**
+   * @param outputs the outputs to set
+   */
+  public void setOutputs(Parameter[] outputs) {
+    this.outputs = outputs;
+  }
+
+  /**
+   * @return the status
+   */
+  public String getStatus() {
+    return status;
+  }
+
+  /**
+   * @param status the status to set
+   */
+  public void setStatus(String status) {
+    this.status = status;
+  }
+  
+  
+}
@@ -1,87 +1,87 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.externalservice.sdc.entity;\r
-\r
-import com.google.gson.annotations.SerializedName;\r
-\r
-/**\r
- *\r
- */\r
-public class Parameter {\r
-  private String name;\r
-  \r
-  private String type;\r
-  \r
-  @SerializedName("default")\r
-  private String defaultValue;\r
-  \r
-  private String value;\r
-\r
-  /**\r
-   * @return the name\r
-   */\r
-  public String getName() {\r
-    return name;\r
-  }\r
-\r
-  /**\r
-   * @param name the name to set\r
-   */\r
-  public void setName(String name) {\r
-    this.name = name;\r
-  }\r
-\r
-  /**\r
-   * @return the type\r
-   */\r
-  public String getType() {\r
-    return type;\r
-  }\r
-\r
-  /**\r
-   * @param type the type to set\r
-   */\r
-  public void setType(String type) {\r
-    this.type = type;\r
-  }\r
-\r
-  /**\r
-   * @return the defaultValue\r
-   */\r
-  public String getDefault() {\r
-    return defaultValue;\r
-  }\r
-\r
-  /**\r
-   * @param defaultValue the defaultValue to set\r
-   */\r
-  public void setDefault(String defaultValue) {\r
-    this.defaultValue = defaultValue;\r
-  }\r
-\r
-  /**\r
-   * @return the value\r
-   */\r
-  public String getValue() {\r
-    return value;\r
-  }\r
-\r
-  /**\r
-   * @param value the value to set\r
-   */\r
-  public void setValue(String value) {\r
-    this.value = value;\r
-  }\r
-  \r
-  \r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.externalservice.sdc.entity;
+
+import com.google.gson.annotations.SerializedName;
+
+/**
+ *
+ */
+public class Parameter {
+  private String name;
+  
+  private String type;
+  
+  @SerializedName("default")
+  private String defaultValue;
+  
+  private String value;
+
+  /**
+   * @return the name
+   */
+  public String getName() {
+    return name;
+  }
+
+  /**
+   * @param name the name to set
+   */
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  /**
+   * @return the type
+   */
+  public String getType() {
+    return type;
+  }
+
+  /**
+   * @param type the type to set
+   */
+  public void setType(String type) {
+    this.type = type;
+  }
+
+  /**
+   * @return the defaultValue
+   */
+  public String getDefault() {
+    return defaultValue;
+  }
+
+  /**
+   * @param defaultValue the defaultValue to set
+   */
+  public void setDefault(String defaultValue) {
+    this.defaultValue = defaultValue;
+  }
+
+  /**
+   * @return the value
+   */
+  public String getValue() {
+    return value;
+  }
+
+  /**
+   * @param value the value to set
+   */
+  public void setValue(String value) {
+    this.value = value;
+  }
+  
+  
+
+}
@@ -1,42 +1,42 @@
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-public class DataObject {\r
-    private String id;\r
-    private String name;\r
-    private String value;\r
-\r
-    public String getId() {\r
-        return id;\r
-    }\r
-\r
-    public void setId(String id) {\r
-        this.id = id;\r
-    }\r
-\r
-    public String getName() {\r
-        return name;\r
-    }\r
-\r
-    public void setName(String name) {\r
-        this.name = name;\r
-    }\r
-\r
-    public String getValue() {\r
-        return value;\r
-    }\r
-\r
-    public void setValue(String value) {\r
-        this.value = value;\r
-    }\r
-}\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+public class DataObject {
+    private String id;
+    private String name;
+    private String value;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+}
@@ -1,85 +1,85 @@
-/**\r
- * Copyright (c) 2017-2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-import java.util.List;\r
-\r
-public class Element {\r
-    public enum TYPE {\r
-               startEvent, \r
-               endEvent, \r
-               errorStartEvent,\r
-               errorEndEvent,\r
-               serviceTask, \r
-               scriptTask,\r
-               exclusiveGateway, \r
-               parallelGateway, \r
-               restTask, \r
-               intermediateCatchEvent\r
-    };\r
-\r
-    private String id;\r
-    private String name;\r
-    private TYPE type;\r
-    private String documentation;\r
-    private Position position;\r
-    private List<String> connections;\r
-\r
-    public String getId() {\r
-        return id;\r
-    }\r
-\r
-    public Position getPosition() {\r
-        return position;\r
-    }\r
-\r
-    public void setPosition(Position position) {\r
-        this.position = position;\r
-    }\r
-\r
-    public List<String> getConnections() {\r
-        return connections;\r
-    }\r
-\r
-    public void setConnections(List<String> connections) {\r
-        this.connections = connections;\r
-    }\r
-\r
-    public void setId(String id) {\r
-        this.id = id;\r
-    }\r
-\r
-    public String getName() {\r
-        return name;\r
-    }\r
-\r
-    public void setName(String name) {\r
-        this.name = name;\r
-    }\r
-\r
-    public String getDocumentation() {\r
-        return documentation;\r
-    }\r
-\r
-    public void setDocumentation(String documentation) {\r
-        this.documentation = documentation;\r
-    }\r
-\r
-    public TYPE getType() {\r
-        return type;\r
-    }\r
-\r
-    public void setType(TYPE type) {\r
-        this.type = type;\r
-    }\r
-\r
-}\r
+/**
+ * Copyright (c) 2017-2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+import java.util.List;
+
+public class Element {
+    public enum TYPE {
+               startEvent, 
+               endEvent, 
+               errorStartEvent,
+               errorEndEvent,
+               serviceTask, 
+               scriptTask,
+               exclusiveGateway, 
+               parallelGateway, 
+               restTask, 
+               intermediateCatchEvent
+    };
+
+    private String id;
+    private String name;
+    private TYPE type;
+    private String documentation;
+    private Position position;
+    private List<String> connections;
+
+    public String getId() {
+        return id;
+    }
+
+    public Position getPosition() {
+        return position;
+    }
+
+    public void setPosition(Position position) {
+        this.position = position;
+    }
+
+    public List<String> getConnections() {
+        return connections;
+    }
+
+    public void setConnections(List<String> connections) {
+        this.connections = connections;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getDocumentation() {
+        return documentation;
+    }
+
+    public void setDocumentation(String documentation) {
+        this.documentation = documentation;
+    }
+
+    public TYPE getType() {
+        return type;
+    }
+
+    public void setType(TYPE type) {
+        this.type = type;
+    }
+
+}
@@ -1,16 +1,16 @@
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-public class EndEvent extends Element {\r
-    public final static String TYPE = "endEvent";\r
-}\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+public class EndEvent extends Element {
+    public final static String TYPE = "endEvent";
+}
@@ -1,16 +1,16 @@
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-public class ExclusiveGateway extends Element {\r
-    public final static String TYPE = "exclusiveGateway";\r
-}\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+public class ExclusiveGateway extends Element {
+    public final static String TYPE = "exclusiveGateway";
+}
@@ -1,25 +1,25 @@
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-public class IntermediateCatchEvent extends Element {\r
-    private TimerEventDefinition timerEventDefinition;\r
-\r
-    public TimerEventDefinition getTimerEventDefinition() {\r
-        return timerEventDefinition;\r
-    }\r
-\r
-    public void setTimerEventDefinition(TimerEventDefinition timerEventDefinition) {\r
-        this.timerEventDefinition = timerEventDefinition;\r
-    }\r
-\r
-}\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+public class IntermediateCatchEvent extends Element {
+    private TimerEventDefinition timerEventDefinition;
+
+    public TimerEventDefinition getTimerEventDefinition() {
+        return timerEventDefinition;
+    }
+
+    public void setTimerEventDefinition(TimerEventDefinition timerEventDefinition) {
+        this.timerEventDefinition = timerEventDefinition;
+    }
+
+}
@@ -1,16 +1,16 @@
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-public class ParallelGateway extends Element {\r
-    public final static String TYPE = "parallelGateway";\r
-}\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+public class ParallelGateway extends Element {
+    public final static String TYPE = "parallelGateway";
+}
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-import com.fasterxml.jackson.annotation.JsonInclude;\r
-import com.fasterxml.jackson.annotation.JsonInclude.Include;\r
-import com.fasterxml.jackson.core.JsonProcessingException;\r
-import com.fasterxml.jackson.databind.ObjectMapper;\r
-\r
-public class Parameter {\r
-    private static Logger log = LoggerFactory.getLogger(Parameter.class);\r
-    private String description = "";\r
-    private String name;\r
-    private String position;\r
-    private boolean required;\r
-    private String type;\r
-\r
-    // body parameter may be a json object\r
-    private Object value;\r
-\r
-    @JsonInclude(Include.NON_NULL)\r
-    private String valueSource;\r
-\r
-    public String getDescription() {\r
-        return description;\r
-    }\r
-\r
-    public void setDescription(String description) {\r
-        this.description = description;\r
-    }\r
-\r
-    public String getName() {\r
-        return name;\r
-    }\r
-\r
-    public void setName(String name) {\r
-        this.name = name;\r
-    }\r
-\r
-    public String getPosition() {\r
-        return position;\r
-    }\r
-\r
-    public void setPosition(String position) {\r
-        this.position = position;\r
-    }\r
-\r
-    public boolean isRequired() {\r
-        return required;\r
-    }\r
-\r
-    public void setRequired(boolean required) {\r
-        this.required = required;\r
-    }\r
-\r
-    public String getType() {\r
-        return type;\r
-    }\r
-\r
-    public void setType(String type) {\r
-        this.type = type;\r
-    }\r
-\r
-    public Object getValue() {\r
-        return value;\r
-    }\r
-\r
-    public void setValue(Object value) {\r
-        this.value = value;\r
-    }\r
-\r
-    public String getValueSource() {\r
-        return valueSource;\r
-    }\r
-\r
-    public void setValueSource(String valueSource) {\r
-        this.valueSource = valueSource;\r
-    }\r
-\r
-    public String toString() {\r
-        ObjectMapper mapper = new ObjectMapper();\r
-        String result = null;\r
-        try {\r
-            result = mapper.writeValueAsString(this);\r
-        } catch (JsonProcessingException e) {\r
-            log.error("fail to convert parameter to json string", e);\r
-        }\r
-        return result;\r
-    }\r
-\r
-}\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class Parameter {
+    private static Logger log = LoggerFactory.getLogger(Parameter.class);
+    private String description = "";
+    private String name;
+    private String position;
+    private boolean required;
+    private String type;
+
+    // body parameter may be a json object
+    private Object value;
+
+    @JsonInclude(Include.NON_NULL)
+    private String valueSource;
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getPosition() {
+        return position;
+    }
+
+    public void setPosition(String position) {
+        this.position = position;
+    }
+
+    public boolean isRequired() {
+        return required;
+    }
+
+    public void setRequired(boolean required) {
+        this.required = required;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public Object getValue() {
+        return value;
+    }
+
+    public void setValue(Object value) {
+        this.value = value;
+    }
+
+    public String getValueSource() {
+        return valueSource;
+    }
+
+    public void setValueSource(String valueSource) {
+        this.valueSource = valueSource;
+    }
+
+    public String toString() {
+        ObjectMapper mapper = new ObjectMapper();
+        String result = null;
+        try {
+            result = mapper.writeValueAsString(this);
+        } catch (JsonProcessingException e) {
+            log.error("fail to convert parameter to json string", e);
+        }
+        return result;
+    }
+
+}
@@ -1,33 +1,33 @@
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-public class Position {\r
-    private int left;\r
-    private int top;\r
-\r
-    public int getLeft() {\r
-        return left;\r
-    }\r
-\r
-    public void setLeft(int left) {\r
-        this.left = left;\r
-    }\r
-\r
-    public int getTop() {\r
-        return top;\r
-    }\r
-\r
-    public void setTop(int top) {\r
-        this.top = top;\r
-    }\r
-}\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+public class Position {
+    private int left;
+    private int top;
+
+    public int getLeft() {
+        return left;
+    }
+
+    public void setLeft(int left) {
+        this.left = left;
+    }
+
+    public int getTop() {
+        return top;
+    }
+
+    public void setTop(int top) {
+        this.top = top;
+    }
+}
@@ -1,67 +1,67 @@
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-public class Process {\r
-    private String id;\r
-    private boolean isExecutable;\r
-    private List<Element> elementList = new ArrayList<Element>();\r
-    private List<SequenceFlow> sequenceFlowList = new ArrayList<SequenceFlow>();\r
-    private List<DataObject> dataObjectList = new ArrayList<DataObject>();\r
-\r
-    public Process(String id) {\r
-        this.id = id;\r
-    }\r
-\r
-    public String getId() {\r
-        return id;\r
-    }\r
-\r
-    public void setId(String id) {\r
-        this.id = id;\r
-    }\r
-\r
-    public boolean isExecutable() {\r
-        return isExecutable;\r
-    }\r
-\r
-    public void setExecutable(boolean isExecutable) {\r
-        this.isExecutable = isExecutable;\r
-    }\r
-\r
-    public List<Element> getElementList() {\r
-        return elementList;\r
-    }\r
-\r
-    public void setElementList(List<Element> elementList) {\r
-        this.elementList = elementList;\r
-    }\r
-\r
-    public List<SequenceFlow> getSequenceFlowList() {\r
-        return sequenceFlowList;\r
-    }\r
-\r
-    public void setSequenceFlowList(List<SequenceFlow> sequenceFlowList) {\r
-        this.sequenceFlowList = sequenceFlowList;\r
-    }\r
-\r
-    public List<DataObject> getDataObjectList() {\r
-        return dataObjectList;\r
-    }\r
-\r
-    public void setDataObjectList(List<DataObject> dataObjectList) {\r
-        this.dataObjectList = dataObjectList;\r
-    }\r
-}\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Process {
+    private String id;
+    private boolean isExecutable;
+    private List<Element> elementList = new ArrayList<Element>();
+    private List<SequenceFlow> sequenceFlowList = new ArrayList<SequenceFlow>();
+    private List<DataObject> dataObjectList = new ArrayList<DataObject>();
+
+    public Process(String id) {
+        this.id = id;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public boolean isExecutable() {
+        return isExecutable;
+    }
+
+    public void setExecutable(boolean isExecutable) {
+        this.isExecutable = isExecutable;
+    }
+
+    public List<Element> getElementList() {
+        return elementList;
+    }
+
+    public void setElementList(List<Element> elementList) {
+        this.elementList = elementList;
+    }
+
+    public List<SequenceFlow> getSequenceFlowList() {
+        return sequenceFlowList;
+    }
+
+    public void setSequenceFlowList(List<SequenceFlow> sequenceFlowList) {
+        this.sequenceFlowList = sequenceFlowList;
+    }
+
+    public List<DataObject> getDataObjectList() {
+        return dataObjectList;
+    }
+
+    public void setDataObjectList(List<DataObject> dataObjectList) {
+        this.dataObjectList = dataObjectList;
+    }
+}
@@ -1,95 +1,95 @@
-/**\r
- * Copyright (c) 2017-2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-import java.util.List;\r
-\r
-import org.onap.sdc.workflowdesigner.config.Config;\r
-\r
-public class RestServiceTask extends ServiceTask {\r
-    private static String handler = Config.PROPERTIES.getProperty(Config.HANDLER_ClASS);\r
-       \r
-//     private String restConfigId;\r
-//     public String getRestConfigId() {\r
-//             return restConfigId;\r
-//     }\r
-//     public void setRestConfigId(String restConfigId) {\r
-//             this.restConfigId = restConfigId;\r
-//     }\r
-       private List<String> produces;\r
-       private List<String> consumes;\r
-       \r
-       \r
-       private List<Parameter> parameters;\r
-       private String baseUrl;\r
-       private String serviceName;\r
-       private String serviceVersion;\r
-       private String path;\r
-       private String method;\r
-       \r
-       public String getBaseUrl() {\r
-               return baseUrl;\r
-       }\r
-       public void setBaseUrl(String url) {\r
-               this.baseUrl = url;\r
-       }\r
-       \r
-       public String getMethod() {\r
-               return method;\r
-       }\r
-       \r
-       public static String getHandler() {\r
-               return handler;\r
-       }\r
-       public static void setHandler(String handler) {\r
-               RestServiceTask.handler = handler;\r
-       }\r
-       public void setMethod(String method) {\r
-               this.method = method;\r
-       }\r
-       public List<String> getProduces() {\r
-               return produces;\r
-       }\r
-       public void setProduces(List<String> produces) {\r
-               this.produces = produces;\r
-       }\r
-       public List<String> getConsumes() {\r
-               return consumes;\r
-       }\r
-       public void setConsumes(List<String> consumes) {\r
-               this.consumes = consumes;\r
-       }\r
-       public List<Parameter> getParameters() {\r
-               return parameters;\r
-       }\r
-       public void setParameters(List<Parameter> parameters) {\r
-               this.parameters = parameters;\r
-       }\r
-       public String getServiceName() {\r
-               return serviceName;\r
-       }\r
-       public void setServiceName(String serviceName) {\r
-               this.serviceName = serviceName;\r
-       }\r
-       public String getServiceVersion() {\r
-               return serviceVersion;\r
-       }\r
-       public void setServiceVersion(String serviceVersion) {\r
-               this.serviceVersion = serviceVersion;\r
-       }\r
-       public String getPath() {\r
-               return path;\r
-       }\r
-       public void setPath(String path) {\r
-               this.path = path;\r
-       }\r
-}\r
+/**
+ * Copyright (c) 2017-2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+import java.util.List;
+
+import org.onap.sdc.workflowdesigner.config.Config;
+
+public class RestServiceTask extends ServiceTask {
+    private static String handler = Config.PROPERTIES.getProperty(Config.HANDLER_ClASS);
+       
+//     private String restConfigId;
+//     public String getRestConfigId() {
+//             return restConfigId;
+//     }
+//     public void setRestConfigId(String restConfigId) {
+//             this.restConfigId = restConfigId;
+//     }
+       private List<String> produces;
+       private List<String> consumes;
+       
+       
+       private List<Parameter> parameters;
+       private String baseUrl;
+       private String serviceName;
+       private String serviceVersion;
+       private String path;
+       private String method;
+       
+       public String getBaseUrl() {
+               return baseUrl;
+       }
+       public void setBaseUrl(String url) {
+               this.baseUrl = url;
+       }
+       
+       public String getMethod() {
+               return method;
+       }
+       
+       public static String getHandler() {
+               return handler;
+       }
+       public static void setHandler(String handler) {
+               RestServiceTask.handler = handler;
+       }
+       public void setMethod(String method) {
+               this.method = method;
+       }
+       public List<String> getProduces() {
+               return produces;
+       }
+       public void setProduces(List<String> produces) {
+               this.produces = produces;
+       }
+       public List<String> getConsumes() {
+               return consumes;
+       }
+       public void setConsumes(List<String> consumes) {
+               this.consumes = consumes;
+       }
+       public List<Parameter> getParameters() {
+               return parameters;
+       }
+       public void setParameters(List<Parameter> parameters) {
+               this.parameters = parameters;
+       }
+       public String getServiceName() {
+               return serviceName;
+       }
+       public void setServiceName(String serviceName) {
+               this.serviceName = serviceName;
+       }
+       public String getServiceVersion() {
+               return serviceVersion;
+       }
+       public void setServiceVersion(String serviceVersion) {
+               this.serviceVersion = serviceVersion;
+       }
+       public String getPath() {
+               return path;
+       }
+       public void setPath(String path) {
+               this.path = path;
+       }
+}
@@ -1,33 +1,33 @@
-/**\r
- * Copyright (c) 2017-2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-public class ScriptTask extends Element {\r
-    private String scriptFormat;\r
-    private String script;\r
-\r
-    public String getScriptFormat() {\r
-        return scriptFormat;\r
-    }\r
-\r
-    public void setScriptFormat(String scriptFormat) {\r
-        this.scriptFormat = scriptFormat;\r
-    }\r
-\r
-    public String getScript() {\r
-        return script;\r
-    }\r
-\r
-    public void setScript(String script) {\r
-        this.script = script;\r
-    }\r
-}\r
+/**
+ * Copyright (c) 2017-2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+public class ScriptTask extends Element {
+    private String scriptFormat;
+    private String script;
+
+    public String getScriptFormat() {
+        return scriptFormat;
+    }
+
+    public void setScriptFormat(String scriptFormat) {
+        this.scriptFormat = scriptFormat;
+    }
+
+    public String getScript() {
+        return script;
+    }
+
+    public void setScript(String script) {
+        this.script = script;
+    }
+}
@@ -1,70 +1,70 @@
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-public class SequenceFlow {\r
-    private String id = "";\r
-    private String name;\r
-    private String sourceRef;\r
-    private String targetRef;\r
-    private String documentation;\r
-    private String condition;\r
-\r
-    public String getId() {\r
-        return id;\r
-    }\r
-\r
-    public void setId(String id) {\r
-        this.id = id;\r
-    }\r
-\r
-    public String getName() {\r
-        return name;\r
-    }\r
-\r
-    public void setName(String name) {\r
-        this.name = name;\r
-    }\r
-\r
-    public String getSourceRef() {\r
-        return sourceRef;\r
-    }\r
-\r
-    public void setSourceRef(String sourceRef) {\r
-        this.sourceRef = sourceRef;\r
-    }\r
-\r
-    public String getTargetRef() {\r
-        return targetRef;\r
-    }\r
-\r
-    public void setTargetRef(String targetRef) {\r
-        this.targetRef = targetRef;\r
-    }\r
-\r
-    public String getDocumentation() {\r
-        return documentation;\r
-    }\r
-\r
-    public void setDocumentation(String documentation) {\r
-        this.documentation = documentation;\r
-    }\r
-\r
-    public String getCondition() {\r
-        return condition;\r
-    }\r
-\r
-    public void setCondition(String condition) {\r
-        this.condition = condition;\r
-    }\r
-\r
-}\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+public class SequenceFlow {
+    private String id = "";
+    private String name;
+    private String sourceRef;
+    private String targetRef;
+    private String documentation;
+    private String condition;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getSourceRef() {
+        return sourceRef;
+    }
+
+    public void setSourceRef(String sourceRef) {
+        this.sourceRef = sourceRef;
+    }
+
+    public String getTargetRef() {
+        return targetRef;
+    }
+
+    public void setTargetRef(String targetRef) {
+        this.targetRef = targetRef;
+    }
+
+    public String getDocumentation() {
+        return documentation;
+    }
+
+    public void setDocumentation(String documentation) {
+        this.documentation = documentation;
+    }
+
+    public String getCondition() {
+        return condition;
+    }
+
+    public void setCondition(String condition) {
+        this.condition = condition;
+    }
+
+}
@@ -1,44 +1,44 @@
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-import java.util.List;\r
-\r
-public class ServiceTask extends Element {\r
-       private String className;\r
-       private List<Parameter> inputs;\r
-       private List<Parameter> outputs;\r
-\r
-       public String getClassName() {\r
-               return className;\r
-       }\r
-\r
-       public void setClassName(String className) {\r
-               this.className = className;\r
-       }\r
-\r
-       public List<Parameter> getInputs() {\r
-               return inputs;\r
-       }\r
-\r
-       public void setInputs(List<Parameter> inputs) {\r
-               this.inputs = inputs;\r
-       }\r
-\r
-       public List<Parameter> getOutputs() {\r
-               return outputs;\r
-       }\r
-\r
-       public void setOutputs(List<Parameter> outputs) {\r
-               this.outputs = outputs;\r
-       }\r
-}\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+import java.util.List;
+
+public class ServiceTask extends Element {
+       private String className;
+       private List<Parameter> inputs;
+       private List<Parameter> outputs;
+
+       public String getClassName() {
+               return className;
+       }
+
+       public void setClassName(String className) {
+               this.className = className;
+       }
+
+       public List<Parameter> getInputs() {
+               return inputs;
+       }
+
+       public void setInputs(List<Parameter> inputs) {
+               this.inputs = inputs;
+       }
+
+       public List<Parameter> getOutputs() {
+               return outputs;
+       }
+
+       public void setOutputs(List<Parameter> outputs) {
+               this.outputs = outputs;
+       }
+}
@@ -1,29 +1,29 @@
-/**\r
- * Copyright (c) 2017-2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-import java.util.List;\r
-\r
-import com.fasterxml.jackson.annotation.JsonProperty;\r
-\r
-public class StartEvent extends Element {\r
-    @JsonProperty("parameters")\r
-       private List<Parameter> parameters;\r
-\r
-    public List<Parameter> getParameters() {\r
-        return parameters;\r
-    }\r
-\r
-    public void setParameters(List<Parameter> parameters) {\r
-        this.parameters = parameters;\r
-    }\r
-}\r
+/**
+ * Copyright (c) 2017-2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class StartEvent extends Element {
+    @JsonProperty("parameters")
+       private List<Parameter> parameters;
+
+    public List<Parameter> getParameters() {
+        return parameters;
+    }
+
+    public void setParameters(List<Parameter> parameters) {
+        this.parameters = parameters;
+    }
+}
@@ -1,52 +1,52 @@
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-public class TimerEventDefinition {\r
-    private String type;\r
-    private String timeDuration;\r
-    private String timeDate;\r
-    private String timeCycle;\r
-\r
-    public String getType() {\r
-        return type;\r
-    }\r
-\r
-    public void setType(String type) {\r
-        this.type = type;\r
-    }\r
-\r
-    public String getTimeDuration() {\r
-        return timeDuration;\r
-    }\r
-\r
-    public void setTimeDuration(String timeDuration) {\r
-        this.timeDuration = timeDuration;\r
-    }\r
-\r
-    public String getTimeDate() {\r
-        return timeDate;\r
-    }\r
-\r
-    public void setTimeDate(String timeDate) {\r
-        this.timeDate = timeDate;\r
-    }\r
-\r
-    public String getTimeCycle() {\r
-        return timeCycle;\r
-    }\r
-\r
-    public void setTimeCycle(String timeCycle) {\r
-        this.timeCycle = timeCycle;\r
-    }\r
-\r
-}\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+public class TimerEventDefinition {
+    private String type;
+    private String timeDuration;
+    private String timeDate;
+    private String timeCycle;
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getTimeDuration() {
+        return timeDuration;
+    }
+
+    public void setTimeDuration(String timeDuration) {
+        this.timeDuration = timeDuration;
+    }
+
+    public String getTimeDate() {
+        return timeDate;
+    }
+
+    public void setTimeDate(String timeDate) {
+        this.timeDate = timeDate;
+    }
+
+    public String getTimeCycle() {
+        return timeCycle;
+    }
+
+    public void setTimeCycle(String timeCycle) {
+        this.timeCycle = timeCycle;
+    }
+
+}
-/**\r
- * Copyright (c) 2017-2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.parser;\r
-\r
-import java.io.IOException;\r
-import java.net.MalformedURLException;\r
-import java.net.URI;\r
-import java.util.ArrayList;\r
-import java.util.HashMap;\r
-import java.util.Iterator;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.onap.sdc.workflowdesigner.model.DataObject;\r
-import org.onap.sdc.workflowdesigner.model.Element;\r
-import org.onap.sdc.workflowdesigner.model.EndEvent;\r
-import org.onap.sdc.workflowdesigner.model.ErrorEndEvent;\r
-import org.onap.sdc.workflowdesigner.model.ErrorStartEvent;\r
-import org.onap.sdc.workflowdesigner.model.ExclusiveGateway;\r
-import org.onap.sdc.workflowdesigner.model.IntermediateCatchEvent;\r
-import org.onap.sdc.workflowdesigner.model.ParallelGateway;\r
-import org.onap.sdc.workflowdesigner.model.Parameter;\r
-import org.onap.sdc.workflowdesigner.model.Process;\r
-import org.onap.sdc.workflowdesigner.model.RestServiceTask;\r
-import org.onap.sdc.workflowdesigner.model.ScriptTask;\r
-import org.onap.sdc.workflowdesigner.model.SequenceFlow;\r
-import org.onap.sdc.workflowdesigner.model.ServiceTask;\r
-import org.onap.sdc.workflowdesigner.model.StartEvent;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-import com.fasterxml.jackson.core.JsonParseException;\r
-import com.fasterxml.jackson.databind.DeserializationFeature;\r
-import com.fasterxml.jackson.databind.JsonMappingException;\r
-import com.fasterxml.jackson.databind.JsonNode;\r
-import com.fasterxml.jackson.databind.ObjectMapper;\r
-import com.fasterxml.jackson.databind.SerializationFeature;\r
-\r
-public class Bpmn4ToscaJsonParser {\r
-\r
-    private static Logger log = LoggerFactory.getLogger(Bpmn4ToscaJsonParser.class);\r
-\r
-    private static ObjectMapper MAPPER = new ObjectMapper();\r
-    \r
-    private Map<String, JsonNode> restConfigMap = new HashMap<String, JsonNode>();\r
-\r
-    static {\r
-        MAPPER.enable(SerializationFeature.INDENT_OUTPUT);\r
-        MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\r
-    }\r
-\r
-    public Process parse(String processName, URI jsonFileUrl)\r
-            throws JsonParseException, JsonMappingException, MalformedURLException, IOException {\r
-        Process process = new Process(processName);\r
-\r
-        JsonNode rootNode = MAPPER.readValue(jsonFileUrl.toURL(), JsonNode.class);\r
-\r
-        log.debug("Creating Process models...");\r
-//      JsonNode nodes = rootNode.get(JsonKeys.NODES);\r
-        JsonNode data = rootNode.get(JsonKeys.DATA);\r
-        if(null == data) {\r
-            return process;\r
-        }\r
-        JsonNode nodes = data.get(JsonKeys.NODES);\r
-        if (nodes == null) {\r
-            return process;\r
-        }\r
-        \r
-        this.loadConfigs(rootNode.get(JsonKeys.CONFIGS));\r
-\r
-        Iterator<JsonNode> iter = nodes.iterator();\r
-        while (iter.hasNext()) {\r
-            JsonNode jsonNode = (JsonNode) iter.next();\r
-\r
-            // get element\r
-            Element element = createElementFromJson(jsonNode);\r
-            process.getElementList().add(element);\r
-\r
-            // get sequence flows\r
-            List<SequenceFlow> flowList = getSequenceFlows(jsonNode);\r
-            process.getSequenceFlowList().addAll(flowList);\r
-\r
-            // add dataObject\r
-            if (element instanceof StartEvent) {\r
-                List<DataObject> dataObjects = this.getDataObject((StartEvent) element);\r
-                process.getDataObjectList().addAll(dataObjects);\r
-            }\r
-        }\r
-\r
-        return process;\r
-\r
-    }\r
-\r
-    private List<DataObject> getDataObject(StartEvent startEvent) {\r
-        List<DataObject> dataObjects = new ArrayList<DataObject>();\r
-\r
-        for (Parameter parameter : startEvent.getParameters()) {\r
-            DataObject dataObject = new DataObject();\r
-            dataObject.setId(parameter.getName());\r
-            dataObject.setName(parameter.getName());\r
-            dataObject.setValue((String) parameter.getValue());\r
-\r
-            dataObjects.add(dataObject);\r
-        }\r
-\r
-        return dataObjects;\r
-    }\r
-    \r
-    private void loadConfigs(JsonNode config) {\r
-        if(config == null) {\r
-            return;\r
-        }\r
-        loadRestConfigs(config.get(JsonKeys.REST_CONFIGS));\r
-    }\r
-    \r
-    private void loadRestConfigs(JsonNode restConfigs) {\r
-        if(restConfigs == null) {\r
-            return;\r
-        }\r
-        \r
-        Iterator<JsonNode> iter = restConfigs.iterator();\r
-        while (iter.hasNext()) {\r
-            JsonNode restConfig = (JsonNode) iter.next();\r
-\r
-            String configId = getValueFromJsonNode(restConfig, JsonKeys.ID); \r
-            restConfigMap.put(configId, restConfig);\r
-        }\r
-    }\r
-\r
-    private List<SequenceFlow> getSequenceFlows(JsonNode jsonNode) {\r
-        List<SequenceFlow> flowList = new ArrayList<SequenceFlow>();\r
-               String elementId = getValueFromJsonNode(jsonNode, JsonKeys.ID);\r
-               JsonNode connectionsNode = jsonNode.get(JsonKeys.CONNECTIONS);\r
-\r
-               Iterator<JsonNode> iter = connectionsNode.iterator();\r
-        while (iter.hasNext()) {\r
-            JsonNode connectionEntry = (JsonNode) iter.next();\r
-            String targetRef = getValueFromJsonNode(connectionEntry, JsonKeys.TARGET_REF);\r
-            String condition = getValueFromJsonNode(connectionEntry, JsonKeys.CONDITION);\r
-            SequenceFlow flow = new SequenceFlow();\r
-                       flow.setId(elementId + targetRef);\r
-                       flow.setSourceRef(elementId);\r
-            flow.setTargetRef(targetRef);\r
-            flow.setCondition(condition);\r
-            flowList.add(flow);\r
-        }\r
-\r
-        return flowList;\r
-    }\r
-\r
-    protected Element createElementFromJson(JsonNode jsonNode)\r
-            throws JsonParseException, JsonMappingException, IOException {\r
-        String jsonObject = jsonNode.toString();\r
-        Element element;\r
-\r
-        String nodeType = getValueFromJsonNode(jsonNode, JsonKeys.TYPE);\r
-        if (nodeType == null) {\r
-          log.warn("Ignoring node: type is null");\r
-          return null;\r
-        }\r
-        \r
-        switch (nodeType) {\r
-        case "startEvent":\r
-            element = MAPPER.readValue(jsonObject, StartEvent.class);\r
-            break;\r
-        case "endEvent":\r
-            element = MAPPER.readValue(jsonObject, EndEvent.class);\r
-            break;\r
-        case "errorStartEvent":\r
-            element = MAPPER.readValue(jsonObject, ErrorStartEvent.class);\r
-            break;\r
-        case "errorEndEvent":\r
-            element = MAPPER.readValue(jsonObject, ErrorEndEvent.class);\r
-            break;\r
-        case "intermediateCatchEvent":\r
-            element = MAPPER.readValue(jsonObject, IntermediateCatchEvent.class);\r
-            break;\r
-        case "serviceTask":\r
-            element = MAPPER.readValue(jsonObject, ServiceTask.class);\r
-            break;\r
-        case "restTask":\r
-                       // element = this.createRestServiceTask(jsonObject);\r
-                       element = MAPPER.readValue(jsonObject, RestServiceTask.class);\r
-            break;\r
-        case "scriptTask":\r
-            element = MAPPER.readValue(jsonObject, ScriptTask.class);\r
-            break;\r
-        case "exclusiveGateway":\r
-            element = MAPPER.readValue(jsonObject, ExclusiveGateway.class);\r
-            break;\r
-        case "parallelGateway":\r
-            element = MAPPER.readValue(jsonObject, ParallelGateway.class);\r
-            break;\r
-        default:\r
-            log.warn("Ignoring node: type '" + nodeType + "' is unkown");\r
-            return null;\r
-        }\r
-\r
-        return element;\r
-    }\r
-    \r
-\r
-    private String getValueFromJsonNode(JsonNode jsonNode, String key) {\r
-        return jsonNode.get(key) == null ? null : jsonNode.get(key).asText();\r
-    }\r
-\r
-}\r
+/**
+ * Copyright (c) 2017-2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.parser;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.onap.sdc.workflowdesigner.model.DataObject;
+import org.onap.sdc.workflowdesigner.model.Element;
+import org.onap.sdc.workflowdesigner.model.EndEvent;
+import org.onap.sdc.workflowdesigner.model.ErrorEndEvent;
+import org.onap.sdc.workflowdesigner.model.ErrorStartEvent;
+import org.onap.sdc.workflowdesigner.model.ExclusiveGateway;
+import org.onap.sdc.workflowdesigner.model.IntermediateCatchEvent;
+import org.onap.sdc.workflowdesigner.model.ParallelGateway;
+import org.onap.sdc.workflowdesigner.model.Parameter;
+import org.onap.sdc.workflowdesigner.model.Process;
+import org.onap.sdc.workflowdesigner.model.RestServiceTask;
+import org.onap.sdc.workflowdesigner.model.ScriptTask;
+import org.onap.sdc.workflowdesigner.model.SequenceFlow;
+import org.onap.sdc.workflowdesigner.model.ServiceTask;
+import org.onap.sdc.workflowdesigner.model.StartEvent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+
+public class Bpmn4ToscaJsonParser {
+
+    private static Logger log = LoggerFactory.getLogger(Bpmn4ToscaJsonParser.class);
+
+    private static ObjectMapper MAPPER = new ObjectMapper();
+    
+    private Map<String, JsonNode> restConfigMap = new HashMap<String, JsonNode>();
+
+    static {
+        MAPPER.enable(SerializationFeature.INDENT_OUTPUT);
+        MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+    }
+
+    public Process parse(String processName, URI jsonFileUrl)
+            throws JsonParseException, JsonMappingException, MalformedURLException, IOException {
+        Process process = new Process(processName);
+
+        JsonNode rootNode = MAPPER.readValue(jsonFileUrl.toURL(), JsonNode.class);
+
+        log.debug("Creating Process models...");
+//      JsonNode nodes = rootNode.get(JsonKeys.NODES);
+        JsonNode data = rootNode.get(JsonKeys.DATA);
+        if(null == data) {
+            return process;
+        }
+        JsonNode nodes = data.get(JsonKeys.NODES);
+        if (nodes == null) {
+            return process;
+        }
+        
+        this.loadConfigs(rootNode.get(JsonKeys.CONFIGS));
+
+        Iterator<JsonNode> iter = nodes.iterator();
+        while (iter.hasNext()) {
+            JsonNode jsonNode = (JsonNode) iter.next();
+
+            // get element
+            Element element = createElementFromJson(jsonNode);
+            process.getElementList().add(element);
+
+            // get sequence flows
+            List<SequenceFlow> flowList = getSequenceFlows(jsonNode);
+            process.getSequenceFlowList().addAll(flowList);
+
+            // add dataObject
+            if (element instanceof StartEvent) {
+                List<DataObject> dataObjects = this.getDataObject((StartEvent) element);
+                process.getDataObjectList().addAll(dataObjects);
+            }
+        }
+
+        return process;
+
+    }
+
+    private List<DataObject> getDataObject(StartEvent startEvent) {
+        List<DataObject> dataObjects = new ArrayList<DataObject>();
+
+        for (Parameter parameter : startEvent.getParameters()) {
+            DataObject dataObject = new DataObject();
+            dataObject.setId(parameter.getName());
+            dataObject.setName(parameter.getName());
+            dataObject.setValue((String) parameter.getValue());
+
+            dataObjects.add(dataObject);
+        }
+
+        return dataObjects;
+    }
+    
+    private void loadConfigs(JsonNode config) {
+        if(config == null) {
+            return;
+        }
+        loadRestConfigs(config.get(JsonKeys.REST_CONFIGS));
+    }
+    
+    private void loadRestConfigs(JsonNode restConfigs) {
+        if(restConfigs == null) {
+            return;
+        }
+        
+        Iterator<JsonNode> iter = restConfigs.iterator();
+        while (iter.hasNext()) {
+            JsonNode restConfig = (JsonNode) iter.next();
+
+            String configId = getValueFromJsonNode(restConfig, JsonKeys.ID); 
+            restConfigMap.put(configId, restConfig);
+        }
+    }
+
+    private List<SequenceFlow> getSequenceFlows(JsonNode jsonNode) {
+        List<SequenceFlow> flowList = new ArrayList<SequenceFlow>();
+               String elementId = getValueFromJsonNode(jsonNode, JsonKeys.ID);
+               JsonNode connectionsNode = jsonNode.get(JsonKeys.CONNECTIONS);
+
+               Iterator<JsonNode> iter = connectionsNode.iterator();
+        while (iter.hasNext()) {
+            JsonNode connectionEntry = (JsonNode) iter.next();
+            String targetRef = getValueFromJsonNode(connectionEntry, JsonKeys.TARGET_REF);
+            String condition = getValueFromJsonNode(connectionEntry, JsonKeys.CONDITION);
+            SequenceFlow flow = new SequenceFlow();
+                       flow.setId(elementId + targetRef);
+                       flow.setSourceRef(elementId);
+            flow.setTargetRef(targetRef);
+            flow.setCondition(condition);
+            flowList.add(flow);
+        }
+
+        return flowList;
+    }
+
+    protected Element createElementFromJson(JsonNode jsonNode)
+            throws JsonParseException, JsonMappingException, IOException {
+        String jsonObject = jsonNode.toString();
+        Element element;
+
+        String nodeType = getValueFromJsonNode(jsonNode, JsonKeys.TYPE);
+        if (nodeType == null) {
+          log.warn("Ignoring node: type is null");
+          return null;
+        }
+        
+        switch (nodeType) {
+        case "startEvent":
+            element = MAPPER.readValue(jsonObject, StartEvent.class);
+            break;
+        case "endEvent":
+            element = MAPPER.readValue(jsonObject, EndEvent.class);
+            break;
+        case "errorStartEvent":
+            element = MAPPER.readValue(jsonObject, ErrorStartEvent.class);
+            break;
+        case "errorEndEvent":
+            element = MAPPER.readValue(jsonObject, ErrorEndEvent.class);
+            break;
+        case "intermediateCatchEvent":
+            element = MAPPER.readValue(jsonObject, IntermediateCatchEvent.class);
+            break;
+        case "serviceTask":
+            element = MAPPER.readValue(jsonObject, ServiceTask.class);
+            break;
+        case "restTask":
+                       // element = this.createRestServiceTask(jsonObject);
+                       element = MAPPER.readValue(jsonObject, RestServiceTask.class);
+            break;
+        case "scriptTask":
+            element = MAPPER.readValue(jsonObject, ScriptTask.class);
+            break;
+        case "exclusiveGateway":
+            element = MAPPER.readValue(jsonObject, ExclusiveGateway.class);
+            break;
+        case "parallelGateway":
+            element = MAPPER.readValue(jsonObject, ParallelGateway.class);
+            break;
+        default:
+            log.warn("Ignoring node: type '" + nodeType + "' is unkown");
+            return null;
+        }
+
+        return element;
+    }
+    
+
+    private String getValueFromJsonNode(JsonNode jsonNode, String key) {
+        return jsonNode.get(key) == null ? null : jsonNode.get(key).asText();
+    }
+
+}
@@ -1,92 +1,92 @@
-/**\r
- * Copyright (c) 2017-2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.parser;\r
-\r
-public interface JsonKeys {\r
-\r
-\r
-       /*\r
-        * Field names of BPMN4Tosca Model\r
-        */\r
-       public static final String DATA = "data";\r
-       public static final String NODES = "nodes";\r
-       public static final String REST_CONFIGS = "restConfigs";\r
-       public static final String CONFIGS = "configs";\r
-       \r
-       \r
-       // microservice info\r
-       public static final String MICROSERVICE_URL = "url";\r
-       public static final String MICROSERVICE_NAME = "name";\r
-       public static final String MICROSERVICE_VERSION = "version";\r
-       \r
-       public static final String NAME = "name";\r
-\r
-       public static final String ID = "id";\r
-\r
-       public static final String TYPE = "type";\r
-\r
-       public static final String INPUT = "input";\r
-\r
-       public static final String OUTPUT = "output";\r
-\r
-       public static final String VALUE = "value";\r
-\r
-       public static final String NODE_TEMPLATE = "node_template";\r
-\r
-       public static final String NODE_OPERATION = "node_operation";\r
-\r
-       public static final String NODE_INTERFACE_NAME = "interface";\r
-\r
-       public static final String CONNECTIONS = "connection";\r
-       \r
-       public static final String SOURCE_REF = "sourceRef";\r
-       \r
-       public static final String TARGET_REF = "targetRef";\r
-       \r
-       public static final String CONDITIONS = "conditions";\r
-       \r
-       public static final String CONDITION = "condition";\r
-       \r
-       public static final String DEFAULT = "default";\r
-\r
-\r
-       /*\r
-        * Exclusive-Gateway, Event, Management-Task Types\r
-        *\r
-        */\r
-       public static final String NODE_TYPE_MGMT_TASK = "ToscaNodeManagementTask";\r
-\r
-       public static final String NODE_TYPE_START_EVENT = "StartEvent";\r
-\r
-       public static final String NODE_TYPE_END_EVENT = "EndEvent";\r
-       \r
-       public static final String NODE_TYPE_GATEWAY_EXCLUSIVE = "ExclusiveGateway";\r
-       \r
-       public static final String NODE_TYPE_GATEWAY_EXCLUSIVE_END = "ExclusiveGatewayEnd";\r
-\r
-\r
-       /*\r
-        * Parameter Types\r
-        */\r
-       public static final String PARAM_TYPE_VALUE_STRING = "string";\r
-\r
-       public static final String PARAM_TYPE_VALUE_TOPOLOGY = "topology";\r
-\r
-       public static final String PARAM_TYPE_VALUE_PLAN = "plan";\r
-\r
-       public static final String PARAM_TYPE_VALUE_CONCAT = "concat";\r
-\r
-       public static final String PARAM_TYPE_VALUE_IA = "implementation_artifact";\r
-\r
-       public static final String PARAM_TYPE_VALUE_DA = "deployment_artifact";\r
-\r
-}\r
+/**
+ * Copyright (c) 2017-2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.parser;
+
+public interface JsonKeys {
+
+
+       /*
+        * Field names of BPMN4Tosca Model
+        */
+       public static final String DATA = "data";
+       public static final String NODES = "nodes";
+       public static final String REST_CONFIGS = "restConfigs";
+       public static final String CONFIGS = "configs";
+       
+       
+       // microservice info
+       public static final String MICROSERVICE_URL = "url";
+       public static final String MICROSERVICE_NAME = "name";
+       public static final String MICROSERVICE_VERSION = "version";
+       
+       public static final String NAME = "name";
+
+       public static final String ID = "id";
+
+       public static final String TYPE = "type";
+
+       public static final String INPUT = "input";
+
+       public static final String OUTPUT = "output";
+
+       public static final String VALUE = "value";
+
+       public static final String NODE_TEMPLATE = "node_template";
+
+       public static final String NODE_OPERATION = "node_operation";
+
+       public static final String NODE_INTERFACE_NAME = "interface";
+
+       public static final String CONNECTIONS = "connection";
+       
+       public static final String SOURCE_REF = "sourceRef";
+       
+       public static final String TARGET_REF = "targetRef";
+       
+       public static final String CONDITIONS = "conditions";
+       
+       public static final String CONDITION = "condition";
+       
+       public static final String DEFAULT = "default";
+
+
+       /*
+        * Exclusive-Gateway, Event, Management-Task Types
+        *
+        */
+       public static final String NODE_TYPE_MGMT_TASK = "ToscaNodeManagementTask";
+
+       public static final String NODE_TYPE_START_EVENT = "StartEvent";
+
+       public static final String NODE_TYPE_END_EVENT = "EndEvent";
+       
+       public static final String NODE_TYPE_GATEWAY_EXCLUSIVE = "ExclusiveGateway";
+       
+       public static final String NODE_TYPE_GATEWAY_EXCLUSIVE_END = "ExclusiveGatewayEnd";
+
+
+       /*
+        * Parameter Types
+        */
+       public static final String PARAM_TYPE_VALUE_STRING = "string";
+
+       public static final String PARAM_TYPE_VALUE_TOPOLOGY = "topology";
+
+       public static final String PARAM_TYPE_VALUE_PLAN = "plan";
+
+       public static final String PARAM_TYPE_VALUE_CONCAT = "concat";
+
+       public static final String PARAM_TYPE_VALUE_IA = "implementation_artifact";
+
+       public static final String PARAM_TYPE_VALUE_DA = "deployment_artifact";
+
+}
@@ -1,65 +1,65 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-/**\r
- *\r
- */\r
-public class CategoryData {\r
-  private I18nString displayName;\r
-\r
-  private boolean collapse;\r
-  \r
-  /**\r
-   * \r
-   */\r
-  public CategoryData() {\r
-    super();\r
-  }\r
-\r
-  /**\r
-   * @param displayName\r
-   */\r
-  public CategoryData(I18nString displayName) {\r
-    super();\r
-    this.displayName = displayName;\r
-  }\r
-\r
-  /**\r
-   * @return the displayName\r
-   */\r
-  public I18nString getDisplayName() {\r
-    return displayName;\r
-  }\r
-\r
-  /**\r
-   * @param displayName the displayName to set\r
-   */\r
-  public void setDisplayName(I18nString displayName) {\r
-    this.displayName = displayName;\r
-  }\r
-\r
-  /**\r
-   * @return the collapse\r
-   */\r
-  public boolean isCollapse() {\r
-    return collapse;\r
-  }\r
-\r
-  /**\r
-   * @param collapse the collapse to set\r
-   */\r
-  public void setCollapse(boolean collapse) {\r
-    this.collapse = collapse;\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+/**
+ *
+ */
+public class CategoryData {
+  private I18nString displayName;
+
+  private boolean collapse;
+  
+  /**
+   * 
+   */
+  public CategoryData() {
+    super();
+  }
+
+  /**
+   * @param displayName
+   */
+  public CategoryData(I18nString displayName) {
+    super();
+    this.displayName = displayName;
+  }
+
+  /**
+   * @return the displayName
+   */
+  public I18nString getDisplayName() {
+    return displayName;
+  }
+
+  /**
+   * @param displayName the displayName to set
+   */
+  public void setDisplayName(I18nString displayName) {
+    this.displayName = displayName;
+  }
+
+  /**
+   * @return the collapse
+   */
+  public boolean isCollapse() {
+    return collapse;
+  }
+
+  /**
+   * @param collapse the collapse to set
+   */
+  public void setCollapse(boolean collapse) {
+    this.collapse = collapse;
+  }
+
+}
@@ -1,95 +1,95 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-import java.util.Map;\r
-\r
-import com.fasterxml.jackson.annotation.JsonInclude;\r
-import com.fasterxml.jackson.annotation.JsonInclude.Include;\r
-import com.fasterxml.jackson.annotation.JsonProperty;\r
-import com.google.gson.annotations.SerializedName;\r
-\r
-/**\r
- *\r
- */\r
-@JsonInclude(Include.NON_NULL)\r
-public class Content {\r
-  @JsonProperty(value="class") // for dropwizard's Jackson\r
-  @SerializedName("class")  // for Gson\r
-  public String clazz;\r
-  \r
-  private String script;\r
-  \r
-  private String scriptFormat;\r
-  \r
-  private Map<String, InputOutput> inputs;\r
-  \r
-  private Map<String, InputOutput> outputs;\r
-  \r
-\r
-  /**\r
-   * @return the script\r
-   */\r
-  public String getScript() {\r
-    return script;\r
-  }\r
-\r
-  /**\r
-   * @param script the script to set\r
-   */\r
-  public void setScript(String script) {\r
-    this.script = script;\r
-  }\r
-\r
-  /**\r
-   * @return the scriptFormat\r
-   */\r
-  public String getScriptFormat() {\r
-    return scriptFormat;\r
-  }\r
-\r
-  /**\r
-   * @param scriptFormat the scriptFormat to set\r
-   */\r
-  public void setScriptFormat(String scriptFormat) {\r
-    this.scriptFormat = scriptFormat;\r
-  }\r
-\r
-  /**\r
-   * @return the inputs\r
-   */\r
-  public Map<String, InputOutput> getInputs() {\r
-    return inputs;\r
-  }\r
-\r
-  /**\r
-   * @param inputs the inputs to set\r
-   */\r
-  public void setInputs(Map<String, InputOutput> inputs) {\r
-    this.inputs = inputs;\r
-  }\r
-\r
-  /**\r
-   * @return the outputs\r
-   */\r
-  public Map<String, InputOutput> getOutputs() {\r
-    return outputs;\r
-  }\r
-\r
-  /**\r
-   * @param outputs the outputs to set\r
-   */\r
-  public void setOutputs(Map<String, InputOutput> outputs) {\r
-    this.outputs = outputs;\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+import java.util.Map;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.gson.annotations.SerializedName;
+
+/**
+ *
+ */
+@JsonInclude(Include.NON_NULL)
+public class Content {
+  @JsonProperty(value="class") // for dropwizard's Jackson
+  @SerializedName("class")  // for Gson
+  public String clazz;
+  
+  private String script;
+  
+  private String scriptFormat;
+  
+  private Map<String, InputOutput> inputs;
+  
+  private Map<String, InputOutput> outputs;
+  
+
+  /**
+   * @return the script
+   */
+  public String getScript() {
+    return script;
+  }
+
+  /**
+   * @param script the script to set
+   */
+  public void setScript(String script) {
+    this.script = script;
+  }
+
+  /**
+   * @return the scriptFormat
+   */
+  public String getScriptFormat() {
+    return scriptFormat;
+  }
+
+  /**
+   * @param scriptFormat the scriptFormat to set
+   */
+  public void setScriptFormat(String scriptFormat) {
+    this.scriptFormat = scriptFormat;
+  }
+
+  /**
+   * @return the inputs
+   */
+  public Map<String, InputOutput> getInputs() {
+    return inputs;
+  }
+
+  /**
+   * @param inputs the inputs to set
+   */
+  public void setInputs(Map<String, InputOutput> inputs) {
+    this.inputs = inputs;
+  }
+
+  /**
+   * @return the outputs
+   */
+  public Map<String, InputOutput> getOutputs() {
+    return outputs;
+  }
+
+  /**
+   * @param outputs the outputs to set
+   */
+  public void setOutputs(Map<String, InputOutput> outputs) {
+    this.outputs = outputs;
+  }
+
+}
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-import com.fasterxml.jackson.annotation.JsonInclude;\r
-import com.fasterxml.jackson.annotation.JsonInclude.Include;\r
-\r
-/**\r
- *\r
- */\r
-@JsonInclude(Include.NON_NULL)\r
-public class ExtActivity {\r
-  private String id;\r
-  \r
-  private I18nString displayName;\r
-  \r
-  private I18nString description;\r
-  \r
-  private String type;\r
-  \r
-  private IconData icon;\r
-  \r
-  private Content content;\r
-\r
-  /**\r
-   * @return the id\r
-   */\r
-  public String getId() {\r
-    return id;\r
-  }\r
-\r
-  /**\r
-   * @param id the id to set\r
-   */\r
-  public void setId(String id) {\r
-    this.id = id;\r
-  }\r
-\r
-  /**\r
-   * @return the type\r
-   */\r
-  public String getType() {\r
-    return type;\r
-  }\r
-\r
-  /**\r
-   * @param type the type to set\r
-   */\r
-  public void setType(String type) {\r
-    this.type = type;\r
-  }\r
-\r
-  /**\r
-   * @return the icon\r
-   */\r
-  public IconData getIcon() {\r
-    return icon;\r
-  }\r
-\r
-  /**\r
-   * @param icon the icon to set\r
-   */\r
-  public void setIcon(IconData icon) {\r
-    this.icon = icon;\r
-  }\r
-\r
-  /**\r
-   * @return the content\r
-   */\r
-  public Content getContent() {\r
-    return content;\r
-  }\r
-\r
-  /**\r
-   * @param content the content to set\r
-   */\r
-  public void setContent(Content content) {\r
-    this.content = content;\r
-  }\r
-\r
-  /**\r
-   * @return the displayName\r
-   */\r
-  public I18nString getDisplayName() {\r
-    return displayName;\r
-  }\r
-\r
-  /**\r
-   * @param displayName the displayName to set\r
-   */\r
-  public void setDisplayName(I18nString displayName) {\r
-    this.displayName = displayName;\r
-  }\r
-\r
-  /**\r
-   * @return the description\r
-   */\r
-  public I18nString getDescription() {\r
-    return description;\r
-  }\r
-\r
-  /**\r
-   * @param description the description to set\r
-   */\r
-  public void setDescription(I18nString description) {\r
-    this.description = description;\r
-  }\r
-  \r
-  \r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+/**
+ *
+ */
+@JsonInclude(Include.NON_NULL)
+public class ExtActivity {
+  private String id;
+  
+  private I18nString displayName;
+  
+  private I18nString description;
+  
+  private String type;
+  
+  private IconData icon;
+  
+  private Content content;
+
+  /**
+   * @return the id
+   */
+  public String getId() {
+    return id;
+  }
+
+  /**
+   * @param id the id to set
+   */
+  public void setId(String id) {
+    this.id = id;
+  }
+
+  /**
+   * @return the type
+   */
+  public String getType() {
+    return type;
+  }
+
+  /**
+   * @param type the type to set
+   */
+  public void setType(String type) {
+    this.type = type;
+  }
+
+  /**
+   * @return the icon
+   */
+  public IconData getIcon() {
+    return icon;
+  }
+
+  /**
+   * @param icon the icon to set
+   */
+  public void setIcon(IconData icon) {
+    this.icon = icon;
+  }
+
+  /**
+   * @return the content
+   */
+  public Content getContent() {
+    return content;
+  }
+
+  /**
+   * @param content the content to set
+   */
+  public void setContent(Content content) {
+    this.content = content;
+  }
+
+  /**
+   * @return the displayName
+   */
+  public I18nString getDisplayName() {
+    return displayName;
+  }
+
+  /**
+   * @param displayName the displayName to set
+   */
+  public void setDisplayName(I18nString displayName) {
+    this.displayName = displayName;
+  }
+
+  /**
+   * @return the description
+   */
+  public I18nString getDescription() {
+    return description;
+  }
+
+  /**
+   * @param description the description to set
+   */
+  public void setDescription(I18nString description) {
+    this.description = description;
+  }
+  
+  
+
+}
@@ -1,53 +1,53 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-\r
-/**\r
- *\r
- */\r
-public class ExtActivityDisplayInfo {\r
-  private Map<String, NodeCategory> nodes = new HashMap<>();\r
-\r
-  private Map<String, CategoryData> categoryData = new HashMap<>();\r
-\r
-  /**\r
-   * @return the nodes\r
-   */\r
-  public Map<String, NodeCategory> getNodes() {\r
-    return nodes;\r
-  }\r
-\r
-  /**\r
-   * @param nodes the nodes to set\r
-   */\r
-  public void setNodes(Map<String, NodeCategory> nodes) {\r
-    this.nodes = nodes;\r
-  }\r
-\r
-  /**\r
-   * @return the categoryData\r
-   */\r
-  public Map<String, CategoryData> getCategoryData() {\r
-    return categoryData;\r
-  }\r
-\r
-  /**\r
-   * @param categoryData the categoryData to set\r
-   */\r
-  public void setCategoryData(Map<String, CategoryData> categoryData) {\r
-    this.categoryData = categoryData;\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ */
+public class ExtActivityDisplayInfo {
+  private Map<String, NodeCategory> nodes = new HashMap<>();
+
+  private Map<String, CategoryData> categoryData = new HashMap<>();
+
+  /**
+   * @return the nodes
+   */
+  public Map<String, NodeCategory> getNodes() {
+    return nodes;
+  }
+
+  /**
+   * @param nodes the nodes to set
+   */
+  public void setNodes(Map<String, NodeCategory> nodes) {
+    this.nodes = nodes;
+  }
+
+  /**
+   * @return the categoryData
+   */
+  public Map<String, CategoryData> getCategoryData() {
+    return categoryData;
+  }
+
+  /**
+   * @param categoryData the categoryData to set
+   */
+  public void setCategoryData(Map<String, CategoryData> categoryData) {
+    this.categoryData = categoryData;
+  }
+
+}
@@ -1,69 +1,69 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-/**\r
- *\r
- */\r
-public class I18nString {\r
-  private String en_US;\r
-  \r
-  private String zh_CN;\r
-\r
-  /**\r
-   * \r
-   */\r
-  public I18nString() {\r
-    super();\r
-  }\r
-\r
-  /**\r
-   * @param en_US\r
-   * @param zh_CN\r
-   */\r
-  public I18nString(String en_US, String zh_CN) {\r
-    super();\r
-    this.en_US = en_US;\r
-    this.zh_CN = zh_CN;\r
-  }\r
-\r
-  /**\r
-   * @return the en_US\r
-   */\r
-  public String getEn_US() {\r
-    return en_US;\r
-  }\r
-\r
-  /**\r
-   * @param en_US the en_US to set\r
-   */\r
-  public void setEn_US(String en_US) {\r
-    this.en_US = en_US;\r
-  }\r
-\r
-  /**\r
-   * @return the zh_CN\r
-   */\r
-  public String getZh_CN() {\r
-    return zh_CN;\r
-  }\r
-\r
-  /**\r
-   * @param zh_CN the zh_CN to set\r
-   */\r
-  public void setZh_CN(String zh_CN) {\r
-    this.zh_CN = zh_CN;\r
-  }\r
-  \r
-  \r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+/**
+ *
+ */
+public class I18nString {
+  private String en_US;
+  
+  private String zh_CN;
+
+  /**
+   * 
+   */
+  public I18nString() {
+    super();
+  }
+
+  /**
+   * @param en_US
+   * @param zh_CN
+   */
+  public I18nString(String en_US, String zh_CN) {
+    super();
+    this.en_US = en_US;
+    this.zh_CN = zh_CN;
+  }
+
+  /**
+   * @return the en_US
+   */
+  public String getEn_US() {
+    return en_US;
+  }
+
+  /**
+   * @param en_US the en_US to set
+   */
+  public void setEn_US(String en_US) {
+    this.en_US = en_US;
+  }
+
+  /**
+   * @return the zh_CN
+   */
+  public String getZh_CN() {
+    return zh_CN;
+  }
+
+  /**
+   * @param zh_CN the zh_CN to set
+   */
+  public void setZh_CN(String zh_CN) {
+    this.zh_CN = zh_CN;
+  }
+  
+  
+
+}
@@ -1,68 +1,68 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-/**\r
- *\r
- */\r
-public class IconData {\r
-  private String name;\r
-  \r
-  private int width;\r
-  \r
-  private int height;\r
-\r
-  /**\r
-   * @return the name\r
-   */\r
-  public String getName() {\r
-    return name;\r
-  }\r
-\r
-  /**\r
-   * @param name the name to set\r
-   */\r
-  public void setName(String name) {\r
-    this.name = name;\r
-  }\r
-\r
-  /**\r
-   * @return the width\r
-   */\r
-  public int getWidth() {\r
-    return width;\r
-  }\r
-\r
-  /**\r
-   * @param width the width to set\r
-   */\r
-  public void setWidth(int width) {\r
-    this.width = width;\r
-  }\r
-\r
-  /**\r
-   * @return the height\r
-   */\r
-  public int getHeight() {\r
-    return height;\r
-  }\r
-\r
-  /**\r
-   * @param height the height to set\r
-   */\r
-  public void setHeight(int height) {\r
-    this.height = height;\r
-  }\r
-  \r
-  \r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+/**
+ *
+ */
+public class IconData {
+  private String name;
+  
+  private int width;
+  
+  private int height;
+
+  /**
+   * @return the name
+   */
+  public String getName() {
+    return name;
+  }
+
+  /**
+   * @param name the name to set
+   */
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  /**
+   * @return the width
+   */
+  public int getWidth() {
+    return width;
+  }
+
+  /**
+   * @param width the width to set
+   */
+  public void setWidth(int width) {
+    this.width = width;
+  }
+
+  /**
+   * @return the height
+   */
+  public int getHeight() {
+    return height;
+  }
+
+  /**
+   * @param height the height to set
+   */
+  public void setHeight(int height) {
+    this.height = height;
+  }
+  
+  
+
+}
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-import com.google.gson.annotations.SerializedName;\r
-\r
-/**\r
- *\r
- */\r
-public class InputOutput {\r
-  private String type;\r
-  \r
-  @SerializedName("default")\r
-  private String defaultValue;\r
-  \r
-  private boolean required;\r
-  \r
-  private I18nString displayName;\r
-  \r
-  private boolean show = true;\r
-  \r
-  private boolean editable = true;\r
-  \r
-  private String value;\r
-  \r
-\r
-  /**\r
-   * @return the type\r
-   */\r
-  public String getType() {\r
-    return type;\r
-  }\r
-\r
-  /**\r
-   * @param type the type to set\r
-   */\r
-  public void setType(String type) {\r
-    this.type = type;\r
-  }\r
-\r
-  /**\r
-   * @return the defaultValue\r
-   */\r
-  public String getDefault() {\r
-    return defaultValue;\r
-  }\r
-\r
-  /**\r
-   * @param defaultValue the defaultValue to set\r
-   */\r
-  public void setDefault(String defaultValue) {\r
-    this.defaultValue = defaultValue;\r
-  }\r
-\r
-  /**\r
-   * @return the required\r
-   */\r
-  public boolean isRequired() {\r
-    return required;\r
-  }\r
-\r
-  /**\r
-   * @param required the required to set\r
-   */\r
-  public void setRequired(boolean required) {\r
-    this.required = required;\r
-  }\r
-\r
-  /**\r
-   * @return the displayName\r
-   */\r
-  public I18nString getDisplayName() {\r
-    return displayName;\r
-  }\r
-\r
-  /**\r
-   * @param displayName the displayName to set\r
-   */\r
-  public void setDisplayName(I18nString displayName) {\r
-    this.displayName = displayName;\r
-  }\r
-\r
-  /**\r
-   * @return the show\r
-   */\r
-  public boolean isShow() {\r
-    return show;\r
-  }\r
-\r
-  /**\r
-   * @param show the show to set\r
-   */\r
-  public void setShow(boolean show) {\r
-    this.show = show;\r
-  }\r
-\r
-  /**\r
-   * @return the editable\r
-   */\r
-  public boolean isEditable() {\r
-    return editable;\r
-  }\r
-\r
-  /**\r
-   * @param editable the editable to set\r
-   */\r
-  public void setEditable(boolean editable) {\r
-    this.editable = editable;\r
-  }\r
-\r
-  /**\r
-   * @return the value\r
-   */\r
-  public String getValue() {\r
-    return value;\r
-  }\r
-\r
-  /**\r
-   * @param value the value to set\r
-   */\r
-  public void setValue(String value) {\r
-    this.value = value;\r
-  }\r
-\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+import com.google.gson.annotations.SerializedName;
+
+/**
+ *
+ */
+public class InputOutput {
+  private String type;
+  
+  @SerializedName("default")
+  private String defaultValue;
+  
+  private boolean required;
+  
+  private I18nString displayName;
+  
+  private boolean show = true;
+  
+  private boolean editable = true;
+  
+  private String value;
+  
+
+  /**
+   * @return the type
+   */
+  public String getType() {
+    return type;
+  }
+
+  /**
+   * @param type the type to set
+   */
+  public void setType(String type) {
+    this.type = type;
+  }
+
+  /**
+   * @return the defaultValue
+   */
+  public String getDefault() {
+    return defaultValue;
+  }
+
+  /**
+   * @param defaultValue the defaultValue to set
+   */
+  public void setDefault(String defaultValue) {
+    this.defaultValue = defaultValue;
+  }
+
+  /**
+   * @return the required
+   */
+  public boolean isRequired() {
+    return required;
+  }
+
+  /**
+   * @param required the required to set
+   */
+  public void setRequired(boolean required) {
+    this.required = required;
+  }
+
+  /**
+   * @return the displayName
+   */
+  public I18nString getDisplayName() {
+    return displayName;
+  }
+
+  /**
+   * @param displayName the displayName to set
+   */
+  public void setDisplayName(I18nString displayName) {
+    this.displayName = displayName;
+  }
+
+  /**
+   * @return the show
+   */
+  public boolean isShow() {
+    return show;
+  }
+
+  /**
+   * @param show the show to set
+   */
+  public void setShow(boolean show) {
+    this.show = show;
+  }
+
+  /**
+   * @return the editable
+   */
+  public boolean isEditable() {
+    return editable;
+  }
+
+  /**
+   * @param editable the editable to set
+   */
+  public void setEditable(boolean editable) {
+    this.editable = editable;
+  }
+
+  /**
+   * @return the value
+   */
+  public String getValue() {
+    return value;
+  }
+
+  /**
+   * @param value the value to set
+   */
+  public void setValue(String value) {
+    this.value = value;
+  }
+
+
+}
@@ -1,34 +1,34 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-/**\r
- *\r
- */\r
-public class NodeCategory {\r
-  private String category;\r
-\r
-  /**\r
-   * @return the category\r
-   */\r
-  public String getCategory() {\r
-    return category;\r
-  }\r
-\r
-  /**\r
-   * @param category the category to set\r
-   */\r
-  public void setCategory(String category) {\r
-    this.category = category;\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+/**
+ *
+ */
+public class NodeCategory {
+  private String category;
+
+  /**
+   * @return the category
+   */
+  public String getCategory() {
+    return category;
+  }
+
+  /**
+   * @param category the category to set
+   */
+  public void setCategory(String category) {
+    this.category = category;
+  }
+
+}
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-import com.google.gson.JsonObject;\r
-\r
-/**\r
- *\r
- */\r
-public class WorkflowInfo {\r
-  private String uuid;\r
-  \r
-  private String operationId;\r
-  \r
-  private String id;\r
-  \r
-  private String name;\r
-  \r
-  private String description;\r
-  \r
-  private String scene;\r
-  \r
-  private JsonObject data;\r
-\r
-  /**\r
-   * @return the uuid\r
-   */\r
-  public String getUuid() {\r
-    return uuid;\r
-  }\r
-\r
-  /**\r
-   * @param uuid the uuid to set\r
-   */\r
-  public void setUuid(String uuid) {\r
-    this.uuid = uuid;\r
-  }\r
-\r
-  /**\r
-   * @return the operationId\r
-   */\r
-  public String getOperationId() {\r
-    return operationId;\r
-  }\r
-\r
-  /**\r
-   * @param operationId the operationId to set\r
-   */\r
-  public void setOperationId(String operationId) {\r
-    this.operationId = operationId;\r
-  }\r
-\r
-  /**\r
-   * @return the id\r
-   */\r
-  public String getId() {\r
-    return id;\r
-  }\r
-\r
-  /**\r
-   * @param id the id to set\r
-   */\r
-  public void setId(String id) {\r
-    this.id = id;\r
-  }\r
-\r
-  /**\r
-   * @return the name\r
-   */\r
-  public String getName() {\r
-    return name;\r
-  }\r
-\r
-  /**\r
-   * @param name the name to set\r
-   */\r
-  public void setName(String name) {\r
-    this.name = name;\r
-  }\r
-\r
-  /**\r
-   * @return the description\r
-   */\r
-  public String getDescription() {\r
-    return description;\r
-  }\r
-\r
-  /**\r
-   * @param description the description to set\r
-   */\r
-  public void setDescription(String description) {\r
-    this.description = description;\r
-  }\r
-\r
-  /**\r
-   * @return the scene\r
-   */\r
-  public String getScene() {\r
-    return scene;\r
-  }\r
-\r
-  /**\r
-   * @param scene the scene to set\r
-   */\r
-  public void setScene(String scene) {\r
-    this.scene = scene;\r
-  }\r
-\r
-  /**\r
-   * @return the data\r
-   */\r
-  public JsonObject getData() {\r
-    return data;\r
-  }\r
-\r
-  /**\r
-   * @param data the data to set\r
-   */\r
-  public void setData(JsonObject data) {\r
-    this.data = data;\r
-  }\r
-\r
-  \r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+import com.google.gson.JsonObject;
+
+/**
+ *
+ */
+public class WorkflowInfo {
+  private String uuid;
+  
+  private String operationId;
+  
+  private String id;
+  
+  private String name;
+  
+  private String description;
+  
+  private String scene;
+  
+  private JsonObject data;
+
+  /**
+   * @return the uuid
+   */
+  public String getUuid() {
+    return uuid;
+  }
+
+  /**
+   * @param uuid the uuid to set
+   */
+  public void setUuid(String uuid) {
+    this.uuid = uuid;
+  }
+
+  /**
+   * @return the operationId
+   */
+  public String getOperationId() {
+    return operationId;
+  }
+
+  /**
+   * @param operationId the operationId to set
+   */
+  public void setOperationId(String operationId) {
+    this.operationId = operationId;
+  }
+
+  /**
+   * @return the id
+   */
+  public String getId() {
+    return id;
+  }
+
+  /**
+   * @param id the id to set
+   */
+  public void setId(String id) {
+    this.id = id;
+  }
+
+  /**
+   * @return the name
+   */
+  public String getName() {
+    return name;
+  }
+
+  /**
+   * @param name the name to set
+   */
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  /**
+   * @return the description
+   */
+  public String getDescription() {
+    return description;
+  }
+
+  /**
+   * @param description the description to set
+   */
+  public void setDescription(String description) {
+    this.description = description;
+  }
+
+  /**
+   * @return the scene
+   */
+  public String getScene() {
+    return scene;
+  }
+
+  /**
+   * @param scene the scene to set
+   */
+  public void setScene(String scene) {
+    this.scene = scene;
+  }
+
+  /**
+   * @return the data
+   */
+  public JsonObject getData() {
+    return data;
+  }
+
+  /**
+   * @param data the data to set
+   */
+  public void setData(JsonObject data) {
+    this.data = data;
+  }
+
+  
+}
@@ -1,41 +1,41 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.utils;\r
-\r
-import com.google.gson.Gson;\r
-\r
-/**\r
- *\r
- */\r
-public class JsonUtils {\r
-  /**\r
-   * \r
-   * @param json\r
-   * @param clazz\r
-   * @return\r
-   */\r
-  public static <T> T fromJson(String json, Class<T> clazz) {\r
-    Gson gson = new Gson();\r
-    return gson.fromJson(json, clazz);\r
-  }\r
-\r
-  /**\r
-   * \r
-   * @param t\r
-   * @return\r
-   */\r
-  public static <T> String toJson(T t) {\r
-    Gson gson = new Gson();\r
-    return gson.toJson(t);\r
-  }\r
-  \r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.utils;
+
+import com.google.gson.Gson;
+
+/**
+ *
+ */
+public class JsonUtils {
+  /**
+   * 
+   * @param json
+   * @param clazz
+   * @return
+   */
+  public static <T> T fromJson(String json, Class<T> clazz) {
+    Gson gson = new Gson();
+    return gson.fromJson(json, clazz);
+  }
+
+  /**
+   * 
+   * @param t
+   * @return
+   */
+  public static <T> String toJson(T t) {
+    Gson gson = new Gson();
+    return gson.toJson(t);
+  }
+  
+}
@@ -1,26 +1,26 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.utils;\r
-\r
-/**\r
- *\r
- */\r
-public class ToolUtils {\r
-  /**\r
-   * @param val\r
-   * @return\r
-   */\r
-  public static boolean isEmpty(String val) {\r
-    return val == null || val.trim().isEmpty();\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.utils;
+
+/**
+ *
+ */
+public class ToolUtils {
+  /**
+   * @param val
+   * @return
+   */
+  public static boolean isEmpty(String val) {
+    return val == null || val.trim().isEmpty();
+  }
+
+}
@@ -1,64 +1,64 @@
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.writer;\r
-\r
-import java.io.StringWriter;\r
-\r
-import org.apache.velocity.Template;\r
-import org.apache.velocity.VelocityContext;\r
-import org.apache.velocity.app.Velocity;\r
-import org.apache.velocity.app.VelocityEngine;\r
-import org.apache.velocity.exception.ParseErrorException;\r
-import org.apache.velocity.exception.ResourceNotFoundException;\r
-import org.onap.sdc.workflowdesigner.config.Config;\r
-import org.onap.sdc.workflowdesigner.model.Process;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-public class BpmnPlanArtefactWriter {\r
-\r
-    private Process process;\r
-\r
-    private final static String TEMPLATE_PATH = Config.PROPERTIES.getProperty(Config.TEMPLATE_PATH);\r
-\r
-    private static Logger log = LoggerFactory.getLogger(BpmnPlanArtefactWriter.class);\r
-\r
-    public BpmnPlanArtefactWriter(Process process) throws Exception {\r
-        this.process = process;\r
-        Velocity.init();\r
-    }\r
-\r
-    public String completePlanTemplate() throws ResourceNotFoundException, ParseErrorException, Exception {\r
-        log.debug("Completing BPMN process template...");\r
-\r
-        VelocityContext context = new VelocityContext();\r
-\r
-        VelocityEngine ve = new VelocityEngine();\r
-        ve.setProperty("resource.loader", "class");\r
-        ve.setProperty("class.resource.loader.class",\r
-                "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");\r
-        Template planTemplate = ve.getTemplate(TEMPLATE_PATH + "bpmn_template.xml");\r
-\r
-        context.put("process", process);\r
-        context.put("templatePath", TEMPLATE_PATH);\r
-        StringWriter planWriter = new StringWriter();\r
-        planTemplate.merge(context, planWriter);\r
-\r
-        String bpmnProcessContent = planWriter.toString();\r
-\r
-        log.debug("Completed BPMN process template" + bpmnProcessContent);\r
-\r
-        return bpmnProcessContent;\r
-\r
-    }\r
-\r
-}\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.writer;
+
+import java.io.StringWriter;
+
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.Velocity;
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.onap.sdc.workflowdesigner.config.Config;
+import org.onap.sdc.workflowdesigner.model.Process;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BpmnPlanArtefactWriter {
+
+    private Process process;
+
+    private final static String TEMPLATE_PATH = Config.PROPERTIES.getProperty(Config.TEMPLATE_PATH);
+
+    private static Logger log = LoggerFactory.getLogger(BpmnPlanArtefactWriter.class);
+
+    public BpmnPlanArtefactWriter(Process process) throws Exception {
+        this.process = process;
+        Velocity.init();
+    }
+
+    public String completePlanTemplate() throws ResourceNotFoundException, ParseErrorException, Exception {
+        log.debug("Completing BPMN process template...");
+
+        VelocityContext context = new VelocityContext();
+
+        VelocityEngine ve = new VelocityEngine();
+        ve.setProperty("resource.loader", "class");
+        ve.setProperty("class.resource.loader.class",
+                "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
+        Template planTemplate = ve.getTemplate(TEMPLATE_PATH + "bpmn_template.xml");
+
+        context.put("process", process);
+        context.put("templatePath", TEMPLATE_PATH);
+        StringWriter planWriter = new StringWriter();
+        planTemplate.merge(context, planWriter);
+
+        String bpmnProcessContent = planWriter.toString();
+
+        log.debug("Completed BPMN process template" + bpmnProcessContent);
+
+        return bpmnProcessContent;
+
+    }
+
+}
-/**\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 */\r
-html,\r
-body,\r
-div,\r
-span,\r
-applet,\r
-object,\r
-iframe,\r
-h1,\r
-h2,\r
-h3,\r
-h4,\r
-h5,\r
-h6,\r
-p,\r
-blockquote,\r
-pre,\r
-a,\r
-abbr,\r
-acronym,\r
-address,\r
-big,\r
-cite,\r
-code,\r
-del,\r
-dfn,\r
-em,\r
-img,\r
-ins,\r
-kbd,\r
-q,\r
-s,\r
-samp,\r
-small,\r
-strike,\r
-strong,\r
-sub,\r
-sup,\r
-tt,\r
-var,\r
-b,\r
-u,\r
-i,\r
-center,\r
-dl,\r
-dt,\r
-dd,\r
-ol,\r
-ul,\r
-li,\r
-fieldset,\r
-form,\r
-label,\r
-legend,\r
-table,\r
-caption,\r
-tbody,\r
-tfoot,\r
-thead,\r
-tr,\r
-th,\r
-td,\r
-article,\r
-aside,\r
-canvas,\r
-details,\r
-embed,\r
-figure,\r
-figcaption,\r
-footer,\r
-header,\r
-hgroup,\r
-menu,\r
-nav,\r
-output,\r
-ruby,\r
-section,\r
-summary,\r
-time,\r
-mark,\r
-audio,\r
-video {\r
-  margin: 0;\r
-  padding: 0;\r
-  border: 0;\r
-  font-size: 100%;\r
-  font: inherit;\r
-  vertical-align: baseline;\r
-}\r
-/* HTML5 display-role reset for older browsers */\r
-article,\r
-aside,\r
-details,\r
-figcaption,\r
-figure,\r
-footer,\r
-header,\r
-hgroup,\r
-menu,\r
-nav,\r
-section {\r
-  display: block;\r
-}\r
-body {\r
-  line-height: 1;\r
-}\r
-ol,\r
-ul {\r
-  list-style: none;\r
-}\r
-blockquote,\r
-q {\r
-  quotes: none;\r
-}\r
-blockquote:before,\r
-blockquote:after,\r
-q:before,\r
-q:after {\r
-  content: '';\r
-  content: none;\r
-}\r
-table {\r
-  border-collapse: collapse;\r
-  border-spacing: 0;\r
-}\r
+/**
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 */
+html,
+body,
+div,
+span,
+applet,
+object,
+iframe,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+p,
+blockquote,
+pre,
+a,
+abbr,
+acronym,
+address,
+big,
+cite,
+code,
+del,
+dfn,
+em,
+img,
+ins,
+kbd,
+q,
+s,
+samp,
+small,
+strike,
+strong,
+sub,
+sup,
+tt,
+var,
+b,
+u,
+i,
+center,
+dl,
+dt,
+dd,
+ol,
+ul,
+li,
+fieldset,
+form,
+label,
+legend,
+table,
+caption,
+tbody,
+tfoot,
+thead,
+tr,
+th,
+td,
+article,
+aside,
+canvas,
+details,
+embed,
+figure,
+figcaption,
+footer,
+header,
+hgroup,
+menu,
+nav,
+output,
+ruby,
+section,
+summary,
+time,
+mark,
+audio,
+video {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  font: inherit;
+  vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+menu,
+nav,
+section {
+  display: block;
+}
+body {
+  line-height: 1;
+}
+ol,
+ul {
+  list-style: none;
+}
+blockquote,
+q {
+  quotes: none;
+}
+blockquote:before,
+blockquote:after,
+q:before,
+q:after {
+  content: '';
+  content: none;
+}
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
-/**\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-/* Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org> */\r
-.swagger-section pre code {\r
-  display: block;\r
-  padding: 0.5em;\r
-  background: #F0F0F0;\r
-}\r
-.swagger-section pre code,\r
-.swagger-section pre .subst,\r
-.swagger-section pre .tag .title,\r
-.swagger-section pre .lisp .title,\r
-.swagger-section pre .clojure .built_in,\r
-.swagger-section pre .nginx .title {\r
-  color: black;\r
-}\r
-.swagger-section pre .string,\r
-.swagger-section pre .title,\r
-.swagger-section pre .constant,\r
-.swagger-section pre .parent,\r
-.swagger-section pre .tag .value,\r
-.swagger-section pre .rules .value,\r
-.swagger-section pre .rules .value .number,\r
-.swagger-section pre .preprocessor,\r
-.swagger-section pre .ruby .symbol,\r
-.swagger-section pre .ruby .symbol .string,\r
-.swagger-section pre .aggregate,\r
-.swagger-section pre .template_tag,\r
-.swagger-section pre .django .variable,\r
-.swagger-section pre .smalltalk .class,\r
-.swagger-section pre .addition,\r
-.swagger-section pre .flow,\r
-.swagger-section pre .stream,\r
-.swagger-section pre .bash .variable,\r
-.swagger-section pre .apache .tag,\r
-.swagger-section pre .apache .cbracket,\r
-.swagger-section pre .tex .command,\r
-.swagger-section pre .tex .special,\r
-.swagger-section pre .erlang_repl .function_or_atom,\r
-.swagger-section pre .markdown .header {\r
-  color: #800;\r
-}\r
-.swagger-section pre .comment,\r
-.swagger-section pre .annotation,\r
-.swagger-section pre .template_comment,\r
-.swagger-section pre .diff .header,\r
-.swagger-section pre .chunk,\r
-.swagger-section pre .markdown .blockquote {\r
-  color: #888;\r
-}\r
-.swagger-section pre .number,\r
-.swagger-section pre .date,\r
-.swagger-section pre .regexp,\r
-.swagger-section pre .literal,\r
-.swagger-section pre .smalltalk .symbol,\r
-.swagger-section pre .smalltalk .char,\r
-.swagger-section pre .go .constant,\r
-.swagger-section pre .change,\r
-.swagger-section pre .markdown .bullet,\r
-.swagger-section pre .markdown .link_url {\r
-  color: #080;\r
-}\r
-.swagger-section pre .label,\r
-.swagger-section pre .javadoc,\r
-.swagger-section pre .ruby .string,\r
-.swagger-section pre .decorator,\r
-.swagger-section pre .filter .argument,\r
-.swagger-section pre .localvars,\r
-.swagger-section pre .array,\r
-.swagger-section pre .attr_selector,\r
-.swagger-section pre .important,\r
-.swagger-section pre .pseudo,\r
-.swagger-section pre .pi,\r
-.swagger-section pre .doctype,\r
-.swagger-section pre .deletion,\r
-.swagger-section pre .envvar,\r
-.swagger-section pre .shebang,\r
-.swagger-section pre .apache .sqbracket,\r
-.swagger-section pre .nginx .built_in,\r
-.swagger-section pre .tex .formula,\r
-.swagger-section pre .erlang_repl .reserved,\r
-.swagger-section pre .prompt,\r
-.swagger-section pre .markdown .link_label,\r
-.swagger-section pre .vhdl .attribute,\r
-.swagger-section pre .clojure .attribute,\r
-.swagger-section pre .coffeescript .property {\r
-  color: #8888ff;\r
-}\r
-.swagger-section pre .keyword,\r
-.swagger-section pre .id,\r
-.swagger-section pre .phpdoc,\r
-.swagger-section pre .title,\r
-.swagger-section pre .built_in,\r
-.swagger-section pre .aggregate,\r
-.swagger-section pre .css .tag,\r
-.swagger-section pre .javadoctag,\r
-.swagger-section pre .phpdoc,\r
-.swagger-section pre .yardoctag,\r
-.swagger-section pre .smalltalk .class,\r
-.swagger-section pre .winutils,\r
-.swagger-section pre .bash .variable,\r
-.swagger-section pre .apache .tag,\r
-.swagger-section pre .go .typename,\r
-.swagger-section pre .tex .command,\r
-.swagger-section pre .markdown .strong,\r
-.swagger-section pre .request,\r
-.swagger-section pre .status {\r
-  font-weight: bold;\r
-}\r
-.swagger-section pre .markdown .emphasis {\r
-  font-style: italic;\r
-}\r
-.swagger-section pre .nginx .built_in {\r
-  font-weight: normal;\r
-}\r
-.swagger-section pre .coffeescript .javascript,\r
-.swagger-section pre .javascript .xml,\r
-.swagger-section pre .tex .formula,\r
-.swagger-section pre .xml .javascript,\r
-.swagger-section pre .xml .vbscript,\r
-.swagger-section pre .xml .css,\r
-.swagger-section pre .xml .cdata {\r
-  opacity: 0.5;\r
-}\r
-.swagger-section .swagger-ui-wrap {\r
-  line-height: 1;\r
-  font-family: "Droid Sans", sans-serif;\r
-  max-width: 960px;\r
-  margin-left: auto;\r
-  margin-right: auto;\r
-}\r
-.swagger-section .swagger-ui-wrap b,\r
-.swagger-section .swagger-ui-wrap strong {\r
-  font-family: "Droid Sans", sans-serif;\r
-  font-weight: bold;\r
-}\r
-.swagger-section .swagger-ui-wrap q,\r
-.swagger-section .swagger-ui-wrap blockquote {\r
-  quotes: none;\r
-}\r
-.swagger-section .swagger-ui-wrap p {\r
-  line-height: 1.4em;\r
-  padding: 0 0 10px;\r
-  color: #333333;\r
-}\r
-.swagger-section .swagger-ui-wrap q:before,\r
-.swagger-section .swagger-ui-wrap q:after,\r
-.swagger-section .swagger-ui-wrap blockquote:before,\r
-.swagger-section .swagger-ui-wrap blockquote:after {\r
-  content: none;\r
-}\r
-.swagger-section .swagger-ui-wrap .heading_with_menu h1,\r
-.swagger-section .swagger-ui-wrap .heading_with_menu h2,\r
-.swagger-section .swagger-ui-wrap .heading_with_menu h3,\r
-.swagger-section .swagger-ui-wrap .heading_with_menu h4,\r
-.swagger-section .swagger-ui-wrap .heading_with_menu h5,\r
-.swagger-section .swagger-ui-wrap .heading_with_menu h6 {\r
-  display: block;\r
-  clear: none;\r
-  float: left;\r
-  -moz-box-sizing: border-box;\r
-  -webkit-box-sizing: border-box;\r
-  -ms-box-sizing: border-box;\r
-  box-sizing: border-box;\r
-  width: 60%;\r
-}\r
-.swagger-section .swagger-ui-wrap table {\r
-  border-collapse: collapse;\r
-  border-spacing: 0;\r
-}\r
-.swagger-section .swagger-ui-wrap table thead tr th {\r
-  padding: 5px;\r
-  font-size: 0.9em;\r
-  color: #666666;\r
-  border-bottom: 1px solid #999999;\r
-}\r
-.swagger-section .swagger-ui-wrap table tbody tr:last-child td {\r
-  border-bottom: none;\r
-}\r
-.swagger-section .swagger-ui-wrap table tbody tr.offset {\r
-  background-color: #f0f0f0;\r
-}\r
-.swagger-section .swagger-ui-wrap table tbody tr td {\r
-  padding: 6px;\r
-  font-size: 0.9em;\r
-  border-bottom: 1px solid #cccccc;\r
-  vertical-align: top;\r
-  line-height: 1.3em;\r
-}\r
-.swagger-section .swagger-ui-wrap ol {\r
-  margin: 0px 0 10px;\r
-  padding: 0 0 0 18px;\r
-  list-style-type: decimal;\r
-}\r
-.swagger-section .swagger-ui-wrap ol li {\r
-  padding: 5px 0px;\r
-  font-size: 0.9em;\r
-  color: #333333;\r
-}\r
-.swagger-section .swagger-ui-wrap ol,\r
-.swagger-section .swagger-ui-wrap ul {\r
-  list-style: none;\r
-}\r
-.swagger-section .swagger-ui-wrap h1 a,\r
-.swagger-section .swagger-ui-wrap h2 a,\r
-.swagger-section .swagger-ui-wrap h3 a,\r
-.swagger-section .swagger-ui-wrap h4 a,\r
-.swagger-section .swagger-ui-wrap h5 a,\r
-.swagger-section .swagger-ui-wrap h6 a {\r
-  text-decoration: none;\r
-}\r
-.swagger-section .swagger-ui-wrap h1 a:hover,\r
-.swagger-section .swagger-ui-wrap h2 a:hover,\r
-.swagger-section .swagger-ui-wrap h3 a:hover,\r
-.swagger-section .swagger-ui-wrap h4 a:hover,\r
-.swagger-section .swagger-ui-wrap h5 a:hover,\r
-.swagger-section .swagger-ui-wrap h6 a:hover {\r
-  text-decoration: underline;\r
-}\r
-.swagger-section .swagger-ui-wrap h1 span.divider,\r
-.swagger-section .swagger-ui-wrap h2 span.divider,\r
-.swagger-section .swagger-ui-wrap h3 span.divider,\r
-.swagger-section .swagger-ui-wrap h4 span.divider,\r
-.swagger-section .swagger-ui-wrap h5 span.divider,\r
-.swagger-section .swagger-ui-wrap h6 span.divider {\r
-  color: #aaaaaa;\r
-}\r
-.swagger-section .swagger-ui-wrap a {\r
-  color: #547f00;\r
-}\r
-.swagger-section .swagger-ui-wrap a img {\r
-  border: none;\r
-}\r
-.swagger-section .swagger-ui-wrap article,\r
-.swagger-section .swagger-ui-wrap aside,\r
-.swagger-section .swagger-ui-wrap details,\r
-.swagger-section .swagger-ui-wrap figcaption,\r
-.swagger-section .swagger-ui-wrap figure,\r
-.swagger-section .swagger-ui-wrap footer,\r
-.swagger-section .swagger-ui-wrap header,\r
-.swagger-section .swagger-ui-wrap hgroup,\r
-.swagger-section .swagger-ui-wrap menu,\r
-.swagger-section .swagger-ui-wrap nav,\r
-.swagger-section .swagger-ui-wrap section,\r
-.swagger-section .swagger-ui-wrap summary {\r
-  display: block;\r
-}\r
-.swagger-section .swagger-ui-wrap pre {\r
-  font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace;\r
-  background-color: #fcf6db;\r
-  border: 1px solid #e5e0c6;\r
-  padding: 10px;\r
-}\r
-.swagger-section .swagger-ui-wrap pre code {\r
-  line-height: 1.6em;\r
-  background: none;\r
-}\r
-.swagger-section .swagger-ui-wrap .content > .content-type > div > label {\r
-  clear: both;\r
-  display: block;\r
-  color: #0F6AB4;\r
-  font-size: 1.1em;\r
-  margin: 0;\r
-  padding: 15px 0 5px;\r
-}\r
-.swagger-section .swagger-ui-wrap .content pre {\r
-  font-size: 12px;\r
-  margin-top: 5px;\r
-  padding: 5px;\r
-}\r
-.swagger-section .swagger-ui-wrap .icon-btn {\r
-  cursor: pointer;\r
-}\r
-.swagger-section .swagger-ui-wrap .info_title {\r
-  padding-bottom: 10px;\r
-  font-weight: bold;\r
-  font-size: 25px;\r
-}\r
-.swagger-section .swagger-ui-wrap p.big,\r
-.swagger-section .swagger-ui-wrap div.big p {\r
-  font-size: 1em;\r
-  margin-bottom: 10px;\r
-}\r
-.swagger-section .swagger-ui-wrap form.fullwidth ol li.string input,\r
-.swagger-section .swagger-ui-wrap form.fullwidth ol li.url input,\r
-.swagger-section .swagger-ui-wrap form.fullwidth ol li.text textarea,\r
-.swagger-section .swagger-ui-wrap form.fullwidth ol li.numeric input {\r
-  width: 500px !important;\r
-}\r
-.swagger-section .swagger-ui-wrap .info_license {\r
-  padding-bottom: 5px;\r
-}\r
-.swagger-section .swagger-ui-wrap .info_tos {\r
-  padding-bottom: 5px;\r
-}\r
-.swagger-section .swagger-ui-wrap .message-fail {\r
-  color: #cc0000;\r
-}\r
-.swagger-section .swagger-ui-wrap .info_url {\r
-  padding-bottom: 5px;\r
-}\r
-.swagger-section .swagger-ui-wrap .info_email {\r
-  padding-bottom: 5px;\r
-}\r
-.swagger-section .swagger-ui-wrap .info_name {\r
-  padding-bottom: 5px;\r
-}\r
-.swagger-section .swagger-ui-wrap .info_description {\r
-  padding-bottom: 10px;\r
-  font-size: 15px;\r
-}\r
-.swagger-section .swagger-ui-wrap .markdown ol li,\r
-.swagger-section .swagger-ui-wrap .markdown ul li {\r
-  padding: 3px 0px;\r
-  line-height: 1.4em;\r
-  color: #333333;\r
-}\r
-.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input,\r
-.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input,\r
-.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input {\r
-  display: block;\r
-  padding: 4px;\r
-  width: auto;\r
-  clear: both;\r
-}\r
-.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input.title,\r
-.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input.title,\r
-.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input.title {\r
-  font-size: 1.3em;\r
-}\r
-.swagger-section .swagger-ui-wrap table.fullwidth {\r
-  width: 100%;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature {\r
-  font-family: "Droid Sans", sans-serif;\r
-  font-size: 1em;\r
-  line-height: 1.5em;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature .signature-nav a {\r
-  text-decoration: none;\r
-  color: #AAA;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature .signature-nav a:hover {\r
-  text-decoration: underline;\r
-  color: black;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature .signature-nav .selected {\r
-  color: black;\r
-  text-decoration: none;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature .propType {\r
-  color: #5555aa;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature pre:hover {\r
-  background-color: #ffffdd;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature pre {\r
-  font-size: .85em;\r
-  line-height: 1.2em;\r
-  overflow: auto;\r
-  max-height: 200px;\r
-  cursor: pointer;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav {\r
-  display: block;\r
-  margin: 0;\r
-  padding: 0;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li:last-child {\r
-  padding-right: 0;\r
-  border-right: none;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li {\r
-  float: left;\r
-  margin: 0 5px 5px 0;\r
-  padding: 2px 5px 2px 0;\r
-  border-right: 1px solid #ddd;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature .propOpt {\r
-  color: #555;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature .snippet small {\r
-  font-size: 0.75em;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature .propOptKey {\r
-  font-style: italic;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature .description .strong {\r
-  font-weight: bold;\r
-  color: #000;\r
-  font-size: .9em;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature .description div {\r
-  font-size: 0.9em;\r
-  line-height: 1.5em;\r
-  margin-left: 1em;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature .description .stronger {\r
-  font-weight: bold;\r
-  color: #000;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper {\r
-  border-spacing: 0;\r
-  position: absolute;\r
-  background-color: #ffffff;\r
-  border: 1px solid #bbbbbb;\r
-  display: none;\r
-  font-size: 11px;\r
-  max-width: 400px;\r
-  line-height: 30px;\r
-  color: black;\r
-  padding: 5px;\r
-  margin-left: 10px;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper th {\r
-  text-align: center;\r
-  background-color: #eeeeee;\r
-  border: 1px solid #bbbbbb;\r
-  font-size: 11px;\r
-  color: #666666;\r
-  font-weight: bold;\r
-  padding: 5px;\r
-  line-height: 15px;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper .optionName {\r
-  font-weight: bold;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature .propName {\r
-  font-weight: bold;\r
-}\r
-.swagger-section .swagger-ui-wrap .model-signature .signature-container {\r
-  clear: both;\r
-}\r
-.swagger-section .swagger-ui-wrap .body-textarea {\r
-  width: 300px;\r
-  height: 100px;\r
-  border: 1px solid #aaa;\r
-}\r
-.swagger-section .swagger-ui-wrap .markdown p code,\r
-.swagger-section .swagger-ui-wrap .markdown li code {\r
-  font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace;\r
-  background-color: #f0f0f0;\r
-  color: black;\r
-  padding: 1px 3px;\r
-}\r
-.swagger-section .swagger-ui-wrap .required {\r
-  font-weight: bold;\r
-}\r
-.swagger-section .swagger-ui-wrap input.parameter {\r
-  width: 300px;\r
-  border: 1px solid #aaa;\r
-}\r
-.swagger-section .swagger-ui-wrap h1 {\r
-  color: black;\r
-  font-size: 1.5em;\r
-  line-height: 1.3em;\r
-  padding: 10px 0 10px 0;\r
-  font-family: "Droid Sans", sans-serif;\r
-  font-weight: bold;\r
-}\r
-.swagger-section .swagger-ui-wrap .heading_with_menu {\r
-  float: none;\r
-  clear: both;\r
-  overflow: hidden;\r
-  display: block;\r
-}\r
-.swagger-section .swagger-ui-wrap .heading_with_menu ul {\r
-  display: block;\r
-  clear: none;\r
-  float: right;\r
-  -moz-box-sizing: border-box;\r
-  -webkit-box-sizing: border-box;\r
-  -ms-box-sizing: border-box;\r
-  box-sizing: border-box;\r
-  margin-top: 10px;\r
-}\r
-.swagger-section .swagger-ui-wrap h2 {\r
-  color: black;\r
-  font-size: 1.3em;\r
-  padding: 10px 0 10px 0;\r
-}\r
-.swagger-section .swagger-ui-wrap h2 a {\r
-  color: black;\r
-}\r
-.swagger-section .swagger-ui-wrap h2 span.sub {\r
-  font-size: 0.7em;\r
-  color: #999999;\r
-  font-style: italic;\r
-}\r
-.swagger-section .swagger-ui-wrap h2 span.sub a {\r
-  color: #777777;\r
-}\r
-.swagger-section .swagger-ui-wrap span.weak {\r
-  color: #666666;\r
-}\r
-.swagger-section .swagger-ui-wrap .message-success {\r
-  color: #89BF04;\r
-}\r
-.swagger-section .swagger-ui-wrap caption,\r
-.swagger-section .swagger-ui-wrap th,\r
-.swagger-section .swagger-ui-wrap td {\r
-  text-align: left;\r
-  font-weight: normal;\r
-  vertical-align: middle;\r
-}\r
-.swagger-section .swagger-ui-wrap .code {\r
-  font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace;\r
-}\r
-.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.text textarea {\r
-  font-family: "Droid Sans", sans-serif;\r
-  height: 250px;\r
-  padding: 4px;\r
-  display: block;\r
-  clear: both;\r
-}\r
-.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.select select {\r
-  display: block;\r
-  clear: both;\r
-}\r
-.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean {\r
-  float: none;\r
-  clear: both;\r
-  overflow: hidden;\r
-  display: block;\r
-}\r
-.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean label {\r
-  display: block;\r
-  float: left;\r
-  clear: none;\r
-  margin: 0;\r
-  padding: 0;\r
-}\r
-.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean input {\r
-  display: block;\r
-  float: left;\r
-  clear: none;\r
-  margin: 0 5px 0 0;\r
-}\r
-.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.required label {\r
-  color: black;\r
-}\r
-.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label {\r
-  display: block;\r
-  clear: both;\r
-  width: auto;\r
-  padding: 0 0 3px;\r
-  color: #666666;\r
-}\r
-.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label abbr {\r
-  padding-left: 3px;\r
-  color: #888888;\r
-}\r
-.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li p.inline-hints {\r
-  margin-left: 0;\r
-  font-style: italic;\r
-  font-size: 0.9em;\r
-  margin: 0;\r
-}\r
-.swagger-section .swagger-ui-wrap form.formtastic fieldset.buttons {\r
-  margin: 0;\r
-  padding: 0;\r
-}\r
-.swagger-section .swagger-ui-wrap span.blank,\r
-.swagger-section .swagger-ui-wrap span.empty {\r
-  color: #888888;\r
-  font-style: italic;\r
-}\r
-.swagger-section .swagger-ui-wrap .markdown h3 {\r
-  color: #547f00;\r
-}\r
-.swagger-section .swagger-ui-wrap .markdown h4 {\r
-  color: #666666;\r
-}\r
-.swagger-section .swagger-ui-wrap .markdown pre {\r
-  font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace;\r
-  background-color: #fcf6db;\r
-  border: 1px solid #e5e0c6;\r
-  padding: 10px;\r
-  margin: 0 0 10px 0;\r
-}\r
-.swagger-section .swagger-ui-wrap .markdown pre code {\r
-  line-height: 1.6em;\r
-}\r
-.swagger-section .swagger-ui-wrap div.gist {\r
-  margin: 20px 0 25px 0 !important;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources {\r
-  font-family: "Droid Sans", sans-serif;\r
-  font-size: 0.9em;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource {\r
-  border-bottom: 1px solid #dddddd;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading h2 a,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading h2 a {\r
-  color: black;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading ul.options li a,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading ul.options li a {\r
-  color: #555555;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource:last-child {\r
-  border-bottom: none;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading {\r
-  border: 1px solid transparent;\r
-  float: none;\r
-  clear: both;\r
-  overflow: hidden;\r
-  display: block;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options {\r
-  overflow: hidden;\r
-  padding: 0;\r
-  display: block;\r
-  clear: none;\r
-  float: right;\r
-  margin: 14px 10px 0 0;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li {\r
-  float: left;\r
-  clear: none;\r
-  margin: 0;\r
-  padding: 2px 10px;\r
-  border-right: 1px solid #dddddd;\r
-  color: #666666;\r
-  font-size: 0.9em;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a {\r
-  color: #aaaaaa;\r
-  text-decoration: none;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover {\r
-  text-decoration: underline;\r
-  color: black;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:active,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a.active {\r
-  text-decoration: underline;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:first-child,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.first {\r
-  padding-left: 0;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:last-child,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.last {\r
-  padding-right: 0;\r
-  border-right: none;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options:first-child,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options.first {\r
-  padding-left: 0;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 {\r
-  color: #999999;\r
-  padding-left: 0;\r
-  display: block;\r
-  clear: none;\r
-  float: left;\r
-  font-family: "Droid Sans", sans-serif;\r
-  font-weight: bold;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a {\r
-  color: #999999;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover {\r
-  color: black;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation {\r
-  float: none;\r
-  clear: both;\r
-  overflow: hidden;\r
-  display: block;\r
-  margin: 0 0 10px;\r
-  padding: 0;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading {\r
-  float: none;\r
-  clear: both;\r
-  overflow: hidden;\r
-  display: block;\r
-  margin: 0;\r
-  padding: 0;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 {\r
-  display: block;\r
-  clear: none;\r
-  float: left;\r
-  width: auto;\r
-  margin: 0;\r
-  padding: 0;\r
-  line-height: 1.1em;\r
-  color: black;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path {\r
-  padding-left: 10px;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a {\r
-  color: black;\r
-  text-decoration: none;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a:hover {\r
-  text-decoration: underline;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.http_method a {\r
-  text-transform: uppercase;\r
-  text-decoration: none;\r
-  color: white;\r
-  display: inline-block;\r
-  width: 50px;\r
-  font-size: 0.7em;\r
-  text-align: center;\r
-  padding: 7px 0 4px;\r
-  -moz-border-radius: 2px;\r
-  -webkit-border-radius: 2px;\r
-  -o-border-radius: 2px;\r
-  -ms-border-radius: 2px;\r
-  -khtml-border-radius: 2px;\r
-  border-radius: 2px;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span {\r
-  margin: 0;\r
-  padding: 0;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options {\r
-  overflow: hidden;\r
-  padding: 0;\r
-  display: block;\r
-  clear: none;\r
-  float: right;\r
-  margin: 6px 10px 0 0;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li {\r
-  float: left;\r
-  clear: none;\r
-  margin: 0;\r
-  padding: 2px 10px;\r
-  font-size: 0.9em;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a {\r
-  text-decoration: none;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li.access {\r
-  color: black;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content {\r
-  border-top: none;\r
-  padding: 10px;\r
-  -moz-border-radius-bottomleft: 6px;\r
-  -webkit-border-bottom-left-radius: 6px;\r
-  -o-border-bottom-left-radius: 6px;\r
-  -ms-border-bottom-left-radius: 6px;\r
-  -khtml-border-bottom-left-radius: 6px;\r
-  border-bottom-left-radius: 6px;\r
-  -moz-border-radius-bottomright: 6px;\r
-  -webkit-border-bottom-right-radius: 6px;\r
-  -o-border-bottom-right-radius: 6px;\r
-  -ms-border-bottom-right-radius: 6px;\r
-  -khtml-border-bottom-right-radius: 6px;\r
-  border-bottom-right-radius: 6px;\r
-  margin: 0 0 20px;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content h4 {\r
-  font-size: 1.1em;\r
-  margin: 0;\r
-  padding: 15px 0 5px;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header {\r
-  float: none;\r
-  clear: both;\r
-  overflow: hidden;\r
-  display: block;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header a {\r
-  padding: 4px 0 0 10px;\r
-  display: inline-block;\r
-  font-size: 0.9em;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header input.submit {\r
-  display: block;\r
-  clear: none;\r
-  float: left;\r
-  padding: 6px 8px;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header span.response_throbber {\r
-  background-image: url('../images/throbber.gif');\r
-  width: 128px;\r
-  height: 16px;\r
-  display: block;\r
-  clear: none;\r
-  float: right;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form input[type='text'].error {\r
-  outline: 2px solid black;\r
-  outline-color: #cc0000;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.response div.block pre {\r
-  font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace;\r
-  padding: 10px;\r
-  font-size: 0.9em;\r
-  max-height: 400px;\r
-  overflow-y: auto;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading {\r
-  background-color: #f9f2e9;\r
-  border: 1px solid #f0e0ca;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading h3 span.http_method a {\r
-  background-color: #c5862b;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li {\r
-  border-right: 1px solid #dddddd;\r
-  border-right-color: #f0e0ca;\r
-  color: #c5862b;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li a {\r
-  color: #c5862b;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content {\r
-  background-color: #faf5ee;\r
-  border: 1px solid #f0e0ca;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content h4 {\r
-  color: #c5862b;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content div.sandbox_header a {\r
-  color: #dcb67f;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading {\r
-  background-color: #fcffcd;\r
-  border: 1px solid black;\r
-  border-color: #ffd20f;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading h3 span.http_method a {\r
-  text-transform: uppercase;\r
-  background-color: #ffd20f;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li {\r
-  border-right: 1px solid #dddddd;\r
-  border-right-color: #ffd20f;\r
-  color: #ffd20f;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li a {\r
-  color: #ffd20f;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content {\r
-  background-color: #fcffcd;\r
-  border: 1px solid black;\r
-  border-color: #ffd20f;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content h4 {\r
-  color: #ffd20f;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content div.sandbox_header a {\r
-  color: #6fc992;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading {\r
-  background-color: #f5e8e8;\r
-  border: 1px solid #e8c6c7;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading h3 span.http_method a {\r
-  text-transform: uppercase;\r
-  background-color: #a41e22;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li {\r
-  border-right: 1px solid #dddddd;\r
-  border-right-color: #e8c6c7;\r
-  color: #a41e22;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li a {\r
-  color: #a41e22;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content {\r
-  background-color: #f7eded;\r
-  border: 1px solid #e8c6c7;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content h4 {\r
-  color: #a41e22;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content div.sandbox_header a {\r
-  color: #c8787a;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading {\r
-  background-color: #e7f6ec;\r
-  border: 1px solid #c3e8d1;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading h3 span.http_method a {\r
-  background-color: #10a54a;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li {\r
-  border-right: 1px solid #dddddd;\r
-  border-right-color: #c3e8d1;\r
-  color: #10a54a;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li a {\r
-  color: #10a54a;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content {\r
-  background-color: #ebf7f0;\r
-  border: 1px solid #c3e8d1;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content h4 {\r
-  color: #10a54a;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content div.sandbox_header a {\r
-  color: #6fc992;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading {\r
-  background-color: #FCE9E3;\r
-  border: 1px solid #F5D5C3;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading h3 span.http_method a {\r
-  background-color: #D38042;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li {\r
-  border-right: 1px solid #dddddd;\r
-  border-right-color: #f0cecb;\r
-  color: #D38042;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li a {\r
-  color: #D38042;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content {\r
-  background-color: #faf0ef;\r
-  border: 1px solid #f0cecb;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content h4 {\r
-  color: #D38042;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content div.sandbox_header a {\r
-  color: #dcb67f;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading {\r
-  background-color: #e7f0f7;\r
-  border: 1px solid #c3d9ec;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading h3 span.http_method a {\r
-  background-color: #0f6ab4;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li {\r
-  border-right: 1px solid #dddddd;\r
-  border-right-color: #c3d9ec;\r
-  color: #0f6ab4;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li a {\r
-  color: #0f6ab4;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content {\r
-  background-color: #ebf3f9;\r
-  border: 1px solid #c3d9ec;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content h4 {\r
-  color: #0f6ab4;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content div.sandbox_header a {\r
-  color: #6fa5d2;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading {\r
-  background-color: #e7f0f7;\r
-  border: 1px solid #c3d9ec;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading h3 span.http_method a {\r
-  background-color: #0f6ab4;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li {\r
-  border-right: 1px solid #dddddd;\r
-  border-right-color: #c3d9ec;\r
-  color: #0f6ab4;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li a {\r
-  color: #0f6ab4;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content {\r
-  background-color: #ebf3f9;\r
-  border: 1px solid #c3d9ec;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content h4 {\r
-  color: #0f6ab4;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content div.sandbox_header a {\r
-  color: #6fa5d2;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content {\r
-  border-top: none;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li:last-child,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li:last-child,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li:last-child,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li:last-child,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li:last-child,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li:last-child,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li.last,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li.last,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li.last,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li.last,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li.last,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li.last {\r
-  padding-right: 0;\r
-  border-right: none;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:hover,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:active,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a.active {\r
-  text-decoration: underline;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li:first-child,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li.first {\r
-  padding-left: 0;\r
-}\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations:first-child,\r
-.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations.first {\r
-  padding-left: 0;\r
-}\r
-.swagger-section .swagger-ui-wrap p#colophon {\r
-  margin: 0 15px 40px 15px;\r
-  padding: 10px 0;\r
-  font-size: 0.8em;\r
-  border-top: 1px solid #dddddd;\r
-  font-family: "Droid Sans", sans-serif;\r
-  color: #999999;\r
-  font-style: italic;\r
-}\r
-.swagger-section .swagger-ui-wrap p#colophon a {\r
-  text-decoration: none;\r
-  color: #547f00;\r
-}\r
-.swagger-section .swagger-ui-wrap h3 {\r
-  color: black;\r
-  font-size: 1.1em;\r
-  padding: 10px 0 10px 0;\r
-}\r
-.swagger-section .swagger-ui-wrap .markdown ol,\r
-.swagger-section .swagger-ui-wrap .markdown ul {\r
-  font-family: "Droid Sans", sans-serif;\r
-  margin: 5px 0 10px;\r
-  padding: 0 0 0 18px;\r
-  list-style-type: disc;\r
-}\r
-.swagger-section .swagger-ui-wrap form.form_box {\r
-  background-color: #ebf3f9;\r
-  border: 1px solid #c3d9ec;\r
-  padding: 10px;\r
-}\r
-.swagger-section .swagger-ui-wrap form.form_box label {\r
-  color: #0f6ab4 !important;\r
-}\r
-.swagger-section .swagger-ui-wrap form.form_box input[type=submit] {\r
-  display: block;\r
-  padding: 10px;\r
-}\r
-.swagger-section .swagger-ui-wrap form.form_box p.weak {\r
-  font-size: 0.8em;\r
-}\r
-.swagger-section .swagger-ui-wrap form.form_box p {\r
-  font-size: 0.9em;\r
-  padding: 0 0 15px;\r
-  color: #7e7b6d;\r
-}\r
-.swagger-section .swagger-ui-wrap form.form_box p a {\r
-  color: #646257;\r
-}\r
-.swagger-section .swagger-ui-wrap form.form_box p strong {\r
-  color: black;\r
-}\r
-.swagger-section .title {\r
-  font-style: bold;\r
-}\r
-.swagger-section .secondary_form {\r
-  display: none;\r
-}\r
-.swagger-section .main_image {\r
-  display: block;\r
-  margin-left: auto;\r
-  margin-right: auto;\r
-}\r
-.swagger-section .oauth_body {\r
-  margin-left: 100px;\r
-  margin-right: 100px;\r
-}\r
-.swagger-section .oauth_submit {\r
-  text-align: center;\r
-}\r
-.swagger-section .api-popup-dialog {\r
-  z-index: 10000;\r
-  position: absolute;\r
-  width: 500px;\r
-  background: #FFF;\r
-  padding: 20px;\r
-  border: 1px solid #ccc;\r
-  border-radius: 5px;\r
-  display: none;\r
-  font-size: 13px;\r
-  color: #777;\r
-}\r
-.swagger-section .api-popup-dialog .api-popup-title {\r
-  font-size: 24px;\r
-  padding: 10px 0;\r
-}\r
-.swagger-section .api-popup-dialog .api-popup-title {\r
-  font-size: 24px;\r
-  padding: 10px 0;\r
-}\r
-.swagger-section .api-popup-dialog p.error-msg {\r
-  padding-left: 5px;\r
-  padding-bottom: 5px;\r
-}\r
-.swagger-section .api-popup-dialog button.api-popup-authbtn {\r
-  height: 30px;\r
-}\r
-.swagger-section .api-popup-dialog button.api-popup-cancel {\r
-  height: 30px;\r
-}\r
-.swagger-section .api-popup-scopes {\r
-  padding: 10px 20px;\r
-}\r
-.swagger-section .api-popup-scopes li {\r
-  padding: 5px 0;\r
-  line-height: 20px;\r
-}\r
-.swagger-section .api-popup-scopes .api-scope-desc {\r
-  padding-left: 20px;\r
-  font-style: italic;\r
-}\r
-.swagger-section .api-popup-scopes li input {\r
-  position: relative;\r
-  top: 2px;\r
-}\r
-.swagger-section .api-popup-actions {\r
-  padding-top: 10px;\r
-}\r
-.swagger-section .access {\r
-  float: right;\r
-}\r
-.swagger-section .auth {\r
-  float: right;\r
-}\r
-.swagger-section #api_information_panel {\r
-  position: absolute;\r
-  background: #FFF;\r
-  border: 1px solid #ccc;\r
-  border-radius: 5px;\r
-  display: none;\r
-  font-size: 13px;\r
-  max-width: 300px;\r
-  line-height: 30px;\r
-  color: black;\r
-  padding: 5px;\r
-}\r
-.swagger-section #api_information_panel p .api-msg-enabled {\r
-  color: green;\r
-}\r
-.swagger-section #api_information_panel p .api-msg-disabled {\r
-  color: red;\r
-}\r
-.swagger-section .api-ic {\r
-  height: 18px;\r
-  vertical-align: middle;\r
-  display: inline-block;\r
-  background: url(../images/explorer_icons.png) no-repeat;\r
-}\r
-.swagger-section .ic-info {\r
-  background-position: 0 0;\r
-  width: 18px;\r
-  margin-top: -7px;\r
-  margin-left: 4px;\r
-}\r
-.swagger-section .ic-warning {\r
-  background-position: -60px 0;\r
-  width: 18px;\r
-  margin-top: -7px;\r
-  margin-left: 4px;\r
-}\r
-.swagger-section .ic-error {\r
-  background-position: -30px 0;\r
-  width: 18px;\r
-  margin-top: -7px;\r
-  margin-left: 4px;\r
-}\r
-.swagger-section .ic-off {\r
-  background-position: -90px 0;\r
-  width: 58px;\r
-  margin-top: -4px;\r
-  cursor: pointer;\r
-}\r
-.swagger-section .ic-on {\r
-  background-position: -160px 0;\r
-  width: 58px;\r
-  margin-top: -4px;\r
-  cursor: pointer;\r
-}\r
-.swagger-section #header {\r
-  background-color: #89bf04;\r
-  padding: 14px;\r
-}\r
-.swagger-section #header a#logo {\r
-  font-size: 1.5em;\r
-  font-weight: bold;\r
-  text-decoration: none;\r
-  background: transparent url(../images/logo_small.png) no-repeat left center;\r
-  padding: 20px 0 20px 40px;\r
-  color: white;\r
-}\r
-.swagger-section #header form#api_selector {\r
-  display: block;\r
-  clear: none;\r
-  float: right;\r
-}\r
-.swagger-section #header form#api_selector .input {\r
-  display: block;\r
-  clear: none;\r
-  float: left;\r
-  margin: 0 10px 0 0;\r
-}\r
-.swagger-section #header form#api_selector .input input#input_apiKey {\r
-  width: 200px;\r
-}\r
-.swagger-section #header form#api_selector .input input#input_baseUrl {\r
-  width: 400px;\r
-}\r
-.swagger-section #header form#api_selector .input a#explore {\r
-  display: block;\r
-  text-decoration: none;\r
-  font-weight: bold;\r
-  padding: 6px 8px;\r
-  font-size: 0.9em;\r
-  color: white;\r
-  background-color: #547f00;\r
-  -moz-border-radius: 4px;\r
-  -webkit-border-radius: 4px;\r
-  -o-border-radius: 4px;\r
-  -ms-border-radius: 4px;\r
-  -khtml-border-radius: 4px;\r
-  border-radius: 4px;\r
-}\r
-.swagger-section #header form#api_selector .input a#explore:hover {\r
-  background-color: #547f00;\r
-}\r
-.swagger-section #header form#api_selector .input input {\r
-  font-size: 0.9em;\r
-  padding: 3px;\r
-  margin: 0;\r
-}\r
-.swagger-section #content_message {\r
-  margin: 10px 15px;\r
-  font-style: italic;\r
-  color: #999999;\r
-}\r
-.swagger-section #message-bar {\r
-  min-height: 30px;\r
-  text-align: center;\r
-  padding-top: 10px;\r
-}\r
+/**
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/* Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org> */
+.swagger-section pre code {
+  display: block;
+  padding: 0.5em;
+  background: #F0F0F0;
+}
+.swagger-section pre code,
+.swagger-section pre .subst,
+.swagger-section pre .tag .title,
+.swagger-section pre .lisp .title,
+.swagger-section pre .clojure .built_in,
+.swagger-section pre .nginx .title {
+  color: black;
+}
+.swagger-section pre .string,
+.swagger-section pre .title,
+.swagger-section pre .constant,
+.swagger-section pre .parent,
+.swagger-section pre .tag .value,
+.swagger-section pre .rules .value,
+.swagger-section pre .rules .value .number,
+.swagger-section pre .preprocessor,
+.swagger-section pre .ruby .symbol,
+.swagger-section pre .ruby .symbol .string,
+.swagger-section pre .aggregate,
+.swagger-section pre .template_tag,
+.swagger-section pre .django .variable,
+.swagger-section pre .smalltalk .class,
+.swagger-section pre .addition,
+.swagger-section pre .flow,
+.swagger-section pre .stream,
+.swagger-section pre .bash .variable,
+.swagger-section pre .apache .tag,
+.swagger-section pre .apache .cbracket,
+.swagger-section pre .tex .command,
+.swagger-section pre .tex .special,
+.swagger-section pre .erlang_repl .function_or_atom,
+.swagger-section pre .markdown .header {
+  color: #800;
+}
+.swagger-section pre .comment,
+.swagger-section pre .annotation,
+.swagger-section pre .template_comment,
+.swagger-section pre .diff .header,
+.swagger-section pre .chunk,
+.swagger-section pre .markdown .blockquote {
+  color: #888;
+}
+.swagger-section pre .number,
+.swagger-section pre .date,
+.swagger-section pre .regexp,
+.swagger-section pre .literal,
+.swagger-section pre .smalltalk .symbol,
+.swagger-section pre .smalltalk .char,
+.swagger-section pre .go .constant,
+.swagger-section pre .change,
+.swagger-section pre .markdown .bullet,
+.swagger-section pre .markdown .link_url {
+  color: #080;
+}
+.swagger-section pre .label,
+.swagger-section pre .javadoc,
+.swagger-section pre .ruby .string,
+.swagger-section pre .decorator,
+.swagger-section pre .filter .argument,
+.swagger-section pre .localvars,
+.swagger-section pre .array,
+.swagger-section pre .attr_selector,
+.swagger-section pre .important,
+.swagger-section pre .pseudo,
+.swagger-section pre .pi,
+.swagger-section pre .doctype,
+.swagger-section pre .deletion,
+.swagger-section pre .envvar,
+.swagger-section pre .shebang,
+.swagger-section pre .apache .sqbracket,
+.swagger-section pre .nginx .built_in,
+.swagger-section pre .tex .formula,
+.swagger-section pre .erlang_repl .reserved,
+.swagger-section pre .prompt,
+.swagger-section pre .markdown .link_label,
+.swagger-section pre .vhdl .attribute,
+.swagger-section pre .clojure .attribute,
+.swagger-section pre .coffeescript .property {
+  color: #8888ff;
+}
+.swagger-section pre .keyword,
+.swagger-section pre .id,
+.swagger-section pre .phpdoc,
+.swagger-section pre .title,
+.swagger-section pre .built_in,
+.swagger-section pre .aggregate,
+.swagger-section pre .css .tag,
+.swagger-section pre .javadoctag,
+.swagger-section pre .phpdoc,
+.swagger-section pre .yardoctag,
+.swagger-section pre .smalltalk .class,
+.swagger-section pre .winutils,
+.swagger-section pre .bash .variable,
+.swagger-section pre .apache .tag,
+.swagger-section pre .go .typename,
+.swagger-section pre .tex .command,
+.swagger-section pre .markdown .strong,
+.swagger-section pre .request,
+.swagger-section pre .status {
+  font-weight: bold;
+}
+.swagger-section pre .markdown .emphasis {
+  font-style: italic;
+}
+.swagger-section pre .nginx .built_in {
+  font-weight: normal;
+}
+.swagger-section pre .coffeescript .javascript,
+.swagger-section pre .javascript .xml,
+.swagger-section pre .tex .formula,
+.swagger-section pre .xml .javascript,
+.swagger-section pre .xml .vbscript,
+.swagger-section pre .xml .css,
+.swagger-section pre .xml .cdata {
+  opacity: 0.5;
+}
+.swagger-section .swagger-ui-wrap {
+  line-height: 1;
+  font-family: "Droid Sans", sans-serif;
+  max-width: 960px;
+  margin-left: auto;
+  margin-right: auto;
+}
+.swagger-section .swagger-ui-wrap b,
+.swagger-section .swagger-ui-wrap strong {
+  font-family: "Droid Sans", sans-serif;
+  font-weight: bold;
+}
+.swagger-section .swagger-ui-wrap q,
+.swagger-section .swagger-ui-wrap blockquote {
+  quotes: none;
+}
+.swagger-section .swagger-ui-wrap p {
+  line-height: 1.4em;
+  padding: 0 0 10px;
+  color: #333333;
+}
+.swagger-section .swagger-ui-wrap q:before,
+.swagger-section .swagger-ui-wrap q:after,
+.swagger-section .swagger-ui-wrap blockquote:before,
+.swagger-section .swagger-ui-wrap blockquote:after {
+  content: none;
+}
+.swagger-section .swagger-ui-wrap .heading_with_menu h1,
+.swagger-section .swagger-ui-wrap .heading_with_menu h2,
+.swagger-section .swagger-ui-wrap .heading_with_menu h3,
+.swagger-section .swagger-ui-wrap .heading_with_menu h4,
+.swagger-section .swagger-ui-wrap .heading_with_menu h5,
+.swagger-section .swagger-ui-wrap .heading_with_menu h6 {
+  display: block;
+  clear: none;
+  float: left;
+  -moz-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  box-sizing: border-box;
+  width: 60%;
+}
+.swagger-section .swagger-ui-wrap table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+.swagger-section .swagger-ui-wrap table thead tr th {
+  padding: 5px;
+  font-size: 0.9em;
+  color: #666666;
+  border-bottom: 1px solid #999999;
+}
+.swagger-section .swagger-ui-wrap table tbody tr:last-child td {
+  border-bottom: none;
+}
+.swagger-section .swagger-ui-wrap table tbody tr.offset {
+  background-color: #f0f0f0;
+}
+.swagger-section .swagger-ui-wrap table tbody tr td {
+  padding: 6px;
+  font-size: 0.9em;
+  border-bottom: 1px solid #cccccc;
+  vertical-align: top;
+  line-height: 1.3em;
+}
+.swagger-section .swagger-ui-wrap ol {
+  margin: 0px 0 10px;
+  padding: 0 0 0 18px;
+  list-style-type: decimal;
+}
+.swagger-section .swagger-ui-wrap ol li {
+  padding: 5px 0px;
+  font-size: 0.9em;
+  color: #333333;
+}
+.swagger-section .swagger-ui-wrap ol,
+.swagger-section .swagger-ui-wrap ul {
+  list-style: none;
+}
+.swagger-section .swagger-ui-wrap h1 a,
+.swagger-section .swagger-ui-wrap h2 a,
+.swagger-section .swagger-ui-wrap h3 a,
+.swagger-section .swagger-ui-wrap h4 a,
+.swagger-section .swagger-ui-wrap h5 a,
+.swagger-section .swagger-ui-wrap h6 a {
+  text-decoration: none;
+}
+.swagger-section .swagger-ui-wrap h1 a:hover,
+.swagger-section .swagger-ui-wrap h2 a:hover,
+.swagger-section .swagger-ui-wrap h3 a:hover,
+.swagger-section .swagger-ui-wrap h4 a:hover,
+.swagger-section .swagger-ui-wrap h5 a:hover,
+.swagger-section .swagger-ui-wrap h6 a:hover {
+  text-decoration: underline;
+}
+.swagger-section .swagger-ui-wrap h1 span.divider,
+.swagger-section .swagger-ui-wrap h2 span.divider,
+.swagger-section .swagger-ui-wrap h3 span.divider,
+.swagger-section .swagger-ui-wrap h4 span.divider,
+.swagger-section .swagger-ui-wrap h5 span.divider,
+.swagger-section .swagger-ui-wrap h6 span.divider {
+  color: #aaaaaa;
+}
+.swagger-section .swagger-ui-wrap a {
+  color: #547f00;
+}
+.swagger-section .swagger-ui-wrap a img {
+  border: none;
+}
+.swagger-section .swagger-ui-wrap article,
+.swagger-section .swagger-ui-wrap aside,
+.swagger-section .swagger-ui-wrap details,
+.swagger-section .swagger-ui-wrap figcaption,
+.swagger-section .swagger-ui-wrap figure,
+.swagger-section .swagger-ui-wrap footer,
+.swagger-section .swagger-ui-wrap header,
+.swagger-section .swagger-ui-wrap hgroup,
+.swagger-section .swagger-ui-wrap menu,
+.swagger-section .swagger-ui-wrap nav,
+.swagger-section .swagger-ui-wrap section,
+.swagger-section .swagger-ui-wrap summary {
+  display: block;
+}
+.swagger-section .swagger-ui-wrap pre {
+  font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace;
+  background-color: #fcf6db;
+  border: 1px solid #e5e0c6;
+  padding: 10px;
+}
+.swagger-section .swagger-ui-wrap pre code {
+  line-height: 1.6em;
+  background: none;
+}
+.swagger-section .swagger-ui-wrap .content > .content-type > div > label {
+  clear: both;
+  display: block;
+  color: #0F6AB4;
+  font-size: 1.1em;
+  margin: 0;
+  padding: 15px 0 5px;
+}
+.swagger-section .swagger-ui-wrap .content pre {
+  font-size: 12px;
+  margin-top: 5px;
+  padding: 5px;
+}
+.swagger-section .swagger-ui-wrap .icon-btn {
+  cursor: pointer;
+}
+.swagger-section .swagger-ui-wrap .info_title {
+  padding-bottom: 10px;
+  font-weight: bold;
+  font-size: 25px;
+}
+.swagger-section .swagger-ui-wrap p.big,
+.swagger-section .swagger-ui-wrap div.big p {
+  font-size: 1em;
+  margin-bottom: 10px;
+}
+.swagger-section .swagger-ui-wrap form.fullwidth ol li.string input,
+.swagger-section .swagger-ui-wrap form.fullwidth ol li.url input,
+.swagger-section .swagger-ui-wrap form.fullwidth ol li.text textarea,
+.swagger-section .swagger-ui-wrap form.fullwidth ol li.numeric input {
+  width: 500px !important;
+}
+.swagger-section .swagger-ui-wrap .info_license {
+  padding-bottom: 5px;
+}
+.swagger-section .swagger-ui-wrap .info_tos {
+  padding-bottom: 5px;
+}
+.swagger-section .swagger-ui-wrap .message-fail {
+  color: #cc0000;
+}
+.swagger-section .swagger-ui-wrap .info_url {
+  padding-bottom: 5px;
+}
+.swagger-section .swagger-ui-wrap .info_email {
+  padding-bottom: 5px;
+}
+.swagger-section .swagger-ui-wrap .info_name {
+  padding-bottom: 5px;
+}
+.swagger-section .swagger-ui-wrap .info_description {
+  padding-bottom: 10px;
+  font-size: 15px;
+}
+.swagger-section .swagger-ui-wrap .markdown ol li,
+.swagger-section .swagger-ui-wrap .markdown ul li {
+  padding: 3px 0px;
+  line-height: 1.4em;
+  color: #333333;
+}
+.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input,
+.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input,
+.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input {
+  display: block;
+  padding: 4px;
+  width: auto;
+  clear: both;
+}
+.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input.title,
+.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input.title,
+.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input.title {
+  font-size: 1.3em;
+}
+.swagger-section .swagger-ui-wrap table.fullwidth {
+  width: 100%;
+}
+.swagger-section .swagger-ui-wrap .model-signature {
+  font-family: "Droid Sans", sans-serif;
+  font-size: 1em;
+  line-height: 1.5em;
+}
+.swagger-section .swagger-ui-wrap .model-signature .signature-nav a {
+  text-decoration: none;
+  color: #AAA;
+}
+.swagger-section .swagger-ui-wrap .model-signature .signature-nav a:hover {
+  text-decoration: underline;
+  color: black;
+}
+.swagger-section .swagger-ui-wrap .model-signature .signature-nav .selected {
+  color: black;
+  text-decoration: none;
+}
+.swagger-section .swagger-ui-wrap .model-signature .propType {
+  color: #5555aa;
+}
+.swagger-section .swagger-ui-wrap .model-signature pre:hover {
+  background-color: #ffffdd;
+}
+.swagger-section .swagger-ui-wrap .model-signature pre {
+  font-size: .85em;
+  line-height: 1.2em;
+  overflow: auto;
+  max-height: 200px;
+  cursor: pointer;
+}
+.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav {
+  display: block;
+  margin: 0;
+  padding: 0;
+}
+.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li:last-child {
+  padding-right: 0;
+  border-right: none;
+}
+.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li {
+  float: left;
+  margin: 0 5px 5px 0;
+  padding: 2px 5px 2px 0;
+  border-right: 1px solid #ddd;
+}
+.swagger-section .swagger-ui-wrap .model-signature .propOpt {
+  color: #555;
+}
+.swagger-section .swagger-ui-wrap .model-signature .snippet small {
+  font-size: 0.75em;
+}
+.swagger-section .swagger-ui-wrap .model-signature .propOptKey {
+  font-style: italic;
+}
+.swagger-section .swagger-ui-wrap .model-signature .description .strong {
+  font-weight: bold;
+  color: #000;
+  font-size: .9em;
+}
+.swagger-section .swagger-ui-wrap .model-signature .description div {
+  font-size: 0.9em;
+  line-height: 1.5em;
+  margin-left: 1em;
+}
+.swagger-section .swagger-ui-wrap .model-signature .description .stronger {
+  font-weight: bold;
+  color: #000;
+}
+.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper {
+  border-spacing: 0;
+  position: absolute;
+  background-color: #ffffff;
+  border: 1px solid #bbbbbb;
+  display: none;
+  font-size: 11px;
+  max-width: 400px;
+  line-height: 30px;
+  color: black;
+  padding: 5px;
+  margin-left: 10px;
+}
+.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper th {
+  text-align: center;
+  background-color: #eeeeee;
+  border: 1px solid #bbbbbb;
+  font-size: 11px;
+  color: #666666;
+  font-weight: bold;
+  padding: 5px;
+  line-height: 15px;
+}
+.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper .optionName {
+  font-weight: bold;
+}
+.swagger-section .swagger-ui-wrap .model-signature .propName {
+  font-weight: bold;
+}
+.swagger-section .swagger-ui-wrap .model-signature .signature-container {
+  clear: both;
+}
+.swagger-section .swagger-ui-wrap .body-textarea {
+  width: 300px;
+  height: 100px;
+  border: 1px solid #aaa;
+}
+.swagger-section .swagger-ui-wrap .markdown p code,
+.swagger-section .swagger-ui-wrap .markdown li code {
+  font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace;
+  background-color: #f0f0f0;
+  color: black;
+  padding: 1px 3px;
+}
+.swagger-section .swagger-ui-wrap .required {
+  font-weight: bold;
+}
+.swagger-section .swagger-ui-wrap input.parameter {
+  width: 300px;
+  border: 1px solid #aaa;
+}
+.swagger-section .swagger-ui-wrap h1 {
+  color: black;
+  font-size: 1.5em;
+  line-height: 1.3em;
+  padding: 10px 0 10px 0;
+  font-family: "Droid Sans", sans-serif;
+  font-weight: bold;
+}
+.swagger-section .swagger-ui-wrap .heading_with_menu {
+  float: none;
+  clear: both;
+  overflow: hidden;
+  display: block;
+}
+.swagger-section .swagger-ui-wrap .heading_with_menu ul {
+  display: block;
+  clear: none;
+  float: right;
+  -moz-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  box-sizing: border-box;
+  margin-top: 10px;
+}
+.swagger-section .swagger-ui-wrap h2 {
+  color: black;
+  font-size: 1.3em;
+  padding: 10px 0 10px 0;
+}
+.swagger-section .swagger-ui-wrap h2 a {
+  color: black;
+}
+.swagger-section .swagger-ui-wrap h2 span.sub {
+  font-size: 0.7em;
+  color: #999999;
+  font-style: italic;
+}
+.swagger-section .swagger-ui-wrap h2 span.sub a {
+  color: #777777;
+}
+.swagger-section .swagger-ui-wrap span.weak {
+  color: #666666;
+}
+.swagger-section .swagger-ui-wrap .message-success {
+  color: #89BF04;
+}
+.swagger-section .swagger-ui-wrap caption,
+.swagger-section .swagger-ui-wrap th,
+.swagger-section .swagger-ui-wrap td {
+  text-align: left;
+  font-weight: normal;
+  vertical-align: middle;
+}
+.swagger-section .swagger-ui-wrap .code {
+  font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace;
+}
+.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.text textarea {
+  font-family: "Droid Sans", sans-serif;
+  height: 250px;
+  padding: 4px;
+  display: block;
+  clear: both;
+}
+.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.select select {
+  display: block;
+  clear: both;
+}
+.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean {
+  float: none;
+  clear: both;
+  overflow: hidden;
+  display: block;
+}
+.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean label {
+  display: block;
+  float: left;
+  clear: none;
+  margin: 0;
+  padding: 0;
+}
+.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean input {
+  display: block;
+  float: left;
+  clear: none;
+  margin: 0 5px 0 0;
+}
+.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.required label {
+  color: black;
+}
+.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label {
+  display: block;
+  clear: both;
+  width: auto;
+  padding: 0 0 3px;
+  color: #666666;
+}
+.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label abbr {
+  padding-left: 3px;
+  color: #888888;
+}
+.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li p.inline-hints {
+  margin-left: 0;
+  font-style: italic;
+  font-size: 0.9em;
+  margin: 0;
+}
+.swagger-section .swagger-ui-wrap form.formtastic fieldset.buttons {
+  margin: 0;
+  padding: 0;
+}
+.swagger-section .swagger-ui-wrap span.blank,
+.swagger-section .swagger-ui-wrap span.empty {
+  color: #888888;
+  font-style: italic;
+}
+.swagger-section .swagger-ui-wrap .markdown h3 {
+  color: #547f00;
+}
+.swagger-section .swagger-ui-wrap .markdown h4 {
+  color: #666666;
+}
+.swagger-section .swagger-ui-wrap .markdown pre {
+  font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace;
+  background-color: #fcf6db;
+  border: 1px solid #e5e0c6;
+  padding: 10px;
+  margin: 0 0 10px 0;
+}
+.swagger-section .swagger-ui-wrap .markdown pre code {
+  line-height: 1.6em;
+}
+.swagger-section .swagger-ui-wrap div.gist {
+  margin: 20px 0 25px 0 !important;
+}
+.swagger-section .swagger-ui-wrap ul#resources {
+  font-family: "Droid Sans", sans-serif;
+  font-size: 0.9em;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource {
+  border-bottom: 1px solid #dddddd;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading h2 a,
+.swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading h2 a {
+  color: black;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading ul.options li a,
+.swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading ul.options li a {
+  color: #555555;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource:last-child {
+  border-bottom: none;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading {
+  border: 1px solid transparent;
+  float: none;
+  clear: both;
+  overflow: hidden;
+  display: block;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options {
+  overflow: hidden;
+  padding: 0;
+  display: block;
+  clear: none;
+  float: right;
+  margin: 14px 10px 0 0;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li {
+  float: left;
+  clear: none;
+  margin: 0;
+  padding: 2px 10px;
+  border-right: 1px solid #dddddd;
+  color: #666666;
+  font-size: 0.9em;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a {
+  color: #aaaaaa;
+  text-decoration: none;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover {
+  text-decoration: underline;
+  color: black;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover,
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:active,
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a.active {
+  text-decoration: underline;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:first-child,
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.first {
+  padding-left: 0;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:last-child,
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.last {
+  padding-right: 0;
+  border-right: none;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options:first-child,
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options.first {
+  padding-left: 0;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 {
+  color: #999999;
+  padding-left: 0;
+  display: block;
+  clear: none;
+  float: left;
+  font-family: "Droid Sans", sans-serif;
+  font-weight: bold;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a {
+  color: #999999;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover {
+  color: black;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation {
+  float: none;
+  clear: both;
+  overflow: hidden;
+  display: block;
+  margin: 0 0 10px;
+  padding: 0;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading {
+  float: none;
+  clear: both;
+  overflow: hidden;
+  display: block;
+  margin: 0;
+  padding: 0;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 {
+  display: block;
+  clear: none;
+  float: left;
+  width: auto;
+  margin: 0;
+  padding: 0;
+  line-height: 1.1em;
+  color: black;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path {
+  padding-left: 10px;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a {
+  color: black;
+  text-decoration: none;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a:hover {
+  text-decoration: underline;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.http_method a {
+  text-transform: uppercase;
+  text-decoration: none;
+  color: white;
+  display: inline-block;
+  width: 50px;
+  font-size: 0.7em;
+  text-align: center;
+  padding: 7px 0 4px;
+  -moz-border-radius: 2px;
+  -webkit-border-radius: 2px;
+  -o-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -khtml-border-radius: 2px;
+  border-radius: 2px;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span {
+  margin: 0;
+  padding: 0;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options {
+  overflow: hidden;
+  padding: 0;
+  display: block;
+  clear: none;
+  float: right;
+  margin: 6px 10px 0 0;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li {
+  float: left;
+  clear: none;
+  margin: 0;
+  padding: 2px 10px;
+  font-size: 0.9em;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a {
+  text-decoration: none;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li.access {
+  color: black;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content {
+  border-top: none;
+  padding: 10px;
+  -moz-border-radius-bottomleft: 6px;
+  -webkit-border-bottom-left-radius: 6px;
+  -o-border-bottom-left-radius: 6px;
+  -ms-border-bottom-left-radius: 6px;
+  -khtml-border-bottom-left-radius: 6px;
+  border-bottom-left-radius: 6px;
+  -moz-border-radius-bottomright: 6px;
+  -webkit-border-bottom-right-radius: 6px;
+  -o-border-bottom-right-radius: 6px;
+  -ms-border-bottom-right-radius: 6px;
+  -khtml-border-bottom-right-radius: 6px;
+  border-bottom-right-radius: 6px;
+  margin: 0 0 20px;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content h4 {
+  font-size: 1.1em;
+  margin: 0;
+  padding: 15px 0 5px;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header {
+  float: none;
+  clear: both;
+  overflow: hidden;
+  display: block;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header a {
+  padding: 4px 0 0 10px;
+  display: inline-block;
+  font-size: 0.9em;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header input.submit {
+  display: block;
+  clear: none;
+  float: left;
+  padding: 6px 8px;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header span.response_throbber {
+  background-image: url('../images/throbber.gif');
+  width: 128px;
+  height: 16px;
+  display: block;
+  clear: none;
+  float: right;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form input[type='text'].error {
+  outline: 2px solid black;
+  outline-color: #cc0000;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.response div.block pre {
+  font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace;
+  padding: 10px;
+  font-size: 0.9em;
+  max-height: 400px;
+  overflow-y: auto;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading {
+  background-color: #f9f2e9;
+  border: 1px solid #f0e0ca;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading h3 span.http_method a {
+  background-color: #c5862b;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li {
+  border-right: 1px solid #dddddd;
+  border-right-color: #f0e0ca;
+  color: #c5862b;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li a {
+  color: #c5862b;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content {
+  background-color: #faf5ee;
+  border: 1px solid #f0e0ca;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content h4 {
+  color: #c5862b;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content div.sandbox_header a {
+  color: #dcb67f;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading {
+  background-color: #fcffcd;
+  border: 1px solid black;
+  border-color: #ffd20f;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading h3 span.http_method a {
+  text-transform: uppercase;
+  background-color: #ffd20f;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li {
+  border-right: 1px solid #dddddd;
+  border-right-color: #ffd20f;
+  color: #ffd20f;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li a {
+  color: #ffd20f;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content {
+  background-color: #fcffcd;
+  border: 1px solid black;
+  border-color: #ffd20f;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content h4 {
+  color: #ffd20f;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content div.sandbox_header a {
+  color: #6fc992;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading {
+  background-color: #f5e8e8;
+  border: 1px solid #e8c6c7;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading h3 span.http_method a {
+  text-transform: uppercase;
+  background-color: #a41e22;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li {
+  border-right: 1px solid #dddddd;
+  border-right-color: #e8c6c7;
+  color: #a41e22;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li a {
+  color: #a41e22;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content {
+  background-color: #f7eded;
+  border: 1px solid #e8c6c7;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content h4 {
+  color: #a41e22;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content div.sandbox_header a {
+  color: #c8787a;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading {
+  background-color: #e7f6ec;
+  border: 1px solid #c3e8d1;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading h3 span.http_method a {
+  background-color: #10a54a;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li {
+  border-right: 1px solid #dddddd;
+  border-right-color: #c3e8d1;
+  color: #10a54a;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li a {
+  color: #10a54a;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content {
+  background-color: #ebf7f0;
+  border: 1px solid #c3e8d1;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content h4 {
+  color: #10a54a;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content div.sandbox_header a {
+  color: #6fc992;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading {
+  background-color: #FCE9E3;
+  border: 1px solid #F5D5C3;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading h3 span.http_method a {
+  background-color: #D38042;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li {
+  border-right: 1px solid #dddddd;
+  border-right-color: #f0cecb;
+  color: #D38042;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li a {
+  color: #D38042;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content {
+  background-color: #faf0ef;
+  border: 1px solid #f0cecb;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content h4 {
+  color: #D38042;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content div.sandbox_header a {
+  color: #dcb67f;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading {
+  background-color: #e7f0f7;
+  border: 1px solid #c3d9ec;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading h3 span.http_method a {
+  background-color: #0f6ab4;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li {
+  border-right: 1px solid #dddddd;
+  border-right-color: #c3d9ec;
+  color: #0f6ab4;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li a {
+  color: #0f6ab4;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content {
+  background-color: #ebf3f9;
+  border: 1px solid #c3d9ec;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content h4 {
+  color: #0f6ab4;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content div.sandbox_header a {
+  color: #6fa5d2;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading {
+  background-color: #e7f0f7;
+  border: 1px solid #c3d9ec;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading h3 span.http_method a {
+  background-color: #0f6ab4;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li {
+  border-right: 1px solid #dddddd;
+  border-right-color: #c3d9ec;
+  color: #0f6ab4;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li a {
+  color: #0f6ab4;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content {
+  background-color: #ebf3f9;
+  border: 1px solid #c3d9ec;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content h4 {
+  color: #0f6ab4;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content div.sandbox_header a {
+  color: #6fa5d2;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content {
+  border-top: none;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li:last-child,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li:last-child,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li:last-child,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li:last-child,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li:last-child,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li:last-child,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li.last,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li.last,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li.last,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li.last,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li.last,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li.last {
+  padding-right: 0;
+  border-right: none;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:hover,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:active,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a.active {
+  text-decoration: underline;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li:first-child,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li.first {
+  padding-left: 0;
+}
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations:first-child,
+.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations.first {
+  padding-left: 0;
+}
+.swagger-section .swagger-ui-wrap p#colophon {
+  margin: 0 15px 40px 15px;
+  padding: 10px 0;
+  font-size: 0.8em;
+  border-top: 1px solid #dddddd;
+  font-family: "Droid Sans", sans-serif;
+  color: #999999;
+  font-style: italic;
+}
+.swagger-section .swagger-ui-wrap p#colophon a {
+  text-decoration: none;
+  color: #547f00;
+}
+.swagger-section .swagger-ui-wrap h3 {
+  color: black;
+  font-size: 1.1em;
+  padding: 10px 0 10px 0;
+}
+.swagger-section .swagger-ui-wrap .markdown ol,
+.swagger-section .swagger-ui-wrap .markdown ul {
+  font-family: "Droid Sans", sans-serif;
+  margin: 5px 0 10px;
+  padding: 0 0 0 18px;
+  list-style-type: disc;
+}
+.swagger-section .swagger-ui-wrap form.form_box {
+  background-color: #ebf3f9;
+  border: 1px solid #c3d9ec;
+  padding: 10px;
+}
+.swagger-section .swagger-ui-wrap form.form_box label {
+  color: #0f6ab4 !important;
+}
+.swagger-section .swagger-ui-wrap form.form_box input[type=submit] {
+  display: block;
+  padding: 10px;
+}
+.swagger-section .swagger-ui-wrap form.form_box p.weak {
+  font-size: 0.8em;
+}
+.swagger-section .swagger-ui-wrap form.form_box p {
+  font-size: 0.9em;
+  padding: 0 0 15px;
+  color: #7e7b6d;
+}
+.swagger-section .swagger-ui-wrap form.form_box p a {
+  color: #646257;
+}
+.swagger-section .swagger-ui-wrap form.form_box p strong {
+  color: black;
+}
+.swagger-section .title {
+  font-style: bold;
+}
+.swagger-section .secondary_form {
+  display: none;
+}
+.swagger-section .main_image {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+.swagger-section .oauth_body {
+  margin-left: 100px;
+  margin-right: 100px;
+}
+.swagger-section .oauth_submit {
+  text-align: center;
+}
+.swagger-section .api-popup-dialog {
+  z-index: 10000;
+  position: absolute;
+  width: 500px;
+  background: #FFF;
+  padding: 20px;
+  border: 1px solid #ccc;
+  border-radius: 5px;
+  display: none;
+  font-size: 13px;
+  color: #777;
+}
+.swagger-section .api-popup-dialog .api-popup-title {
+  font-size: 24px;
+  padding: 10px 0;
+}
+.swagger-section .api-popup-dialog .api-popup-title {
+  font-size: 24px;
+  padding: 10px 0;
+}
+.swagger-section .api-popup-dialog p.error-msg {
+  padding-left: 5px;
+  padding-bottom: 5px;
+}
+.swagger-section .api-popup-dialog button.api-popup-authbtn {
+  height: 30px;
+}
+.swagger-section .api-popup-dialog button.api-popup-cancel {
+  height: 30px;
+}
+.swagger-section .api-popup-scopes {
+  padding: 10px 20px;
+}
+.swagger-section .api-popup-scopes li {
+  padding: 5px 0;
+  line-height: 20px;
+}
+.swagger-section .api-popup-scopes .api-scope-desc {
+  padding-left: 20px;
+  font-style: italic;
+}
+.swagger-section .api-popup-scopes li input {
+  position: relative;
+  top: 2px;
+}
+.swagger-section .api-popup-actions {
+  padding-top: 10px;
+}
+.swagger-section .access {
+  float: right;
+}
+.swagger-section .auth {
+  float: right;
+}
+.swagger-section #api_information_panel {
+  position: absolute;
+  background: #FFF;
+  border: 1px solid #ccc;
+  border-radius: 5px;
+  display: none;
+  font-size: 13px;
+  max-width: 300px;
+  line-height: 30px;
+  color: black;
+  padding: 5px;
+}
+.swagger-section #api_information_panel p .api-msg-enabled {
+  color: green;
+}
+.swagger-section #api_information_panel p .api-msg-disabled {
+  color: red;
+}
+.swagger-section .api-ic {
+  height: 18px;
+  vertical-align: middle;
+  display: inline-block;
+  background: url(../images/explorer_icons.png) no-repeat;
+}
+.swagger-section .ic-info {
+  background-position: 0 0;
+  width: 18px;
+  margin-top: -7px;
+  margin-left: 4px;
+}
+.swagger-section .ic-warning {
+  background-position: -60px 0;
+  width: 18px;
+  margin-top: -7px;
+  margin-left: 4px;
+}
+.swagger-section .ic-error {
+  background-position: -30px 0;
+  width: 18px;
+  margin-top: -7px;
+  margin-left: 4px;
+}
+.swagger-section .ic-off {
+  background-position: -90px 0;
+  width: 58px;
+  margin-top: -4px;
+  cursor: pointer;
+}
+.swagger-section .ic-on {
+  background-position: -160px 0;
+  width: 58px;
+  margin-top: -4px;
+  cursor: pointer;
+}
+.swagger-section #header {
+  background-color: #89bf04;
+  padding: 14px;
+}
+.swagger-section #header a#logo {
+  font-size: 1.5em;
+  font-weight: bold;
+  text-decoration: none;
+  background: transparent url(../images/logo_small.png) no-repeat left center;
+  padding: 20px 0 20px 40px;
+  color: white;
+}
+.swagger-section #header form#api_selector {
+  display: block;
+  clear: none;
+  float: right;
+}
+.swagger-section #header form#api_selector .input {
+  display: block;
+  clear: none;
+  float: left;
+  margin: 0 10px 0 0;
+}
+.swagger-section #header form#api_selector .input input#input_apiKey {
+  width: 200px;
+}
+.swagger-section #header form#api_selector .input input#input_baseUrl {
+  width: 400px;
+}
+.swagger-section #header form#api_selector .input a#explore {
+  display: block;
+  text-decoration: none;
+  font-weight: bold;
+  padding: 6px 8px;
+  font-size: 0.9em;
+  color: white;
+  background-color: #547f00;
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px;
+}
+.swagger-section #header form#api_selector .input a#explore:hover {
+  background-color: #547f00;
+}
+.swagger-section #header form#api_selector .input input {
+  font-size: 0.9em;
+  padding: 3px;
+  margin: 0;
+}
+.swagger-section #content_message {
+  margin: 10px 15px;
+  font-style: italic;
+  color: #999999;
+}
+.swagger-section #message-bar {
+  min-height: 30px;
+  text-align: center;
+  padding-top: 10px;
+}
@@ -1,41 +1,41 @@
-/**\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-/* droid-sans-regular - latin */\r
-@font-face {\r
-  font-family: 'Droid Sans';\r
-  font-style: normal;\r
-  font-weight: 400;\r
-  src: url('../fonts/droid-sans-v6-latin-regular.eot'); /* IE9 Compat Modes */\r
-  src: local('Droid Sans'), local('DroidSans'),\r
-       url('../fonts/droid-sans-v6-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\r
-       url('../fonts/droid-sans-v6-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */\r
-       url('../fonts/droid-sans-v6-latin-regular.woff') format('woff'), /* Modern Browsers */\r
-       url('../fonts/droid-sans-v6-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */\r
-       url('../fonts/droid-sans-v6-latin-regular.svg#DroidSans') format('svg'); /* Legacy iOS */\r
-}\r
-/* droid-sans-700 - latin */\r
-@font-face {\r
-  font-family: 'Droid Sans';\r
-  font-style: normal;\r
-  font-weight: 700;\r
-  src: url('../fonts/droid-sans-v6-latin-700.eot'); /* IE9 Compat Modes */\r
-  src: local('Droid Sans Bold'), local('DroidSans-Bold'),\r
-       url('../fonts/droid-sans-v6-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\r
-       url('../fonts/droid-sans-v6-latin-700.woff2') format('woff2'), /* Super Modern Browsers */\r
-       url('../fonts/droid-sans-v6-latin-700.woff') format('woff'), /* Modern Browsers */\r
-       url('../fonts/droid-sans-v6-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */\r
-       url('../fonts/droid-sans-v6-latin-700.svg#DroidSans') format('svg'); /* Legacy iOS */\r
-}\r
+/**
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/* droid-sans-regular - latin */
+@font-face {
+  font-family: 'Droid Sans';
+  font-style: normal;
+  font-weight: 400;
+  src: url('../fonts/droid-sans-v6-latin-regular.eot'); /* IE9 Compat Modes */
+  src: local('Droid Sans'), local('DroidSans'),
+       url('../fonts/droid-sans-v6-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+       url('../fonts/droid-sans-v6-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
+       url('../fonts/droid-sans-v6-latin-regular.woff') format('woff'), /* Modern Browsers */
+       url('../fonts/droid-sans-v6-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
+       url('../fonts/droid-sans-v6-latin-regular.svg#DroidSans') format('svg'); /* Legacy iOS */
+}
+/* droid-sans-700 - latin */
+@font-face {
+  font-family: 'Droid Sans';
+  font-style: normal;
+  font-weight: 700;
+  src: url('../fonts/droid-sans-v6-latin-700.eot'); /* IE9 Compat Modes */
+  src: local('Droid Sans Bold'), local('DroidSans-Bold'),
+       url('../fonts/droid-sans-v6-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+       url('../fonts/droid-sans-v6-latin-700.woff2') format('woff2'), /* Super Modern Browsers */
+       url('../fonts/droid-sans-v6-latin-700.woff') format('woff'), /* Modern Browsers */
+       url('../fonts/droid-sans-v6-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
+       url('../fonts/droid-sans-v6-latin-700.svg#DroidSans') format('svg'); /* Legacy iOS */
+}
-<!--\r
-\r
-    Copyright 2016 ZTE Corporation.\r
-\r
-    Licensed under the Apache License, Version 2.0 (the "License");\r
-    you may not use this file except in compliance with the License.\r
-    You may obtain a copy of the License at\r
-\r
-        http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-    Unless required by applicable law or agreed to in writing, software\r
-    distributed under the License is distributed on an "AS IS" BASIS,\r
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-    See the License for the specific language governing permissions and\r
-    limitations under the License.\r
-\r
--->\r
-<!DOCTYPE html>\r
-<html>\r
-<head>\r
-  <title>Swagger UI</title>\r
-  <link href='css/typography.css' media='screen' rel='stylesheet' type='text/css'/>\r
-  <link href='css/reset.css' media='screen' rel='stylesheet' type='text/css'/>\r
-  <link href='css/screen.css' media='screen' rel='stylesheet' type='text/css'/>\r
-  <link href='css/reset.css' media='print' rel='stylesheet' type='text/css'/>\r
-  <link href='css/screen.css' media='print' rel='stylesheet' type='text/css'/>\r
-  <script type="text/javascript" src="lib/shred.bundle.js"></script>\r
-  <script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script>\r
-  <script src='lib/jquery.slideto.min.js' type='text/javascript'></script>\r
-  <script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>\r
-  <script src='lib/jquery.ba-bbq.min.js' type='text/javascript'></script>\r
-  <script src='lib/handlebars-2.0.0.js' type='text/javascript'></script>\r
-  <script src='lib/underscore-min.js' type='text/javascript'></script>\r
-  <script src='lib/backbone-min.js' type='text/javascript'></script>\r
-  <script src='lib/swagger-client.js' type='text/javascript'></script>\r
-  <script src='swagger-ui.js' type='text/javascript'></script>\r
-  <script src='lib/highlight.7.3.pack.js' type='text/javascript'></script>\r
-  <script src='lib/marked.js' type='text/javascript'></script>\r
-\r
-  <!-- enabling this will enable oauth2 implicit scope support -->\r
-  <script src='lib/swagger-oauth.js' type='text/javascript'></script>\r
-  <script type="text/javascript">\r
-    $(function () {\r
-      var url = window.location.search.match(/url=([^&]+)/);\r
-      if (url && url.length > 1) {\r
-        url = decodeURIComponent(url[1]);\r
-      } else {\r
-        url = "/api/workflow-modeler/v1/swagger.json";\r
-      }\r
-      window.swaggerUi = new SwaggerUi({\r
-        url: url,\r
-        dom_id: "swagger-ui-container",\r
-        supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],\r
-        onComplete: function(swaggerApi, swaggerUi){\r
-          if(typeof initOAuth == "function") {\r
-            /*\r
-            initOAuth({\r
-              clientId: "your-client-id",\r
-              realm: "your-realms",\r
-              appName: "your-app-name"\r
-            });\r
-            */\r
-          }\r
-          $('pre code').each(function(i, e) {\r
-            hljs.highlightBlock(e)\r
-          });\r
-        },\r
-        onFailure: function(data) {\r
-          log("Unable to Load SwaggerUI");\r
-        },\r
-        docExpansion: "none",\r
-        sorter : "alpha"\r
-      });\r
-\r
-      function addApiKeyAuthorization() {\r
-        var key = $('#input_apiKey')[0].value;\r
-        log("key: " + key);\r
-        if(key && key.trim() != "") {\r
-            log("added key " + key);\r
-            window.authorizations.add("api_key", new ApiKeyAuthorization("api_key", key, "query"));\r
-        }\r
-      }\r
-\r
-      $('#input_apiKey').change(function() {\r
-        addApiKeyAuthorization();\r
-      });\r
-\r
-      // if you have an apiKey you would like to pre-populate on the page for demonstration purposes...\r
-      /*\r
-        var apiKey = "myApiKeyXXXX123456789";\r
-        $('#input_apiKey').val(apiKey);\r
-        addApiKeyAuthorization();\r
-      */\r
-\r
-      window.swaggerUi.load();\r
-  });\r
-  </script>\r
-</head>\r
-\r
-<body class="swagger-section">\r
-<div id='header'>\r
-  <div class="swagger-ui-wrap">\r
-    <a id="logo" >OPEN-O Catalog</a>\r
-    <form id='api_selector'>\r
-      <div class='input'><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl" type="text"/></div>\r
-      <div class='input'><input placeholder="api_key" id="input_apiKey" name="apiKey" type="text"/></div>\r
-      <div class='input'><a id="explore" href="#">Explore</a></div>\r
-    </form>\r
-  </div>\r
-</div>\r
-\r
-<div id="message-bar" class="swagger-ui-wrap">&nbsp;</div>\r
-<div id="swagger-ui-container" class="swagger-ui-wrap"></div>\r
-</body>\r
-</html>\r
+<!--
+
+    Copyright 2016 ZTE Corporation.
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<!DOCTYPE html>
+<html>
+<head>
+  <title>Swagger UI</title>
+  <link href='css/typography.css' media='screen' rel='stylesheet' type='text/css'/>
+  <link href='css/reset.css' media='screen' rel='stylesheet' type='text/css'/>
+  <link href='css/screen.css' media='screen' rel='stylesheet' type='text/css'/>
+  <link href='css/reset.css' media='print' rel='stylesheet' type='text/css'/>
+  <link href='css/screen.css' media='print' rel='stylesheet' type='text/css'/>
+  <script type="text/javascript" src="lib/shred.bundle.js"></script>
+  <script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script>
+  <script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
+  <script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>
+  <script src='lib/jquery.ba-bbq.min.js' type='text/javascript'></script>
+  <script src='lib/handlebars-2.0.0.js' type='text/javascript'></script>
+  <script src='lib/underscore-min.js' type='text/javascript'></script>
+  <script src='lib/backbone-min.js' type='text/javascript'></script>
+  <script src='lib/swagger-client.js' type='text/javascript'></script>
+  <script src='swagger-ui.js' type='text/javascript'></script>
+  <script src='lib/highlight.7.3.pack.js' type='text/javascript'></script>
+  <script src='lib/marked.js' type='text/javascript'></script>
+
+  <!-- enabling this will enable oauth2 implicit scope support -->
+  <script src='lib/swagger-oauth.js' type='text/javascript'></script>
+  <script type="text/javascript">
+    $(function () {
+      var url = window.location.search.match(/url=([^&]+)/);
+      if (url && url.length > 1) {
+        url = decodeURIComponent(url[1]);
+      } else {
+        url = "/api/workflow-modeler/v1/swagger.json";
+      }
+      window.swaggerUi = new SwaggerUi({
+        url: url,
+        dom_id: "swagger-ui-container",
+        supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],
+        onComplete: function(swaggerApi, swaggerUi){
+          if(typeof initOAuth == "function") {
+            /*
+            initOAuth({
+              clientId: "your-client-id",
+              realm: "your-realms",
+              appName: "your-app-name"
+            });
+            */
+          }
+          $('pre code').each(function(i, e) {
+            hljs.highlightBlock(e)
+          });
+        },
+        onFailure: function(data) {
+          log("Unable to Load SwaggerUI");
+        },
+        docExpansion: "none",
+        sorter : "alpha"
+      });
+
+      function addApiKeyAuthorization() {
+        var key = $('#input_apiKey')[0].value;
+        log("key: " + key);
+        if(key && key.trim() != "") {
+            log("added key " + key);
+            window.authorizations.add("api_key", new ApiKeyAuthorization("api_key", key, "query"));
+        }
+      }
+
+      $('#input_apiKey').change(function() {
+        addApiKeyAuthorization();
+      });
+
+      // if you have an apiKey you would like to pre-populate on the page for demonstration purposes...
+      /*
+        var apiKey = "myApiKeyXXXX123456789";
+        $('#input_apiKey').val(apiKey);
+        addApiKeyAuthorization();
+      */
+
+      window.swaggerUi.load();
+  });
+  </script>
+</head>
+
+<body class="swagger-section">
+<div id='header'>
+  <div class="swagger-ui-wrap">
+    <a id="logo" >OPEN-O Catalog</a>
+    <form id='api_selector'>
+      <div class='input'><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl" type="text"/></div>
+      <div class='input'><input placeholder="api_key" id="input_apiKey" name="apiKey" type="text"/></div>
+      <div class='input'><a id="explore" href="#">Explore</a></div>
+    </form>
+  </div>
+</div>
+
+<div id="message-bar" class="swagger-ui-wrap">&nbsp;</div>
+<div id="swagger-ui-container" class="swagger-ui-wrap"></div>
+</body>
+</html>
@@ -1,30 +1,30 @@
-/*\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-// Backbone.js 1.1.2\r
-\r
-(function(t,e){if(typeof define==="function"&&define.amd){define(["underscore","jquery","exports"],function(i,r,s){t.Backbone=e(t,s,i,r)})}else if(typeof exports!=="undefined"){var i=require("underscore");e(t,exports,i)}else{t.Backbone=e(t,{},t._,t.jQuery||t.Zepto||t.ender||t.$)}})(this,function(t,e,i,r){var s=t.Backbone;var n=[];var a=n.push;var o=n.slice;var h=n.splice;e.VERSION="1.1.2";e.$=r;e.noConflict=function(){t.Backbone=s;return this};e.emulateHTTP=false;e.emulateJSON=false;var u=e.Events={on:function(t,e,i){if(!c(this,"on",t,[e,i])||!e)return this;this._events||(this._events={});var r=this._events[t]||(this._events[t]=[]);r.push({callback:e,context:i,ctx:i||this});return this},once:function(t,e,r){if(!c(this,"once",t,[e,r])||!e)return this;var s=this;var n=i.once(function(){s.off(t,n);e.apply(this,arguments)});n._callback=e;return this.on(t,n,r)},off:function(t,e,r){var s,n,a,o,h,u,l,f;if(!this._events||!c(this,"off",t,[e,r]))return this;if(!t&&!e&&!r){this._events=void 0;return this}o=t?[t]:i.keys(this._events);for(h=0,u=o.length;h<u;h++){t=o[h];if(a=this._events[t]){this._events[t]=s=[];if(e||r){for(l=0,f=a.length;l<f;l++){n=a[l];if(e&&e!==n.callback&&e!==n.callback._callback||r&&r!==n.context){s.push(n)}}}if(!s.length)delete this._events[t]}}return this},trigger:function(t){if(!this._events)return this;var e=o.call(arguments,1);if(!c(this,"trigger",t,e))return this;var i=this._events[t];var r=this._events.all;if(i)f(i,e);if(r)f(r,arguments);return this},stopListening:function(t,e,r){var s=this._listeningTo;if(!s)return this;var n=!e&&!r;if(!r&&typeof e==="object")r=this;if(t)(s={})[t._listenId]=t;for(var a in s){t=s[a];t.off(e,r,this);if(n||i.isEmpty(t._events))delete this._listeningTo[a]}return this}};var l=/\s+/;var c=function(t,e,i,r){if(!i)return true;if(typeof i==="object"){for(var s in i){t[e].apply(t,[s,i[s]].concat(r))}return false}if(l.test(i)){var n=i.split(l);for(var a=0,o=n.length;a<o;a++){t[e].apply(t,[n[a]].concat(r))}return false}return true};var f=function(t,e){var i,r=-1,s=t.length,n=e[0],a=e[1],o=e[2];switch(e.length){case 0:while(++r<s)(i=t[r]).callback.call(i.ctx);return;case 1:while(++r<s)(i=t[r]).callback.call(i.ctx,n);return;case 2:while(++r<s)(i=t[r]).callback.call(i.ctx,n,a);return;case 3:while(++r<s)(i=t[r]).callback.call(i.ctx,n,a,o);return;default:while(++r<s)(i=t[r]).callback.apply(i.ctx,e);return}};var d={listenTo:"on",listenToOnce:"once"};i.each(d,function(t,e){u[e]=function(e,r,s){var n=this._listeningTo||(this._listeningTo={});var a=e._listenId||(e._listenId=i.uniqueId("l"));n[a]=e;if(!s&&typeof r==="object")s=this;e[t](r,s,this);return this}});u.bind=u.on;u.unbind=u.off;i.extend(e,u);var p=e.Model=function(t,e){var r=t||{};e||(e={});this.cid=i.uniqueId("c");this.attributes={};if(e.collection)this.collection=e.collection;if(e.parse)r=this.parse(r,e)||{};r=i.defaults({},r,i.result(this,"defaults"));this.set(r,e);this.changed={};this.initialize.apply(this,arguments)};i.extend(p.prototype,u,{changed:null,validationError:null,idAttribute:"id",initialize:function(){},toJSON:function(t){return i.clone(this.attributes)},sync:function(){return e.sync.apply(this,arguments)},get:function(t){return this.attributes[t]},escape:function(t){return i.escape(this.get(t))},has:function(t){return this.get(t)!=null},set:function(t,e,r){var s,n,a,o,h,u,l,c;if(t==null)return this;if(typeof t==="object"){n=t;r=e}else{(n={})[t]=e}r||(r={});if(!this._validate(n,r))return false;a=r.unset;h=r.silent;o=[];u=this._changing;this._changing=true;if(!u){this._previousAttributes=i.clone(this.attributes);this.changed={}}c=this.attributes,l=this._previousAttributes;if(this.idAttribute in n)this.id=n[this.idAttribute];for(s in n){e=n[s];if(!i.isEqual(c[s],e))o.push(s);if(!i.isEqual(l[s],e)){this.changed[s]=e}else{delete this.changed[s]}a?delete c[s]:c[s]=e}if(!h){if(o.length)this._pending=r;for(var f=0,d=o.length;f<d;f++){this.trigger("change:"+o[f],this,c[o[f]],r)}}if(u)return this;if(!h){while(this._pending){r=this._pending;this._pending=false;this.trigger("change",this,r)}}this._pending=false;this._changing=false;return this},unset:function(t,e){return this.set(t,void 0,i.extend({},e,{unset:true}))},clear:function(t){var e={};for(var r in this.attributes)e[r]=void 0;return this.set(e,i.extend({},t,{unset:true}))},hasChanged:function(t){if(t==null)return!i.isEmpty(this.changed);return i.has(this.changed,t)},changedAttributes:function(t){if(!t)return this.hasChanged()?i.clone(this.changed):false;var e,r=false;var s=this._changing?this._previousAttributes:this.attributes;for(var n in t){if(i.isEqual(s[n],e=t[n]))continue;(r||(r={}))[n]=e}return r},previous:function(t){if(t==null||!this._previousAttributes)return null;return this._previousAttributes[t]},previousAttributes:function(){return i.clone(this._previousAttributes)},fetch:function(t){t=t?i.clone(t):{};if(t.parse===void 0)t.parse=true;var e=this;var r=t.success;t.success=function(i){if(!e.set(e.parse(i,t),t))return false;if(r)r(e,i,t);e.trigger("sync",e,i,t)};q(this,t);return this.sync("read",this,t)},save:function(t,e,r){var s,n,a,o=this.attributes;if(t==null||typeof t==="object"){s=t;r=e}else{(s={})[t]=e}r=i.extend({validate:true},r);if(s&&!r.wait){if(!this.set(s,r))return false}else{if(!this._validate(s,r))return false}if(s&&r.wait){this.attributes=i.extend({},o,s)}if(r.parse===void 0)r.parse=true;var h=this;var u=r.success;r.success=function(t){h.attributes=o;var e=h.parse(t,r);if(r.wait)e=i.extend(s||{},e);if(i.isObject(e)&&!h.set(e,r)){return false}if(u)u(h,t,r);h.trigger("sync",h,t,r)};q(this,r);n=this.isNew()?"create":r.patch?"patch":"update";if(n==="patch")r.attrs=s;a=this.sync(n,this,r);if(s&&r.wait)this.attributes=o;return a},destroy:function(t){t=t?i.clone(t):{};var e=this;var r=t.success;var s=function(){e.trigger("destroy",e,e.collection,t)};t.success=function(i){if(t.wait||e.isNew())s();if(r)r(e,i,t);if(!e.isNew())e.trigger("sync",e,i,t)};if(this.isNew()){t.success();return false}q(this,t);var n=this.sync("delete",this,t);if(!t.wait)s();return n},url:function(){var t=i.result(this,"urlRoot")||i.result(this.collection,"url")||M();if(this.isNew())return t;return t.replace(/([^\/])$/,"$1/")+encodeURIComponent(this.id)},parse:function(t,e){return t},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return!this.has(this.idAttribute)},isValid:function(t){return this._validate({},i.extend(t||{},{validate:true}))},_validate:function(t,e){if(!e.validate||!this.validate)return true;t=i.extend({},this.attributes,t);var r=this.validationError=this.validate(t,e)||null;if(!r)return true;this.trigger("invalid",this,r,i.extend(e,{validationError:r}));return false}});var v=["keys","values","pairs","invert","pick","omit"];i.each(v,function(t){p.prototype[t]=function(){var e=o.call(arguments);e.unshift(this.attributes);return i[t].apply(i,e)}});var g=e.Collection=function(t,e){e||(e={});if(e.model)this.model=e.model;if(e.comparator!==void 0)this.comparator=e.comparator;this._reset();this.initialize.apply(this,arguments);if(t)this.reset(t,i.extend({silent:true},e))};var m={add:true,remove:true,merge:true};var y={add:true,remove:false};i.extend(g.prototype,u,{model:p,initialize:function(){},toJSON:function(t){return this.map(function(e){return e.toJSON(t)})},sync:function(){return e.sync.apply(this,arguments)},add:function(t,e){return this.set(t,i.extend({merge:false},e,y))},remove:function(t,e){var r=!i.isArray(t);t=r?[t]:i.clone(t);e||(e={});var s,n,a,o;for(s=0,n=t.length;s<n;s++){o=t[s]=this.get(t[s]);if(!o)continue;delete this._byId[o.id];delete this._byId[o.cid];a=this.indexOf(o);this.models.splice(a,1);this.length--;if(!e.silent){e.index=a;o.trigger("remove",o,this,e)}this._removeReference(o,e)}return r?t[0]:t},set:function(t,e){e=i.defaults({},e,m);if(e.parse)t=this.parse(t,e);var r=!i.isArray(t);t=r?t?[t]:[]:i.clone(t);var s,n,a,o,h,u,l;var c=e.at;var f=this.model;var d=this.comparator&&c==null&&e.sort!==false;var v=i.isString(this.comparator)?this.comparator:null;var g=[],y=[],_={};var b=e.add,w=e.merge,x=e.remove;var E=!d&&b&&x?[]:false;for(s=0,n=t.length;s<n;s++){h=t[s]||{};if(h instanceof p){a=o=h}else{a=h[f.prototype.idAttribute||"id"]}if(u=this.get(a)){if(x)_[u.cid]=true;if(w){h=h===o?o.attributes:h;if(e.parse)h=u.parse(h,e);u.set(h,e);if(d&&!l&&u.hasChanged(v))l=true}t[s]=u}else if(b){o=t[s]=this._prepareModel(h,e);if(!o)continue;g.push(o);this._addReference(o,e)}o=u||o;if(E&&(o.isNew()||!_[o.id]))E.push(o);_[o.id]=true}if(x){for(s=0,n=this.length;s<n;++s){if(!_[(o=this.models[s]).cid])y.push(o)}if(y.length)this.remove(y,e)}if(g.length||E&&E.length){if(d)l=true;this.length+=g.length;if(c!=null){for(s=0,n=g.length;s<n;s++){this.models.splice(c+s,0,g[s])}}else{if(E)this.models.length=0;var k=E||g;for(s=0,n=k.length;s<n;s++){this.models.push(k[s])}}}if(l)this.sort({silent:true});if(!e.silent){for(s=0,n=g.length;s<n;s++){(o=g[s]).trigger("add",o,this,e)}if(l||E&&E.length)this.trigger("sort",this,e)}return r?t[0]:t},reset:function(t,e){e||(e={});for(var r=0,s=this.models.length;r<s;r++){this._removeReference(this.models[r],e)}e.previousModels=this.models;this._reset();t=this.add(t,i.extend({silent:true},e));if(!e.silent)this.trigger("reset",this,e);return t},push:function(t,e){return this.add(t,i.extend({at:this.length},e))},pop:function(t){var e=this.at(this.length-1);this.remove(e,t);return e},unshift:function(t,e){return this.add(t,i.extend({at:0},e))},shift:function(t){var e=this.at(0);this.remove(e,t);return e},slice:function(){return o.apply(this.models,arguments)},get:function(t){if(t==null)return void 0;return this._byId[t]||this._byId[t.id]||this._byId[t.cid]},at:function(t){return this.models[t]},where:function(t,e){if(i.isEmpty(t))return e?void 0:[];return this[e?"find":"filter"](function(e){for(var i in t){if(t[i]!==e.get(i))return false}return true})},findWhere:function(t){return this.where(t,true)},sort:function(t){if(!this.comparator)throw new Error("Cannot sort a set without a comparator");t||(t={});if(i.isString(this.comparator)||this.comparator.length===1){this.models=this.sortBy(this.comparator,this)}else{this.models.sort(i.bind(this.comparator,this))}if(!t.silent)this.trigger("sort",this,t);return this},pluck:function(t){return i.invoke(this.models,"get",t)},fetch:function(t){t=t?i.clone(t):{};if(t.parse===void 0)t.parse=true;var e=t.success;var r=this;t.success=function(i){var s=t.reset?"reset":"set";r[s](i,t);if(e)e(r,i,t);r.trigger("sync",r,i,t)};q(this,t);return this.sync("read",this,t)},create:function(t,e){e=e?i.clone(e):{};if(!(t=this._prepareModel(t,e)))return false;if(!e.wait)this.add(t,e);var r=this;var s=e.success;e.success=function(t,i){if(e.wait)r.add(t,e);if(s)s(t,i,e)};t.save(null,e);return t},parse:function(t,e){return t},clone:function(){return new this.constructor(this.models)},_reset:function(){this.length=0;this.models=[];this._byId={}},_prepareModel:function(t,e){if(t instanceof p)return t;e=e?i.clone(e):{};e.collection=this;var r=new this.model(t,e);if(!r.validationError)return r;this.trigger("invalid",this,r.validationError,e);return false},_addReference:function(t,e){this._byId[t.cid]=t;if(t.id!=null)this._byId[t.id]=t;if(!t.collection)t.collection=this;t.on("all",this._onModelEvent,this)},_removeReference:function(t,e){if(this===t.collection)delete t.collection;t.off("all",this._onModelEvent,this)},_onModelEvent:function(t,e,i,r){if((t==="add"||t==="remove")&&i!==this)return;if(t==="destroy")this.remove(e,r);if(e&&t==="change:"+e.idAttribute){delete this._byId[e.previous(e.idAttribute)];if(e.id!=null)this._byId[e.id]=e}this.trigger.apply(this,arguments)}});var _=["forEach","each","map","collect","reduce","foldl","inject","reduceRight","foldr","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","max","min","toArray","size","first","head","take","initial","rest","tail","drop","last","without","difference","indexOf","shuffle","lastIndexOf","isEmpty","chain","sample"];i.each(_,function(t){g.prototype[t]=function(){var e=o.call(arguments);e.unshift(this.models);return i[t].apply(i,e)}});var b=["groupBy","countBy","sortBy","indexBy"];i.each(b,function(t){g.prototype[t]=function(e,r){var s=i.isFunction(e)?e:function(t){return t.get(e)};return i[t](this.models,s,r)}});var w=e.View=function(t){this.cid=i.uniqueId("view");t||(t={});i.extend(this,i.pick(t,E));this._ensureElement();this.initialize.apply(this,arguments);this.delegateEvents()};var x=/^(\S+)\s*(.*)$/;var E=["model","collection","el","id","attributes","className","tagName","events"];i.extend(w.prototype,u,{tagName:"div",$:function(t){return this.$el.find(t)},initialize:function(){},render:function(){return this},remove:function(){this.$el.remove();this.stopListening();return this},setElement:function(t,i){if(this.$el)this.undelegateEvents();this.$el=t instanceof e.$?t:e.$(t);this.el=this.$el[0];if(i!==false)this.delegateEvents();return this},delegateEvents:function(t){if(!(t||(t=i.result(this,"events"))))return this;this.undelegateEvents();for(var e in t){var r=t[e];if(!i.isFunction(r))r=this[t[e]];if(!r)continue;var s=e.match(x);var n=s[1],a=s[2];r=i.bind(r,this);n+=".delegateEvents"+this.cid;if(a===""){this.$el.on(n,r)}else{this.$el.on(n,a,r)}}return this},undelegateEvents:function(){this.$el.off(".delegateEvents"+this.cid);return this},_ensureElement:function(){if(!this.el){var t=i.extend({},i.result(this,"attributes"));if(this.id)t.id=i.result(this,"id");if(this.className)t["class"]=i.result(this,"className");var r=e.$("<"+i.result(this,"tagName")+">").attr(t);this.setElement(r,false)}else{this.setElement(i.result(this,"el"),false)}}});e.sync=function(t,r,s){var n=T[t];i.defaults(s||(s={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});var a={type:n,dataType:"json"};if(!s.url){a.url=i.result(r,"url")||M()}if(s.data==null&&r&&(t==="create"||t==="update"||t==="patch")){a.contentType="application/json";a.data=JSON.stringify(s.attrs||r.toJSON(s))}if(s.emulateJSON){a.contentType="application/x-www-form-urlencoded";a.data=a.data?{model:a.data}:{}}if(s.emulateHTTP&&(n==="PUT"||n==="DELETE"||n==="PATCH")){a.type="POST";if(s.emulateJSON)a.data._method=n;var o=s.beforeSend;s.beforeSend=function(t){t.setRequestHeader("X-HTTP-Method-Override",n);if(o)return o.apply(this,arguments)}}if(a.type!=="GET"&&!s.emulateJSON){a.processData=false}if(a.type==="PATCH"&&k){a.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")}}var h=s.xhr=e.ajax(i.extend(a,s));r.trigger("request",r,h,s);return h};var k=typeof window!=="undefined"&&!!window.ActiveXObject&&!(window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent);var T={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};e.ajax=function(){return e.$.ajax.apply(e.$,arguments)};var $=e.Router=function(t){t||(t={});if(t.routes)this.routes=t.routes;this._bindRoutes();this.initialize.apply(this,arguments)};var S=/\((.*?)\)/g;var H=/(\(\?)?:\w+/g;var A=/\*\w+/g;var I=/[\-{}\[\]+?.,\\\^$|#\s]/g;i.extend($.prototype,u,{initialize:function(){},route:function(t,r,s){if(!i.isRegExp(t))t=this._routeToRegExp(t);if(i.isFunction(r)){s=r;r=""}if(!s)s=this[r];var n=this;e.history.route(t,function(i){var a=n._extractParameters(t,i);n.execute(s,a);n.trigger.apply(n,["route:"+r].concat(a));n.trigger("route",r,a);e.history.trigger("route",n,r,a)});return this},execute:function(t,e){if(t)t.apply(this,e)},navigate:function(t,i){e.history.navigate(t,i);return this},_bindRoutes:function(){if(!this.routes)return;this.routes=i.result(this,"routes");var t,e=i.keys(this.routes);while((t=e.pop())!=null){this.route(t,this.routes[t])}},_routeToRegExp:function(t){t=t.replace(I,"\\$&").replace(S,"(?:$1)?").replace(H,function(t,e){return e?t:"([^/?]+)"}).replace(A,"([^?]*?)");return new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var r=t.exec(e).slice(1);return i.map(r,function(t,e){if(e===r.length-1)return t||null;return t?decodeURIComponent(t):null})}});var N=e.History=function(){this.handlers=[];i.bindAll(this,"checkUrl");if(typeof window!=="undefined"){this.location=window.location;this.history=window.history}};var R=/^[#\/]|\s+$/g;var O=/^\/+|\/+$/g;var P=/msie [\w.]+/;var C=/\/$/;var j=/#.*$/;N.started=false;i.extend(N.prototype,u,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getFragment:function(t,e){if(t==null){if(this._hasPushState||!this._wantsHashChange||e){t=decodeURI(this.location.pathname+this.location.search);var i=this.root.replace(C,"");if(!t.indexOf(i))t=t.slice(i.length)}else{t=this.getHash()}}return t.replace(R,"")},start:function(t){if(N.started)throw new Error("Backbone.history has already been started");N.started=true;this.options=i.extend({root:"/"},this.options,t);this.root=this.options.root;this._wantsHashChange=this.options.hashChange!==false;this._wantsPushState=!!this.options.pushState;this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var r=this.getFragment();var s=document.documentMode;var n=P.exec(navigator.userAgent.toLowerCase())&&(!s||s<=7);this.root=("/"+this.root+"/").replace(O,"/");if(n&&this._wantsHashChange){var a=e.$('<iframe src="javascript:0" tabindex="-1">');this.iframe=a.hide().appendTo("body")[0].contentWindow;this.navigate(r)}if(this._hasPushState){e.$(window).on("popstate",this.checkUrl)}else if(this._wantsHashChange&&"onhashchange"in window&&!n){e.$(window).on("hashchange",this.checkUrl)}else if(this._wantsHashChange){this._checkUrlInterval=setInterval(this.checkUrl,this.interval)}this.fragment=r;var o=this.location;if(this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){this.fragment=this.getFragment(null,true);this.location.replace(this.root+"#"+this.fragment);return true}else if(this._hasPushState&&this.atRoot()&&o.hash){this.fragment=this.getHash().replace(R,"");this.history.replaceState({},document.title,this.root+this.fragment)}}if(!this.options.silent)return this.loadUrl()},stop:function(){e.$(window).off("popstate",this.checkUrl).off("hashchange",this.checkUrl);if(this._checkUrlInterval)clearInterval(this._checkUrlInterval);N.started=false},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe){e=this.getFragment(this.getHash(this.iframe))}if(e===this.fragment)return false;if(this.iframe)this.navigate(e);this.loadUrl()},loadUrl:function(t){t=this.fragment=this.getFragment(t);return i.any(this.handlers,function(e){if(e.route.test(t)){e.callback(t);return true}})},navigate:function(t,e){if(!N.started)return false;if(!e||e===true)e={trigger:!!e};var i=this.root+(t=this.getFragment(t||""));t=t.replace(j,"");if(this.fragment===t)return;this.fragment=t;if(t===""&&i!=="/")i=i.slice(0,-1);if(this._hasPushState){this.history[e.replace?"replaceState":"pushState"]({},document.title,i)}else if(this._wantsHashChange){this._updateHash(this.location,t,e.replace);if(this.iframe&&t!==this.getFragment(this.getHash(this.iframe))){if(!e.replace)this.iframe.document.open().close();this._updateHash(this.iframe.location,t,e.replace)}}else{return this.location.assign(i)}if(e.trigger)return this.loadUrl(t)},_updateHash:function(t,e,i){if(i){var r=t.href.replace(/(javascript:|#).*$/,"");t.replace(r+"#"+e)}else{t.hash="#"+e}}});e.history=new N;var U=function(t,e){var r=this;var s;if(t&&i.has(t,"constructor")){s=t.constructor}else{s=function(){return r.apply(this,arguments)}}i.extend(s,r,e);var n=function(){this.constructor=s};n.prototype=r.prototype;s.prototype=new n;if(t)i.extend(s.prototype,t);s.__super__=r.prototype;return s};p.extend=g.extend=$.extend=w.extend=N.extend=U;var M=function(){throw new Error('A "url" property or function must be specified')};var q=function(t,e){var i=e.error;e.error=function(r){if(i)i(t,r,e);t.trigger("error",t,r,e)}};return e});\r
-\r
-// From http://stackoverflow.com/a/19431552\r
-// Compatibility override - Backbone 1.1 got rid of the 'options' binding\r
-// automatically to views in the constructor - we need to keep that.\r
-Backbone.View = (function(View) {\r
-   return View.extend({\r
-        constructor: function(options) {\r
-            this.options = options || {};\r
-            View.apply(this, arguments);\r
-        }\r
-    });\r
+/*
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+// Backbone.js 1.1.2
+
+(function(t,e){if(typeof define==="function"&&define.amd){define(["underscore","jquery","exports"],function(i,r,s){t.Backbone=e(t,s,i,r)})}else if(typeof exports!=="undefined"){var i=require("underscore");e(t,exports,i)}else{t.Backbone=e(t,{},t._,t.jQuery||t.Zepto||t.ender||t.$)}})(this,function(t,e,i,r){var s=t.Backbone;var n=[];var a=n.push;var o=n.slice;var h=n.splice;e.VERSION="1.1.2";e.$=r;e.noConflict=function(){t.Backbone=s;return this};e.emulateHTTP=false;e.emulateJSON=false;var u=e.Events={on:function(t,e,i){if(!c(this,"on",t,[e,i])||!e)return this;this._events||(this._events={});var r=this._events[t]||(this._events[t]=[]);r.push({callback:e,context:i,ctx:i||this});return this},once:function(t,e,r){if(!c(this,"once",t,[e,r])||!e)return this;var s=this;var n=i.once(function(){s.off(t,n);e.apply(this,arguments)});n._callback=e;return this.on(t,n,r)},off:function(t,e,r){var s,n,a,o,h,u,l,f;if(!this._events||!c(this,"off",t,[e,r]))return this;if(!t&&!e&&!r){this._events=void 0;return this}o=t?[t]:i.keys(this._events);for(h=0,u=o.length;h<u;h++){t=o[h];if(a=this._events[t]){this._events[t]=s=[];if(e||r){for(l=0,f=a.length;l<f;l++){n=a[l];if(e&&e!==n.callback&&e!==n.callback._callback||r&&r!==n.context){s.push(n)}}}if(!s.length)delete this._events[t]}}return this},trigger:function(t){if(!this._events)return this;var e=o.call(arguments,1);if(!c(this,"trigger",t,e))return this;var i=this._events[t];var r=this._events.all;if(i)f(i,e);if(r)f(r,arguments);return this},stopListening:function(t,e,r){var s=this._listeningTo;if(!s)return this;var n=!e&&!r;if(!r&&typeof e==="object")r=this;if(t)(s={})[t._listenId]=t;for(var a in s){t=s[a];t.off(e,r,this);if(n||i.isEmpty(t._events))delete this._listeningTo[a]}return this}};var l=/\s+/;var c=function(t,e,i,r){if(!i)return true;if(typeof i==="object"){for(var s in i){t[e].apply(t,[s,i[s]].concat(r))}return false}if(l.test(i)){var n=i.split(l);for(var a=0,o=n.length;a<o;a++){t[e].apply(t,[n[a]].concat(r))}return false}return true};var f=function(t,e){var i,r=-1,s=t.length,n=e[0],a=e[1],o=e[2];switch(e.length){case 0:while(++r<s)(i=t[r]).callback.call(i.ctx);return;case 1:while(++r<s)(i=t[r]).callback.call(i.ctx,n);return;case 2:while(++r<s)(i=t[r]).callback.call(i.ctx,n,a);return;case 3:while(++r<s)(i=t[r]).callback.call(i.ctx,n,a,o);return;default:while(++r<s)(i=t[r]).callback.apply(i.ctx,e);return}};var d={listenTo:"on",listenToOnce:"once"};i.each(d,function(t,e){u[e]=function(e,r,s){var n=this._listeningTo||(this._listeningTo={});var a=e._listenId||(e._listenId=i.uniqueId("l"));n[a]=e;if(!s&&typeof r==="object")s=this;e[t](r,s,this);return this}});u.bind=u.on;u.unbind=u.off;i.extend(e,u);var p=e.Model=function(t,e){var r=t||{};e||(e={});this.cid=i.uniqueId("c");this.attributes={};if(e.collection)this.collection=e.collection;if(e.parse)r=this.parse(r,e)||{};r=i.defaults({},r,i.result(this,"defaults"));this.set(r,e);this.changed={};this.initialize.apply(this,arguments)};i.extend(p.prototype,u,{changed:null,validationError:null,idAttribute:"id",initialize:function(){},toJSON:function(t){return i.clone(this.attributes)},sync:function(){return e.sync.apply(this,arguments)},get:function(t){return this.attributes[t]},escape:function(t){return i.escape(this.get(t))},has:function(t){return this.get(t)!=null},set:function(t,e,r){var s,n,a,o,h,u,l,c;if(t==null)return this;if(typeof t==="object"){n=t;r=e}else{(n={})[t]=e}r||(r={});if(!this._validate(n,r))return false;a=r.unset;h=r.silent;o=[];u=this._changing;this._changing=true;if(!u){this._previousAttributes=i.clone(this.attributes);this.changed={}}c=this.attributes,l=this._previousAttributes;if(this.idAttribute in n)this.id=n[this.idAttribute];for(s in n){e=n[s];if(!i.isEqual(c[s],e))o.push(s);if(!i.isEqual(l[s],e)){this.changed[s]=e}else{delete this.changed[s]}a?delete c[s]:c[s]=e}if(!h){if(o.length)this._pending=r;for(var f=0,d=o.length;f<d;f++){this.trigger("change:"+o[f],this,c[o[f]],r)}}if(u)return this;if(!h){while(this._pending){r=this._pending;this._pending=false;this.trigger("change",this,r)}}this._pending=false;this._changing=false;return this},unset:function(t,e){return this.set(t,void 0,i.extend({},e,{unset:true}))},clear:function(t){var e={};for(var r in this.attributes)e[r]=void 0;return this.set(e,i.extend({},t,{unset:true}))},hasChanged:function(t){if(t==null)return!i.isEmpty(this.changed);return i.has(this.changed,t)},changedAttributes:function(t){if(!t)return this.hasChanged()?i.clone(this.changed):false;var e,r=false;var s=this._changing?this._previousAttributes:this.attributes;for(var n in t){if(i.isEqual(s[n],e=t[n]))continue;(r||(r={}))[n]=e}return r},previous:function(t){if(t==null||!this._previousAttributes)return null;return this._previousAttributes[t]},previousAttributes:function(){return i.clone(this._previousAttributes)},fetch:function(t){t=t?i.clone(t):{};if(t.parse===void 0)t.parse=true;var e=this;var r=t.success;t.success=function(i){if(!e.set(e.parse(i,t),t))return false;if(r)r(e,i,t);e.trigger("sync",e,i,t)};q(this,t);return this.sync("read",this,t)},save:function(t,e,r){var s,n,a,o=this.attributes;if(t==null||typeof t==="object"){s=t;r=e}else{(s={})[t]=e}r=i.extend({validate:true},r);if(s&&!r.wait){if(!this.set(s,r))return false}else{if(!this._validate(s,r))return false}if(s&&r.wait){this.attributes=i.extend({},o,s)}if(r.parse===void 0)r.parse=true;var h=this;var u=r.success;r.success=function(t){h.attributes=o;var e=h.parse(t,r);if(r.wait)e=i.extend(s||{},e);if(i.isObject(e)&&!h.set(e,r)){return false}if(u)u(h,t,r);h.trigger("sync",h,t,r)};q(this,r);n=this.isNew()?"create":r.patch?"patch":"update";if(n==="patch")r.attrs=s;a=this.sync(n,this,r);if(s&&r.wait)this.attributes=o;return a},destroy:function(t){t=t?i.clone(t):{};var e=this;var r=t.success;var s=function(){e.trigger("destroy",e,e.collection,t)};t.success=function(i){if(t.wait||e.isNew())s();if(r)r(e,i,t);if(!e.isNew())e.trigger("sync",e,i,t)};if(this.isNew()){t.success();return false}q(this,t);var n=this.sync("delete",this,t);if(!t.wait)s();return n},url:function(){var t=i.result(this,"urlRoot")||i.result(this.collection,"url")||M();if(this.isNew())return t;return t.replace(/([^\/])$/,"$1/")+encodeURIComponent(this.id)},parse:function(t,e){return t},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return!this.has(this.idAttribute)},isValid:function(t){return this._validate({},i.extend(t||{},{validate:true}))},_validate:function(t,e){if(!e.validate||!this.validate)return true;t=i.extend({},this.attributes,t);var r=this.validationError=this.validate(t,e)||null;if(!r)return true;this.trigger("invalid",this,r,i.extend(e,{validationError:r}));return false}});var v=["keys","values","pairs","invert","pick","omit"];i.each(v,function(t){p.prototype[t]=function(){var e=o.call(arguments);e.unshift(this.attributes);return i[t].apply(i,e)}});var g=e.Collection=function(t,e){e||(e={});if(e.model)this.model=e.model;if(e.comparator!==void 0)this.comparator=e.comparator;this._reset();this.initialize.apply(this,arguments);if(t)this.reset(t,i.extend({silent:true},e))};var m={add:true,remove:true,merge:true};var y={add:true,remove:false};i.extend(g.prototype,u,{model:p,initialize:function(){},toJSON:function(t){return this.map(function(e){return e.toJSON(t)})},sync:function(){return e.sync.apply(this,arguments)},add:function(t,e){return this.set(t,i.extend({merge:false},e,y))},remove:function(t,e){var r=!i.isArray(t);t=r?[t]:i.clone(t);e||(e={});var s,n,a,o;for(s=0,n=t.length;s<n;s++){o=t[s]=this.get(t[s]);if(!o)continue;delete this._byId[o.id];delete this._byId[o.cid];a=this.indexOf(o);this.models.splice(a,1);this.length--;if(!e.silent){e.index=a;o.trigger("remove",o,this,e)}this._removeReference(o,e)}return r?t[0]:t},set:function(t,e){e=i.defaults({},e,m);if(e.parse)t=this.parse(t,e);var r=!i.isArray(t);t=r?t?[t]:[]:i.clone(t);var s,n,a,o,h,u,l;var c=e.at;var f=this.model;var d=this.comparator&&c==null&&e.sort!==false;var v=i.isString(this.comparator)?this.comparator:null;var g=[],y=[],_={};var b=e.add,w=e.merge,x=e.remove;var E=!d&&b&&x?[]:false;for(s=0,n=t.length;s<n;s++){h=t[s]||{};if(h instanceof p){a=o=h}else{a=h[f.prototype.idAttribute||"id"]}if(u=this.get(a)){if(x)_[u.cid]=true;if(w){h=h===o?o.attributes:h;if(e.parse)h=u.parse(h,e);u.set(h,e);if(d&&!l&&u.hasChanged(v))l=true}t[s]=u}else if(b){o=t[s]=this._prepareModel(h,e);if(!o)continue;g.push(o);this._addReference(o,e)}o=u||o;if(E&&(o.isNew()||!_[o.id]))E.push(o);_[o.id]=true}if(x){for(s=0,n=this.length;s<n;++s){if(!_[(o=this.models[s]).cid])y.push(o)}if(y.length)this.remove(y,e)}if(g.length||E&&E.length){if(d)l=true;this.length+=g.length;if(c!=null){for(s=0,n=g.length;s<n;s++){this.models.splice(c+s,0,g[s])}}else{if(E)this.models.length=0;var k=E||g;for(s=0,n=k.length;s<n;s++){this.models.push(k[s])}}}if(l)this.sort({silent:true});if(!e.silent){for(s=0,n=g.length;s<n;s++){(o=g[s]).trigger("add",o,this,e)}if(l||E&&E.length)this.trigger("sort",this,e)}return r?t[0]:t},reset:function(t,e){e||(e={});for(var r=0,s=this.models.length;r<s;r++){this._removeReference(this.models[r],e)}e.previousModels=this.models;this._reset();t=this.add(t,i.extend({silent:true},e));if(!e.silent)this.trigger("reset",this,e);return t},push:function(t,e){return this.add(t,i.extend({at:this.length},e))},pop:function(t){var e=this.at(this.length-1);this.remove(e,t);return e},unshift:function(t,e){return this.add(t,i.extend({at:0},e))},shift:function(t){var e=this.at(0);this.remove(e,t);return e},slice:function(){return o.apply(this.models,arguments)},get:function(t){if(t==null)return void 0;return this._byId[t]||this._byId[t.id]||this._byId[t.cid]},at:function(t){return this.models[t]},where:function(t,e){if(i.isEmpty(t))return e?void 0:[];return this[e?"find":"filter"](function(e){for(var i in t){if(t[i]!==e.get(i))return false}return true})},findWhere:function(t){return this.where(t,true)},sort:function(t){if(!this.comparator)throw new Error("Cannot sort a set without a comparator");t||(t={});if(i.isString(this.comparator)||this.comparator.length===1){this.models=this.sortBy(this.comparator,this)}else{this.models.sort(i.bind(this.comparator,this))}if(!t.silent)this.trigger("sort",this,t);return this},pluck:function(t){return i.invoke(this.models,"get",t)},fetch:function(t){t=t?i.clone(t):{};if(t.parse===void 0)t.parse=true;var e=t.success;var r=this;t.success=function(i){var s=t.reset?"reset":"set";r[s](i,t);if(e)e(r,i,t);r.trigger("sync",r,i,t)};q(this,t);return this.sync("read",this,t)},create:function(t,e){e=e?i.clone(e):{};if(!(t=this._prepareModel(t,e)))return false;if(!e.wait)this.add(t,e);var r=this;var s=e.success;e.success=function(t,i){if(e.wait)r.add(t,e);if(s)s(t,i,e)};t.save(null,e);return t},parse:function(t,e){return t},clone:function(){return new this.constructor(this.models)},_reset:function(){this.length=0;this.models=[];this._byId={}},_prepareModel:function(t,e){if(t instanceof p)return t;e=e?i.clone(e):{};e.collection=this;var r=new this.model(t,e);if(!r.validationError)return r;this.trigger("invalid",this,r.validationError,e);return false},_addReference:function(t,e){this._byId[t.cid]=t;if(t.id!=null)this._byId[t.id]=t;if(!t.collection)t.collection=this;t.on("all",this._onModelEvent,this)},_removeReference:function(t,e){if(this===t.collection)delete t.collection;t.off("all",this._onModelEvent,this)},_onModelEvent:function(t,e,i,r){if((t==="add"||t==="remove")&&i!==this)return;if(t==="destroy")this.remove(e,r);if(e&&t==="change:"+e.idAttribute){delete this._byId[e.previous(e.idAttribute)];if(e.id!=null)this._byId[e.id]=e}this.trigger.apply(this,arguments)}});var _=["forEach","each","map","collect","reduce","foldl","inject","reduceRight","foldr","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","max","min","toArray","size","first","head","take","initial","rest","tail","drop","last","without","difference","indexOf","shuffle","lastIndexOf","isEmpty","chain","sample"];i.each(_,function(t){g.prototype[t]=function(){var e=o.call(arguments);e.unshift(this.models);return i[t].apply(i,e)}});var b=["groupBy","countBy","sortBy","indexBy"];i.each(b,function(t){g.prototype[t]=function(e,r){var s=i.isFunction(e)?e:function(t){return t.get(e)};return i[t](this.models,s,r)}});var w=e.View=function(t){this.cid=i.uniqueId("view");t||(t={});i.extend(this,i.pick(t,E));this._ensureElement();this.initialize.apply(this,arguments);this.delegateEvents()};var x=/^(\S+)\s*(.*)$/;var E=["model","collection","el","id","attributes","className","tagName","events"];i.extend(w.prototype,u,{tagName:"div",$:function(t){return this.$el.find(t)},initialize:function(){},render:function(){return this},remove:function(){this.$el.remove();this.stopListening();return this},setElement:function(t,i){if(this.$el)this.undelegateEvents();this.$el=t instanceof e.$?t:e.$(t);this.el=this.$el[0];if(i!==false)this.delegateEvents();return this},delegateEvents:function(t){if(!(t||(t=i.result(this,"events"))))return this;this.undelegateEvents();for(var e in t){var r=t[e];if(!i.isFunction(r))r=this[t[e]];if(!r)continue;var s=e.match(x);var n=s[1],a=s[2];r=i.bind(r,this);n+=".delegateEvents"+this.cid;if(a===""){this.$el.on(n,r)}else{this.$el.on(n,a,r)}}return this},undelegateEvents:function(){this.$el.off(".delegateEvents"+this.cid);return this},_ensureElement:function(){if(!this.el){var t=i.extend({},i.result(this,"attributes"));if(this.id)t.id=i.result(this,"id");if(this.className)t["class"]=i.result(this,"className");var r=e.$("<"+i.result(this,"tagName")+">").attr(t);this.setElement(r,false)}else{this.setElement(i.result(this,"el"),false)}}});e.sync=function(t,r,s){var n=T[t];i.defaults(s||(s={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});var a={type:n,dataType:"json"};if(!s.url){a.url=i.result(r,"url")||M()}if(s.data==null&&r&&(t==="create"||t==="update"||t==="patch")){a.contentType="application/json";a.data=JSON.stringify(s.attrs||r.toJSON(s))}if(s.emulateJSON){a.contentType="application/x-www-form-urlencoded";a.data=a.data?{model:a.data}:{}}if(s.emulateHTTP&&(n==="PUT"||n==="DELETE"||n==="PATCH")){a.type="POST";if(s.emulateJSON)a.data._method=n;var o=s.beforeSend;s.beforeSend=function(t){t.setRequestHeader("X-HTTP-Method-Override",n);if(o)return o.apply(this,arguments)}}if(a.type!=="GET"&&!s.emulateJSON){a.processData=false}if(a.type==="PATCH"&&k){a.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")}}var h=s.xhr=e.ajax(i.extend(a,s));r.trigger("request",r,h,s);return h};var k=typeof window!=="undefined"&&!!window.ActiveXObject&&!(window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent);var T={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};e.ajax=function(){return e.$.ajax.apply(e.$,arguments)};var $=e.Router=function(t){t||(t={});if(t.routes)this.routes=t.routes;this._bindRoutes();this.initialize.apply(this,arguments)};var S=/\((.*?)\)/g;var H=/(\(\?)?:\w+/g;var A=/\*\w+/g;var I=/[\-{}\[\]+?.,\\\^$|#\s]/g;i.extend($.prototype,u,{initialize:function(){},route:function(t,r,s){if(!i.isRegExp(t))t=this._routeToRegExp(t);if(i.isFunction(r)){s=r;r=""}if(!s)s=this[r];var n=this;e.history.route(t,function(i){var a=n._extractParameters(t,i);n.execute(s,a);n.trigger.apply(n,["route:"+r].concat(a));n.trigger("route",r,a);e.history.trigger("route",n,r,a)});return this},execute:function(t,e){if(t)t.apply(this,e)},navigate:function(t,i){e.history.navigate(t,i);return this},_bindRoutes:function(){if(!this.routes)return;this.routes=i.result(this,"routes");var t,e=i.keys(this.routes);while((t=e.pop())!=null){this.route(t,this.routes[t])}},_routeToRegExp:function(t){t=t.replace(I,"\\$&").replace(S,"(?:$1)?").replace(H,function(t,e){return e?t:"([^/?]+)"}).replace(A,"([^?]*?)");return new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var r=t.exec(e).slice(1);return i.map(r,function(t,e){if(e===r.length-1)return t||null;return t?decodeURIComponent(t):null})}});var N=e.History=function(){this.handlers=[];i.bindAll(this,"checkUrl");if(typeof window!=="undefined"){this.location=window.location;this.history=window.history}};var R=/^[#\/]|\s+$/g;var O=/^\/+|\/+$/g;var P=/msie [\w.]+/;var C=/\/$/;var j=/#.*$/;N.started=false;i.extend(N.prototype,u,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getFragment:function(t,e){if(t==null){if(this._hasPushState||!this._wantsHashChange||e){t=decodeURI(this.location.pathname+this.location.search);var i=this.root.replace(C,"");if(!t.indexOf(i))t=t.slice(i.length)}else{t=this.getHash()}}return t.replace(R,"")},start:function(t){if(N.started)throw new Error("Backbone.history has already been started");N.started=true;this.options=i.extend({root:"/"},this.options,t);this.root=this.options.root;this._wantsHashChange=this.options.hashChange!==false;this._wantsPushState=!!this.options.pushState;this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var r=this.getFragment();var s=document.documentMode;var n=P.exec(navigator.userAgent.toLowerCase())&&(!s||s<=7);this.root=("/"+this.root+"/").replace(O,"/");if(n&&this._wantsHashChange){var a=e.$('<iframe src="javascript:0" tabindex="-1">');this.iframe=a.hide().appendTo("body")[0].contentWindow;this.navigate(r)}if(this._hasPushState){e.$(window).on("popstate",this.checkUrl)}else if(this._wantsHashChange&&"onhashchange"in window&&!n){e.$(window).on("hashchange",this.checkUrl)}else if(this._wantsHashChange){this._checkUrlInterval=setInterval(this.checkUrl,this.interval)}this.fragment=r;var o=this.location;if(this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){this.fragment=this.getFragment(null,true);this.location.replace(this.root+"#"+this.fragment);return true}else if(this._hasPushState&&this.atRoot()&&o.hash){this.fragment=this.getHash().replace(R,"");this.history.replaceState({},document.title,this.root+this.fragment)}}if(!this.options.silent)return this.loadUrl()},stop:function(){e.$(window).off("popstate",this.checkUrl).off("hashchange",this.checkUrl);if(this._checkUrlInterval)clearInterval(this._checkUrlInterval);N.started=false},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe){e=this.getFragment(this.getHash(this.iframe))}if(e===this.fragment)return false;if(this.iframe)this.navigate(e);this.loadUrl()},loadUrl:function(t){t=this.fragment=this.getFragment(t);return i.any(this.handlers,function(e){if(e.route.test(t)){e.callback(t);return true}})},navigate:function(t,e){if(!N.started)return false;if(!e||e===true)e={trigger:!!e};var i=this.root+(t=this.getFragment(t||""));t=t.replace(j,"");if(this.fragment===t)return;this.fragment=t;if(t===""&&i!=="/")i=i.slice(0,-1);if(this._hasPushState){this.history[e.replace?"replaceState":"pushState"]({},document.title,i)}else if(this._wantsHashChange){this._updateHash(this.location,t,e.replace);if(this.iframe&&t!==this.getFragment(this.getHash(this.iframe))){if(!e.replace)this.iframe.document.open().close();this._updateHash(this.iframe.location,t,e.replace)}}else{return this.location.assign(i)}if(e.trigger)return this.loadUrl(t)},_updateHash:function(t,e,i){if(i){var r=t.href.replace(/(javascript:|#).*$/,"");t.replace(r+"#"+e)}else{t.hash="#"+e}}});e.history=new N;var U=function(t,e){var r=this;var s;if(t&&i.has(t,"constructor")){s=t.constructor}else{s=function(){return r.apply(this,arguments)}}i.extend(s,r,e);var n=function(){this.constructor=s};n.prototype=r.prototype;s.prototype=new n;if(t)i.extend(s.prototype,t);s.__super__=r.prototype;return s};p.extend=g.extend=$.extend=w.extend=N.extend=U;var M=function(){throw new Error('A "url" property or function must be specified')};var q=function(t,e){var i=e.error;e.error=function(r){if(i)i(t,r,e);t.trigger("error",t,r,e)}};return e});
+
+// From http://stackoverflow.com/a/19431552
+// Compatibility override - Backbone 1.1 got rid of the 'options' binding
+// automatically to views in the constructor - we need to keep that.
+Backbone.View = (function(View) {
+   return View.extend({
+        constructor: function(options) {
+            this.options = options || {};
+            View.apply(this, arguments);
+        }
+    });
 })(Backbone.View);
\ No newline at end of file
@@ -1,43 +1,43 @@
-/*\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-/*!\r
-\r
- handlebars v2.0.0\r
-\r
-Copyright (C) 2011-2014 by Yehuda Katz\r
-\r
-Permission is hereby granted, free of charge, to any person obtaining a copy\r
-of this software and associated documentation files (the "Software"), to deal\r
-in the Software without restriction, including without limitation the rights\r
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
-copies of the Software, and to permit persons to whom the Software is\r
-furnished to do so, subject to the following conditions:\r
-\r
-The above copyright notice and this permission notice shall be included in\r
-all copies or substantial portions of the Software.\r
-\r
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
-THE SOFTWARE.\r
-\r
-@license\r
-*/\r
-!function(a,b){"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?module.exports=b():a.Handlebars=a.Handlebars||b()}(this,function(){var a=function(){"use strict";function a(a){this.string=a}var b;return a.prototype.toString=function(){return""+this.string},b=a}(),b=function(a){"use strict";function b(a){return i[a]}function c(a){for(var b=1;b<arguments.length;b++)for(var c in arguments[b])Object.prototype.hasOwnProperty.call(arguments[b],c)&&(a[c]=arguments[b][c]);return a}function d(a){return a instanceof h?a.toString():null==a?"":a?(a=""+a,k.test(a)?a.replace(j,b):a):a+""}function e(a){return a||0===a?n(a)&&0===a.length?!0:!1:!0}function f(a,b){return(a?a+".":"")+b}var g={},h=a,i={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},j=/[&<>"'`]/g,k=/[&<>"'`]/;g.extend=c;var l=Object.prototype.toString;g.toString=l;var m=function(a){return"function"==typeof a};m(/x/)&&(m=function(a){return"function"==typeof a&&"[object Function]"===l.call(a)});var m;g.isFunction=m;var n=Array.isArray||function(a){return a&&"object"==typeof a?"[object Array]"===l.call(a):!1};return g.isArray=n,g.escapeExpression=d,g.isEmpty=e,g.appendContextPath=f,g}(a),c=function(){"use strict";function a(a,b){var d;b&&b.firstLine&&(d=b.firstLine,a+=" - "+d+":"+b.firstColumn);for(var e=Error.prototype.constructor.call(this,a),f=0;f<c.length;f++)this[c[f]]=e[c[f]];d&&(this.lineNumber=d,this.column=b.firstColumn)}var b,c=["description","fileName","lineNumber","message","name","number","stack"];return a.prototype=new Error,b=a}(),d=function(a,b){"use strict";function c(a,b){this.helpers=a||{},this.partials=b||{},d(this)}function d(a){a.registerHelper("helperMissing",function(){if(1===arguments.length)return void 0;throw new g("Missing helper: '"+arguments[arguments.length-1].name+"'")}),a.registerHelper("blockHelperMissing",function(b,c){var d=c.inverse,e=c.fn;if(b===!0)return e(this);if(b===!1||null==b)return d(this);if(k(b))return b.length>0?(c.ids&&(c.ids=[c.name]),a.helpers.each(b,c)):d(this);if(c.data&&c.ids){var g=q(c.data);g.contextPath=f.appendContextPath(c.data.contextPath,c.name),c={data:g}}return e(b,c)}),a.registerHelper("each",function(a,b){if(!b)throw new g("Must pass iterator to #each");var c,d,e=b.fn,h=b.inverse,i=0,j="";if(b.data&&b.ids&&(d=f.appendContextPath(b.data.contextPath,b.ids[0])+"."),l(a)&&(a=a.call(this)),b.data&&(c=q(b.data)),a&&"object"==typeof a)if(k(a))for(var m=a.length;m>i;i++)c&&(c.index=i,c.first=0===i,c.last=i===a.length-1,d&&(c.contextPath=d+i)),j+=e(a[i],{data:c});else for(var n in a)a.hasOwnProperty(n)&&(c&&(c.key=n,c.index=i,c.first=0===i,d&&(c.contextPath=d+n)),j+=e(a[n],{data:c}),i++);return 0===i&&(j=h(this)),j}),a.registerHelper("if",function(a,b){return l(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||f.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})}),a.registerHelper("with",function(a,b){l(a)&&(a=a.call(this));var c=b.fn;if(f.isEmpty(a))return b.inverse(this);if(b.data&&b.ids){var d=q(b.data);d.contextPath=f.appendContextPath(b.data.contextPath,b.ids[0]),b={data:d}}return c(a,b)}),a.registerHelper("log",function(b,c){var d=c.data&&null!=c.data.level?parseInt(c.data.level,10):1;a.log(d,b)}),a.registerHelper("lookup",function(a,b){return a&&a[b]})}var e={},f=a,g=b,h="2.0.0";e.VERSION=h;var i=6;e.COMPILER_REVISION=i;var j={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1"};e.REVISION_CHANGES=j;var k=f.isArray,l=f.isFunction,m=f.toString,n="[object Object]";e.HandlebarsEnvironment=c,c.prototype={constructor:c,logger:o,log:p,registerHelper:function(a,b){if(m.call(a)===n){if(b)throw new g("Arg not supported with multiple helpers");f.extend(this.helpers,a)}else this.helpers[a]=b},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,b){m.call(a)===n?f.extend(this.partials,a):this.partials[a]=b},unregisterPartial:function(a){delete this.partials[a]}};var o={methodMap:{0:"debug",1:"info",2:"warn",3:"error"},DEBUG:0,INFO:1,WARN:2,ERROR:3,level:3,log:function(a,b){if(o.level<=a){var c=o.methodMap[a];"undefined"!=typeof console&&console[c]&&console[c].call(console,b)}}};e.logger=o;var p=o.log;e.log=p;var q=function(a){var b=f.extend({},a);return b._parent=a,b};return e.createFrame=q,e}(b,c),e=function(a,b,c){"use strict";function d(a){var b=a&&a[0]||1,c=m;if(b!==c){if(c>b){var d=n[c],e=n[b];throw new l("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+d+") or downgrade your runtime to an older version ("+e+").")}throw new l("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){if(!b)throw new l("No environment passed to template");if(!a||!a.main)throw new l("Unknown template object: "+typeof a);b.VM.checkRevision(a.compiler);var c=function(c,d,e,f,g,h,i,j,m){g&&(f=k.extend({},f,g));var n=b.VM.invokePartial.call(this,c,e,f,h,i,j,m);if(null==n&&b.compile){var o={helpers:h,partials:i,data:j,depths:m};i[e]=b.compile(c,{data:void 0!==j,compat:a.compat},b),n=i[e](f,o)}if(null!=n){if(d){for(var p=n.split("\n"),q=0,r=p.length;r>q&&(p[q]||q+1!==r);q++)p[q]=d+p[q];n=p.join("\n")}return n}throw new l("The partial "+e+" could not be compiled when running in runtime-only mode")},d={lookup:function(a,b){for(var c=a.length,d=0;c>d;d++)if(a[d]&&null!=a[d][b])return a[d][b]},lambda:function(a,b){return"function"==typeof a?a.call(b):a},escapeExpression:k.escapeExpression,invokePartial:c,fn:function(b){return a[b]},programs:[],program:function(a,b,c){var d=this.programs[a],e=this.fn(a);return b||c?d=f(this,a,e,b,c):d||(d=this.programs[a]=f(this,a,e)),d},data:function(a,b){for(;a&&b--;)a=a._parent;return a},merge:function(a,b){var c=a||b;return a&&b&&a!==b&&(c=k.extend({},b,a)),c},noop:b.VM.noop,compilerInfo:a.compiler},e=function(b,c){c=c||{};var f=c.data;e._setup(c),!c.partial&&a.useData&&(f=i(b,f));var g;return a.useDepths&&(g=c.depths?[b].concat(c.depths):[b]),a.main.call(d,b,d.helpers,d.partials,f,g)};return e.isTop=!0,e._setup=function(c){c.partial?(d.helpers=c.helpers,d.partials=c.partials):(d.helpers=d.merge(c.helpers,b.helpers),a.usePartial&&(d.partials=d.merge(c.partials,b.partials)))},e._child=function(b,c,e){if(a.useDepths&&!e)throw new l("must pass parent depths");return f(d,b,a[b],c,e)},e}function f(a,b,c,d,e){var f=function(b,f){return f=f||{},c.call(a,b,a.helpers,a.partials,f.data||d,e&&[b].concat(e))};return f.program=b,f.depth=e?e.length:0,f}function g(a,b,c,d,e,f,g){var h={partial:!0,helpers:d,partials:e,data:f,depths:g};if(void 0===a)throw new l("The partial "+b+" could not be found");return a instanceof Function?a(c,h):void 0}function h(){return""}function i(a,b){return b&&"root"in b||(b=b?o(b):{},b.root=a),b}var j={},k=a,l=b,m=c.COMPILER_REVISION,n=c.REVISION_CHANGES,o=c.createFrame;return j.checkRevision=d,j.template=e,j.program=f,j.invokePartial=g,j.noop=h,j}(b,c,d),f=function(a,b,c,d,e){"use strict";var f,g=a,h=b,i=c,j=d,k=e,l=function(){var a=new g.HandlebarsEnvironment;return j.extend(a,g),a.SafeString=h,a.Exception=i,a.Utils=j,a.escapeExpression=j.escapeExpression,a.VM=k,a.template=function(b){return k.template(b,a)},a},m=l();return m.create=l,m["default"]=m,f=m}(d,a,c,b,e),g=function(a){"use strict";function b(a){a=a||{},this.firstLine=a.first_line,this.firstColumn=a.first_column,this.lastColumn=a.last_column,this.lastLine=a.last_line}var c,d=a,e={ProgramNode:function(a,c,d){b.call(this,d),this.type="program",this.statements=a,this.strip=c},MustacheNode:function(a,c,d,f,g){if(b.call(this,g),this.type="mustache",this.strip=f,null!=d&&d.charAt){var h=d.charAt(3)||d.charAt(2);this.escaped="{"!==h&&"&"!==h}else this.escaped=!!d;this.sexpr=a instanceof e.SexprNode?a:new e.SexprNode(a,c),this.id=this.sexpr.id,this.params=this.sexpr.params,this.hash=this.sexpr.hash,this.eligibleHelper=this.sexpr.eligibleHelper,this.isHelper=this.sexpr.isHelper},SexprNode:function(a,c,d){b.call(this,d),this.type="sexpr",this.hash=c;var e=this.id=a[0],f=this.params=a.slice(1);this.isHelper=!(!f.length&&!c),this.eligibleHelper=this.isHelper||e.isSimple},PartialNode:function(a,c,d,e,f){b.call(this,f),this.type="partial",this.partialName=a,this.context=c,this.hash=d,this.strip=e,this.strip.inlineStandalone=!0},BlockNode:function(a,c,d,e,f){b.call(this,f),this.type="block",this.mustache=a,this.program=c,this.inverse=d,this.strip=e,d&&!c&&(this.isInverse=!0)},RawBlockNode:function(a,c,f,g){if(b.call(this,g),a.sexpr.id.original!==f)throw new d(a.sexpr.id.original+" doesn't match "+f,this);c=new e.ContentNode(c,g),this.type="block",this.mustache=a,this.program=new e.ProgramNode([c],{},g)},ContentNode:function(a,c){b.call(this,c),this.type="content",this.original=this.string=a},HashNode:function(a,c){b.call(this,c),this.type="hash",this.pairs=a},IdNode:function(a,c){b.call(this,c),this.type="ID";for(var e="",f=[],g=0,h="",i=0,j=a.length;j>i;i++){var k=a[i].part;if(e+=(a[i].separator||"")+k,".."===k||"."===k||"this"===k){if(f.length>0)throw new d("Invalid path: "+e,this);".."===k?(g++,h+="../"):this.isScoped=!0}else f.push(k)}this.original=e,this.parts=f,this.string=f.join("."),this.depth=g,this.idName=h+this.string,this.isSimple=1===a.length&&!this.isScoped&&0===g,this.stringModeValue=this.string},PartialNameNode:function(a,c){b.call(this,c),this.type="PARTIAL_NAME",this.name=a.original},DataNode:function(a,c){b.call(this,c),this.type="DATA",this.id=a,this.stringModeValue=a.stringModeValue,this.idName="@"+a.stringModeValue},StringNode:function(a,c){b.call(this,c),this.type="STRING",this.original=this.string=this.stringModeValue=a},NumberNode:function(a,c){b.call(this,c),this.type="NUMBER",this.original=this.number=a,this.stringModeValue=Number(a)},BooleanNode:function(a,c){b.call(this,c),this.type="BOOLEAN",this.bool=a,this.stringModeValue="true"===a},CommentNode:function(a,c){b.call(this,c),this.type="comment",this.comment=a,this.strip={inlineStandalone:!0}}};return c=e}(c),h=function(){"use strict";var a,b=function(){function a(){this.yy={}}var b={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,CONTENT:12,COMMENT:13,openRawBlock:14,END_RAW_BLOCK:15,OPEN_RAW_BLOCK:16,sexpr:17,CLOSE_RAW_BLOCK:18,openBlock:19,block_option0:20,closeBlock:21,openInverse:22,block_option1:23,OPEN_BLOCK:24,CLOSE:25,OPEN_INVERSE:26,inverseAndProgram:27,INVERSE:28,OPEN_ENDBLOCK:29,path:30,OPEN:31,OPEN_UNESCAPED:32,CLOSE_UNESCAPED:33,OPEN_PARTIAL:34,partialName:35,param:36,partial_option0:37,partial_option1:38,sexpr_repetition0:39,sexpr_option0:40,dataName:41,STRING:42,NUMBER:43,BOOLEAN:44,OPEN_SEXPR:45,CLOSE_SEXPR:46,hash:47,hash_repetition_plus0:48,hashSegment:49,ID:50,EQUALS:51,DATA:52,pathSegments:53,SEP:54,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",12:"CONTENT",13:"COMMENT",15:"END_RAW_BLOCK",16:"OPEN_RAW_BLOCK",18:"CLOSE_RAW_BLOCK",24:"OPEN_BLOCK",25:"CLOSE",26:"OPEN_INVERSE",28:"INVERSE",29:"OPEN_ENDBLOCK",31:"OPEN",32:"OPEN_UNESCAPED",33:"CLOSE_UNESCAPED",34:"OPEN_PARTIAL",42:"STRING",43:"NUMBER",44:"BOOLEAN",45:"OPEN_SEXPR",46:"CLOSE_SEXPR",50:"ID",51:"EQUALS",52:"DATA",54:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[10,3],[14,3],[9,4],[9,4],[19,3],[22,3],[27,2],[21,3],[8,3],[8,3],[11,5],[11,4],[17,3],[17,1],[36,1],[36,1],[36,1],[36,1],[36,1],[36,3],[47,1],[49,3],[35,1],[35,1],[35,1],[41,2],[30,1],[53,3],[53,1],[6,0],[6,2],[20,0],[20,1],[23,0],[23,1],[37,0],[37,1],[38,0],[38,1],[39,0],[39,2],[40,0],[40,1],[48,1],[48,2]],performAction:function(a,b,c,d,e,f){var g=f.length-1;switch(e){case 1:return d.prepareProgram(f[g-1].statements,!0),f[g-1];case 2:this.$=new d.ProgramNode(d.prepareProgram(f[g]),{},this._$);break;case 3:this.$=f[g];break;case 4:this.$=f[g];break;case 5:this.$=f[g];break;case 6:this.$=f[g];break;case 7:this.$=new d.ContentNode(f[g],this._$);break;case 8:this.$=new d.CommentNode(f[g],this._$);break;case 9:this.$=new d.RawBlockNode(f[g-2],f[g-1],f[g],this._$);break;case 10:this.$=new d.MustacheNode(f[g-1],null,"","",this._$);break;case 11:this.$=d.prepareBlock(f[g-3],f[g-2],f[g-1],f[g],!1,this._$);break;case 12:this.$=d.prepareBlock(f[g-3],f[g-2],f[g-1],f[g],!0,this._$);break;case 13:this.$=new d.MustacheNode(f[g-1],null,f[g-2],d.stripFlags(f[g-2],f[g]),this._$);break;case 14:this.$=new d.MustacheNode(f[g-1],null,f[g-2],d.stripFlags(f[g-2],f[g]),this._$);break;case 15:this.$={strip:d.stripFlags(f[g-1],f[g-1]),program:f[g]};break;case 16:this.$={path:f[g-1],strip:d.stripFlags(f[g-2],f[g])};break;case 17:this.$=new d.MustacheNode(f[g-1],null,f[g-2],d.stripFlags(f[g-2],f[g]),this._$);break;case 18:this.$=new d.MustacheNode(f[g-1],null,f[g-2],d.stripFlags(f[g-2],f[g]),this._$);break;case 19:this.$=new d.PartialNode(f[g-3],f[g-2],f[g-1],d.stripFlags(f[g-4],f[g]),this._$);break;case 20:this.$=new d.PartialNode(f[g-2],void 0,f[g-1],d.stripFlags(f[g-3],f[g]),this._$);break;case 21:this.$=new d.SexprNode([f[g-2]].concat(f[g-1]),f[g],this._$);break;case 22:this.$=new d.SexprNode([f[g]],null,this._$);break;case 23:this.$=f[g];break;case 24:this.$=new d.StringNode(f[g],this._$);break;case 25:this.$=new d.NumberNode(f[g],this._$);break;case 26:this.$=new d.BooleanNode(f[g],this._$);break;case 27:this.$=f[g];break;case 28:f[g-1].isHelper=!0,this.$=f[g-1];break;case 29:this.$=new d.HashNode(f[g],this._$);break;case 30:this.$=[f[g-2],f[g]];break;case 31:this.$=new d.PartialNameNode(f[g],this._$);break;case 32:this.$=new d.PartialNameNode(new d.StringNode(f[g],this._$),this._$);break;case 33:this.$=new d.PartialNameNode(new d.NumberNode(f[g],this._$));break;case 34:this.$=new d.DataNode(f[g],this._$);break;case 35:this.$=new d.IdNode(f[g],this._$);break;case 36:f[g-2].push({part:f[g],separator:f[g-1]}),this.$=f[g-2];break;case 37:this.$=[{part:f[g]}];break;case 38:this.$=[];break;case 39:f[g-1].push(f[g]);break;case 48:this.$=[];break;case 49:f[g-1].push(f[g]);break;case 52:this.$=[f[g]];break;case 53:f[g-1].push(f[g])}},table:[{3:1,4:2,5:[2,38],6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],31:[2,38],32:[2,38],34:[2,38]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:[1,10],13:[1,11],14:16,16:[1,20],19:14,22:15,24:[1,18],26:[1,19],28:[2,2],29:[2,2],31:[1,12],32:[1,13],34:[1,17]},{1:[2,1]},{5:[2,39],12:[2,39],13:[2,39],16:[2,39],24:[2,39],26:[2,39],28:[2,39],29:[2,39],31:[2,39],32:[2,39],34:[2,39]},{5:[2,3],12:[2,3],13:[2,3],16:[2,3],24:[2,3],26:[2,3],28:[2,3],29:[2,3],31:[2,3],32:[2,3],34:[2,3]},{5:[2,4],12:[2,4],13:[2,4],16:[2,4],24:[2,4],26:[2,4],28:[2,4],29:[2,4],31:[2,4],32:[2,4],34:[2,4]},{5:[2,5],12:[2,5],13:[2,5],16:[2,5],24:[2,5],26:[2,5],28:[2,5],29:[2,5],31:[2,5],32:[2,5],34:[2,5]},{5:[2,6],12:[2,6],13:[2,6],16:[2,6],24:[2,6],26:[2,6],28:[2,6],29:[2,6],31:[2,6],32:[2,6],34:[2,6]},{5:[2,7],12:[2,7],13:[2,7],16:[2,7],24:[2,7],26:[2,7],28:[2,7],29:[2,7],31:[2,7],32:[2,7],34:[2,7]},{5:[2,8],12:[2,8],13:[2,8],16:[2,8],24:[2,8],26:[2,8],28:[2,8],29:[2,8],31:[2,8],32:[2,8],34:[2,8]},{17:21,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:27,30:22,41:23,50:[1,26],52:[1,25],53:24},{4:28,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{4:29,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{12:[1,30]},{30:32,35:31,42:[1,33],43:[1,34],50:[1,26],53:24},{17:35,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:36,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:37,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[1,38]},{18:[2,48],25:[2,48],33:[2,48],39:39,42:[2,48],43:[2,48],44:[2,48],45:[2,48],46:[2,48],50:[2,48],52:[2,48]},{18:[2,22],25:[2,22],33:[2,22],46:[2,22]},{18:[2,35],25:[2,35],33:[2,35],42:[2,35],43:[2,35],44:[2,35],45:[2,35],46:[2,35],50:[2,35],52:[2,35],54:[1,40]},{30:41,50:[1,26],53:24},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],52:[2,37],54:[2,37]},{33:[1,42]},{20:43,27:44,28:[1,45],29:[2,40]},{23:46,27:47,28:[1,45],29:[2,42]},{15:[1,48]},{25:[2,46],30:51,36:49,38:50,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],47:57,48:58,49:60,50:[1,59],52:[1,25],53:24},{25:[2,31],42:[2,31],43:[2,31],44:[2,31],45:[2,31],50:[2,31],52:[2,31]},{25:[2,32],42:[2,32],43:[2,32],44:[2,32],45:[2,32],50:[2,32],52:[2,32]},{25:[2,33],42:[2,33],43:[2,33],44:[2,33],45:[2,33],50:[2,33],52:[2,33]},{25:[1,61]},{25:[1,62]},{18:[1,63]},{5:[2,17],12:[2,17],13:[2,17],16:[2,17],24:[2,17],26:[2,17],28:[2,17],29:[2,17],31:[2,17],32:[2,17],34:[2,17]},{18:[2,50],25:[2,50],30:51,33:[2,50],36:65,40:64,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],46:[2,50],47:66,48:58,49:60,50:[1,59],52:[1,25],53:24},{50:[1,67]},{18:[2,34],25:[2,34],33:[2,34],42:[2,34],43:[2,34],44:[2,34],45:[2,34],46:[2,34],50:[2,34],52:[2,34]},{5:[2,18],12:[2,18],13:[2,18],16:[2,18],24:[2,18],26:[2,18],28:[2,18],29:[2,18],31:[2,18],32:[2,18],34:[2,18]},{21:68,29:[1,69]},{29:[2,41]},{4:70,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{21:71,29:[1,69]},{29:[2,43]},{5:[2,9],12:[2,9],13:[2,9],16:[2,9],24:[2,9],26:[2,9],28:[2,9],29:[2,9],31:[2,9],32:[2,9],34:[2,9]},{25:[2,44],37:72,47:73,48:58,49:60,50:[1,74]},{25:[1,75]},{18:[2,23],25:[2,23],33:[2,23],42:[2,23],43:[2,23],44:[2,23],45:[2,23],46:[2,23],50:[2,23],52:[2,23]},{18:[2,24],25:[2,24],33:[2,24],42:[2,24],43:[2,24],44:[2,24],45:[2,24],46:[2,24],50:[2,24],52:[2,24]},{18:[2,25],25:[2,25],33:[2,25],42:[2,25],43:[2,25],44:[2,25],45:[2,25],46:[2,25],50:[2,25],52:[2,25]},{18:[2,26],25:[2,26],33:[2,26],42:[2,26],43:[2,26],44:[2,26],45:[2,26],46:[2,26],50:[2,26],52:[2,26]},{18:[2,27],25:[2,27],33:[2,27],42:[2,27],43:[2,27],44:[2,27],45:[2,27],46:[2,27],50:[2,27],52:[2,27]},{17:76,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[2,47]},{18:[2,29],25:[2,29],33:[2,29],46:[2,29],49:77,50:[1,74]},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],51:[1,78],52:[2,37],54:[2,37]},{18:[2,52],25:[2,52],33:[2,52],46:[2,52],50:[2,52]},{12:[2,13],13:[2,13],16:[2,13],24:[2,13],26:[2,13],28:[2,13],29:[2,13],31:[2,13],32:[2,13],34:[2,13]},{12:[2,14],13:[2,14],16:[2,14],24:[2,14],26:[2,14],28:[2,14],29:[2,14],31:[2,14],32:[2,14],34:[2,14]},{12:[2,10]},{18:[2,21],25:[2,21],33:[2,21],46:[2,21]},{18:[2,49],25:[2,49],33:[2,49],42:[2,49],43:[2,49],44:[2,49],45:[2,49],46:[2,49],50:[2,49],52:[2,49]},{18:[2,51],25:[2,51],33:[2,51],46:[2,51]},{18:[2,36],25:[2,36],33:[2,36],42:[2,36],43:[2,36],44:[2,36],45:[2,36],46:[2,36],50:[2,36],52:[2,36],54:[2,36]},{5:[2,11],12:[2,11],13:[2,11],16:[2,11],24:[2,11],26:[2,11],28:[2,11],29:[2,11],31:[2,11],32:[2,11],34:[2,11]},{30:79,50:[1,26],53:24},{29:[2,15]},{5:[2,12],12:[2,12],13:[2,12],16:[2,12],24:[2,12],26:[2,12],28:[2,12],29:[2,12],31:[2,12],32:[2,12],34:[2,12]},{25:[1,80]},{25:[2,45]},{51:[1,78]},{5:[2,20],12:[2,20],13:[2,20],16:[2,20],24:[2,20],26:[2,20],28:[2,20],29:[2,20],31:[2,20],32:[2,20],34:[2,20]},{46:[1,81]},{18:[2,53],25:[2,53],33:[2,53],46:[2,53],50:[2,53]},{30:51,36:82,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],50:[1,26],52:[1,25],53:24},{25:[1,83]},{5:[2,19],12:[2,19],13:[2,19],16:[2,19],24:[2,19],26:[2,19],28:[2,19],29:[2,19],31:[2,19],32:[2,19],34:[2,19]},{18:[2,28],25:[2,28],33:[2,28],42:[2,28],43:[2,28],44:[2,28],45:[2,28],46:[2,28],50:[2,28],52:[2,28]},{18:[2,30],25:[2,30],33:[2,30],46:[2,30],50:[2,30]},{5:[2,16],12:[2,16],13:[2,16],16:[2,16],24:[2,16],26:[2,16],28:[2,16],29:[2,16],31:[2,16],32:[2,16],34:[2,16]}],defaultActions:{4:[2,1],44:[2,41],47:[2,43],57:[2,47],63:[2,10],70:[2,15],73:[2,45]},parseError:function(a){throw new Error(a)},parse:function(a){function b(){var a;return a=c.lexer.lex()||1,"number"!=typeof a&&(a=c.symbols_[a]||a),a}var c=this,d=[0],e=[null],f=[],g=this.table,h="",i=0,j=0,k=0;this.lexer.setInput(a),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var l=this.lexer.yylloc;f.push(l);var m=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var n,o,p,q,r,s,t,u,v,w={};;){if(p=d[d.length-1],this.defaultActions[p]?q=this.defaultActions[p]:((null===n||"undefined"==typeof n)&&(n=b()),q=g[p]&&g[p][n]),"undefined"==typeof q||!q.length||!q[0]){var x="";if(!k){v=[];for(s in g[p])this.terminals_[s]&&s>2&&v.push("'"+this.terminals_[s]+"'");x=this.lexer.showPosition?"Parse error on line "+(i+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+v.join(", ")+", got '"+(this.terminals_[n]||n)+"'":"Parse error on line "+(i+1)+": Unexpected "+(1==n?"end of input":"'"+(this.terminals_[n]||n)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[n]||n,line:this.lexer.yylineno,loc:l,expected:v})}}if(q[0]instanceof Array&&q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+p+", token: "+n);switch(q[0]){case 1:d.push(n),e.push(this.lexer.yytext),f.push(this.lexer.yylloc),d.push(q[1]),n=null,o?(n=o,o=null):(j=this.lexer.yyleng,h=this.lexer.yytext,i=this.lexer.yylineno,l=this.lexer.yylloc,k>0&&k--);break;case 2:if(t=this.productions_[q[1]][1],w.$=e[e.length-t],w._$={first_line:f[f.length-(t||1)].first_line,last_line:f[f.length-1].last_line,first_column:f[f.length-(t||1)].first_column,last_column:f[f.length-1].last_column},m&&(w._$.range=[f[f.length-(t||1)].range[0],f[f.length-1].range[1]]),r=this.performAction.call(w,h,j,i,this.yy,q[1],e,f),"undefined"!=typeof r)return r;t&&(d=d.slice(0,-1*t*2),e=e.slice(0,-1*t),f=f.slice(0,-1*t)),d.push(this.productions_[q[1]][0]),e.push(w.$),f.push(w._$),u=g[d[d.length-2]][d[d.length-1]],d.push(u);break;case 3:return!0}}return!0}},c=function(){var a={EOF:1,parseError:function(a,b){if(!this.yy.parser)throw new Error(a);this.yy.parser.parseError(a,b)},setInput:function(a){return this._input=a,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var b=a.match(/(?:\r\n?|\n).*/g);return b?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var b=a.length,c=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-b-1),this.offset-=b;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var e=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-b},this.options.ranges&&(this.yylloc.range=[e[0],e[0]+this.yyleng-b]),this},more:function(){return this._more=!0,this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),b=new Array(a.length+1).join("-");return a+this.upcomingInput()+"\n"+b+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,b,c,d,e;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),g=0;g<f.length&&(c=this._input.match(this.rules[f[g]]),!c||b&&!(c[0].length>b[0].length)||(b=c,d=g,this.options.flex));g++);return b?(e=b[0].match(/(?:\r\n?|\n).*/g),e&&(this.yylineno+=e.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:e?e[e.length-1].length-e[e.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],a=this.performAction.call(this,this.yy,this,f[d],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a?a:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var a=this.next();return"undefined"!=typeof a?a:this.lex()},begin:function(a){this.conditionStack.push(a)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(a){this.begin(a)}};return a.options={},a.performAction=function(a,b,c,d){function e(a,c){return b.yytext=b.yytext.substr(a,b.yyleng-c)}switch(c){case 0:if("\\\\"===b.yytext.slice(-2)?(e(0,1),this.begin("mu")):"\\"===b.yytext.slice(-1)?(e(0,1),this.begin("emu")):this.begin("mu"),b.yytext)return 12;break;case 1:return 12;case 2:return this.popState(),12;case 3:return b.yytext=b.yytext.substr(5,b.yyleng-9),this.popState(),15;case 4:return 12;case 5:return e(0,4),this.popState(),13;case 6:return 45;case 7:return 46;case 8:return 16;case 9:return this.popState(),this.begin("raw"),18;case 10:return 34;case 11:return 24;case 12:return 29;case 13:return this.popState(),28;case 14:return this.popState(),28;case 15:return 26;case 16:return 26;case 17:return 32;case 18:return 31;case 19:this.popState(),this.begin("com");break;case 20:return e(3,5),this.popState(),13;case 21:return 31;case 22:return 51;case 23:return 50;case 24:return 50;case 25:return 54;case 26:break;case 27:return this.popState(),33;case 28:return this.popState(),25;case 29:return b.yytext=e(1,2).replace(/\\"/g,'"'),42;case 30:return b.yytext=e(1,2).replace(/\\'/g,"'"),42;case 31:return 52;case 32:return 44;case 33:return 44;case 34:return 43;case 35:return 50;case 36:return b.yytext=e(1,2),50;case 37:return"INVALID";case 38:return 5}},a.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{\/)))/,/^(?:[\s\S]*?--\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{!--)/,/^(?:\{\{![\s\S]*?\}\})/,/^(?:\{\{(~)?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)]))))/,/^(?:\[[^\]]*\])/,/^(?:.)/,/^(?:$)/],a.conditions={mu:{rules:[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[5],inclusive:!1},raw:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,1,38],inclusive:!0}},a}();return b.lexer=c,a.prototype=b,b.Parser=a,new a}();return a=b}(),i=function(a){"use strict";function b(a,b){return{left:"~"===a.charAt(2),right:"~"===b.charAt(b.length-3)}}function c(a,b,c,d,i,k){if(a.sexpr.id.original!==d.path.original)throw new j(a.sexpr.id.original+" doesn't match "+d.path.original,a);var l=c&&c.program,m={left:a.strip.left,right:d.strip.right,openStandalone:f(b.statements),closeStandalone:e((l||b).statements)};if(a.strip.right&&g(b.statements,null,!0),l){var n=c.strip;n.left&&h(b.statements,null,!0),n.right&&g(l.statements,null,!0),d.strip.left&&h(l.statements,null,!0),e(b.statements)&&f(l.statements)&&(h(b.statements),g(l.statements))}else d.strip.left&&h(b.statements,null,!0);return i?new this.BlockNode(a,l,b,m,k):new this.BlockNode(a,b,l,m,k)}function d(a,b){for(var c=0,d=a.length;d>c;c++){var i=a[c],j=i.strip;if(j){var k=e(a,c,b,"partial"===i.type),l=f(a,c,b),m=j.openStandalone&&k,n=j.closeStandalone&&l,o=j.inlineStandalone&&k&&l;j.right&&g(a,c,!0),j.left&&h(a,c,!0),o&&(g(a,c),h(a,c)&&"partial"===i.type&&(i.indent=/([ \t]+$)/.exec(a[c-1].original)?RegExp.$1:"")),m&&(g((i.program||i.inverse).statements),h(a,c)),n&&(g(a,c),h((i.inverse||i.program).statements))}}return a}function e(a,b,c){void 0===b&&(b=a.length);var d=a[b-1],e=a[b-2];return d?"content"===d.type?(e||!c?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(d.original):void 0:c}function f(a,b,c){void 0===b&&(b=-1);var d=a[b+1],e=a[b+2];return d?"content"===d.type?(e||!c?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(d.original):void 0:c}function g(a,b,c){var d=a[null==b?0:b+1];if(d&&"content"===d.type&&(c||!d.rightStripped)){var e=d.string;d.string=d.string.replace(c?/^\s+/:/^[ \t]*\r?\n?/,""),d.rightStripped=d.string!==e}}function h(a,b,c){var d=a[null==b?a.length-1:b-1];if(d&&"content"===d.type&&(c||!d.leftStripped)){var e=d.string;return d.string=d.string.replace(c?/\s+$/:/[ \t]+$/,""),d.leftStripped=d.string!==e,d.leftStripped}}var i={},j=a;return i.stripFlags=b,i.prepareBlock=c,i.prepareProgram=d,i}(c),j=function(a,b,c,d){"use strict";function e(a){return a.constructor===h.ProgramNode?a:(g.yy=k,g.parse(a))}var f={},g=a,h=b,i=c,j=d.extend;f.parser=g;var k={};return j(k,i,h),f.parse=e,f}(h,g,i,b),k=function(a,b){"use strict";function c(){}function d(a,b,c){if(null==a||"string"!=typeof a&&a.constructor!==c.AST.ProgramNode)throw new h("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+a);b=b||{},"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var d=c.parse(a),e=(new c.Compiler).compile(d,b);return(new c.JavaScriptCompiler).compile(e,b)}function e(a,b,c){function d(){var d=c.parse(a),e=(new c.Compiler).compile(d,b),f=(new c.JavaScriptCompiler).compile(e,b,void 0,!0);return c.template(f)}if(null==a||"string"!=typeof a&&a.constructor!==c.AST.ProgramNode)throw new h("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+a);b=b||{},"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var e,f=function(a,b){return e||(e=d()),e.call(this,a,b)};return f._setup=function(a){return e||(e=d()),e._setup(a)},f._child=function(a,b,c){return e||(e=d()),e._child(a,b,c)},f}function f(a,b){if(a===b)return!0;if(i(a)&&i(b)&&a.length===b.length){for(var c=0;c<a.length;c++)if(!f(a[c],b[c]))return!1;return!0}}var g={},h=a,i=b.isArray,j=[].slice;return g.Compiler=c,c.prototype={compiler:c,equals:function(a){var b=this.opcodes.length;if(a.opcodes.length!==b)return!1;for(var c=0;b>c;c++){var d=this.opcodes[c],e=a.opcodes[c];if(d.opcode!==e.opcode||!f(d.args,e.args))return!1}for(b=this.children.length,c=0;b>c;c++)if(!this.children[c].equals(a.children[c]))return!1;return!0},guid:0,compile:function(a,b){this.opcodes=[],this.children=[],this.depths={list:[]},this.options=b,this.stringParams=b.stringParams,this.trackIds=b.trackIds;var c=this.options.knownHelpers;if(this.options.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},c)for(var d in c)this.options.knownHelpers[d]=c[d];return this.accept(a)},accept:function(a){return this[a.type](a)},program:function(a){for(var b=a.statements,c=0,d=b.length;d>c;c++)this.accept(b[c]);return this.isSimple=1===d,this.depths.list=this.depths.list.sort(function(a,b){return a-b}),this},compileProgram:function(a){var b,c=(new this.compiler).compile(a,this.options),d=this.guid++;\r
+/*
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*!
+
+ handlebars v2.0.0
+
+Copyright (C) 2011-2014 by Yehuda Katz
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+@license
+*/
+!function(a,b){"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?module.exports=b():a.Handlebars=a.Handlebars||b()}(this,function(){var a=function(){"use strict";function a(a){this.string=a}var b;return a.prototype.toString=function(){return""+this.string},b=a}(),b=function(a){"use strict";function b(a){return i[a]}function c(a){for(var b=1;b<arguments.length;b++)for(var c in arguments[b])Object.prototype.hasOwnProperty.call(arguments[b],c)&&(a[c]=arguments[b][c]);return a}function d(a){return a instanceof h?a.toString():null==a?"":a?(a=""+a,k.test(a)?a.replace(j,b):a):a+""}function e(a){return a||0===a?n(a)&&0===a.length?!0:!1:!0}function f(a,b){return(a?a+".":"")+b}var g={},h=a,i={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},j=/[&<>"'`]/g,k=/[&<>"'`]/;g.extend=c;var l=Object.prototype.toString;g.toString=l;var m=function(a){return"function"==typeof a};m(/x/)&&(m=function(a){return"function"==typeof a&&"[object Function]"===l.call(a)});var m;g.isFunction=m;var n=Array.isArray||function(a){return a&&"object"==typeof a?"[object Array]"===l.call(a):!1};return g.isArray=n,g.escapeExpression=d,g.isEmpty=e,g.appendContextPath=f,g}(a),c=function(){"use strict";function a(a,b){var d;b&&b.firstLine&&(d=b.firstLine,a+=" - "+d+":"+b.firstColumn);for(var e=Error.prototype.constructor.call(this,a),f=0;f<c.length;f++)this[c[f]]=e[c[f]];d&&(this.lineNumber=d,this.column=b.firstColumn)}var b,c=["description","fileName","lineNumber","message","name","number","stack"];return a.prototype=new Error,b=a}(),d=function(a,b){"use strict";function c(a,b){this.helpers=a||{},this.partials=b||{},d(this)}function d(a){a.registerHelper("helperMissing",function(){if(1===arguments.length)return void 0;throw new g("Missing helper: '"+arguments[arguments.length-1].name+"'")}),a.registerHelper("blockHelperMissing",function(b,c){var d=c.inverse,e=c.fn;if(b===!0)return e(this);if(b===!1||null==b)return d(this);if(k(b))return b.length>0?(c.ids&&(c.ids=[c.name]),a.helpers.each(b,c)):d(this);if(c.data&&c.ids){var g=q(c.data);g.contextPath=f.appendContextPath(c.data.contextPath,c.name),c={data:g}}return e(b,c)}),a.registerHelper("each",function(a,b){if(!b)throw new g("Must pass iterator to #each");var c,d,e=b.fn,h=b.inverse,i=0,j="";if(b.data&&b.ids&&(d=f.appendContextPath(b.data.contextPath,b.ids[0])+"."),l(a)&&(a=a.call(this)),b.data&&(c=q(b.data)),a&&"object"==typeof a)if(k(a))for(var m=a.length;m>i;i++)c&&(c.index=i,c.first=0===i,c.last=i===a.length-1,d&&(c.contextPath=d+i)),j+=e(a[i],{data:c});else for(var n in a)a.hasOwnProperty(n)&&(c&&(c.key=n,c.index=i,c.first=0===i,d&&(c.contextPath=d+n)),j+=e(a[n],{data:c}),i++);return 0===i&&(j=h(this)),j}),a.registerHelper("if",function(a,b){return l(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||f.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})}),a.registerHelper("with",function(a,b){l(a)&&(a=a.call(this));var c=b.fn;if(f.isEmpty(a))return b.inverse(this);if(b.data&&b.ids){var d=q(b.data);d.contextPath=f.appendContextPath(b.data.contextPath,b.ids[0]),b={data:d}}return c(a,b)}),a.registerHelper("log",function(b,c){var d=c.data&&null!=c.data.level?parseInt(c.data.level,10):1;a.log(d,b)}),a.registerHelper("lookup",function(a,b){return a&&a[b]})}var e={},f=a,g=b,h="2.0.0";e.VERSION=h;var i=6;e.COMPILER_REVISION=i;var j={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1"};e.REVISION_CHANGES=j;var k=f.isArray,l=f.isFunction,m=f.toString,n="[object Object]";e.HandlebarsEnvironment=c,c.prototype={constructor:c,logger:o,log:p,registerHelper:function(a,b){if(m.call(a)===n){if(b)throw new g("Arg not supported with multiple helpers");f.extend(this.helpers,a)}else this.helpers[a]=b},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,b){m.call(a)===n?f.extend(this.partials,a):this.partials[a]=b},unregisterPartial:function(a){delete this.partials[a]}};var o={methodMap:{0:"debug",1:"info",2:"warn",3:"error"},DEBUG:0,INFO:1,WARN:2,ERROR:3,level:3,log:function(a,b){if(o.level<=a){var c=o.methodMap[a];"undefined"!=typeof console&&console[c]&&console[c].call(console,b)}}};e.logger=o;var p=o.log;e.log=p;var q=function(a){var b=f.extend({},a);return b._parent=a,b};return e.createFrame=q,e}(b,c),e=function(a,b,c){"use strict";function d(a){var b=a&&a[0]||1,c=m;if(b!==c){if(c>b){var d=n[c],e=n[b];throw new l("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+d+") or downgrade your runtime to an older version ("+e+").")}throw new l("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){if(!b)throw new l("No environment passed to template");if(!a||!a.main)throw new l("Unknown template object: "+typeof a);b.VM.checkRevision(a.compiler);var c=function(c,d,e,f,g,h,i,j,m){g&&(f=k.extend({},f,g));var n=b.VM.invokePartial.call(this,c,e,f,h,i,j,m);if(null==n&&b.compile){var o={helpers:h,partials:i,data:j,depths:m};i[e]=b.compile(c,{data:void 0!==j,compat:a.compat},b),n=i[e](f,o)}if(null!=n){if(d){for(var p=n.split("\n"),q=0,r=p.length;r>q&&(p[q]||q+1!==r);q++)p[q]=d+p[q];n=p.join("\n")}return n}throw new l("The partial "+e+" could not be compiled when running in runtime-only mode")},d={lookup:function(a,b){for(var c=a.length,d=0;c>d;d++)if(a[d]&&null!=a[d][b])return a[d][b]},lambda:function(a,b){return"function"==typeof a?a.call(b):a},escapeExpression:k.escapeExpression,invokePartial:c,fn:function(b){return a[b]},programs:[],program:function(a,b,c){var d=this.programs[a],e=this.fn(a);return b||c?d=f(this,a,e,b,c):d||(d=this.programs[a]=f(this,a,e)),d},data:function(a,b){for(;a&&b--;)a=a._parent;return a},merge:function(a,b){var c=a||b;return a&&b&&a!==b&&(c=k.extend({},b,a)),c},noop:b.VM.noop,compilerInfo:a.compiler},e=function(b,c){c=c||{};var f=c.data;e._setup(c),!c.partial&&a.useData&&(f=i(b,f));var g;return a.useDepths&&(g=c.depths?[b].concat(c.depths):[b]),a.main.call(d,b,d.helpers,d.partials,f,g)};return e.isTop=!0,e._setup=function(c){c.partial?(d.helpers=c.helpers,d.partials=c.partials):(d.helpers=d.merge(c.helpers,b.helpers),a.usePartial&&(d.partials=d.merge(c.partials,b.partials)))},e._child=function(b,c,e){if(a.useDepths&&!e)throw new l("must pass parent depths");return f(d,b,a[b],c,e)},e}function f(a,b,c,d,e){var f=function(b,f){return f=f||{},c.call(a,b,a.helpers,a.partials,f.data||d,e&&[b].concat(e))};return f.program=b,f.depth=e?e.length:0,f}function g(a,b,c,d,e,f,g){var h={partial:!0,helpers:d,partials:e,data:f,depths:g};if(void 0===a)throw new l("The partial "+b+" could not be found");return a instanceof Function?a(c,h):void 0}function h(){return""}function i(a,b){return b&&"root"in b||(b=b?o(b):{},b.root=a),b}var j={},k=a,l=b,m=c.COMPILER_REVISION,n=c.REVISION_CHANGES,o=c.createFrame;return j.checkRevision=d,j.template=e,j.program=f,j.invokePartial=g,j.noop=h,j}(b,c,d),f=function(a,b,c,d,e){"use strict";var f,g=a,h=b,i=c,j=d,k=e,l=function(){var a=new g.HandlebarsEnvironment;return j.extend(a,g),a.SafeString=h,a.Exception=i,a.Utils=j,a.escapeExpression=j.escapeExpression,a.VM=k,a.template=function(b){return k.template(b,a)},a},m=l();return m.create=l,m["default"]=m,f=m}(d,a,c,b,e),g=function(a){"use strict";function b(a){a=a||{},this.firstLine=a.first_line,this.firstColumn=a.first_column,this.lastColumn=a.last_column,this.lastLine=a.last_line}var c,d=a,e={ProgramNode:function(a,c,d){b.call(this,d),this.type="program",this.statements=a,this.strip=c},MustacheNode:function(a,c,d,f,g){if(b.call(this,g),this.type="mustache",this.strip=f,null!=d&&d.charAt){var h=d.charAt(3)||d.charAt(2);this.escaped="{"!==h&&"&"!==h}else this.escaped=!!d;this.sexpr=a instanceof e.SexprNode?a:new e.SexprNode(a,c),this.id=this.sexpr.id,this.params=this.sexpr.params,this.hash=this.sexpr.hash,this.eligibleHelper=this.sexpr.eligibleHelper,this.isHelper=this.sexpr.isHelper},SexprNode:function(a,c,d){b.call(this,d),this.type="sexpr",this.hash=c;var e=this.id=a[0],f=this.params=a.slice(1);this.isHelper=!(!f.length&&!c),this.eligibleHelper=this.isHelper||e.isSimple},PartialNode:function(a,c,d,e,f){b.call(this,f),this.type="partial",this.partialName=a,this.context=c,this.hash=d,this.strip=e,this.strip.inlineStandalone=!0},BlockNode:function(a,c,d,e,f){b.call(this,f),this.type="block",this.mustache=a,this.program=c,this.inverse=d,this.strip=e,d&&!c&&(this.isInverse=!0)},RawBlockNode:function(a,c,f,g){if(b.call(this,g),a.sexpr.id.original!==f)throw new d(a.sexpr.id.original+" doesn't match "+f,this);c=new e.ContentNode(c,g),this.type="block",this.mustache=a,this.program=new e.ProgramNode([c],{},g)},ContentNode:function(a,c){b.call(this,c),this.type="content",this.original=this.string=a},HashNode:function(a,c){b.call(this,c),this.type="hash",this.pairs=a},IdNode:function(a,c){b.call(this,c),this.type="ID";for(var e="",f=[],g=0,h="",i=0,j=a.length;j>i;i++){var k=a[i].part;if(e+=(a[i].separator||"")+k,".."===k||"."===k||"this"===k){if(f.length>0)throw new d("Invalid path: "+e,this);".."===k?(g++,h+="../"):this.isScoped=!0}else f.push(k)}this.original=e,this.parts=f,this.string=f.join("."),this.depth=g,this.idName=h+this.string,this.isSimple=1===a.length&&!this.isScoped&&0===g,this.stringModeValue=this.string},PartialNameNode:function(a,c){b.call(this,c),this.type="PARTIAL_NAME",this.name=a.original},DataNode:function(a,c){b.call(this,c),this.type="DATA",this.id=a,this.stringModeValue=a.stringModeValue,this.idName="@"+a.stringModeValue},StringNode:function(a,c){b.call(this,c),this.type="STRING",this.original=this.string=this.stringModeValue=a},NumberNode:function(a,c){b.call(this,c),this.type="NUMBER",this.original=this.number=a,this.stringModeValue=Number(a)},BooleanNode:function(a,c){b.call(this,c),this.type="BOOLEAN",this.bool=a,this.stringModeValue="true"===a},CommentNode:function(a,c){b.call(this,c),this.type="comment",this.comment=a,this.strip={inlineStandalone:!0}}};return c=e}(c),h=function(){"use strict";var a,b=function(){function a(){this.yy={}}var b={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,CONTENT:12,COMMENT:13,openRawBlock:14,END_RAW_BLOCK:15,OPEN_RAW_BLOCK:16,sexpr:17,CLOSE_RAW_BLOCK:18,openBlock:19,block_option0:20,closeBlock:21,openInverse:22,block_option1:23,OPEN_BLOCK:24,CLOSE:25,OPEN_INVERSE:26,inverseAndProgram:27,INVERSE:28,OPEN_ENDBLOCK:29,path:30,OPEN:31,OPEN_UNESCAPED:32,CLOSE_UNESCAPED:33,OPEN_PARTIAL:34,partialName:35,param:36,partial_option0:37,partial_option1:38,sexpr_repetition0:39,sexpr_option0:40,dataName:41,STRING:42,NUMBER:43,BOOLEAN:44,OPEN_SEXPR:45,CLOSE_SEXPR:46,hash:47,hash_repetition_plus0:48,hashSegment:49,ID:50,EQUALS:51,DATA:52,pathSegments:53,SEP:54,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",12:"CONTENT",13:"COMMENT",15:"END_RAW_BLOCK",16:"OPEN_RAW_BLOCK",18:"CLOSE_RAW_BLOCK",24:"OPEN_BLOCK",25:"CLOSE",26:"OPEN_INVERSE",28:"INVERSE",29:"OPEN_ENDBLOCK",31:"OPEN",32:"OPEN_UNESCAPED",33:"CLOSE_UNESCAPED",34:"OPEN_PARTIAL",42:"STRING",43:"NUMBER",44:"BOOLEAN",45:"OPEN_SEXPR",46:"CLOSE_SEXPR",50:"ID",51:"EQUALS",52:"DATA",54:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[10,3],[14,3],[9,4],[9,4],[19,3],[22,3],[27,2],[21,3],[8,3],[8,3],[11,5],[11,4],[17,3],[17,1],[36,1],[36,1],[36,1],[36,1],[36,1],[36,3],[47,1],[49,3],[35,1],[35,1],[35,1],[41,2],[30,1],[53,3],[53,1],[6,0],[6,2],[20,0],[20,1],[23,0],[23,1],[37,0],[37,1],[38,0],[38,1],[39,0],[39,2],[40,0],[40,1],[48,1],[48,2]],performAction:function(a,b,c,d,e,f){var g=f.length-1;switch(e){case 1:return d.prepareProgram(f[g-1].statements,!0),f[g-1];case 2:this.$=new d.ProgramNode(d.prepareProgram(f[g]),{},this._$);break;case 3:this.$=f[g];break;case 4:this.$=f[g];break;case 5:this.$=f[g];break;case 6:this.$=f[g];break;case 7:this.$=new d.ContentNode(f[g],this._$);break;case 8:this.$=new d.CommentNode(f[g],this._$);break;case 9:this.$=new d.RawBlockNode(f[g-2],f[g-1],f[g],this._$);break;case 10:this.$=new d.MustacheNode(f[g-1],null,"","",this._$);break;case 11:this.$=d.prepareBlock(f[g-3],f[g-2],f[g-1],f[g],!1,this._$);break;case 12:this.$=d.prepareBlock(f[g-3],f[g-2],f[g-1],f[g],!0,this._$);break;case 13:this.$=new d.MustacheNode(f[g-1],null,f[g-2],d.stripFlags(f[g-2],f[g]),this._$);break;case 14:this.$=new d.MustacheNode(f[g-1],null,f[g-2],d.stripFlags(f[g-2],f[g]),this._$);break;case 15:this.$={strip:d.stripFlags(f[g-1],f[g-1]),program:f[g]};break;case 16:this.$={path:f[g-1],strip:d.stripFlags(f[g-2],f[g])};break;case 17:this.$=new d.MustacheNode(f[g-1],null,f[g-2],d.stripFlags(f[g-2],f[g]),this._$);break;case 18:this.$=new d.MustacheNode(f[g-1],null,f[g-2],d.stripFlags(f[g-2],f[g]),this._$);break;case 19:this.$=new d.PartialNode(f[g-3],f[g-2],f[g-1],d.stripFlags(f[g-4],f[g]),this._$);break;case 20:this.$=new d.PartialNode(f[g-2],void 0,f[g-1],d.stripFlags(f[g-3],f[g]),this._$);break;case 21:this.$=new d.SexprNode([f[g-2]].concat(f[g-1]),f[g],this._$);break;case 22:this.$=new d.SexprNode([f[g]],null,this._$);break;case 23:this.$=f[g];break;case 24:this.$=new d.StringNode(f[g],this._$);break;case 25:this.$=new d.NumberNode(f[g],this._$);break;case 26:this.$=new d.BooleanNode(f[g],this._$);break;case 27:this.$=f[g];break;case 28:f[g-1].isHelper=!0,this.$=f[g-1];break;case 29:this.$=new d.HashNode(f[g],this._$);break;case 30:this.$=[f[g-2],f[g]];break;case 31:this.$=new d.PartialNameNode(f[g],this._$);break;case 32:this.$=new d.PartialNameNode(new d.StringNode(f[g],this._$),this._$);break;case 33:this.$=new d.PartialNameNode(new d.NumberNode(f[g],this._$));break;case 34:this.$=new d.DataNode(f[g],this._$);break;case 35:this.$=new d.IdNode(f[g],this._$);break;case 36:f[g-2].push({part:f[g],separator:f[g-1]}),this.$=f[g-2];break;case 37:this.$=[{part:f[g]}];break;case 38:this.$=[];break;case 39:f[g-1].push(f[g]);break;case 48:this.$=[];break;case 49:f[g-1].push(f[g]);break;case 52:this.$=[f[g]];break;case 53:f[g-1].push(f[g])}},table:[{3:1,4:2,5:[2,38],6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],31:[2,38],32:[2,38],34:[2,38]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:[1,10],13:[1,11],14:16,16:[1,20],19:14,22:15,24:[1,18],26:[1,19],28:[2,2],29:[2,2],31:[1,12],32:[1,13],34:[1,17]},{1:[2,1]},{5:[2,39],12:[2,39],13:[2,39],16:[2,39],24:[2,39],26:[2,39],28:[2,39],29:[2,39],31:[2,39],32:[2,39],34:[2,39]},{5:[2,3],12:[2,3],13:[2,3],16:[2,3],24:[2,3],26:[2,3],28:[2,3],29:[2,3],31:[2,3],32:[2,3],34:[2,3]},{5:[2,4],12:[2,4],13:[2,4],16:[2,4],24:[2,4],26:[2,4],28:[2,4],29:[2,4],31:[2,4],32:[2,4],34:[2,4]},{5:[2,5],12:[2,5],13:[2,5],16:[2,5],24:[2,5],26:[2,5],28:[2,5],29:[2,5],31:[2,5],32:[2,5],34:[2,5]},{5:[2,6],12:[2,6],13:[2,6],16:[2,6],24:[2,6],26:[2,6],28:[2,6],29:[2,6],31:[2,6],32:[2,6],34:[2,6]},{5:[2,7],12:[2,7],13:[2,7],16:[2,7],24:[2,7],26:[2,7],28:[2,7],29:[2,7],31:[2,7],32:[2,7],34:[2,7]},{5:[2,8],12:[2,8],13:[2,8],16:[2,8],24:[2,8],26:[2,8],28:[2,8],29:[2,8],31:[2,8],32:[2,8],34:[2,8]},{17:21,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:27,30:22,41:23,50:[1,26],52:[1,25],53:24},{4:28,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{4:29,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{12:[1,30]},{30:32,35:31,42:[1,33],43:[1,34],50:[1,26],53:24},{17:35,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:36,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:37,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[1,38]},{18:[2,48],25:[2,48],33:[2,48],39:39,42:[2,48],43:[2,48],44:[2,48],45:[2,48],46:[2,48],50:[2,48],52:[2,48]},{18:[2,22],25:[2,22],33:[2,22],46:[2,22]},{18:[2,35],25:[2,35],33:[2,35],42:[2,35],43:[2,35],44:[2,35],45:[2,35],46:[2,35],50:[2,35],52:[2,35],54:[1,40]},{30:41,50:[1,26],53:24},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],52:[2,37],54:[2,37]},{33:[1,42]},{20:43,27:44,28:[1,45],29:[2,40]},{23:46,27:47,28:[1,45],29:[2,42]},{15:[1,48]},{25:[2,46],30:51,36:49,38:50,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],47:57,48:58,49:60,50:[1,59],52:[1,25],53:24},{25:[2,31],42:[2,31],43:[2,31],44:[2,31],45:[2,31],50:[2,31],52:[2,31]},{25:[2,32],42:[2,32],43:[2,32],44:[2,32],45:[2,32],50:[2,32],52:[2,32]},{25:[2,33],42:[2,33],43:[2,33],44:[2,33],45:[2,33],50:[2,33],52:[2,33]},{25:[1,61]},{25:[1,62]},{18:[1,63]},{5:[2,17],12:[2,17],13:[2,17],16:[2,17],24:[2,17],26:[2,17],28:[2,17],29:[2,17],31:[2,17],32:[2,17],34:[2,17]},{18:[2,50],25:[2,50],30:51,33:[2,50],36:65,40:64,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],46:[2,50],47:66,48:58,49:60,50:[1,59],52:[1,25],53:24},{50:[1,67]},{18:[2,34],25:[2,34],33:[2,34],42:[2,34],43:[2,34],44:[2,34],45:[2,34],46:[2,34],50:[2,34],52:[2,34]},{5:[2,18],12:[2,18],13:[2,18],16:[2,18],24:[2,18],26:[2,18],28:[2,18],29:[2,18],31:[2,18],32:[2,18],34:[2,18]},{21:68,29:[1,69]},{29:[2,41]},{4:70,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{21:71,29:[1,69]},{29:[2,43]},{5:[2,9],12:[2,9],13:[2,9],16:[2,9],24:[2,9],26:[2,9],28:[2,9],29:[2,9],31:[2,9],32:[2,9],34:[2,9]},{25:[2,44],37:72,47:73,48:58,49:60,50:[1,74]},{25:[1,75]},{18:[2,23],25:[2,23],33:[2,23],42:[2,23],43:[2,23],44:[2,23],45:[2,23],46:[2,23],50:[2,23],52:[2,23]},{18:[2,24],25:[2,24],33:[2,24],42:[2,24],43:[2,24],44:[2,24],45:[2,24],46:[2,24],50:[2,24],52:[2,24]},{18:[2,25],25:[2,25],33:[2,25],42:[2,25],43:[2,25],44:[2,25],45:[2,25],46:[2,25],50:[2,25],52:[2,25]},{18:[2,26],25:[2,26],33:[2,26],42:[2,26],43:[2,26],44:[2,26],45:[2,26],46:[2,26],50:[2,26],52:[2,26]},{18:[2,27],25:[2,27],33:[2,27],42:[2,27],43:[2,27],44:[2,27],45:[2,27],46:[2,27],50:[2,27],52:[2,27]},{17:76,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[2,47]},{18:[2,29],25:[2,29],33:[2,29],46:[2,29],49:77,50:[1,74]},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],51:[1,78],52:[2,37],54:[2,37]},{18:[2,52],25:[2,52],33:[2,52],46:[2,52],50:[2,52]},{12:[2,13],13:[2,13],16:[2,13],24:[2,13],26:[2,13],28:[2,13],29:[2,13],31:[2,13],32:[2,13],34:[2,13]},{12:[2,14],13:[2,14],16:[2,14],24:[2,14],26:[2,14],28:[2,14],29:[2,14],31:[2,14],32:[2,14],34:[2,14]},{12:[2,10]},{18:[2,21],25:[2,21],33:[2,21],46:[2,21]},{18:[2,49],25:[2,49],33:[2,49],42:[2,49],43:[2,49],44:[2,49],45:[2,49],46:[2,49],50:[2,49],52:[2,49]},{18:[2,51],25:[2,51],33:[2,51],46:[2,51]},{18:[2,36],25:[2,36],33:[2,36],42:[2,36],43:[2,36],44:[2,36],45:[2,36],46:[2,36],50:[2,36],52:[2,36],54:[2,36]},{5:[2,11],12:[2,11],13:[2,11],16:[2,11],24:[2,11],26:[2,11],28:[2,11],29:[2,11],31:[2,11],32:[2,11],34:[2,11]},{30:79,50:[1,26],53:24},{29:[2,15]},{5:[2,12],12:[2,12],13:[2,12],16:[2,12],24:[2,12],26:[2,12],28:[2,12],29:[2,12],31:[2,12],32:[2,12],34:[2,12]},{25:[1,80]},{25:[2,45]},{51:[1,78]},{5:[2,20],12:[2,20],13:[2,20],16:[2,20],24:[2,20],26:[2,20],28:[2,20],29:[2,20],31:[2,20],32:[2,20],34:[2,20]},{46:[1,81]},{18:[2,53],25:[2,53],33:[2,53],46:[2,53],50:[2,53]},{30:51,36:82,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],50:[1,26],52:[1,25],53:24},{25:[1,83]},{5:[2,19],12:[2,19],13:[2,19],16:[2,19],24:[2,19],26:[2,19],28:[2,19],29:[2,19],31:[2,19],32:[2,19],34:[2,19]},{18:[2,28],25:[2,28],33:[2,28],42:[2,28],43:[2,28],44:[2,28],45:[2,28],46:[2,28],50:[2,28],52:[2,28]},{18:[2,30],25:[2,30],33:[2,30],46:[2,30],50:[2,30]},{5:[2,16],12:[2,16],13:[2,16],16:[2,16],24:[2,16],26:[2,16],28:[2,16],29:[2,16],31:[2,16],32:[2,16],34:[2,16]}],defaultActions:{4:[2,1],44:[2,41],47:[2,43],57:[2,47],63:[2,10],70:[2,15],73:[2,45]},parseError:function(a){throw new Error(a)},parse:function(a){function b(){var a;return a=c.lexer.lex()||1,"number"!=typeof a&&(a=c.symbols_[a]||a),a}var c=this,d=[0],e=[null],f=[],g=this.table,h="",i=0,j=0,k=0;this.lexer.setInput(a),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var l=this.lexer.yylloc;f.push(l);var m=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var n,o,p,q,r,s,t,u,v,w={};;){if(p=d[d.length-1],this.defaultActions[p]?q=this.defaultActions[p]:((null===n||"undefined"==typeof n)&&(n=b()),q=g[p]&&g[p][n]),"undefined"==typeof q||!q.length||!q[0]){var x="";if(!k){v=[];for(s in g[p])this.terminals_[s]&&s>2&&v.push("'"+this.terminals_[s]+"'");x=this.lexer.showPosition?"Parse error on line "+(i+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+v.join(", ")+", got '"+(this.terminals_[n]||n)+"'":"Parse error on line "+(i+1)+": Unexpected "+(1==n?"end of input":"'"+(this.terminals_[n]||n)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[n]||n,line:this.lexer.yylineno,loc:l,expected:v})}}if(q[0]instanceof Array&&q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+p+", token: "+n);switch(q[0]){case 1:d.push(n),e.push(this.lexer.yytext),f.push(this.lexer.yylloc),d.push(q[1]),n=null,o?(n=o,o=null):(j=this.lexer.yyleng,h=this.lexer.yytext,i=this.lexer.yylineno,l=this.lexer.yylloc,k>0&&k--);break;case 2:if(t=this.productions_[q[1]][1],w.$=e[e.length-t],w._$={first_line:f[f.length-(t||1)].first_line,last_line:f[f.length-1].last_line,first_column:f[f.length-(t||1)].first_column,last_column:f[f.length-1].last_column},m&&(w._$.range=[f[f.length-(t||1)].range[0],f[f.length-1].range[1]]),r=this.performAction.call(w,h,j,i,this.yy,q[1],e,f),"undefined"!=typeof r)return r;t&&(d=d.slice(0,-1*t*2),e=e.slice(0,-1*t),f=f.slice(0,-1*t)),d.push(this.productions_[q[1]][0]),e.push(w.$),f.push(w._$),u=g[d[d.length-2]][d[d.length-1]],d.push(u);break;case 3:return!0}}return!0}},c=function(){var a={EOF:1,parseError:function(a,b){if(!this.yy.parser)throw new Error(a);this.yy.parser.parseError(a,b)},setInput:function(a){return this._input=a,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var b=a.match(/(?:\r\n?|\n).*/g);return b?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var b=a.length,c=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-b-1),this.offset-=b;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var e=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-b},this.options.ranges&&(this.yylloc.range=[e[0],e[0]+this.yyleng-b]),this},more:function(){return this._more=!0,this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),b=new Array(a.length+1).join("-");return a+this.upcomingInput()+"\n"+b+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,b,c,d,e;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),g=0;g<f.length&&(c=this._input.match(this.rules[f[g]]),!c||b&&!(c[0].length>b[0].length)||(b=c,d=g,this.options.flex));g++);return b?(e=b[0].match(/(?:\r\n?|\n).*/g),e&&(this.yylineno+=e.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:e?e[e.length-1].length-e[e.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],a=this.performAction.call(this,this.yy,this,f[d],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a?a:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var a=this.next();return"undefined"!=typeof a?a:this.lex()},begin:function(a){this.conditionStack.push(a)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(a){this.begin(a)}};return a.options={},a.performAction=function(a,b,c,d){function e(a,c){return b.yytext=b.yytext.substr(a,b.yyleng-c)}switch(c){case 0:if("\\\\"===b.yytext.slice(-2)?(e(0,1),this.begin("mu")):"\\"===b.yytext.slice(-1)?(e(0,1),this.begin("emu")):this.begin("mu"),b.yytext)return 12;break;case 1:return 12;case 2:return this.popState(),12;case 3:return b.yytext=b.yytext.substr(5,b.yyleng-9),this.popState(),15;case 4:return 12;case 5:return e(0,4),this.popState(),13;case 6:return 45;case 7:return 46;case 8:return 16;case 9:return this.popState(),this.begin("raw"),18;case 10:return 34;case 11:return 24;case 12:return 29;case 13:return this.popState(),28;case 14:return this.popState(),28;case 15:return 26;case 16:return 26;case 17:return 32;case 18:return 31;case 19:this.popState(),this.begin("com");break;case 20:return e(3,5),this.popState(),13;case 21:return 31;case 22:return 51;case 23:return 50;case 24:return 50;case 25:return 54;case 26:break;case 27:return this.popState(),33;case 28:return this.popState(),25;case 29:return b.yytext=e(1,2).replace(/\\"/g,'"'),42;case 30:return b.yytext=e(1,2).replace(/\\'/g,"'"),42;case 31:return 52;case 32:return 44;case 33:return 44;case 34:return 43;case 35:return 50;case 36:return b.yytext=e(1,2),50;case 37:return"INVALID";case 38:return 5}},a.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{\/)))/,/^(?:[\s\S]*?--\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{!--)/,/^(?:\{\{![\s\S]*?\}\})/,/^(?:\{\{(~)?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)]))))/,/^(?:\[[^\]]*\])/,/^(?:.)/,/^(?:$)/],a.conditions={mu:{rules:[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[5],inclusive:!1},raw:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,1,38],inclusive:!0}},a}();return b.lexer=c,a.prototype=b,b.Parser=a,new a}();return a=b}(),i=function(a){"use strict";function b(a,b){return{left:"~"===a.charAt(2),right:"~"===b.charAt(b.length-3)}}function c(a,b,c,d,i,k){if(a.sexpr.id.original!==d.path.original)throw new j(a.sexpr.id.original+" doesn't match "+d.path.original,a);var l=c&&c.program,m={left:a.strip.left,right:d.strip.right,openStandalone:f(b.statements),closeStandalone:e((l||b).statements)};if(a.strip.right&&g(b.statements,null,!0),l){var n=c.strip;n.left&&h(b.statements,null,!0),n.right&&g(l.statements,null,!0),d.strip.left&&h(l.statements,null,!0),e(b.statements)&&f(l.statements)&&(h(b.statements),g(l.statements))}else d.strip.left&&h(b.statements,null,!0);return i?new this.BlockNode(a,l,b,m,k):new this.BlockNode(a,b,l,m,k)}function d(a,b){for(var c=0,d=a.length;d>c;c++){var i=a[c],j=i.strip;if(j){var k=e(a,c,b,"partial"===i.type),l=f(a,c,b),m=j.openStandalone&&k,n=j.closeStandalone&&l,o=j.inlineStandalone&&k&&l;j.right&&g(a,c,!0),j.left&&h(a,c,!0),o&&(g(a,c),h(a,c)&&"partial"===i.type&&(i.indent=/([ \t]+$)/.exec(a[c-1].original)?RegExp.$1:"")),m&&(g((i.program||i.inverse).statements),h(a,c)),n&&(g(a,c),h((i.inverse||i.program).statements))}}return a}function e(a,b,c){void 0===b&&(b=a.length);var d=a[b-1],e=a[b-2];return d?"content"===d.type?(e||!c?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(d.original):void 0:c}function f(a,b,c){void 0===b&&(b=-1);var d=a[b+1],e=a[b+2];return d?"content"===d.type?(e||!c?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(d.original):void 0:c}function g(a,b,c){var d=a[null==b?0:b+1];if(d&&"content"===d.type&&(c||!d.rightStripped)){var e=d.string;d.string=d.string.replace(c?/^\s+/:/^[ \t]*\r?\n?/,""),d.rightStripped=d.string!==e}}function h(a,b,c){var d=a[null==b?a.length-1:b-1];if(d&&"content"===d.type&&(c||!d.leftStripped)){var e=d.string;return d.string=d.string.replace(c?/\s+$/:/[ \t]+$/,""),d.leftStripped=d.string!==e,d.leftStripped}}var i={},j=a;return i.stripFlags=b,i.prepareBlock=c,i.prepareProgram=d,i}(c),j=function(a,b,c,d){"use strict";function e(a){return a.constructor===h.ProgramNode?a:(g.yy=k,g.parse(a))}var f={},g=a,h=b,i=c,j=d.extend;f.parser=g;var k={};return j(k,i,h),f.parse=e,f}(h,g,i,b),k=function(a,b){"use strict";function c(){}function d(a,b,c){if(null==a||"string"!=typeof a&&a.constructor!==c.AST.ProgramNode)throw new h("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+a);b=b||{},"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var d=c.parse(a),e=(new c.Compiler).compile(d,b);return(new c.JavaScriptCompiler).compile(e,b)}function e(a,b,c){function d(){var d=c.parse(a),e=(new c.Compiler).compile(d,b),f=(new c.JavaScriptCompiler).compile(e,b,void 0,!0);return c.template(f)}if(null==a||"string"!=typeof a&&a.constructor!==c.AST.ProgramNode)throw new h("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+a);b=b||{},"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var e,f=function(a,b){return e||(e=d()),e.call(this,a,b)};return f._setup=function(a){return e||(e=d()),e._setup(a)},f._child=function(a,b,c){return e||(e=d()),e._child(a,b,c)},f}function f(a,b){if(a===b)return!0;if(i(a)&&i(b)&&a.length===b.length){for(var c=0;c<a.length;c++)if(!f(a[c],b[c]))return!1;return!0}}var g={},h=a,i=b.isArray,j=[].slice;return g.Compiler=c,c.prototype={compiler:c,equals:function(a){var b=this.opcodes.length;if(a.opcodes.length!==b)return!1;for(var c=0;b>c;c++){var d=this.opcodes[c],e=a.opcodes[c];if(d.opcode!==e.opcode||!f(d.args,e.args))return!1}for(b=this.children.length,c=0;b>c;c++)if(!this.children[c].equals(a.children[c]))return!1;return!0},guid:0,compile:function(a,b){this.opcodes=[],this.children=[],this.depths={list:[]},this.options=b,this.stringParams=b.stringParams,this.trackIds=b.trackIds;var c=this.options.knownHelpers;if(this.options.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},c)for(var d in c)this.options.knownHelpers[d]=c[d];return this.accept(a)},accept:function(a){return this[a.type](a)},program:function(a){for(var b=a.statements,c=0,d=b.length;d>c;c++)this.accept(b[c]);return this.isSimple=1===d,this.depths.list=this.depths.list.sort(function(a,b){return a-b}),this},compileProgram:function(a){var b,c=(new this.compiler).compile(a,this.options),d=this.guid++;
 this.usePartial=this.usePartial||c.usePartial,this.children[d]=c;for(var e=0,f=c.depths.list.length;f>e;e++)b=c.depths.list[e],2>b||this.addDepth(b-1);return d},block:function(a){var b=a.mustache,c=a.program,d=a.inverse;c&&(c=this.compileProgram(c)),d&&(d=this.compileProgram(d));var e=b.sexpr,f=this.classifySexpr(e);"helper"===f?this.helperSexpr(e,c,d):"simple"===f?(this.simpleSexpr(e),this.opcode("pushProgram",c),this.opcode("pushProgram",d),this.opcode("emptyHash"),this.opcode("blockValue",e.id.original)):(this.ambiguousSexpr(e,c,d),this.opcode("pushProgram",c),this.opcode("pushProgram",d),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},hash:function(a){var b,c,d=a.pairs;for(this.opcode("pushHash"),b=0,c=d.length;c>b;b++)this.pushParam(d[b][1]);for(;b--;)this.opcode("assignToHash",d[b][0]);this.opcode("popHash")},partial:function(a){var b=a.partialName;this.usePartial=!0,a.hash?this.accept(a.hash):this.opcode("push","undefined"),a.context?this.accept(a.context):(this.opcode("getContext",0),this.opcode("pushContext")),this.opcode("invokePartial",b.name,a.indent||""),this.opcode("append")},content:function(a){a.string&&this.opcode("appendContent",a.string)},mustache:function(a){this.sexpr(a.sexpr),a.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},ambiguousSexpr:function(a,b,c){var d=a.id,e=d.parts[0],f=null!=b||null!=c;this.opcode("getContext",d.depth),this.opcode("pushProgram",b),this.opcode("pushProgram",c),this.ID(d),this.opcode("invokeAmbiguous",e,f)},simpleSexpr:function(a){var b=a.id;"DATA"===b.type?this.DATA(b):b.parts.length?this.ID(b):(this.addDepth(b.depth),this.opcode("getContext",b.depth),this.opcode("pushContext")),this.opcode("resolvePossibleLambda")},helperSexpr:function(a,b,c){var d=this.setupFullMustacheParams(a,b,c),e=a.id,f=e.parts[0];if(this.options.knownHelpers[f])this.opcode("invokeKnownHelper",d.length,f);else{if(this.options.knownHelpersOnly)throw new h("You specified knownHelpersOnly, but used the unknown helper "+f,a);e.falsy=!0,this.ID(e),this.opcode("invokeHelper",d.length,e.original,e.isSimple)}},sexpr:function(a){var b=this.classifySexpr(a);"simple"===b?this.simpleSexpr(a):"helper"===b?this.helperSexpr(a):this.ambiguousSexpr(a)},ID:function(a){this.addDepth(a.depth),this.opcode("getContext",a.depth);var b=a.parts[0];b?this.opcode("lookupOnContext",a.parts,a.falsy,a.isScoped):this.opcode("pushContext")},DATA:function(a){this.options.data=!0,this.opcode("lookupData",a.id.depth,a.id.parts)},STRING:function(a){this.opcode("pushString",a.string)},NUMBER:function(a){this.opcode("pushLiteral",a.number)},BOOLEAN:function(a){this.opcode("pushLiteral",a.bool)},comment:function(){},opcode:function(a){this.opcodes.push({opcode:a,args:j.call(arguments,1)})},addDepth:function(a){0!==a&&(this.depths[a]||(this.depths[a]=!0,this.depths.list.push(a)))},classifySexpr:function(a){var b=a.isHelper,c=a.eligibleHelper,d=this.options;if(c&&!b){var e=a.id.parts[0];d.knownHelpers[e]?b=!0:d.knownHelpersOnly&&(c=!1)}return b?"helper":c?"ambiguous":"simple"},pushParams:function(a){for(var b=0,c=a.length;c>b;b++)this.pushParam(a[b])},pushParam:function(a){this.stringParams?(a.depth&&this.addDepth(a.depth),this.opcode("getContext",a.depth||0),this.opcode("pushStringParam",a.stringModeValue,a.type),"sexpr"===a.type&&this.sexpr(a)):(this.trackIds&&this.opcode("pushId",a.type,a.idName||a.stringModeValue),this.accept(a))},setupFullMustacheParams:function(a,b,c){var d=a.params;return this.pushParams(d),this.opcode("pushProgram",b),this.opcode("pushProgram",c),a.hash?this.hash(a.hash):this.opcode("emptyHash"),d}},g.precompile=d,g.compile=e,g}(c,b),l=function(a,b){"use strict";function c(a){this.value=a}function d(){}var e,f=a.COMPILER_REVISION,g=a.REVISION_CHANGES,h=b;d.prototype={nameLookup:function(a,b){return d.isValidJavaScriptVariableName(b)?a+"."+b:a+"['"+b+"']"},depthedLookup:function(a){return this.aliases.lookup="this.lookup",'lookup(depths, "'+a+'")'},compilerInfo:function(){var a=f,b=g[a];return[a,b]},appendToBuffer:function(a){return this.environment.isSimple?"return "+a+";":{appendToBuffer:!0,content:a,toString:function(){return"buffer += "+a+";"}}},initializeBuffer:function(){return this.quotedString("")},namespace:"Handlebars",compile:function(a,b,c,d){this.environment=a,this.options=b,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!d,this.name=this.environment.name,this.isChild=!!c,this.context=c||{programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.compileChildren(a,b),this.useDepths=this.useDepths||a.depths.list.length||this.options.compat;var e,f,g,i=a.opcodes;for(f=0,g=i.length;g>f;f++)e=i[f],this[e.opcode].apply(this,e.args);if(this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new h("Compile completed with content left on stack");var j=this.createFunctionContext(d);if(this.isChild)return j;var k={compiler:this.compilerInfo(),main:j},l=this.context.programs;for(f=0,g=l.length;g>f;f++)l[f]&&(k[f]=l[f]);return this.environment.usePartial&&(k.usePartial=!0),this.options.data&&(k.useData=!0),this.useDepths&&(k.useDepths=!0),this.options.compat&&(k.compat=!0),d||(k.compiler=JSON.stringify(k.compiler),k=this.objectLiteral(k)),k},preamble:function(){this.lastContext=0,this.source=[]},createFunctionContext:function(a){var b="",c=this.stackVars.concat(this.registers.list);c.length>0&&(b+=", "+c.join(", "));for(var d in this.aliases)this.aliases.hasOwnProperty(d)&&(b+=", "+d+"="+this.aliases[d]);var e=["depth0","helpers","partials","data"];this.useDepths&&e.push("depths");var f=this.mergeSource(b);return a?(e.push(f),Function.apply(this,e)):"function("+e.join(",")+") {\n  "+f+"}"},mergeSource:function(a){for(var b,c,d="",e=!this.forceBuffer,f=0,g=this.source.length;g>f;f++){var h=this.source[f];h.appendToBuffer?b=b?b+"\n    + "+h.content:h.content:(b&&(d?d+="buffer += "+b+";\n  ":(c=!0,d=b+";\n  "),b=void 0),d+=h+"\n  ",this.environment.isSimple||(e=!1))}return e?(b||!d)&&(d+="return "+(b||'""')+";\n"):(a+=", buffer = "+(c?"":this.initializeBuffer()),d+=b?"return buffer + "+b+";\n":"return buffer;\n"),a&&(d="var "+a.substring(2)+(c?"":";\n  ")+d),d},blockValue:function(a){this.aliases.blockHelperMissing="helpers.blockHelperMissing";var b=[this.contextName(0)];this.setupParams(a,0,b);var c=this.popStack();b.splice(1,0,c),this.push("blockHelperMissing.call("+b.join(", ")+")")},ambiguousBlockValue:function(){this.aliases.blockHelperMissing="helpers.blockHelperMissing";var a=[this.contextName(0)];this.setupParams("",0,a,!0),this.flushInline();var b=this.topStack();a.splice(1,0,b),this.pushSource("if (!"+this.lastHelper+") { "+b+" = blockHelperMissing.call("+a.join(", ")+"); }")},appendContent:function(a){this.pendingContent&&(a=this.pendingContent+a),this.pendingContent=a},append:function(){this.flushInline();var a=this.popStack();this.pushSource("if ("+a+" != null) { "+this.appendToBuffer(a)+" }"),this.environment.isSimple&&this.pushSource("else { "+this.appendToBuffer("''")+" }")},appendEscaped:function(){this.aliases.escapeExpression="this.escapeExpression",this.pushSource(this.appendToBuffer("escapeExpression("+this.popStack()+")"))},getContext:function(a){this.lastContext=a},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(a,b,c){var d=0,e=a.length;for(c||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(a[d++]));e>d;d++)this.replaceStack(function(c){var e=this.nameLookup(c,a[d],"context");return b?" && "+e:" != null ? "+e+" : "+c})},lookupData:function(a,b){a?this.pushStackLiteral("this.data(data, "+a+")"):this.pushStackLiteral("data");for(var c=b.length,d=0;c>d;d++)this.replaceStack(function(a){return" && "+this.nameLookup(a,b[d],"data")})},resolvePossibleLambda:function(){this.aliases.lambda="this.lambda",this.push("lambda("+this.popStack()+", "+this.contextName(0)+")")},pushStringParam:function(a,b){this.pushContext(),this.pushString(b),"sexpr"!==b&&("string"==typeof a?this.pushString(a):this.pushStackLiteral(a))},emptyHash:function(){this.pushStackLiteral("{}"),this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}"))},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var a=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push("{"+a.ids.join(",")+"}"),this.stringParams&&(this.push("{"+a.contexts.join(",")+"}"),this.push("{"+a.types.join(",")+"}")),this.push("{\n    "+a.values.join(",\n    ")+"\n  }")},pushString:function(a){this.pushStackLiteral(this.quotedString(a))},push:function(a){return this.inlineStack.push(a),a},pushLiteral:function(a){this.pushStackLiteral(a)},pushProgram:function(a){null!=a?this.pushStackLiteral(this.programExpression(a)):this.pushStackLiteral(null)},invokeHelper:function(a,b,c){this.aliases.helperMissing="helpers.helperMissing";var d=this.popStack(),e=this.setupHelper(a,b),f=(c?e.name+" || ":"")+d+" || helperMissing";this.push("(("+f+").call("+e.callParams+"))")},invokeKnownHelper:function(a,b){var c=this.setupHelper(a,b);this.push(c.name+".call("+c.callParams+")")},invokeAmbiguous:function(a,b){this.aliases.functionType='"function"',this.aliases.helperMissing="helpers.helperMissing",this.useRegister("helper");var c=this.popStack();this.emptyHash();var d=this.setupHelper(0,a,b),e=this.lastHelper=this.nameLookup("helpers",a,"helper");this.push("((helper = (helper = "+e+" || "+c+") != null ? helper : helperMissing"+(d.paramsInit?"),("+d.paramsInit:"")+"),(typeof helper === functionType ? helper.call("+d.callParams+") : helper))")},invokePartial:function(a,b){var c=[this.nameLookup("partials",a,"partial"),"'"+b+"'","'"+a+"'",this.popStack(),this.popStack(),"helpers","partials"];this.options.data?c.push("data"):this.options.compat&&c.push("undefined"),this.options.compat&&c.push("depths"),this.push("this.invokePartial("+c.join(", ")+")")},assignToHash:function(a){var b,c,d,e=this.popStack();this.trackIds&&(d=this.popStack()),this.stringParams&&(c=this.popStack(),b=this.popStack());var f=this.hash;b&&f.contexts.push("'"+a+"': "+b),c&&f.types.push("'"+a+"': "+c),d&&f.ids.push("'"+a+"': "+d),f.values.push("'"+a+"': ("+e+")")},pushId:function(a,b){"ID"===a||"DATA"===a?this.pushString(b):"sexpr"===a?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:d,compileChildren:function(a,b){for(var c,d,e=a.children,f=0,g=e.length;g>f;f++){c=e[f],d=new this.compiler;var h=this.matchExistingProgram(c);null==h?(this.context.programs.push(""),h=this.context.programs.length,c.index=h,c.name="program"+h,this.context.programs[h]=d.compile(c,b,this.context,!this.precompile),this.context.environments[h]=c,this.useDepths=this.useDepths||d.useDepths):(c.index=h,c.name="program"+h)}},matchExistingProgram:function(a){for(var b=0,c=this.context.environments.length;c>b;b++){var d=this.context.environments[b];if(d&&d.equals(a))return b}},programExpression:function(a){var b=this.environment.children[a],c=(b.depths.list,this.useDepths),d=[b.index,"data"];return c&&d.push("depths"),"this.program("+d.join(", ")+")"},useRegister:function(a){this.registers[a]||(this.registers[a]=!0,this.registers.list.push(a))},pushStackLiteral:function(a){return this.push(new c(a))},pushSource:function(a){this.pendingContent&&(this.source.push(this.appendToBuffer(this.quotedString(this.pendingContent))),this.pendingContent=void 0),a&&this.source.push(a)},pushStack:function(a){this.flushInline();var b=this.incrStack();return this.pushSource(b+" = "+a+";"),this.compileStack.push(b),b},replaceStack:function(a){{var b,d,e,f="";this.isInline()}if(!this.isInline())throw new h("replaceStack on non-inline");var g=this.popStack(!0);if(g instanceof c)f=b=g.value,e=!0;else{d=!this.stackSlot;var i=d?this.incrStack():this.topStackName();f="("+this.push(i)+" = "+g+")",b=this.topStack()}var j=a.call(this,b);e||this.popStack(),d&&this.stackSlot--,this.push("("+f+j+")")},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var a=this.inlineStack;if(a.length){this.inlineStack=[];for(var b=0,d=a.length;d>b;b++){var e=a[b];e instanceof c?this.compileStack.push(e):this.pushStack(e)}}},isInline:function(){return this.inlineStack.length},popStack:function(a){var b=this.isInline(),d=(b?this.inlineStack:this.compileStack).pop();if(!a&&d instanceof c)return d.value;if(!b){if(!this.stackSlot)throw new h("Invalid stack pop");this.stackSlot--}return d},topStack:function(){var a=this.isInline()?this.inlineStack:this.compileStack,b=a[a.length-1];return b instanceof c?b.value:b},contextName:function(a){return this.useDepths&&a?"depths["+a+"]":"depth"+a},quotedString:function(a){return'"'+a.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(this.quotedString(c)+":"+a[c]);return"{"+b.join(",")+"}"},setupHelper:function(a,b,c){var d=[],e=this.setupParams(b,a,d,c),f=this.nameLookup("helpers",b,"helper");return{params:d,paramsInit:e,name:f,callParams:[this.contextName(0)].concat(d).join(", ")}},setupOptions:function(a,b,c){var d,e,f,g={},h=[],i=[],j=[];g.name=this.quotedString(a),g.hash=this.popStack(),this.trackIds&&(g.hashIds=this.popStack()),this.stringParams&&(g.hashTypes=this.popStack(),g.hashContexts=this.popStack()),e=this.popStack(),f=this.popStack(),(f||e)&&(f||(f="this.noop"),e||(e="this.noop"),g.fn=f,g.inverse=e);for(var k=b;k--;)d=this.popStack(),c[k]=d,this.trackIds&&(j[k]=this.popStack()),this.stringParams&&(i[k]=this.popStack(),h[k]=this.popStack());return this.trackIds&&(g.ids="["+j.join(",")+"]"),this.stringParams&&(g.types="["+i.join(",")+"]",g.contexts="["+h.join(",")+"]"),this.options.data&&(g.data="data"),g},setupParams:function(a,b,c,d){var e=this.objectLiteral(this.setupOptions(a,b,c));return d?(this.useRegister("options"),c.push("options"),"options="+e):(c.push(e),"")}};for(var i="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield".split(" "),j=d.RESERVED_WORDS={},k=0,l=i.length;l>k;k++)j[i[k]]=!0;return d.isValidJavaScriptVariableName=function(a){return!d.RESERVED_WORDS[a]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(a)},e=d}(d,c),m=function(a,b,c,d,e){"use strict";var f,g=a,h=b,i=c.parser,j=c.parse,k=d.Compiler,l=d.compile,m=d.precompile,n=e,o=g.create,p=function(){var a=o();return a.compile=function(b,c){return l(b,c,a)},a.precompile=function(b,c){return m(b,c,a)},a.AST=h,a.Compiler=k,a.JavaScriptCompiler=n,a.Parser=i,a.parse=j,a};return g=p(),g.create=p,g["default"]=g,f=g}(f,g,j,k,l);return m});
\ No newline at end of file
@@ -1,16 +1,16 @@
-/*\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
+/*
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 var hljs=new function(){function l(o){return o.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;")}function b(p){for(var o=p.firstChild;o;o=o.nextSibling){if(o.nodeName=="CODE"){return o}if(!(o.nodeType==3&&o.nodeValue.match(/\s+/))){break}}}function h(p,o){return Array.prototype.map.call(p.childNodes,function(q){if(q.nodeType==3){return o?q.nodeValue.replace(/\n/g,""):q.nodeValue}if(q.nodeName=="BR"){return"\n"}return h(q,o)}).join("")}function a(q){var p=(q.className+" "+q.parentNode.className).split(/\s+/);p=p.map(function(r){return r.replace(/^language-/,"")});for(var o=0;o<p.length;o++){if(e[p[o]]||p[o]=="no-highlight"){return p[o]}}}function c(q){var o=[];(function p(r,s){for(var t=r.firstChild;t;t=t.nextSibling){if(t.nodeType==3){s+=t.nodeValue.length}else{if(t.nodeName=="BR"){s+=1}else{if(t.nodeType==1){o.push({event:"start",offset:s,node:t});s=p(t,s);o.push({event:"stop",offset:s,node:t})}}}}return s})(q,0);return o}function j(x,v,w){var p=0;var y="";var r=[];function t(){if(x.length&&v.length){if(x[0].offset!=v[0].offset){return(x[0].offset<v[0].offset)?x:v}else{return v[0].event=="start"?x:v}}else{return x.length?x:v}}function s(A){function z(B){return" "+B.nodeName+'="'+l(B.value)+'"'}return"<"+A.nodeName+Array.prototype.map.call(A.attributes,z).join("")+">"}while(x.length||v.length){var u=t().splice(0,1)[0];y+=l(w.substr(p,u.offset-p));p=u.offset;if(u.event=="start"){y+=s(u.node);r.push(u.node)}else{if(u.event=="stop"){var o,q=r.length;do{q--;o=r[q];y+=("</"+o.nodeName.toLowerCase()+">")}while(o!=u.node);r.splice(q,1);while(q<r.length){y+=s(r[q]);q++}}}}return y+l(w.substr(p))}function f(q){function o(s,r){return RegExp(s,"m"+(q.cI?"i":"")+(r?"g":""))}function p(y,w){if(y.compiled){return}y.compiled=true;var s=[];if(y.k){var r={};function z(A,t){t.split(" ").forEach(function(B){var C=B.split("|");r[C[0]]=[A,C[1]?Number(C[1]):1];s.push(C[0])})}y.lR=o(y.l||hljs.IR,true);if(typeof y.k=="string"){z("keyword",y.k)}else{for(var x in y.k){if(!y.k.hasOwnProperty(x)){continue}z(x,y.k[x])}}y.k=r}if(w){if(y.bWK){y.b="\\b("+s.join("|")+")\\s"}y.bR=o(y.b?y.b:"\\B|\\b");if(!y.e&&!y.eW){y.e="\\B|\\b"}if(y.e){y.eR=o(y.e)}y.tE=y.e||"";if(y.eW&&w.tE){y.tE+=(y.e?"|":"")+w.tE}}if(y.i){y.iR=o(y.i)}if(y.r===undefined){y.r=1}if(!y.c){y.c=[]}for(var v=0;v<y.c.length;v++){if(y.c[v]=="self"){y.c[v]=y}p(y.c[v],y)}if(y.starts){p(y.starts,w)}var u=[];for(var v=0;v<y.c.length;v++){u.push(y.c[v].b)}if(y.tE){u.push(y.tE)}if(y.i){u.push(y.i)}y.t=u.length?o(u.join("|"),true):{exec:function(t){return null}}}p(q)}function d(D,E){function o(r,M){for(var L=0;L<M.c.length;L++){var K=M.c[L].bR.exec(r);if(K&&K.index==0){return M.c[L]}}}function s(K,r){if(K.e&&K.eR.test(r)){return K}if(K.eW){return s(K.parent,r)}}function t(r,K){return K.i&&K.iR.test(r)}function y(L,r){var K=F.cI?r[0].toLowerCase():r[0];return L.k.hasOwnProperty(K)&&L.k[K]}function G(){var K=l(w);if(!A.k){return K}var r="";var N=0;A.lR.lastIndex=0;var L=A.lR.exec(K);while(L){r+=K.substr(N,L.index-N);var M=y(A,L);if(M){v+=M[1];r+='<span class="'+M[0]+'">'+L[0]+"</span>"}else{r+=L[0]}N=A.lR.lastIndex;L=A.lR.exec(K)}return r+K.substr(N)}function z(){if(A.sL&&!e[A.sL]){return l(w)}var r=A.sL?d(A.sL,w):g(w);if(A.r>0){v+=r.keyword_count;B+=r.r}return'<span class="'+r.language+'">'+r.value+"</span>"}function J(){return A.sL!==undefined?z():G()}function I(L,r){var K=L.cN?'<span class="'+L.cN+'">':"";if(L.rB){x+=K;w=""}else{if(L.eB){x+=l(r)+K;w=""}else{x+=K;w=r}}A=Object.create(L,{parent:{value:A}});B+=L.r}function C(K,r){w+=K;if(r===undefined){x+=J();return 0}var L=o(r,A);if(L){x+=J();I(L,r);return L.rB?0:r.length}var M=s(A,r);if(M){if(!(M.rE||M.eE)){w+=r}x+=J();do{if(A.cN){x+="</span>"}A=A.parent}while(A!=M.parent);if(M.eE){x+=l(r)}w="";if(M.starts){I(M.starts,"")}return M.rE?0:r.length}if(t(r,A)){throw"Illegal"}w+=r;return r.length||1}var F=e[D];f(F);var A=F;var w="";var B=0;var v=0;var x="";try{var u,q,p=0;while(true){A.t.lastIndex=p;u=A.t.exec(E);if(!u){break}q=C(E.substr(p,u.index-p),u[0]);p=u.index+q}C(E.substr(p));return{r:B,keyword_count:v,value:x,language:D}}catch(H){if(H=="Illegal"){return{r:0,keyword_count:0,value:l(E)}}else{throw H}}}function g(s){var o={keyword_count:0,r:0,value:l(s)};var q=o;for(var p in e){if(!e.hasOwnProperty(p)){continue}var r=d(p,s);r.language=p;if(r.keyword_count+r.r>q.keyword_count+q.r){q=r}if(r.keyword_count+r.r>o.keyword_count+o.r){q=o;o=r}}if(q.language){o.second_best=q}return o}function i(q,p,o){if(p){q=q.replace(/^((<[^>]+>|\t)+)/gm,function(r,v,u,t){return v.replace(/\t/g,p)})}if(o){q=q.replace(/\n/g,"<br>")}return q}function m(r,u,p){var v=h(r,p);var t=a(r);if(t=="no-highlight"){return}var w=t?d(t,v):g(v);t=w.language;var o=c(r);if(o.length){var q=document.createElement("pre");q.innerHTML=w.value;w.value=j(o,c(q),v)}w.value=i(w.value,u,p);var s=r.className;if(!s.match("(\\s|^)(language-)?"+t+"(\\s|$)")){s=s?(s+" "+t):t}r.innerHTML=w.value;r.className=s;r.result={language:t,kw:w.keyword_count,re:w.r};if(w.second_best){r.second_best={language:w.second_best.language,kw:w.second_best.keyword_count,re:w.second_best.r}}}function n(){if(n.called){return}n.called=true;Array.prototype.map.call(document.getElementsByTagName("pre"),b).filter(Boolean).forEach(function(o){m(o,hljs.tabReplace)})}function k(){window.addEventListener("DOMContentLoaded",n,false);window.addEventListener("load",n,false)}var e={};this.LANGUAGES=e;this.highlight=d;this.highlightAuto=g;this.fixMarkup=i;this.highlightBlock=m;this.initHighlighting=n;this.initHighlightingOnLoad=k;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.inherit=function(q,r){var o={};for(var p in q){o[p]=q[p]}if(r){for(var p in r){o[p]=r[p]}}return o}}();hljs.LANGUAGES.xml=function(a){var c="[A-Za-z0-9\\._:-]+";var b={eW:true,c:[{cN:"attribute",b:c,r:0},{b:'="',rB:true,e:'"',c:[{cN:"value",b:'"',eW:true}]},{b:"='",rB:true,e:"'",c:[{cN:"value",b:"'",eW:true}]},{b:"=",c:[{cN:"value",b:"[^\\s/>]+"}]}]};return{cI:true,c:[{cN:"pi",b:"<\\?",e:"\\?>",r:10},{cN:"doctype",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"<!--",e:"-->",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{title:"style"},c:[b],starts:{e:"</style>",rE:true,sL:"css"}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{title:"script"},c:[b],starts:{e:"<\/script>",rE:true,sL:"javascript"}},{b:"<%",e:"%>",sL:"vbscript"},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"title",b:"[^ />]+"},b]}]}}(hljs);hljs.LANGUAGES.json=function(a){var e={literal:"true false null"};var d=[a.QSM,a.CNM];var c={cN:"value",e:",",eW:true,eE:true,c:d,k:e};var b={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:true,eE:true,c:[a.BE],i:"\\n",starts:c}],i:"\\S"};var f={b:"\\[",e:"\\]",c:[a.inherit(c,{cN:null})],i:"\\S"};d.splice(d.length,0,b,f);return{c:d,k:e,i:"\\S"}}(hljs);
\ No newline at end of file
@@ -1,17 +1,17 @@
-/*\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-/*! jQuery v@1.8.0 jquery.com | jquery.org/license */\r
+/*
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*! jQuery v@1.8.0 jquery.com | jquery.org/license */
 (function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d<e;d++)p.event.add(b,c,h[c][d])}g.data&&(g.data=p.extend({},g.data))}function bE(a,b){var c;if(b.nodeType!==1)return;b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?(b.parentNode&&(b.outerHTML=a.outerHTML),p.support.html5Clone&&a.innerHTML&&!p.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):c==="input"&&bv.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text),b.removeAttribute(p.expando)}function bF(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bG(a){bv.test(a.type)&&(a.defaultChecked=a.checked)}function bX(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=bV.length;while(e--){b=bV[e]+c;if(b in a)return b}return d}function bY(a,b){return a=b||a,p.css(a,"display")==="none"||!p.contains(a.ownerDocument,a)}function bZ(a,b){var c,d,e=[],f=0,g=a.length;for(;f<g;f++){c=a[f];if(!c.style)continue;e[f]=p._data(c,"olddisplay"),b?(!e[f]&&c.style.display==="none"&&(c.style.display=""),c.style.display===""&&bY(c)&&(e[f]=p._data(c,"olddisplay",cb(c.nodeName)))):(d=bH(c,"display"),!e[f]&&d!=="none"&&p._data(c,"olddisplay",d))}for(f=0;f<g;f++){c=a[f];if(!c.style)continue;if(!b||c.style.display==="none"||c.style.display==="")c.style.display=b?e[f]||"":"none"}return a}function b$(a,b,c){var d=bO.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function b_(a,b,c,d){var e=c===(d?"border":"content")?4:b==="width"?1:0,f=0;for(;e<4;e+=2)c==="margin"&&(f+=p.css(a,c+bU[e],!0)),d?(c==="content"&&(f-=parseFloat(bH(a,"padding"+bU[e]))||0),c!=="margin"&&(f-=parseFloat(bH(a,"border"+bU[e]+"Width"))||0)):(f+=parseFloat(bH(a,"padding"+bU[e]))||0,c!=="padding"&&(f+=parseFloat(bH(a,"border"+bU[e]+"Width"))||0));return f}function ca(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=!0,f=p.support.boxSizing&&p.css(a,"boxSizing")==="border-box";if(d<=0){d=bH(a,b);if(d<0||d==null)d=a.style[b];if(bP.test(d))return d;e=f&&(p.support.boxSizingReliable||d===a.style[b]),d=parseFloat(d)||0}return d+b_(a,b,c||(f?"border":"content"),e)+"px"}function cb(a){if(bR[a])return bR[a];var b=p("<"+a+">").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write("<!doctype html><html><body>"),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bR[a]=c,c}function ch(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||cd.test(a)?d(a,e):ch(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ch(a+"["+e+"]",b[e],c,d);else d(a,b)}function cy(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h<i;h++)d=g[h],f=/^\+/.test(d),f&&(d=d.substr(1)||"*"),e=a[d]=a[d]||[],e[f?"unshift":"push"](c)}}function cz(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h,i=a[f],j=0,k=i?i.length:0,l=a===cu;for(;j<k&&(l||!h);j++)h=i[j](c,d,e),typeof h=="string"&&(!l||g[h]?h=b:(c.dataTypes.unshift(h),h=cz(a,c,d,e,h,g)));return(l||!h)&&!g["*"]&&(h=cz(a,c,d,e,"*",g)),h}function cA(a,c){var d,e,f=p.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((f[d]?a:e||(e={}))[d]=c[d]);e&&p.extend(!0,a,e)}function cB(a,c,d){var e,f,g,h,i=a.contents,j=a.dataTypes,k=a.responseFields;for(f in k)f in d&&(c[k[f]]=d[f]);while(j[0]==="*")j.shift(),e===b&&(e=a.mimeType||c.getResponseHeader("content-type"));if(e)for(f in i)if(i[f]&&i[f].test(e)){j.unshift(f);break}if(j[0]in d)g=j[0];else{for(f in d){if(!j[0]||a.converters[f+" "+j[0]]){g=f;break}h||(h=f)}g=g||h}if(g)return g!==j[0]&&j.unshift(g),d[g]}function cC(a,b){var c,d,e,f,g=a.dataTypes.slice(),h=g[0],i={},j=0;a.dataFilter&&(b=a.dataFilter(b,a.dataType));if(g[1])for(c in a.converters)i[c.toLowerCase()]=a.converters[c];for(;e=g[++j];)if(e!=="*"){if(h!=="*"&&h!==e){c=i[h+" "+e]||i["* "+e];if(!c)for(d in i){f=d.split(" ");if(f[1]===e){c=i[h+" "+f[0]]||i["* "+f[0]];if(c){c===!0?c=i[d]:i[d]!==!0&&(e=f[0],g.splice(j--,0,e));break}}}if(c!==!0)if(c&&a["throws"])b=c(b);else try{b=c(b)}catch(k){return{state:"parsererror",error:c?k:"No conversion from "+h+" to "+e}}}h=e}return{state:"success",data:b}}function cK(){try{return new a.XMLHttpRequest}catch(b){}}function cL(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function cT(){return setTimeout(function(){cM=b},0),cM=p.now()}function cU(a,b){p.each(b,function(b,c){var d=(cS[b]||[]).concat(cS["*"]),e=0,f=d.length;for(;e<f;e++)if(d[e].call(a,b,c))return})}function cV(a,b,c){var d,e=0,f=0,g=cR.length,h=p.Deferred().always(function(){delete i.elem}),i=function(){var b=cM||cT(),c=Math.max(0,j.startTime+j.duration-b),d=1-(c/j.duration||0),e=0,f=j.tweens.length;for(;e<f;e++)j.tweens[e].run(d);return h.notifyWith(a,[j,d,c]),d<1&&f?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:p.extend({},b),opts:p.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:cM||cT(),duration:c.duration,tweens:[],createTween:function(b,c,d){var e=p.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(e),e},stop:function(b){var c=0,d=b?j.tweens.length:0;for(;c<d;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;cW(k,j.opts.specialEasing);for(;e<g;e++){d=cR[e].call(j,a,k,j.opts);if(d)return d}return cU(j,k),p.isFunction(j.opts.start)&&j.opts.start.call(a,j),p.fx.timer(p.extend(i,{anim:j,queue:j.opts.queue,elem:a})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function cW(a,b){var c,d,e,f,g;for(c in a){d=p.camelCase(c),e=b[d],f=a[c],p.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=p.cssHooks[d];if(g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}}function cX(a,b,c){var d,e,f,g,h,i,j,k,l=this,m=a.style,n={},o=[],q=a.nodeType&&bY(a);c.queue||(j=p._queueHooks(a,"fx"),j.unqueued==null&&(j.unqueued=0,k=j.empty.fire,j.empty.fire=function(){j.unqueued||k()}),j.unqueued++,l.always(function(){l.always(function(){j.unqueued--,p.queue(a,"fx").length||j.empty.fire()})})),a.nodeType===1&&("height"in b||"width"in b)&&(c.overflow=[m.overflow,m.overflowX,m.overflowY],p.css(a,"display")==="inline"&&p.css(a,"float")==="none"&&(!p.support.inlineBlockNeedsLayout||cb(a.nodeName)==="inline"?m.display="inline-block":m.zoom=1)),c.overflow&&(m.overflow="hidden",p.support.shrinkWrapBlocks||l.done(function(){m.overflow=c.overflow[0],m.overflowX=c.overflow[1],m.overflowY=c.overflow[2]}));for(d in b){f=b[d];if(cO.exec(f)){delete b[d];if(f===(q?"hide":"show"))continue;o.push(d)}}g=o.length;if(g){h=p._data(a,"fxshow")||p._data(a,"fxshow",{}),q?p(a).show():l.done(function(){p(a).hide()}),l.done(function(){var b;p.removeData(a,"fxshow",!0);for(b in n)p.style(a,b,n[b])});for(d=0;d<g;d++)e=o[d],i=l.createTween(e,q?h[e]:0),n[e]=h[e]||p.style(a,e),e in h||(h[e]=i.start,q&&(i.end=i.start,i.start=e==="width"||e==="height"?1:0))}}function cY(a,b,c,d,e){return new cY.prototype.init(a,b,c,d,e)}function cZ(a,b){var c,d={height:a},e=0;for(;e<4;e+=2-b)c=bU[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function c_(a){return p.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}var c,d,e=a.document,f=a.location,g=a.navigator,h=a.jQuery,i=a.$,j=Array.prototype.push,k=Array.prototype.slice,l=Array.prototype.indexOf,m=Object.prototype.toString,n=Object.prototype.hasOwnProperty,o=String.prototype.trim,p=function(a,b){return new p.fn.init(a,b,c)},q=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,r=/\S/,s=/\s+/,t=r.test(" ")?/^[\s\xA0]+|[\s\xA0]+$/g:/^\s+|\s+$/g,u=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.0",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i<j;i++)if((a=arguments[i])!=null)for(c in a){d=h[c],e=a[c];if(h===e)continue;k&&e&&(p.isPlainObject(e)||(f=p.isArray(e)))?(f?(f=!1,g=d&&p.isArray(d)?d:[]):g=d&&p.isPlainObject(d)?d:{},h[c]=p.extend(k,g,e)):e!==b&&(h[c]=e)}return h},p.extend({noConflict:function(b){return a.$===p&&(a.$=i),b&&a.jQuery===p&&(a.jQuery=h),p},isReady:!1,readyWait:1,holdReady:function(a){a?p.readyWait++:p.ready(!0)},ready:function(a){if(a===!0?--p.readyWait:p.isReady)return;if(!e.body)return setTimeout(p.ready,1);p.isReady=!0;if(a!==!0&&--p.readyWait>0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f<g;)if(c.apply(a[f++],d)===!1)break}else if(h){for(e in a)if(c.call(a[e],e,a[e])===!1)break}else for(;f<g;)if(c.call(a[f],f,a[f++])===!1)break;return a},trim:o?function(a){return a==null?"":o.call(a)}:function(a){return a==null?"":a.toString().replace(t,"")},makeArray:function(a,b){var c,d=b||[];return a!=null&&(c=p.type(a),a.length==null||c==="string"||c==="function"||c==="regexp"||p.isWindow(a)?j.call(d,a):p.merge(d,a)),d},inArray:function(a,b,c){var d;if(b){if(l)return l.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=c.length,e=a.length,f=0;if(typeof d=="number")for(;f<d;f++)a[e++]=c[f];else while(c[f]!==b)a[e++]=c[f++];return a.length=e,a},grep:function(a,b,c){var d,e=[],f=0,g=a.length;c=!!c;for(;f<g;f++)d=!!b(a[f],f),c!==d&&e.push(a[f]);return e},map:function(a,c,d){var e,f,g=[],h=0,i=a.length,j=a instanceof p||i!==b&&typeof i=="number"&&(i>0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h<i;h++)e=c(a[h],h,d),e!=null&&(g[g.length]=e);else for(f in a)e=c(a[f],f,d),e!=null&&(g[g.length]=e);return g.concat.apply([],g)},guid:1,proxy:function(a,c){var d,e,f;return typeof c=="string"&&(d=a[c],c=a,a=d),p.isFunction(a)?(e=k.call(arguments,2),f=function(){return a.apply(c,e.concat(k.call(arguments)))},f.guid=a.guid=a.guid||f.guid||p.guid++,f):b},access:function(a,c,d,e,f,g,h){var i,j=d==null,k=0,l=a.length;if(d&&typeof d=="object"){for(k in d)p.access(a,c,k,d[k],1,g,e);f=1}else if(e!==b){i=h===b&&p.isFunction(e),j&&(i?(i=c,c=function(a,b,c){return i.call(p(a),c)}):(c.call(a,e),c=null));if(c)for(;k<l;k++)c(a[k],d,i?e.call(a[k],k,c(a[k],d)):e,h);f=1}return f?a:j?c.call(a):l?c(a[0],d):g},now:function(){return(new Date).getTime()}}),p.ready.promise=function(b){if(!d){d=p.Deferred();if(e.readyState==="complete"||e.readyState!=="loading"&&e.addEventListener)setTimeout(p.ready,1);else if(e.addEventListener)e.addEventListener("DOMContentLoaded",D,!1),a.addEventListener("load",p.ready,!1);else{e.attachEvent("onreadystatechange",D),a.attachEvent("onload",p.ready);var c=!1;try{c=a.frameElement==null&&e.documentElement}catch(f){}c&&c.doScroll&&function g(){if(!p.isReady){try{c.doScroll("left")}catch(a){return setTimeout(g,50)}p.ready()}}()}}return d.promise(b)},p.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){E["[object "+b+"]"]=b.toLowerCase()}),c=p(e);var F={};p.Callbacks=function(a){a=typeof a=="string"?F[a]||G(a):p.extend({},a);var c,d,e,f,g,h,i=[],j=!a.once&&[],k=function(b){c=a.memory&&b,d=!0,h=f||0,f=0,g=i.length,e=!0;for(;i&&h<g;h++)if(i[h].apply(b[0],b[1])===!1&&a.stopOnFalse){c=!1;break}e=!1,i&&(j?j.length&&k(j.shift()):c?i=[]:l.disable())},l={add:function(){if(i){var b=i.length;(function d(b){p.each(b,function(b,c){p.isFunction(c)&&(!a.unique||!l.has(c))?i.push(c):c&&c.length&&d(c)})})(arguments),e?g=i.length:c&&(f=b,k(c))}return this},remove:function(){return i&&p.each(arguments,function(a,b){var c;while((c=p.inArray(b,i,c))>-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b<d;b++)c[b]&&p.isFunction(c[b].promise)?c[b].promise().done(g(b,j,c)).fail(f.reject).progress(g(b,i,h)):--e}return e||f.resolveWith(j,c),f.promise()}}),p.support=function(){var b,c,d,f,g,h,i,j,k,l,m,n=e.createElement("div");n.setAttribute("className","t"),n.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="<div></div>",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/^(?:\{.*\}|\[.*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e<f;e++)delete d[b[e]];if(!(c?K:p.isEmptyObject)(d))return}}if(!c){delete h[i].data;if(!K(h[i]))return}g?p.cleanData([a],!0):p.support.deleteExpando||h!=h.window?delete h[i]:h[i]=null},_data:function(a,b,c){return p.data(a,b,c,!0)},acceptData:function(a){var b=a.nodeName&&p.noData[a.nodeName.toLowerCase()];return!b||b!==!0&&a.getAttribute("classid")===b}}),p.fn.extend({data:function(a,c){var d,e,f,g,h,i=this[0],j=0,k=null;if(a===b){if(this.length){k=p.data(i);if(i.nodeType===1&&!p._data(i,"parsedAttrs")){f=i.attributes;for(h=f.length;j<h;j++)g=f[j].name,g.indexOf("data-")===0&&(g=p.camelCase(g.substring(5)),J(i,g,k[g]));p._data(i,"parsedAttrs",!0)}}return k}return typeof a=="object"?this.each(function(){p.data(this,a)}):(d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!",p.access(this,function(c){if(c===b)return k=this.triggerHandler("getData"+e,[d[0]]),k===b&&i&&(k=p.data(i,a),k=J(i,a,k)),k===b&&d[1]?this.data(d[0]):k;d[1]=c,this.each(function(){var b=p(this);b.triggerHandler("setData"+e,d),p.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.shift(),e=p._queueHooks(a,b),f=function(){p.dequeue(a,b)};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),delete e.stop,d.call(a,f,e)),!c.length&&e&&e.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length<d?p.queue(this[0],a):c===b?this:this.each(function(){var b=p.queue(this,a,c);p._queueHooks(this,a),a==="fx"&&b[0]!=="inprogress"&&p.dequeue(this,a)})},dequeue:function(a){return this.each(function(){p.dequeue(this,a)})},delay:function(a,b){return a=p.fx?p.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){var d,e=1,f=p.Deferred(),g=this,h=this.length,i=function(){--e||f.resolveWith(g,[g])};typeof a!="string"&&(c=a,a=b),a=a||"fx";while(h--)(d=p._data(g[h],a+"queueHooks"))&&d.empty&&(e++,d.empty.add(i));return i(),f.promise(c)}});var L,M,N,O=/[\t\r\n]/g,P=/\r/g,Q=/^(?:button|input)$/i,R=/^(?:button|input|object|select|textarea)$/i,S=/^a(?:rea|)$/i,T=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,U=p.support.getSetAttribute;p.fn.extend({attr:function(a,b){return p.access(this,p.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{f=" "+e.className+" ";for(g=0,h=b.length;g<h;g++)~f.indexOf(" "+b[g]+" ")||(f+=b[g]+" ");e.className=p.trim(f)}}}return this},removeClass:function(a){var c,d,e,f,g,h,i;if(p.isFunction(a))return this.each(function(b){p(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(s);for(h=0,i=this.length;h<i;h++){e=this[h];if(e.nodeType===1&&e.className){d=(" "+e.className+" ").replace(O," ");for(f=0,g=c.length;f<g;f++)while(d.indexOf(" "+c[f]+" ")>-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(O," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c<d;c++){e=h[c];if(e.selected&&(p.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!p.nodeName(e.parentNode,"optgroup"))){b=p(e).val();if(i)return b;g.push(b)}}return i&&!g.length&&h.length?p(h[f]).val():g},set:function(a,b){var c=p.makeArray(b);return p(a).find("option").each(function(){this.selected=p.inArray(p(this).val(),c)>=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g<d.length;g++)e=d[g],e&&(c=p.propFix[e]||e,f=T.test(e),f||p.attr(a,e,""),a.removeAttribute(U?e:c),f&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(Q.test(a.nodeName)&&a.parentNode)p.error("type property can't be changed");else if(!p.support.radioValue&&b==="radio"&&p.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}},value:{get:function(a,b){return L&&p.nodeName(a,"button")?L.get(a,b):b in a?a.value:null},set:function(a,b,c){if(L&&p.nodeName(a,"button"))return L.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,f,g,h=a.nodeType;if(!a||h===3||h===8||h===2)return;return g=h!==1||!p.isXMLDoc(a),g&&(c=p.propFix[c]||c,f=p.propHooks[c]),d!==b?f&&"set"in f&&(e=f.set(a,d,c))!==b?e:a[c]=d:f&&"get"in f&&(e=f.get(a,c))!==null?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):R.test(a.nodeName)||S.test(a.nodeName)&&a.href?0:b}}}}),M={get:function(a,c){var d,e=p.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;return b===!1?p.removeAttr(a,c):(d=p.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase())),c}},U||(N={name:!0,id:!0,coords:!0},L=p.valHooks.button={get:function(a,c){var d;return d=a.getAttributeNode(c),d&&(N[c]?d.value!=="":d.specified)?d.value:b},set:function(a,b,c){var d=a.getAttributeNode(c);return d||(d=e.createAttribute(c),a.setAttributeNode(d)),d.value=b+""}},p.each(["width","height"],function(a,b){p.attrHooks[b]=p.extend(p.attrHooks[b],{set:function(a,c){if(c==="")return a.setAttribute(b,"auto"),c}})}),p.attrHooks.contenteditable={get:L.get,set:function(a,b,c){b===""&&(b="false"),L.set(a,b,c)}}),p.support.hrefNormalized||p.each(["href","src","width","height"],function(a,c){p.attrHooks[c]=p.extend(p.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),p.support.style||(p.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),p.support.optSelected||(p.propHooks.selected=p.extend(p.propHooks.selected,{get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}})),p.support.enctype||(p.propFix.enctype="encoding"),p.support.checkOn||p.each(["radio","checkbox"],function(){p.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),p.each(["radio","checkbox"],function(){p.valHooks[this]=p.extend(p.valHooks[this],{set:function(a,b){if(p.isArray(b))return a.checked=p.inArray(p(a).val(),b)>=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j<c.length;j++){k=W.exec(c[j])||[],l=k[1],m=(k[2]||"").split(".").sort(),r=p.event.special[l]||{},l=(f?r.delegateType:r.bindType)||l,r=p.event.special[l]||{},n=p.extend({type:l,origType:k[1],data:e,handler:d,guid:d.guid,selector:f,namespace:m.join(".")},o),q=i[l];if(!q){q=i[l]=[],q.delegateCount=0;if(!r.setup||r.setup.call(a,e,m,h)===!1)a.addEventListener?a.addEventListener(l,h,!1):a.attachEvent&&a.attachEvent("on"+l,h)}r.add&&(r.add.call(a,n),n.handler.guid||(n.handler.guid=d.guid)),f?q.splice(q.delegateCount++,0,n):q.push(n),p.event.global[l]=!0}a=null},global:{},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,q,r=p.hasData(a)&&p._data(a);if(!r||!(m=r.events))return;b=p.trim(_(b||"")).split(" ");for(f=0;f<b.length;f++){g=W.exec(b[f])||[],h=i=g[1],j=g[2];if(!h){for(h in m)p.event.remove(a,h+b[f],c,d,!0);continue}n=p.event.special[h]||{},h=(d?n.delegateType:n.bindType)||h,o=m[h]||[],k=o.length,j=j?new RegExp("(^|\\.)"+j.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(l=0;l<o.length;l++)q=o[l],(e||i===q.origType)&&(!c||c.guid===q.guid)&&(!j||j.test(q.namespace))&&(!d||d===q.selector||d==="**"&&q.selector)&&(o.splice(l--,1),q.selector&&o.delegateCount--,n.remove&&n.remove.call(a,q));o.length===0&&k!==o.length&&((!n.teardown||n.teardown.call(a,j,r.handle)===!1)&&p.removeEvent(a,h,r.handle),delete m[h])}p.isEmptyObject(m)&&(delete r.handle,p.removeData(a,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,f,g){if(!f||f.nodeType!==3&&f.nodeType!==8){var h,i,j,k,l,m,n,o,q,r,s=c.type||c,t=[];if($.test(s+p.event.triggered))return;s.indexOf("!")>=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j<q.length&&!c.isPropagationStopped();j++)k=q[j][0],c.type=q[j][1],o=(p._data(k,"events")||{})[c.type]&&p._data(k,"handle"),o&&o.apply(k,d),o=m&&k[m],o&&p.acceptData(k)&&o.apply(k,d)===!1&&c.preventDefault();return c.type=s,!g&&!c.isDefaultPrevented()&&(!n._default||n._default.apply(f.ownerDocument,d)===!1)&&(s!=="click"||!p.nodeName(f,"a"))&&p.acceptData(f)&&m&&f[s]&&(s!=="focus"&&s!=="blur"||c.target.offsetWidth!==0)&&!p.isWindow(f)&&(l=f[m],l&&(f[m]=null),p.event.triggered=s,f[s](),p.event.triggered=b,l&&(f[m]=l)),c.result}return},dispatch:function(c){c=p.event.fix(c||a.event);var d,e,f,g,h,i,j,k,l,m,n,o=(p._data(this,"events")||{})[c.type]||[],q=o.delegateCount,r=[].slice.call(arguments),s=!c.exclusive&&!c.namespace,t=p.event.special[c.type]||{},u=[];r[0]=c,c.delegateTarget=this;if(t.preDispatch&&t.preDispatch.call(this,c)===!1)return;if(q&&(!c.button||c.type!=="click")){g=p(this),g.context=this;for(f=c.target;f!=this;f=f.parentNode||this)if(f.disabled!==!0||c.type!=="click"){i={},k=[],g[0]=f;for(d=0;d<q;d++)l=o[d],m=l.selector,i[m]===b&&(i[m]=g.is(m)),i[m]&&k.push(l);k.length&&u.push({elem:f,matches:k})}}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d<u.length&&!c.isPropagationStopped();d++){j=u[d],c.currentTarget=j.elem;for(e=0;e<j.matches.length&&!c.isImmediatePropagationStopped();e++){l=j.matches[e];if(s||!c.namespace&&!l.namespace||c.namespace_re&&c.namespace_re.test(l.namespace))c.data=l.data,c.handleObj=l,h=((p.event.special[l.origType]||{}).handle||l.handler).apply(j.elem,r),h!==b&&(c.result=h,h===!1&&(c.preventDefault(),c.stopPropagation()))}}return t.postDispatch&&t.postDispatch.call(this,c),c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,c){var d,f,g,h=c.button,i=c.fromElement;return a.pageX==null&&c.clientX!=null&&(d=a.target.ownerDocument||e,f=d.documentElement,g=d.body,a.pageX=c.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=c.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?c.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0),a}},fix:function(a){if(a[p.expando])return a;var b,c,d=a,f=p.event.fixHooks[a.type]||{},g=f.props?this.props.concat(f.props):this.props;a=p.Event(d);for(b=g.length;b;)c=g[--b],a[c]=d[c];return a.target||(a.target=d.srcElement||e),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,f.filter?f.filter(a,d):a},special:{ready:{setup:p.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){p.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=p.extend(new p.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?p.event.trigger(e,null,b):p.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},p.event.handle=p.event.dispatch,p.removeEvent=e.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]=="undefined"&&(a[d]=null),a.detachEvent(d,c))},p.Event=function(a,b){if(this instanceof p.Event)a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?bb:ba):this.type=a,b&&p.extend(this,b),this.timeStamp=a&&a.timeStamp||p.now(),this[p.expando]=!0;else return new p.Event(a,b)},p.Event.prototype={preventDefault:function(){this.isDefaultPrevented=bb;var a=this.originalEvent;if(!a)return;a.preventDefault?a.preventDefault():a.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=bb;var a=this.originalEvent;if(!a)return;a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()},isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba},p.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){p.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj,g=f.selector;if(!e||e!==d&&!p.contains(d,e))a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b;return c}}}),p.support.submitBubbles||(p.event.special.submit={setup:function(){if(p.nodeName(this,"form"))return!1;p.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=p.nodeName(c,"input")||p.nodeName(c,"button")?c.form:b;d&&!p._data(d,"_submit_attached")&&(p.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),p._data(d,"_submit_attached",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&p.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(p.nodeName(this,"form"))return!1;p.event.remove(this,"._submit")}}),p.support.changeBubbles||(p.event.special.change={setup:function(){if(V.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")p.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),p.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),p.event.simulate("change",this,a,!0)});return!1}p.event.add(this,"beforeactivate._change",function(a){var b=a.target;V.test(b.nodeName)&&!p._data(b,"_change_attached")&&(p.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&p.event.simulate("change",this.parentNode,a,!0)}),p._data(b,"_change_attached",!0))})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){return p.event.remove(this,"._change"),V.test(this.nodeName)}}),p.support.focusinBubbles||p.each({focus:"focusin",blur:"focusout"},function(a,b){var c=0,d=function(a){p.event.simulate(b,a.target,p.event.fix(a),!0)};p.event.special[b]={setup:function(){c++===0&&e.addEventListener(a,d,!0)},teardown:function(){--c===0&&e.removeEventListener(a,d,!0)}}}),p.fn.extend({on:function(a,c,d,e,f){var g,h;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(h in a)this.on(h,c,d,a[h],f);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=ba;else if(!e)return this;return f===1&&(g=e,e=function(a){return p().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=p.guid++)),this.each(function(){p.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){var e,f;if(a&&a.preventDefault&&a.handleObj)return e=a.handleObj,p(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler),this;if(typeof a=="object"){for(f in a)this.off(f,c,a[f]);return this}if(c===!1||typeof c=="function")d=c,c=b;return d===!1&&(d=ba),this.each(function(){p.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){return p(this.context).on(a,this.selector,b,c),this},die:function(a,b){return p(this.context).off(a,this.selector||"**",b),this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a||"**",c)},trigger:function(a,b){return this.each(function(){p.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return p.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||p.guid++,d=0,e=function(c){var e=(p._data(this,"lastToggle"+a.guid)||0)%d;return p._data(this,"lastToggle"+a.guid,e+1),c.preventDefault(),b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),p.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(a,b){p.fn[b]=function(a,c){return c==null&&(c=a,a=null),arguments.length>0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bd(a,b,c,d){var e=0,f=b.length;for(;e<f;e++)Z(a,b[e],c,d)}function be(a,b,c,d,e,f){var g,h=$.setFilters[b.toLowerCase()];return h||Z.error(b),(a||!(g=e))&&bd(a||"*",d,g=[],e),g.length>0?h(g,c,f):[]}function bf(a,c,d,e,f){var g,h,i,j,k,l,m,n,p=0,q=f.length,s=L.POS,t=new RegExp("^"+s.source+"(?!"+r+")","i"),u=function(){var a=1,c=arguments.length-2;for(;a<c;a++)arguments[a]===b&&(g[a]=b)};for(;p<q;p++){s.exec(""),a=f[p],j=[],i=0,k=e;while(g=s.exec(a)){n=s.lastIndex=g.index+g[0].length;if(n>i){m=a.slice(i,g.index),i=n,l=[c],B.test(m)&&(k&&(l=k),k=e);if(h=H.test(m))m=m.slice(0,-5).replace(B,"$&*");g.length>1&&g[0].replace(t,u),k=be(m,g[1],g[2],l,k,h)}}k?(j=j.concat(k),(m=a.slice(i))&&m!==")"?B.test(m)?bd(m,j,d,e):Z(m,c,d,e?e.concat(k):k):o.apply(d,j)):Z(a,c,d,e)}return q===1?d:Z.uniqueSort(d)}function bg(a,b,c){var d,e,f,g=[],i=0,j=D.exec(a),k=!j.pop()&&!j.pop(),l=k&&a.match(C)||[""],m=$.preFilter,n=$.filter,o=!c&&b!==h;for(;(e=l[i])!=null&&k;i++){g.push(d=[]),o&&(e=" "+e);while(e){k=!1;if(j=B.exec(e))e=e.slice(j[0].length),k=d.push({part:j.pop().replace(A," "),captures:j});for(f in n)(j=L[f].exec(e))&&(!m[f]||(j=m[f](j,b,c)))&&(e=e.slice(j.shift().length),k=d.push({part:f,captures:j}));if(!k)break}}return k||Z.error(a),g}function bh(a,b,e){var f=b.dir,g=m++;return a||(a=function(a){return a===e}),b.first?function(b,c){while(b=b[f])if(b.nodeType===1)return a(b,c)&&b}:function(b,e){var h,i=g+"."+d,j=i+"."+c;while(b=b[f])if(b.nodeType===1){if((h=b[q])===j)return b.sizset;if(typeof h=="string"&&h.indexOf(i)===0){if(b.sizset)return b}else{b[q]=j;if(a(b,e))return b.sizset=!0,b;b.sizset=!1}}}}function bi(a,b){return a?function(c,d){var e=b(c,d);return e&&a(e===!0?c:e,d)}:b}function bj(a,b,c){var d,e,f=0;for(;d=a[f];f++)$.relative[d.part]?e=bh(e,$.relative[d.part],b):(d.captures.push(b,c),e=bi(e,$.filter[d.part].apply(null,d.captures)));return e}function bk(a){return function(b,c){var d,e=0;for(;d=a[e];e++)if(d(b,c))return!0;return!1}}var c,d,e,f,g,h=a.document,i=h.documentElement,j="undefined",k=!1,l=!0,m=0,n=[].slice,o=[].push,q=("sizcache"+Math.random()).replace(".",""),r="[\\x20\\t\\r\\n\\f]",s="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",t=s.replace("w","w#"),u="([*^$|!~]?=)",v="\\["+r+"*("+s+")"+r+"*(?:"+u+r+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+t+")|)|)"+r+"*\\]",w=":("+s+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|((?:[^,]|\\\\,|(?:,(?=[^\\[]*\\]))|(?:,(?=[^\\(]*\\))))*))\\)|)",x=":(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\)|)(?=[^-]|$)",y=r+"*([\\x20\\t\\r\\n\\f>+~])"+r+"*",z="(?=[^\\x20\\t\\r\\n\\f])(?:\\\\.|"+v+"|"+w.replace(2,7)+"|[^\\\\(),])+",A=new RegExp("^"+r+"+|((?:^|[^\\\\])(?:\\\\.)*)"+r+"+$","g"),B=new RegExp("^"+y),C=new RegExp(z+"?(?="+r+"*,|$)","g"),D=new RegExp("^(?:(?!,)(?:(?:^|,)"+r+"*"+z+")*?|"+r+"*(.*?))(\\)|$)"),E=new RegExp(z.slice(19,-6)+"\\x20\\t\\r\\n\\f>+~])+|"+y,"g"),F=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,G=/[\x20\t\r\n\f]*[+~]/,H=/:not\($/,I=/h\d/i,J=/input|select|textarea|button/i,K=/\\(?!\\)/g,L={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),NAME:new RegExp("^\\[name=['\"]?("+s+")['\"]?\\]"),TAG:new RegExp("^("+s.replace("[-","[-\\*")+")"),ATTR:new RegExp("^"+v),PSEUDO:new RegExp("^"+w),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+r+"*(even|odd|(([+-]|)(\\d*)n|)"+r+"*(?:([+-]|)"+r+"*(\\d+)|))"+r+"*\\)|)","i"),POS:new RegExp(x,"ig"),needsContext:new RegExp("^"+r+"*[>+~]|"+x,"i")},M={},N=[],O={},P=[],Q=function(a){return a.sizzleFilter=!0,a},R=function(a){return function(b){return b.nodeName.toLowerCase()==="input"&&b.type===a}},S=function(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}},T=function(a){var b=!1,c=h.createElement("div");try{b=a(c)}catch(d){}return c=null,b},U=T(function(a){a.innerHTML="<select></select>";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),V=T(function(a){a.id=q+0,a.innerHTML="<a name='"+q+"'></a><div name='"+q+"'></div>",i.insertBefore(a,i.firstChild);var b=h.getElementsByName&&h.getElementsByName(q).length===2+h.getElementsByName(q+0).length;return g=!h.getElementById(q),i.removeChild(a),b}),W=T(function(a){return a.appendChild(h.createComment("")),a.getElementsByTagName("*").length===0}),X=T(function(a){return a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!==j&&a.firstChild.getAttribute("href")==="#"}),Y=T(function(a){return a.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!a.getElementsByClassName||a.getElementsByClassName("e").length===0?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length!==1)}),Z=function(a,b,c,d){c=c||[],b=b||h;var e,f,g,i,j=b.nodeType;if(j!==1&&j!==9)return[];if(!a||typeof a!="string")return c;g=ba(b);if(!g&&!d)if(e=F.exec(a))if(i=e[1]){if(j===9){f=b.getElementById(i);if(!f||!f.parentNode)return c;if(f.id===i)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(i))&&bb(b,f)&&f.id===i)return c.push(f),c}else{if(e[2])return o.apply(c,n.call(b.getElementsByTagName(a),0)),c;if((i=e[3])&&Y&&b.getElementsByClassName)return o.apply(c,n.call(b.getElementsByClassName(i),0)),c}return bm(a,b,c,d,g)},$=Z.selectors={cacheLength:50,match:L,order:["ID","TAG"],attrHandle:{},createPseudo:Q,find:{ID:g?function(a,b,c){if(typeof b.getElementById!==j&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==j&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==j&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:W?function(a,b){if(typeof b.getElementsByTagName!==j)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(K,""),a[3]=(a[4]||a[5]||"").replace(K,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||Z.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&Z.error(a[0]),a},PSEUDO:function(a){var b,c=a[4];return L.CHILD.test(a[0])?null:(c&&(b=D.exec(c))&&b.pop()&&(a[0]=a[0].slice(0,b[0].length-c.length-1),c=b[0].slice(0,-1)),a.splice(2,3,c||a[3]),a)}},filter:{ID:g?function(a){return a=a.replace(K,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(K,""),function(b){var c=typeof b.getAttributeNode!==j&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(K,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=M[a];return b||(b=M[a]=new RegExp("(^|"+r+")"+a+"("+r+"|$)"),N.push(a),N.length>$.cacheLength&&delete M[N.shift()]),function(a){return b.test(a.className||typeof a.getAttribute!==j&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=Z.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return Z.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=m++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[q]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[q]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e=$.pseudos[a]||$.pseudos[a.toLowerCase()];return e||Z.error("unsupported pseudo: "+a),e.sizzleFilter?e(b,c,d):e}},pseudos:{not:Q(function(a,b,c){var d=bl(a.replace(A,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!$.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:Q(function(a){return function(b){return(b.textContent||b.innerText||bc(b)).indexOf(a)>-1}}),has:Q(function(a){return function(b){return Z(a,b).length>0}}),header:function(a){return I.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:R("radio"),checkbox:R("checkbox"),file:R("file"),password:R("password"),image:R("image"),submit:S("submit"),reset:S("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return J.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e<f;e=e+2)d.push(a[e]);return d},odd:function(a,b,c){var d=[],e=c?0:1,f=a.length;for(;e<f;e=e+2)d.push(a[e]);return d},lt:function(a,b,c){return c?a.slice(+b):a.slice(0,+b)},gt:function(a,b,c){return c?a.slice(0,+b+1):a.slice(+b+1)},eq:function(a,b,c){var d=a.splice(+b,1);return c?a:d}}};$.setFilters.nth=$.setFilters.eq,$.filters=$.pseudos,X||($.attrHandle={href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}}),V&&($.order.push("NAME"),$.find.NAME=function(a,b){if(typeof b.getElementsByName!==j)return b.getElementsByName(a)}),Y&&($.order.splice(1,0,"CLASS"),$.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!==j&&!c)return b.getElementsByClassName(a)});try{n.call(i.childNodes,0)[0].nodeType}catch(_){n=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}var ba=Z.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},bb=Z.contains=i.compareDocumentPosition?function(a,b){return!!(a.compareDocumentPosition(b)&16)}:i.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc=Z.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=bc(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=bc(b);return c};Z.attr=function(a,b){var c,d=ba(a);return d||(b=b.toLowerCase()),$.attrHandle[b]?$.attrHandle[b](a):U||d?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},Z.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},[0,0].sort(function(){return l=0}),i.compareDocumentPosition?e=function(a,b){return a===b?(k=!0,0):(!a.compareDocumentPosition||!b.compareDocumentPosition?a.compareDocumentPosition:a.compareDocumentPosition(b)&4)?-1:1}:(e=function(a,b){if(a===b)return k=!0,0;if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],g=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return f(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)g.unshift(j),j=j.parentNode;c=e.length,d=g.length;for(var l=0;l<c&&l<d;l++)if(e[l]!==g[l])return f(e[l],g[l]);return l===c?f(a,g[l],-1):f(e[l],b,1)},f=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),Z.uniqueSort=function(a){var b,c=1;if(e){k=l,a.sort(e);if(k)for(;b=a[c];c++)b===a[c-1]&&a.splice(c--,1)}return a};var bl=Z.compile=function(a,b,c){var d,e,f,g=O[a];if(g&&g.context===b)return g;e=bg(a,b,c);for(f=0;d=e[f];f++)e[f]=bj(d,b,c);return g=O[a]=bk(e),g.context=b,g.runs=g.dirruns=0,P.push(a),P.length>$.cacheLength&&delete O[P.shift()],g};Z.matches=function(a,b){return Z(a,null,null,b)},Z.matchesSelector=function(a,b){return Z(b,null,null,[a]).length>0};var bm=function(a,b,e,f,g){a=a.replace(A,"$1");var h,i,j,k,l,m,p,q,r,s=a.match(C),t=a.match(E),u=b.nodeType;if(L.POS.test(a))return bf(a,b,e,f,s);if(f)h=n.call(f,0);else if(s&&s.length===1){if(t.length>1&&u===9&&!g&&(s=L.ID.exec(t[0]))){b=$.find.ID(s[1],b,g)[0];if(!b)return e;a=a.slice(t.shift().length)}q=(s=G.exec(t[0]))&&!s.index&&b.parentNode||b,r=t.pop(),m=r.split(":not")[0];for(j=0,k=$.order.length;j<k;j++){p=$.order[j];if(s=L[p].exec(m)){h=$.find[p]((s[1]||"").replace(K,""),q,g);if(h==null)continue;m===r&&(a=a.slice(0,a.length-r.length)+m.replace(L[p],""),a||o.apply(e,n.call(h,0)));break}}}if(a){i=bl(a,b,g),d=i.dirruns++,h==null&&(h=$.find.TAG("*",G.test(a)&&b.parentNode||b));for(j=0;l=h[j];j++)c=i.runs++,i(l,b)&&e.push(l)}return e};h.querySelectorAll&&function(){var a,b=bm,c=/'|\\/g,d=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,e=[],f=[":active"],g=i.matchesSelector||i.mozMatchesSelector||i.webkitMatchesSelector||i.oMatchesSelector||i.msMatchesSelector;T(function(a){a.innerHTML="<select><option selected></option></select>",a.querySelectorAll("[selected]").length||e.push("\\["+r+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="<p test=''></p>",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+r+"*(?:\"\"|'')"),a.innerHTML="<input type='hidden'>",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bm=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return o.apply(f,n.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j=d.getAttribute("id"),k=j||q,l=G.test(a)&&d.parentNode||d;j?k=k.replace(c,"\\$&"):d.setAttribute("id",k);try{return o.apply(f,n.call(l.querySelectorAll(a.replace(C,"[id='"+k+"'] $&")),0)),f}catch(i){}finally{j||d.removeAttribute("id")}}return b(a,d,f,g,h)},g&&(T(function(b){a=g.call(b,"div");try{g.call(b,"[test!='']:sizzle"),f.push($.match.PSEUDO)}catch(c){}}),f=new RegExp(f.join("|")),Z.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!ba(b)&&!f.test(c)&&(!e||!e.test(c)))try{var h=g.call(b,c);if(h||a||b.document&&b.document.nodeType!==11)return h}catch(i){}return Z(c,null,null,[b]).length>0})}(),Z.attr=p.attr,p.find=Z,p.expr=Z.selectors,p.expr[":"]=p.expr.pseudos,p.unique=Z.uniqueSort,p.text=Z.getText,p.isXMLDoc=Z.isXML,p.contains=Z.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b<c;b++)if(p.contains(h[b],this))return!0});g=this.pushStack("","find",a);for(b=0,c=this.length;b<c;b++){d=g.length,p.find(a,this[b],g);if(b>0)for(e=d;e<g.length;e++)for(f=0;f<d;f++)if(g[f]===g[e]){g.splice(e--,1);break}}return g},has:function(a){var b,c=p(a,this),d=c.length;return this.filter(function(){for(b=0;b<d;b++)if(p.contains(this,c[b]))return!0})},not:function(a){return this.pushStack(bj(this,a,!1),"not",a)},filter:function(a){return this.pushStack(bj(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?bf.test(a)?p(a,this.context).index(this[0])>=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d<e;d++){c=this[d];while(c&&c.ownerDocument&&c!==b&&c.nodeType!==11){if(g?g.index(c)>-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/<tbody/i,br=/<|&#?\w+;/,bs=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,bu=new RegExp("<(?:"+bl+")[\\s/>]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,bz={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X<div>","</div>"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(f){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){return bh(this[0])?this.length?this.pushStack(p(p.isFunction(a)?a():a),"replaceWith",a):this:p.isFunction(a)?this.each(function(b){var c=p(this),d=c.html();c.replaceWith(a.call(this,b,d))}):(typeof a!="string"&&(a=p(a).detach()),this.each(function(){var b=this.nextSibling,c=this.parentNode;p(this).remove(),b?p(b).before(a):p(c).append(a)}))},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){a=[].concat.apply([],a);var e,f,g,h,i=0,j=a[0],k=[],l=this.length;if(!p.support.checkClone&&l>1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i<l;i++)d.call(c&&p.nodeName(this[i],"table")?bC(this[i],"tbody"):this[i],i===h?g:p.clone(g,!0,!0))}g=f=null,k.length&&p.each(k,function(a,b){b.src?p.ajax?p.ajax({url:b.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):p.error("no ajax"):p.globalEval((b.text||b.textContent||b.innerHTML||"").replace(by,"")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),p.buildFragment=function(a,c,d){var f,g,h,i=a[0];return c=c||e,c=(c[0]||c).ownerDocument||c[0]||c,typeof c.createDocumentFragment=="undefined"&&(c=e),a.length===1&&typeof i=="string"&&i.length<512&&c===e&&i.charAt(0)==="<"&&!bt.test(i)&&(p.support.checkClone||!bw.test(i))&&(p.support.html5Clone||!bu.test(i))&&(g=!0,f=p.fragments[i],h=f!==b),f||(f=c.createDocumentFragment(),p.clean(a,c,f,d),g&&(p.fragments[i]=h&&f)),{fragment:f,cacheable:g}},p.fragments={},p.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){p.fn[a]=function(c){var d,e=0,f=[],g=p(c),h=g.length,i=this.length===1&&this[0].parentNode;if((i==null||i&&i.nodeType===11&&i.childNodes.length===1)&&h===1)return g[b](this[0]),this;for(;e<h;e++)d=(e>0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=0,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(g=b===e&&bA;(h=a[s])!=null;s++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{g=g||bk(b),l=l||g.appendChild(b.createElement("div")),h=h.replace(bo,"<$1></$2>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]==="<table>"&&!m?l.childNodes:[];for(f=n.length-1;f>=0;--f)p.nodeName(n[f],"tbody")&&!n[f].childNodes.length&&n[f].parentNode.removeChild(n[f])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l=g.lastChild}h.nodeType?t.push(h):t=p.merge(t,h)}l&&(g.removeChild(l),h=l=g=null);if(!p.support.appendChecked)for(s=0;(h=t[s])!=null;s++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(s=0;(h=t[s])!=null;s++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[s+1,0].concat(r)),s+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^margin/,bO=new RegExp("^("+q+")(.*)$","i"),bP=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bQ=new RegExp("^([-+])=("+q+")","i"),bR={},bS={position:"absolute",visibility:"hidden",display:"block"},bT={letterSpacing:0,fontWeight:400,lineHeight:1},bU=["Top","Right","Bottom","Left"],bV=["Webkit","O","Moz","ms"],bW=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return bZ(this,!0)},hide:function(){return bZ(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bW.apply(this,arguments):this.each(function(){(c?a:bY(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bX(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bQ.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bX(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bT&&(f=bT[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(a,b){var c,d,e,f,g=getComputedStyle(a,null),h=a.style;return g&&(c=g[b],c===""&&!p.contains(a.ownerDocument.documentElement,a)&&(c=p.style(a,b)),bP.test(c)&&bN.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=c,c=g.width,h.width=d,h.minWidth=e,h.maxWidth=f)),c}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bP.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0||bH(a,"display")!=="none"?ca(a,b,d):p.swap(a,bS,function(){return ca(a,b,d)})},set:function(a,c,d){return b$(a,c,d?b_(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bP.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bU[d]+b]=e[d]||e[d-2]||e[0];return f}},bN.test(a)||(p.cssHooks[a+b].set=b$)});var cc=/%20/g,cd=/\[\]$/,ce=/\r?\n/g,cf=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,cg=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||cg.test(this.nodeName)||cf.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(ce,"\r\n")}}):{name:b.name,value:c.replace(ce,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ch(d,a[d],c,f);return e.join("&").replace(cc,"+")};var ci,cj,ck=/#.*$/,cl=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cm=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,cn=/^(?:GET|HEAD)$/,co=/^\/\//,cp=/\?/,cq=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,cr=/([?&])_=[^&]*/,cs=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,ct=p.fn.load,cu={},cv={},cw=["*/"]+["*"];try{ci=f.href}catch(cx){ci=e.createElement("a"),ci.href="",ci=ci.href}cj=cs.exec(ci.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&ct)return ct.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("<div>").append(a.replace(cq,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cA(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cA(a,b),a},ajaxSettings:{url:ci,isLocal:cm.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cw},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cy(cu),ajaxTransport:cy(cv),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cB(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cC(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cl.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(ck,"").replace(co,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=cs.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==cj[1]&&i[2]==cj[2]&&(i[3]||(i[1]==="http:"?80:443))==(cj[3]||(cj[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cz(cu,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!cn.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cp.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cr,"$1_="+z);l.url=A+(A===l.url?(cp.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cw+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cz(cv,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cD=[],cE=/\?/,cF=/(=)\?(?=&|$)|\?\?/,cG=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cD.pop()||p.expando+"_"+cG++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cF.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cF.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cF,"$1"+f):m?c.data=i.replace(cF,"$1"+f):k&&(c.url+=(cE.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cD.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cH,cI=a.ActiveXObject?function(){for(var a in cH)cH[a](0,1)}:!1,cJ=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cK()||cL()}:cK,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cI&&delete cH[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cJ,cI&&(cH||(cH={},p(a).unload(cI)),cH[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cM,cN,cO=/^(?:toggle|show|hide)$/,cP=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cQ=/queueHooks$/,cR=[cX],cS={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cP.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cV,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d<e;d++)c=a[d],cS[c]=cS[c]||[],cS[c].unshift(b)},prefilter:function(a,b){b?cR.unshift(a):cR.push(a)}}),p.Tween=cY,cY.prototype={constructor:cY,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(p.cssNumber[c]?"":"px")},cur:function(){var a=cY.propHooks[this.prop];return a&&a.get?a.get(this):cY.propHooks._default.get(this)},run:function(a){var b,c=cY.propHooks[this.prop];return this.pos=b=p.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration),this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):cY.propHooks._default.set(this),this}},cY.prototype.init.prototype=cY.prototype,cY.propHooks={_default:{get:function(a){var b;return a.elem[a.prop]==null||!!a.elem.style&&a.elem.style[a.prop]!=null?(b=p.css(a.elem,a.prop,!1,""),!b||b==="auto"?0:b):a.elem[a.prop]},set:function(a){p.fx.step[a.prop]?p.fx.step[a.prop](a):a.elem.style&&(a.elem.style[p.cssProps[a.prop]]!=null||p.cssHooks[a.prop])?p.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},cY.propHooks.scrollTop=cY.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},p.each(["toggle","show","hide"],function(a,b){var c=p.fn[b];p.fn[b]=function(d,e,f){return d==null||typeof d=="boolean"||!a&&p.isFunction(d)&&p.isFunction(e)?c.apply(this,arguments):this.animate(cZ(b,!0),d,e,f)}}),p.fn.extend({fadeTo:function(a,b,c,d){return this.filter(bY).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=p.isEmptyObject(a),f=p.speed(b,c,d),g=function(){var b=cV(this,p.extend({},a),f);e&&b.stop(!0)};return e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,c,d){var e=function(a){var b=a.stop;delete a.stop,b(d)};return typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,c=a!=null&&a+"queueHooks",f=p.timers,g=p._data(this);if(c)g[c]&&g[c].stop&&e(g[c]);else for(c in g)g[c]&&g[c].stop&&cQ.test(c)&&e(g[c]);for(c=f.length;c--;)f[c].elem===this&&(a==null||f[c].queue===a)&&(f[c].anim.stop(d),b=!1,f.splice(c,1));(b||!d)&&p.dequeue(this,a)})}}),p.each({slideDown:cZ("show"),slideUp:cZ("hide"),slideToggle:cZ("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){p.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),p.speed=function(a,b,c){var d=a&&typeof a=="object"?p.extend({},a):{complete:c||!c&&b||p.isFunction(a)&&a,duration:a,easing:c&&b||b&&!p.isFunction(b)&&b};d.duration=p.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in p.fx.speeds?p.fx.speeds[d.duration]:p.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";return d.old=d.complete,d.complete=function(){p.isFunction(d.old)&&d.old.call(this),d.queue&&p.dequeue(this,d.queue)},d},p.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},p.timers=[],p.fx=cY.prototype.init,p.fx.tick=function(){var a,b=p.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||p.fx.stop()},p.fx.timer=function(a){a()&&p.timers.push(a)&&!cN&&(cN=setInterval(p.fx.tick,p.fx.interval))},p.fx.interval=13,p.fx.stop=function(){clearInterval(cN),cN=null},p.fx.speeds={slow:600,fast:200,_default:400},p.fx.step={},p.expr&&p.expr.filters&&(p.expr.filters.animated=function(a){return p.grep(p.timers,function(b){return a===b.elem}).length});var c$=/^(?:body|html)$/i;p.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){p.offset.setOffset(this,a,b)});var c,d,e,f,g,h,i,j,k,l,m=this[0],n=m&&m.ownerDocument;if(!n)return;return(e=n.body)===m?p.offset.bodyOffset(m):(d=n.documentElement,p.contains(d,m)?(c=m.getBoundingClientRect(),f=c_(n),g=d.clientTop||e.clientTop||0,h=d.clientLeft||e.clientLeft||0,i=f.pageYOffset||d.scrollTop,j=f.pageXOffset||d.scrollLeft,k=c.top+i-g,l=c.left+j-h,{top:k,left:l}):{top:0,left:0})},p.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;return p.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(p.css(a,"marginTop"))||0,c+=parseFloat(p.css(a,"marginLeft"))||0),{top:b,left:c}},setOffset:function(a,b,c){var d=p.css(a,"position");d==="static"&&(a.style.position="relative");var e=p(a),f=e.offset(),g=p.css(a,"top"),h=p.css(a,"left"),i=(d==="absolute"||d==="fixed")&&p.inArray("auto",[g,h])>-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c$.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c$.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=c_(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window);
\ No newline at end of file
@@ -1,25 +1,25 @@
-/*\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-(function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M<N?O[P]||(R[M+1]&&isNaN(R[M+1])?{}:[]):J}}else{if($.isArray(H[P])){H[P].push(J)}else{if(H[P]!==i){H[P]=[H[P],J]}else{H[P]=J}}}}else{if(P){H[P]=F?i:""}}});return H};function z(H,F,G){if(F===i||typeof F==="boolean"){G=F;F=a[H?D:A]()}else{F=E(F)?F.replace(H?w:x,""):F}return l(F,G)}l[A]=B(z,0);l[D]=v=B(z,1);$[y]||($[y]=function(F){return $.extend(C,F)})({a:k,base:k,iframe:t,img:t,input:t,form:"action",link:k,script:t});j=$[y];function s(I,G,H,F){if(!E(H)&&typeof H!=="object"){F=H;H=G;G=i}return this.each(function(){var L=$(this),J=G||j()[(this.nodeName||"").toLowerCase()]||"",K=J&&L.attr(J)||"";L.attr(J,a[I](K,H,F))})}$.fn[A]=B(s,A);$.fn[D]=B(s,D);b.pushState=q=function(I,F){if(E(I)&&/^#/.test(I)&&F===i){F=2}var H=I!==i,G=c(p[g][k],H?I:{},H?F:2);p[g][k]=G+(/#/.test(G)?"":"#")};b.getState=u=function(F,G){return F===i||typeof F==="boolean"?v(F):v(G)[F]};b.removeState=function(F){var G={};if(F!==i){G=u();$.each($.isArray(F)?F:arguments,function(I,H){delete G[H]})}q(G,2)};e[d]=$.extend(e[d],{add:function(F){var H;function G(J){var I=J[D]=c();J.getState=function(K,L){return K===i||typeof K==="boolean"?l(I,K):l(I,L)[K]};H.apply(this,arguments)}if($.isFunction(F)){H=F;return G}else{H=F.handler;F.handler=G}}})})(jQuery,this);\r
-/*\r
- * jQuery hashchange event - v1.2 - 2/11/2010\r
- * http://benalman.com/projects/jquery-hashchange-plugin/\r
- * \r
- * Copyright (c) 2010 "Cowboy" Ben Alman\r
- * Dual licensed under the MIT and GPL licenses.\r
- * http://benalman.com/about/license/\r
- */\r
+/*
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+(function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M<N?O[P]||(R[M+1]&&isNaN(R[M+1])?{}:[]):J}}else{if($.isArray(H[P])){H[P].push(J)}else{if(H[P]!==i){H[P]=[H[P],J]}else{H[P]=J}}}}else{if(P){H[P]=F?i:""}}});return H};function z(H,F,G){if(F===i||typeof F==="boolean"){G=F;F=a[H?D:A]()}else{F=E(F)?F.replace(H?w:x,""):F}return l(F,G)}l[A]=B(z,0);l[D]=v=B(z,1);$[y]||($[y]=function(F){return $.extend(C,F)})({a:k,base:k,iframe:t,img:t,input:t,form:"action",link:k,script:t});j=$[y];function s(I,G,H,F){if(!E(H)&&typeof H!=="object"){F=H;H=G;G=i}return this.each(function(){var L=$(this),J=G||j()[(this.nodeName||"").toLowerCase()]||"",K=J&&L.attr(J)||"";L.attr(J,a[I](K,H,F))})}$.fn[A]=B(s,A);$.fn[D]=B(s,D);b.pushState=q=function(I,F){if(E(I)&&/^#/.test(I)&&F===i){F=2}var H=I!==i,G=c(p[g][k],H?I:{},H?F:2);p[g][k]=G+(/#/.test(G)?"":"#")};b.getState=u=function(F,G){return F===i||typeof F==="boolean"?v(F):v(G)[F]};b.removeState=function(F){var G={};if(F!==i){G=u();$.each($.isArray(F)?F:arguments,function(I,H){delete G[H]})}q(G,2)};e[d]=$.extend(e[d],{add:function(F){var H;function G(J){var I=J[D]=c();J.getState=function(K,L){return K===i||typeof K==="boolean"?l(I,K):l(I,L)[K]};H.apply(this,arguments)}if($.isFunction(F)){H=F;return G}else{H=F.handler;F.handler=G}}})})(jQuery,this);
+/*
+ * jQuery hashchange event - v1.2 - 2/11/2010
+ * http://benalman.com/projects/jquery-hashchange-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
 (function($,i,b){var j,k=$.event.special,c="location",d="hashchange",l="href",f=$.browser,g=document.documentMode,h=f.msie&&(g===b||g<8),e="on"+d in i&&!h;function a(m){m=m||i[c][l];return m.replace(/^[^#]*#?(.*)$/,"$1")}$[d+"Delay"]=100;k[d]=$.extend(k[d],{setup:function(){if(e){return false}$(j.start)},teardown:function(){if(e){return false}$(j.stop)}});j=(function(){var m={},r,n,o,q;function p(){o=q=function(s){return s};if(h){n=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this);
\ No newline at end of file
@@ -1,16 +1,16 @@
-/*\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-(function(b){b.fn.slideto=function(a){a=b.extend({slide_duration:"slow",highlight_duration:3E3,highlight:true,highlight_color:"#FFFF99"},a);return this.each(function(){obj=b(this);b("body").animate({scrollTop:obj.offset().top},a.slide_duration,function(){a.highlight&&b.ui.version&&obj.effect("highlight",{color:a.highlight_color},a.highlight_duration)})})}})(jQuery);\r
+/*
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+(function(b){b.fn.slideto=function(a){a=b.extend({slide_duration:"slow",highlight_duration:3E3,highlight:true,highlight_color:"#FFFF99"},a);return this.each(function(){obj=b(this);b("body").animate({scrollTop:obj.offset().top},a.slide_duration,function(){a.highlight&&b.ui.version&&obj.effect("highlight",{color:a.highlight_color},a.highlight_duration)})})}})(jQuery);
@@ -1,23 +1,23 @@
-/*\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-/*\r
-jQuery Wiggle\r
-Author: WonderGroup, Jordan Thomas\r
-URL: http://labs.wondergroup.com/demos/mini-ui/index.html\r
-License: MIT (http://en.wikipedia.org/wiki/MIT_License)\r
-*/\r
-jQuery.fn.wiggle=function(o){var d={speed:50,wiggles:3,travel:5,callback:null};var o=jQuery.extend(d,o);return this.each(function(){var cache=this;var wrap=jQuery(this).wrap('<div class="wiggle-wrap"></div>').css("position","relative");var calls=0;for(i=1;i<=o.wiggles;i++){jQuery(this).animate({left:"-="+o.travel},o.speed).animate({left:"+="+o.travel*2},o.speed*2).animate({left:"-="+o.travel},o.speed,function(){calls++;if(jQuery(cache).parent().hasClass('wiggle-wrap')){jQuery(cache).parent().replaceWith(cache);}\r
+/*
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*
+jQuery Wiggle
+Author: WonderGroup, Jordan Thomas
+URL: http://labs.wondergroup.com/demos/mini-ui/index.html
+License: MIT (http://en.wikipedia.org/wiki/MIT_License)
+*/
+jQuery.fn.wiggle=function(o){var d={speed:50,wiggles:3,travel:5,callback:null};var o=jQuery.extend(d,o);return this.each(function(){var cache=this;var wrap=jQuery(this).wrap('<div class="wiggle-wrap"></div>').css("position","relative");var calls=0;for(i=1;i<=o.wiggles;i++){jQuery(this).animate({left:"-="+o.travel},o.speed).animate({left:"+="+o.travel*2},o.speed*2).animate({left:"-="+o.travel},o.speed,function(){calls++;if(jQuery(cache).parent().hasClass('wiggle-wrap')){jQuery(cache).parent().replaceWith(cache);}
 if(calls==o.wiggles&&jQuery.isFunction(o.callback)){o.callback();}});}});};
\ No newline at end of file
-/*\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-;(function() {\r
-\r
-/**\r
- * Block-Level Grammar\r
- */\r
-\r
-var block = {\r
-  newline: /^\n+/,\r
-  code: /^( {4}[^\n]+\n*)+/,\r
-  fences: noop,\r
-  hr: /^( *[-*_]){3,} *(?:\n+|$)/,\r
-  heading: /^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,\r
-  nptable: noop,\r
-  lheading: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,\r
-  blockquote: /^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,\r
-  list: /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,\r
-  html: /^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,\r
-  def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,\r
-  table: noop,\r
-  paragraph: /^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,\r
-  text: /^[^\n]+/\r
-};\r
-\r
-block.bullet = /(?:[*+-]|\d+\.)/;\r
-block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;\r
-block.item = replace(block.item, 'gm')\r
-  (/bull/g, block.bullet)\r
-  ();\r
-\r
-block.list = replace(block.list)\r
-  (/bull/g, block.bullet)\r
-  ('hr', '\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))')\r
-  ('def', '\\n+(?=' + block.def.source + ')')\r
-  ();\r
-\r
-block.blockquote = replace(block.blockquote)\r
-  ('def', block.def)\r
-  ();\r
-\r
-block._tag = '(?!(?:'\r
-  + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\r
-  + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\r
-  + '|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b';\r
-\r
-block.html = replace(block.html)\r
-  ('comment', /<!--[\s\S]*?-->/)\r
-  ('closed', /<(tag)[\s\S]+?<\/\1>/)\r
-  ('closing', /<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)\r
-  (/tag/g, block._tag)\r
-  ();\r
-\r
-block.paragraph = replace(block.paragraph)\r
-  ('hr', block.hr)\r
-  ('heading', block.heading)\r
-  ('lheading', block.lheading)\r
-  ('blockquote', block.blockquote)\r
-  ('tag', '<' + block._tag)\r
-  ('def', block.def)\r
-  ();\r
-\r
-/**\r
- * Normal Block Grammar\r
- */\r
-\r
-block.normal = merge({}, block);\r
-\r
-/**\r
- * GFM Block Grammar\r
- */\r
-\r
-block.gfm = merge({}, block.normal, {\r
-  fences: /^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/,\r
-  paragraph: /^/\r
-});\r
-\r
-block.gfm.paragraph = replace(block.paragraph)\r
-  ('(?!', '(?!'\r
-    + block.gfm.fences.source.replace('\\1', '\\2') + '|'\r
-    + block.list.source.replace('\\1', '\\3') + '|')\r
-  ();\r
-\r
-/**\r
- * GFM + Tables Block Grammar\r
- */\r
-\r
-block.tables = merge({}, block.gfm, {\r
-  nptable: /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,\r
-  table: /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/\r
-});\r
-\r
-/**\r
- * Block Lexer\r
- */\r
-\r
-function Lexer(options) {\r
-  this.tokens = [];\r
-  this.tokens.links = {};\r
-  this.options = options || marked.defaults;\r
-  this.rules = block.normal;\r
-\r
-  if (this.options.gfm) {\r
-    if (this.options.tables) {\r
-      this.rules = block.tables;\r
-    } else {\r
-      this.rules = block.gfm;\r
-    }\r
-  }\r
-}\r
-\r
-/**\r
- * Expose Block Rules\r
- */\r
-\r
-Lexer.rules = block;\r
-\r
-/**\r
- * Static Lex Method\r
- */\r
-\r
-Lexer.lex = function(src, options) {\r
-  var lexer = new Lexer(options);\r
-  return lexer.lex(src);\r
-};\r
-\r
-/**\r
- * Preprocessing\r
- */\r
-\r
-Lexer.prototype.lex = function(src) {\r
-  src = src\r
-    .replace(/\r\n|\r/g, '\n')\r
-    .replace(/\t/g, '    ')\r
-    .replace(/\u00a0/g, ' ')\r
-    .replace(/\u2424/g, '\n');\r
-\r
-  return this.token(src, true);\r
-};\r
-\r
-/**\r
- * Lexing\r
- */\r
-\r
-Lexer.prototype.token = function(src, top, bq) {\r
-  var src = src.replace(/^ +$/gm, '')\r
-    , next\r
-    , loose\r
-    , cap\r
-    , bull\r
-    , b\r
-    , item\r
-    , space\r
-    , i\r
-    , l;\r
-\r
-  while (src) {\r
-    // newline\r
-    if (cap = this.rules.newline.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      if (cap[0].length > 1) {\r
-        this.tokens.push({\r
-          type: 'space'\r
-        });\r
-      }\r
-    }\r
-\r
-    // code\r
-    if (cap = this.rules.code.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      cap = cap[0].replace(/^ {4}/gm, '');\r
-      this.tokens.push({\r
-        type: 'code',\r
-        text: !this.options.pedantic\r
-          ? cap.replace(/\n+$/, '')\r
-          : cap\r
-      });\r
-      continue;\r
-    }\r
-\r
-    // fences (gfm)\r
-    if (cap = this.rules.fences.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      this.tokens.push({\r
-        type: 'code',\r
-        lang: cap[2],\r
-        text: cap[3]\r
-      });\r
-      continue;\r
-    }\r
-\r
-    // heading\r
-    if (cap = this.rules.heading.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      this.tokens.push({\r
-        type: 'heading',\r
-        depth: cap[1].length,\r
-        text: cap[2]\r
-      });\r
-      continue;\r
-    }\r
-\r
-    // table no leading pipe (gfm)\r
-    if (top && (cap = this.rules.nptable.exec(src))) {\r
-      src = src.substring(cap[0].length);\r
-\r
-      item = {\r
-        type: 'table',\r
-        header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),\r
-        align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),\r
-        cells: cap[3].replace(/\n$/, '').split('\n')\r
-      };\r
-\r
-      for (i = 0; i < item.align.length; i++) {\r
-        if (/^ *-+: *$/.test(item.align[i])) {\r
-          item.align[i] = 'right';\r
-        } else if (/^ *:-+: *$/.test(item.align[i])) {\r
-          item.align[i] = 'center';\r
-        } else if (/^ *:-+ *$/.test(item.align[i])) {\r
-          item.align[i] = 'left';\r
-        } else {\r
-          item.align[i] = null;\r
-        }\r
-      }\r
-\r
-      for (i = 0; i < item.cells.length; i++) {\r
-        item.cells[i] = item.cells[i].split(/ *\| */);\r
-      }\r
-\r
-      this.tokens.push(item);\r
-\r
-      continue;\r
-    }\r
-\r
-    // lheading\r
-    if (cap = this.rules.lheading.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      this.tokens.push({\r
-        type: 'heading',\r
-        depth: cap[2] === '=' ? 1 : 2,\r
-        text: cap[1]\r
-      });\r
-      continue;\r
-    }\r
-\r
-    // hr\r
-    if (cap = this.rules.hr.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      this.tokens.push({\r
-        type: 'hr'\r
-      });\r
-      continue;\r
-    }\r
-\r
-    // blockquote\r
-    if (cap = this.rules.blockquote.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-\r
-      this.tokens.push({\r
-        type: 'blockquote_start'\r
-      });\r
-\r
-      cap = cap[0].replace(/^ *> ?/gm, '');\r
-\r
-      // Pass `top` to keep the current\r
-      // "toplevel" state. This is exactly\r
-      // how markdown.pl works.\r
-      this.token(cap, top, true);\r
-\r
-      this.tokens.push({\r
-        type: 'blockquote_end'\r
-      });\r
-\r
-      continue;\r
-    }\r
-\r
-    // list\r
-    if (cap = this.rules.list.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      bull = cap[2];\r
-\r
-      this.tokens.push({\r
-        type: 'list_start',\r
-        ordered: bull.length > 1\r
-      });\r
-\r
-      // Get each top-level item.\r
-      cap = cap[0].match(this.rules.item);\r
-\r
-      next = false;\r
-      l = cap.length;\r
-      i = 0;\r
-\r
-      for (; i < l; i++) {\r
-        item = cap[i];\r
-\r
-        // Remove the list item's bullet\r
-        // so it is seen as the next token.\r
-        space = item.length;\r
-        item = item.replace(/^ *([*+-]|\d+\.) +/, '');\r
-\r
-        // Outdent whatever the\r
-        // list item contains. Hacky.\r
-        if (~item.indexOf('\n ')) {\r
-          space -= item.length;\r
-          item = !this.options.pedantic\r
-            ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\r
-            : item.replace(/^ {1,4}/gm, '');\r
-        }\r
-\r
-        // Determine whether the next list item belongs here.\r
-        // Backpedal if it does not belong in this list.\r
-        if (this.options.smartLists && i !== l - 1) {\r
-          b = block.bullet.exec(cap[i + 1])[0];\r
-          if (bull !== b && !(bull.length > 1 && b.length > 1)) {\r
-            src = cap.slice(i + 1).join('\n') + src;\r
-            i = l - 1;\r
-          }\r
-        }\r
-\r
-        // Determine whether item is loose or not.\r
-        // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/\r
-        // for discount behavior.\r
-        loose = next || /\n\n(?!\s*$)/.test(item);\r
-        if (i !== l - 1) {\r
-          next = item.charAt(item.length - 1) === '\n';\r
-          if (!loose) loose = next;\r
-        }\r
-\r
-        this.tokens.push({\r
-          type: loose\r
-            ? 'loose_item_start'\r
-            : 'list_item_start'\r
-        });\r
-\r
-        // Recurse.\r
-        this.token(item, false, bq);\r
-\r
-        this.tokens.push({\r
-          type: 'list_item_end'\r
-        });\r
-      }\r
-\r
-      this.tokens.push({\r
-        type: 'list_end'\r
-      });\r
-\r
-      continue;\r
-    }\r
-\r
-    // html\r
-    if (cap = this.rules.html.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      this.tokens.push({\r
-        type: this.options.sanitize\r
-          ? 'paragraph'\r
-          : 'html',\r
-        pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\r
-        text: cap[0]\r
-      });\r
-      continue;\r
-    }\r
-\r
-    // def\r
-    if ((!bq && top) && (cap = this.rules.def.exec(src))) {\r
-      src = src.substring(cap[0].length);\r
-      this.tokens.links[cap[1].toLowerCase()] = {\r
-        href: cap[2],\r
-        title: cap[3]\r
-      };\r
-      continue;\r
-    }\r
-\r
-    // table (gfm)\r
-    if (top && (cap = this.rules.table.exec(src))) {\r
-      src = src.substring(cap[0].length);\r
-\r
-      item = {\r
-        type: 'table',\r
-        header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),\r
-        align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),\r
-        cells: cap[3].replace(/(?: *\| *)?\n$/, '').split('\n')\r
-      };\r
-\r
-      for (i = 0; i < item.align.length; i++) {\r
-        if (/^ *-+: *$/.test(item.align[i])) {\r
-          item.align[i] = 'right';\r
-        } else if (/^ *:-+: *$/.test(item.align[i])) {\r
-          item.align[i] = 'center';\r
-        } else if (/^ *:-+ *$/.test(item.align[i])) {\r
-          item.align[i] = 'left';\r
-        } else {\r
-          item.align[i] = null;\r
-        }\r
-      }\r
-\r
-      for (i = 0; i < item.cells.length; i++) {\r
-        item.cells[i] = item.cells[i]\r
-          .replace(/^ *\| *| *\| *$/g, '')\r
-          .split(/ *\| */);\r
-      }\r
-\r
-      this.tokens.push(item);\r
-\r
-      continue;\r
-    }\r
-\r
-    // top-level paragraph\r
-    if (top && (cap = this.rules.paragraph.exec(src))) {\r
-      src = src.substring(cap[0].length);\r
-      this.tokens.push({\r
-        type: 'paragraph',\r
-        text: cap[1].charAt(cap[1].length - 1) === '\n'\r
-          ? cap[1].slice(0, -1)\r
-          : cap[1]\r
-      });\r
-      continue;\r
-    }\r
-\r
-    // text\r
-    if (cap = this.rules.text.exec(src)) {\r
-      // Top-level should never reach here.\r
-      src = src.substring(cap[0].length);\r
-      this.tokens.push({\r
-        type: 'text',\r
-        text: cap[0]\r
-      });\r
-      continue;\r
-    }\r
-\r
-    if (src) {\r
-      throw new\r
-        Error('Infinite loop on byte: ' + src.charCodeAt(0));\r
-    }\r
-  }\r
-\r
-  return this.tokens;\r
-};\r
-\r
-/**\r
- * Inline-Level Grammar\r
- */\r
-\r
-var inline = {\r
-  escape: /^\\([\\`*{}\[\]()#+\-.!_>])/,\r
-  autolink: /^<([^ >]+(@|:\/)[^ >]+)>/,\r
-  url: noop,\r
-  tag: /^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,\r
-  link: /^!?\[(inside)\]\(href\)/,\r
-  reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/,\r
-  nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,\r
-  strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,\r
-  em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,\r
-  code: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,\r
-  br: /^ {2,}\n(?!\s*$)/,\r
-  del: noop,\r
-  text: /^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/\r
-};\r
-\r
-inline._inside = /(?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*/;\r
-inline._href = /\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/;\r
-\r
-inline.link = replace(inline.link)\r
-  ('inside', inline._inside)\r
-  ('href', inline._href)\r
-  ();\r
-\r
-inline.reflink = replace(inline.reflink)\r
-  ('inside', inline._inside)\r
-  ();\r
-\r
-/**\r
- * Normal Inline Grammar\r
- */\r
-\r
-inline.normal = merge({}, inline);\r
-\r
-/**\r
- * Pedantic Inline Grammar\r
- */\r
-\r
-inline.pedantic = merge({}, inline.normal, {\r
-  strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,\r
-  em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/\r
-});\r
-\r
-/**\r
- * GFM Inline Grammar\r
- */\r
-\r
-inline.gfm = merge({}, inline.normal, {\r
-  escape: replace(inline.escape)('])', '~|])')(),\r
-  url: /^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,\r
-  del: /^~~(?=\S)([\s\S]*?\S)~~/,\r
-  text: replace(inline.text)\r
-    (']|', '~]|')\r
-    ('|', '|https?://|')\r
-    ()\r
-});\r
-\r
-/**\r
- * GFM + Line Breaks Inline Grammar\r
- */\r
-\r
-inline.breaks = merge({}, inline.gfm, {\r
-  br: replace(inline.br)('{2,}', '*')(),\r
-  text: replace(inline.gfm.text)('{2,}', '*')()\r
-});\r
-\r
-/**\r
- * Inline Lexer & Compiler\r
- */\r
-\r
-function InlineLexer(links, options) {\r
-  this.options = options || marked.defaults;\r
-  this.links = links;\r
-  this.rules = inline.normal;\r
-  this.renderer = this.options.renderer || new Renderer;\r
-  this.renderer.options = this.options;\r
-\r
-  if (!this.links) {\r
-    throw new\r
-      Error('Tokens array requires a `links` property.');\r
-  }\r
-\r
-  if (this.options.gfm) {\r
-    if (this.options.breaks) {\r
-      this.rules = inline.breaks;\r
-    } else {\r
-      this.rules = inline.gfm;\r
-    }\r
-  } else if (this.options.pedantic) {\r
-    this.rules = inline.pedantic;\r
-  }\r
-}\r
-\r
-/**\r
- * Expose Inline Rules\r
- */\r
-\r
-InlineLexer.rules = inline;\r
-\r
-/**\r
- * Static Lexing/Compiling Method\r
- */\r
-\r
-InlineLexer.output = function(src, links, options) {\r
-  var inline = new InlineLexer(links, options);\r
-  return inline.output(src);\r
-};\r
-\r
-/**\r
- * Lexing/Compiling\r
- */\r
-\r
-InlineLexer.prototype.output = function(src) {\r
-  var out = ''\r
-    , link\r
-    , text\r
-    , href\r
-    , cap;\r
-\r
-  while (src) {\r
-    // escape\r
-    if (cap = this.rules.escape.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      out += cap[1];\r
-      continue;\r
-    }\r
-\r
-    // autolink\r
-    if (cap = this.rules.autolink.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      if (cap[2] === '@') {\r
-        text = cap[1].charAt(6) === ':'\r
-          ? this.mangle(cap[1].substring(7))\r
-          : this.mangle(cap[1]);\r
-        href = this.mangle('mailto:') + text;\r
-      } else {\r
-        text = escape(cap[1]);\r
-        href = text;\r
-      }\r
-      out += this.renderer.link(href, null, text);\r
-      continue;\r
-    }\r
-\r
-    // url (gfm)\r
-    if (!this.inLink && (cap = this.rules.url.exec(src))) {\r
-      src = src.substring(cap[0].length);\r
-      text = escape(cap[1]);\r
-      href = text;\r
-      out += this.renderer.link(href, null, text);\r
-      continue;\r
-    }\r
-\r
-    // tag\r
-    if (cap = this.rules.tag.exec(src)) {\r
-      if (!this.inLink && /^<a /i.test(cap[0])) {\r
-        this.inLink = true;\r
-      } else if (this.inLink && /^<\/a>/i.test(cap[0])) {\r
-        this.inLink = false;\r
-      }\r
-      src = src.substring(cap[0].length);\r
-      out += this.options.sanitize\r
-        ? escape(cap[0])\r
-        : cap[0];\r
-      continue;\r
-    }\r
-\r
-    // link\r
-    if (cap = this.rules.link.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      this.inLink = true;\r
-      out += this.outputLink(cap, {\r
-        href: cap[2],\r
-        title: cap[3]\r
-      });\r
-      this.inLink = false;\r
-      continue;\r
-    }\r
-\r
-    // reflink, nolink\r
-    if ((cap = this.rules.reflink.exec(src))\r
-        || (cap = this.rules.nolink.exec(src))) {\r
-      src = src.substring(cap[0].length);\r
-      link = (cap[2] || cap[1]).replace(/\s+/g, ' ');\r
-      link = this.links[link.toLowerCase()];\r
-      if (!link || !link.href) {\r
-        out += cap[0].charAt(0);\r
-        src = cap[0].substring(1) + src;\r
-        continue;\r
-      }\r
-      this.inLink = true;\r
-      out += this.outputLink(cap, link);\r
-      this.inLink = false;\r
-      continue;\r
-    }\r
-\r
-    // strong\r
-    if (cap = this.rules.strong.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      out += this.renderer.strong(this.output(cap[2] || cap[1]));\r
-      continue;\r
-    }\r
-\r
-    // em\r
-    if (cap = this.rules.em.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      out += this.renderer.em(this.output(cap[2] || cap[1]));\r
-      continue;\r
-    }\r
-\r
-    // code\r
-    if (cap = this.rules.code.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      out += this.renderer.codespan(escape(cap[2], true));\r
-      continue;\r
-    }\r
-\r
-    // br\r
-    if (cap = this.rules.br.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      out += this.renderer.br();\r
-      continue;\r
-    }\r
-\r
-    // del (gfm)\r
-    if (cap = this.rules.del.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      out += this.renderer.del(this.output(cap[1]));\r
-      continue;\r
-    }\r
-\r
-    // text\r
-    if (cap = this.rules.text.exec(src)) {\r
-      src = src.substring(cap[0].length);\r
-      out += escape(this.smartypants(cap[0]));\r
-      continue;\r
-    }\r
-\r
-    if (src) {\r
-      throw new\r
-        Error('Infinite loop on byte: ' + src.charCodeAt(0));\r
-    }\r
-  }\r
-\r
-  return out;\r
-};\r
-\r
-/**\r
- * Compile Link\r
- */\r
-\r
-InlineLexer.prototype.outputLink = function(cap, link) {\r
-  var href = escape(link.href)\r
-    , title = link.title ? escape(link.title) : null;\r
-\r
-  return cap[0].charAt(0) !== '!'\r
-    ? this.renderer.link(href, title, this.output(cap[1]))\r
-    : this.renderer.image(href, title, escape(cap[1]));\r
-};\r
-\r
-/**\r
- * Smartypants Transformations\r
- */\r
-\r
-InlineLexer.prototype.smartypants = function(text) {\r
-  if (!this.options.smartypants) return text;\r
-  return text\r
-    // em-dashes\r
-    .replace(/--/g, '\u2014')\r
-    // opening singles\r
-    .replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018')\r
-    // closing singles & apostrophes\r
-    .replace(/'/g, '\u2019')\r
-    // opening doubles\r
-    .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c')\r
-    // closing doubles\r
-    .replace(/"/g, '\u201d')\r
-    // ellipses\r
-    .replace(/\.{3}/g, '\u2026');\r
-};\r
-\r
-/**\r
- * Mangle Links\r
- */\r
-\r
-InlineLexer.prototype.mangle = function(text) {\r
-  var out = ''\r
-    , l = text.length\r
-    , i = 0\r
-    , ch;\r
-\r
-  for (; i < l; i++) {\r
-    ch = text.charCodeAt(i);\r
-    if (Math.random() > 0.5) {\r
-      ch = 'x' + ch.toString(16);\r
-    }\r
-    out += '&#' + ch + ';';\r
-  }\r
-\r
-  return out;\r
-};\r
-\r
-/**\r
- * Renderer\r
- */\r
-\r
-function Renderer(options) {\r
-  this.options = options || {};\r
-}\r
-\r
-Renderer.prototype.code = function(code, lang, escaped) {\r
-  if (this.options.highlight) {\r
-    var out = this.options.highlight(code, lang);\r
-    if (out != null && out !== code) {\r
-      escaped = true;\r
-      code = out;\r
-    }\r
-  }\r
-\r
-  if (!lang) {\r
-    return '<pre><code>'\r
-      + (escaped ? code : escape(code, true))\r
-      + '\n</code></pre>';\r
-  }\r
-\r
-  return '<pre><code class="'\r
-    + this.options.langPrefix\r
-    + escape(lang, true)\r
-    + '">'\r
-    + (escaped ? code : escape(code, true))\r
-    + '\n</code></pre>\n';\r
-};\r
-\r
-Renderer.prototype.blockquote = function(quote) {\r
-  return '<blockquote>\n' + quote + '</blockquote>\n';\r
-};\r
-\r
-Renderer.prototype.html = function(html) {\r
-  return html;\r
-};\r
-\r
-Renderer.prototype.heading = function(text, level, raw) {\r
-  return '<h'\r
-    + level\r
-    + ' id="'\r
-    + this.options.headerPrefix\r
-    + raw.toLowerCase().replace(/[^\w]+/g, '-')\r
-    + '">'\r
-    + text\r
-    + '</h'\r
-    + level\r
-    + '>\n';\r
-};\r
-\r
-Renderer.prototype.hr = function() {\r
-  return this.options.xhtml ? '<hr/>\n' : '<hr>\n';\r
-};\r
-\r
-Renderer.prototype.list = function(body, ordered) {\r
-  var type = ordered ? 'ol' : 'ul';\r
-  return '<' + type + '>\n' + body + '</' + type + '>\n';\r
-};\r
-\r
-Renderer.prototype.listitem = function(text) {\r
-  return '<li>' + text + '</li>\n';\r
-};\r
-\r
-Renderer.prototype.paragraph = function(text) {\r
-  return '<p>' + text + '</p>\n';\r
-};\r
-\r
-Renderer.prototype.table = function(header, body) {\r
-  return '<table>\n'\r
-    + '<thead>\n'\r
-    + header\r
-    + '</thead>\n'\r
-    + '<tbody>\n'\r
-    + body\r
-    + '</tbody>\n'\r
-    + '</table>\n';\r
-};\r
-\r
-Renderer.prototype.tablerow = function(content) {\r
-  return '<tr>\n' + content + '</tr>\n';\r
-};\r
-\r
-Renderer.prototype.tablecell = function(content, flags) {\r
-  var type = flags.header ? 'th' : 'td';\r
-  var tag = flags.align\r
-    ? '<' + type + ' style="text-align:' + flags.align + '">'\r
-    : '<' + type + '>';\r
-  return tag + content + '</' + type + '>\n';\r
-};\r
-\r
-// span level renderer\r
-Renderer.prototype.strong = function(text) {\r
-  return '<strong>' + text + '</strong>';\r
-};\r
-\r
-Renderer.prototype.em = function(text) {\r
-  return '<em>' + text + '</em>';\r
-};\r
-\r
-Renderer.prototype.codespan = function(text) {\r
-  return '<code>' + text + '</code>';\r
-};\r
-\r
-Renderer.prototype.br = function() {\r
-  return this.options.xhtml ? '<br/>' : '<br>';\r
-};\r
-\r
-Renderer.prototype.del = function(text) {\r
-  return '<del>' + text + '</del>';\r
-};\r
-\r
-Renderer.prototype.link = function(href, title, text) {\r
-  if (this.options.sanitize) {\r
-    try {\r
-      var prot = decodeURIComponent(unescape(href))\r
-        .replace(/[^\w:]/g, '')\r
-        .toLowerCase();\r
-    } catch (e) {\r
-      return '';\r
-    }\r
-    if (prot.indexOf('javascript:') === 0) {\r
-      return '';\r
-    }\r
-  }\r
-  var out = '<a href="' + href + '"';\r
-  if (title) {\r
-    out += ' title="' + title + '"';\r
-  }\r
-  out += '>' + text + '</a>';\r
-  return out;\r
-};\r
-\r
-Renderer.prototype.image = function(href, title, text) {\r
-  var out = '<img src="' + href + '" alt="' + text + '"';\r
-  if (title) {\r
-    out += ' title="' + title + '"';\r
-  }\r
-  out += this.options.xhtml ? '/>' : '>';\r
-  return out;\r
-};\r
-\r
-/**\r
- * Parsing & Compiling\r
- */\r
-\r
-function Parser(options) {\r
-  this.tokens = [];\r
-  this.token = null;\r
-  this.options = options || marked.defaults;\r
-  this.options.renderer = this.options.renderer || new Renderer;\r
-  this.renderer = this.options.renderer;\r
-  this.renderer.options = this.options;\r
-}\r
-\r
-/**\r
- * Static Parse Method\r
- */\r
-\r
-Parser.parse = function(src, options, renderer) {\r
-  var parser = new Parser(options, renderer);\r
-  return parser.parse(src);\r
-};\r
-\r
-/**\r
- * Parse Loop\r
- */\r
-\r
-Parser.prototype.parse = function(src) {\r
-  this.inline = new InlineLexer(src.links, this.options, this.renderer);\r
-  this.tokens = src.reverse();\r
-\r
-  var out = '';\r
-  while (this.next()) {\r
-    out += this.tok();\r
-  }\r
-\r
-  return out;\r
-};\r
-\r
-/**\r
- * Next Token\r
- */\r
-\r
-Parser.prototype.next = function() {\r
-  return this.token = this.tokens.pop();\r
-};\r
-\r
-/**\r
- * Preview Next Token\r
- */\r
-\r
-Parser.prototype.peek = function() {\r
-  return this.tokens[this.tokens.length - 1] || 0;\r
-};\r
-\r
-/**\r
- * Parse Text Tokens\r
- */\r
-\r
-Parser.prototype.parseText = function() {\r
-  var body = this.token.text;\r
-\r
-  while (this.peek().type === 'text') {\r
-    body += '\n' + this.next().text;\r
-  }\r
-\r
-  return this.inline.output(body);\r
-};\r
-\r
-/**\r
- * Parse Current Token\r
- */\r
-\r
-Parser.prototype.tok = function() {\r
-  switch (this.token.type) {\r
-    case 'space': {\r
-      return '';\r
-    }\r
-    case 'hr': {\r
-      return this.renderer.hr();\r
-    }\r
-    case 'heading': {\r
-      return this.renderer.heading(\r
-        this.inline.output(this.token.text),\r
-        this.token.depth,\r
-        this.token.text);\r
-    }\r
-    case 'code': {\r
-      return this.renderer.code(this.token.text,\r
-        this.token.lang,\r
-        this.token.escaped);\r
-    }\r
-    case 'table': {\r
-      var header = ''\r
-        , body = ''\r
-        , i\r
-        , row\r
-        , cell\r
-        , flags\r
-        , j;\r
-\r
-      // header\r
-      cell = '';\r
-      for (i = 0; i < this.token.header.length; i++) {\r
-        flags = { header: true, align: this.token.align[i] };\r
-        cell += this.renderer.tablecell(\r
-          this.inline.output(this.token.header[i]),\r
-          { header: true, align: this.token.align[i] }\r
-        );\r
-      }\r
-      header += this.renderer.tablerow(cell);\r
-\r
-      for (i = 0; i < this.token.cells.length; i++) {\r
-        row = this.token.cells[i];\r
-\r
-        cell = '';\r
-        for (j = 0; j < row.length; j++) {\r
-          cell += this.renderer.tablecell(\r
-            this.inline.output(row[j]),\r
-            { header: false, align: this.token.align[j] }\r
-          );\r
-        }\r
-\r
-        body += this.renderer.tablerow(cell);\r
-      }\r
-      return this.renderer.table(header, body);\r
-    }\r
-    case 'blockquote_start': {\r
-      var body = '';\r
-\r
-      while (this.next().type !== 'blockquote_end') {\r
-        body += this.tok();\r
-      }\r
-\r
-      return this.renderer.blockquote(body);\r
-    }\r
-    case 'list_start': {\r
-      var body = ''\r
-        , ordered = this.token.ordered;\r
-\r
-      while (this.next().type !== 'list_end') {\r
-        body += this.tok();\r
-      }\r
-\r
-      return this.renderer.list(body, ordered);\r
-    }\r
-    case 'list_item_start': {\r
-      var body = '';\r
-\r
-      while (this.next().type !== 'list_item_end') {\r
-        body += this.token.type === 'text'\r
-          ? this.parseText()\r
-          : this.tok();\r
-      }\r
-\r
-      return this.renderer.listitem(body);\r
-    }\r
-    case 'loose_item_start': {\r
-      var body = '';\r
-\r
-      while (this.next().type !== 'list_item_end') {\r
-        body += this.tok();\r
-      }\r
-\r
-      return this.renderer.listitem(body);\r
-    }\r
-    case 'html': {\r
-      var html = !this.token.pre && !this.options.pedantic\r
-        ? this.inline.output(this.token.text)\r
-        : this.token.text;\r
-      return this.renderer.html(html);\r
-    }\r
-    case 'paragraph': {\r
-      return this.renderer.paragraph(this.inline.output(this.token.text));\r
-    }\r
-    case 'text': {\r
-      return this.renderer.paragraph(this.parseText());\r
-    }\r
-  }\r
-};\r
-\r
-/**\r
- * Helpers\r
- */\r
-\r
-function escape(html, encode) {\r
-  return html\r
-    .replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&amp;')\r
-    .replace(/</g, '&lt;')\r
-    .replace(/>/g, '&gt;')\r
-    .replace(/"/g, '&quot;')\r
-    .replace(/'/g, '&#39;');\r
-}\r
-\r
-function unescape(html) {\r
-  return html.replace(/&([#\w]+);/g, function(_, n) {\r
-    n = n.toLowerCase();\r
-    if (n === 'colon') return ':';\r
-    if (n.charAt(0) === '#') {\r
-      return n.charAt(1) === 'x'\r
-        ? String.fromCharCode(parseInt(n.substring(2), 16))\r
-        : String.fromCharCode(+n.substring(1));\r
-    }\r
-    return '';\r
-  });\r
-}\r
-\r
-function replace(regex, opt) {\r
-  regex = regex.source;\r
-  opt = opt || '';\r
-  return function self(name, val) {\r
-    if (!name) return new RegExp(regex, opt);\r
-    val = val.source || val;\r
-    val = val.replace(/(^|[^\[])\^/g, '$1');\r
-    regex = regex.replace(name, val);\r
-    return self;\r
-  };\r
-}\r
-\r
-function noop() {}\r
-noop.exec = noop;\r
-\r
-function merge(obj) {\r
-  var i = 1\r
-    , target\r
-    , key;\r
-\r
-  for (; i < arguments.length; i++) {\r
-    target = arguments[i];\r
-    for (key in target) {\r
-      if (Object.prototype.hasOwnProperty.call(target, key)) {\r
-        obj[key] = target[key];\r
-      }\r
-    }\r
-  }\r
-\r
-  return obj;\r
-}\r
-\r
-\r
-/**\r
- * Marked\r
- */\r
-\r
-function marked(src, opt, callback) {\r
-  if (callback || typeof opt === 'function') {\r
-    if (!callback) {\r
-      callback = opt;\r
-      opt = null;\r
-    }\r
-\r
-    opt = merge({}, marked.defaults, opt || {});\r
-\r
-    var highlight = opt.highlight\r
-      , tokens\r
-      , pending\r
-      , i = 0;\r
-\r
-    try {\r
-      tokens = Lexer.lex(src, opt)\r
-    } catch (e) {\r
-      return callback(e);\r
-    }\r
-\r
-    pending = tokens.length;\r
-\r
-    var done = function(err) {\r
-      if (err) {\r
-        opt.highlight = highlight;\r
-        return callback(err);\r
-      }\r
-\r
-      var out;\r
-\r
-      try {\r
-        out = Parser.parse(tokens, opt);\r
-      } catch (e) {\r
-        err = e;\r
-      }\r
-\r
-      opt.highlight = highlight;\r
-\r
-      return err\r
-        ? callback(err)\r
-        : callback(null, out);\r
-    };\r
-\r
-    if (!highlight || highlight.length < 3) {\r
-      return done();\r
-    }\r
-\r
-    delete opt.highlight;\r
-\r
-    if (!pending) return done();\r
-\r
-    for (; i < tokens.length; i++) {\r
-      (function(token) {\r
-        if (token.type !== 'code') {\r
-          return --pending || done();\r
-        }\r
-        return highlight(token.text, token.lang, function(err, code) {\r
-          if (err) return done(err);\r
-          if (code == null || code === token.text) {\r
-            return --pending || done();\r
-          }\r
-          token.text = code;\r
-          token.escaped = true;\r
-          --pending || done();\r
-        });\r
-      })(tokens[i]);\r
-    }\r
-\r
-    return;\r
-  }\r
-  try {\r
-    if (opt) opt = merge({}, marked.defaults, opt);\r
-    return Parser.parse(Lexer.lex(src, opt), opt);\r
-  } catch (e) {\r
-    e.message += '\nPlease report this to https://github.com/chjj/marked.';\r
-    if ((opt || marked.defaults).silent) {\r
-      return '<p>An error occured:</p><pre>'\r
-        + escape(e.message + '', true)\r
-        + '</pre>';\r
-    }\r
-    throw e;\r
-  }\r
-}\r
-\r
-/**\r
- * Options\r
- */\r
-\r
-marked.options =\r
-marked.setOptions = function(opt) {\r
-  merge(marked.defaults, opt);\r
-  return marked;\r
-};\r
-\r
-marked.defaults = {\r
-  gfm: true,\r
-  tables: true,\r
-  breaks: false,\r
-  pedantic: false,\r
-  sanitize: false,\r
-  smartLists: false,\r
-  silent: false,\r
-  highlight: null,\r
-  langPrefix: 'lang-',\r
-  smartypants: false,\r
-  headerPrefix: '',\r
-  renderer: new Renderer,\r
-  xhtml: false\r
-};\r
-\r
-/**\r
- * Expose\r
- */\r
-\r
-marked.Parser = Parser;\r
-marked.parser = Parser.parse;\r
-\r
-marked.Renderer = Renderer;\r
-\r
-marked.Lexer = Lexer;\r
-marked.lexer = Lexer.lex;\r
-\r
-marked.InlineLexer = InlineLexer;\r
-marked.inlineLexer = InlineLexer.output;\r
-\r
-marked.parse = marked;\r
-\r
-if (typeof module !== 'undefined' && typeof exports === 'object') {\r
-  module.exports = marked;\r
-} else if (typeof define === 'function' && define.amd) {\r
-  define(function() { return marked; });\r
-} else {\r
-  this.marked = marked;\r
-}\r
-\r
-}).call(function() {\r
-  return this || (typeof window !== 'undefined' ? window : global);\r
+/*
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+;(function() {
+
+/**
+ * Block-Level Grammar
+ */
+
+var block = {
+  newline: /^\n+/,
+  code: /^( {4}[^\n]+\n*)+/,
+  fences: noop,
+  hr: /^( *[-*_]){3,} *(?:\n+|$)/,
+  heading: /^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,
+  nptable: noop,
+  lheading: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,
+  blockquote: /^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,
+  list: /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,
+  html: /^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,
+  def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,
+  table: noop,
+  paragraph: /^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,
+  text: /^[^\n]+/
+};
+
+block.bullet = /(?:[*+-]|\d+\.)/;
+block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;
+block.item = replace(block.item, 'gm')
+  (/bull/g, block.bullet)
+  ();
+
+block.list = replace(block.list)
+  (/bull/g, block.bullet)
+  ('hr', '\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))')
+  ('def', '\\n+(?=' + block.def.source + ')')
+  ();
+
+block.blockquote = replace(block.blockquote)
+  ('def', block.def)
+  ();
+
+block._tag = '(?!(?:'
+  + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'
+  + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'
+  + '|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b';
+
+block.html = replace(block.html)
+  ('comment', /<!--[\s\S]*?-->/)
+  ('closed', /<(tag)[\s\S]+?<\/\1>/)
+  ('closing', /<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)
+  (/tag/g, block._tag)
+  ();
+
+block.paragraph = replace(block.paragraph)
+  ('hr', block.hr)
+  ('heading', block.heading)
+  ('lheading', block.lheading)
+  ('blockquote', block.blockquote)
+  ('tag', '<' + block._tag)
+  ('def', block.def)
+  ();
+
+/**
+ * Normal Block Grammar
+ */
+
+block.normal = merge({}, block);
+
+/**
+ * GFM Block Grammar
+ */
+
+block.gfm = merge({}, block.normal, {
+  fences: /^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/,
+  paragraph: /^/
+});
+
+block.gfm.paragraph = replace(block.paragraph)
+  ('(?!', '(?!'
+    + block.gfm.fences.source.replace('\\1', '\\2') + '|'
+    + block.list.source.replace('\\1', '\\3') + '|')
+  ();
+
+/**
+ * GFM + Tables Block Grammar
+ */
+
+block.tables = merge({}, block.gfm, {
+  nptable: /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,
+  table: /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/
+});
+
+/**
+ * Block Lexer
+ */
+
+function Lexer(options) {
+  this.tokens = [];
+  this.tokens.links = {};
+  this.options = options || marked.defaults;
+  this.rules = block.normal;
+
+  if (this.options.gfm) {
+    if (this.options.tables) {
+      this.rules = block.tables;
+    } else {
+      this.rules = block.gfm;
+    }
+  }
+}
+
+/**
+ * Expose Block Rules
+ */
+
+Lexer.rules = block;
+
+/**
+ * Static Lex Method
+ */
+
+Lexer.lex = function(src, options) {
+  var lexer = new Lexer(options);
+  return lexer.lex(src);
+};
+
+/**
+ * Preprocessing
+ */
+
+Lexer.prototype.lex = function(src) {
+  src = src
+    .replace(/\r\n|\r/g, '\n')
+    .replace(/\t/g, '    ')
+    .replace(/\u00a0/g, ' ')
+    .replace(/\u2424/g, '\n');
+
+  return this.token(src, true);
+};
+
+/**
+ * Lexing
+ */
+
+Lexer.prototype.token = function(src, top, bq) {
+  var src = src.replace(/^ +$/gm, '')
+    , next
+    , loose
+    , cap
+    , bull
+    , b
+    , item
+    , space
+    , i
+    , l;
+
+  while (src) {
+    // newline
+    if (cap = this.rules.newline.exec(src)) {
+      src = src.substring(cap[0].length);
+      if (cap[0].length > 1) {
+        this.tokens.push({
+          type: 'space'
+        });
+      }
+    }
+
+    // code
+    if (cap = this.rules.code.exec(src)) {
+      src = src.substring(cap[0].length);
+      cap = cap[0].replace(/^ {4}/gm, '');
+      this.tokens.push({
+        type: 'code',
+        text: !this.options.pedantic
+          ? cap.replace(/\n+$/, '')
+          : cap
+      });
+      continue;
+    }
+
+    // fences (gfm)
+    if (cap = this.rules.fences.exec(src)) {
+      src = src.substring(cap[0].length);
+      this.tokens.push({
+        type: 'code',
+        lang: cap[2],
+        text: cap[3]
+      });
+      continue;
+    }
+
+    // heading
+    if (cap = this.rules.heading.exec(src)) {
+      src = src.substring(cap[0].length);
+      this.tokens.push({
+        type: 'heading',
+        depth: cap[1].length,
+        text: cap[2]
+      });
+      continue;
+    }
+
+    // table no leading pipe (gfm)
+    if (top && (cap = this.rules.nptable.exec(src))) {
+      src = src.substring(cap[0].length);
+
+      item = {
+        type: 'table',
+        header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
+        align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
+        cells: cap[3].replace(/\n$/, '').split('\n')
+      };
+
+      for (i = 0; i < item.align.length; i++) {
+        if (/^ *-+: *$/.test(item.align[i])) {
+          item.align[i] = 'right';
+        } else if (/^ *:-+: *$/.test(item.align[i])) {
+          item.align[i] = 'center';
+        } else if (/^ *:-+ *$/.test(item.align[i])) {
+          item.align[i] = 'left';
+        } else {
+          item.align[i] = null;
+        }
+      }
+
+      for (i = 0; i < item.cells.length; i++) {
+        item.cells[i] = item.cells[i].split(/ *\| */);
+      }
+
+      this.tokens.push(item);
+
+      continue;
+    }
+
+    // lheading
+    if (cap = this.rules.lheading.exec(src)) {
+      src = src.substring(cap[0].length);
+      this.tokens.push({
+        type: 'heading',
+        depth: cap[2] === '=' ? 1 : 2,
+        text: cap[1]
+      });
+      continue;
+    }
+
+    // hr
+    if (cap = this.rules.hr.exec(src)) {
+      src = src.substring(cap[0].length);
+      this.tokens.push({
+        type: 'hr'
+      });
+      continue;
+    }
+
+    // blockquote
+    if (cap = this.rules.blockquote.exec(src)) {
+      src = src.substring(cap[0].length);
+
+      this.tokens.push({
+        type: 'blockquote_start'
+      });
+
+      cap = cap[0].replace(/^ *> ?/gm, '');
+
+      // Pass `top` to keep the current
+      // "toplevel" state. This is exactly
+      // how markdown.pl works.
+      this.token(cap, top, true);
+
+      this.tokens.push({
+        type: 'blockquote_end'
+      });
+
+      continue;
+    }
+
+    // list
+    if (cap = this.rules.list.exec(src)) {
+      src = src.substring(cap[0].length);
+      bull = cap[2];
+
+      this.tokens.push({
+        type: 'list_start',
+        ordered: bull.length > 1
+      });
+
+      // Get each top-level item.
+      cap = cap[0].match(this.rules.item);
+
+      next = false;
+      l = cap.length;
+      i = 0;
+
+      for (; i < l; i++) {
+        item = cap[i];
+
+        // Remove the list item's bullet
+        // so it is seen as the next token.
+        space = item.length;
+        item = item.replace(/^ *([*+-]|\d+\.) +/, '');
+
+        // Outdent whatever the
+        // list item contains. Hacky.
+        if (~item.indexOf('\n ')) {
+          space -= item.length;
+          item = !this.options.pedantic
+            ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')
+            : item.replace(/^ {1,4}/gm, '');
+        }
+
+        // Determine whether the next list item belongs here.
+        // Backpedal if it does not belong in this list.
+        if (this.options.smartLists && i !== l - 1) {
+          b = block.bullet.exec(cap[i + 1])[0];
+          if (bull !== b && !(bull.length > 1 && b.length > 1)) {
+            src = cap.slice(i + 1).join('\n') + src;
+            i = l - 1;
+          }
+        }
+
+        // Determine whether item is loose or not.
+        // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/
+        // for discount behavior.
+        loose = next || /\n\n(?!\s*$)/.test(item);
+        if (i !== l - 1) {
+          next = item.charAt(item.length - 1) === '\n';
+          if (!loose) loose = next;
+        }
+
+        this.tokens.push({
+          type: loose
+            ? 'loose_item_start'
+            : 'list_item_start'
+        });
+
+        // Recurse.
+        this.token(item, false, bq);
+
+        this.tokens.push({
+          type: 'list_item_end'
+        });
+      }
+
+      this.tokens.push({
+        type: 'list_end'
+      });
+
+      continue;
+    }
+
+    // html
+    if (cap = this.rules.html.exec(src)) {
+      src = src.substring(cap[0].length);
+      this.tokens.push({
+        type: this.options.sanitize
+          ? 'paragraph'
+          : 'html',
+        pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',
+        text: cap[0]
+      });
+      continue;
+    }
+
+    // def
+    if ((!bq && top) && (cap = this.rules.def.exec(src))) {
+      src = src.substring(cap[0].length);
+      this.tokens.links[cap[1].toLowerCase()] = {
+        href: cap[2],
+        title: cap[3]
+      };
+      continue;
+    }
+
+    // table (gfm)
+    if (top && (cap = this.rules.table.exec(src))) {
+      src = src.substring(cap[0].length);
+
+      item = {
+        type: 'table',
+        header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
+        align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
+        cells: cap[3].replace(/(?: *\| *)?\n$/, '').split('\n')
+      };
+
+      for (i = 0; i < item.align.length; i++) {
+        if (/^ *-+: *$/.test(item.align[i])) {
+          item.align[i] = 'right';
+        } else if (/^ *:-+: *$/.test(item.align[i])) {
+          item.align[i] = 'center';
+        } else if (/^ *:-+ *$/.test(item.align[i])) {
+          item.align[i] = 'left';
+        } else {
+          item.align[i] = null;
+        }
+      }
+
+      for (i = 0; i < item.cells.length; i++) {
+        item.cells[i] = item.cells[i]
+          .replace(/^ *\| *| *\| *$/g, '')
+          .split(/ *\| */);
+      }
+
+      this.tokens.push(item);
+
+      continue;
+    }
+
+    // top-level paragraph
+    if (top && (cap = this.rules.paragraph.exec(src))) {
+      src = src.substring(cap[0].length);
+      this.tokens.push({
+        type: 'paragraph',
+        text: cap[1].charAt(cap[1].length - 1) === '\n'
+          ? cap[1].slice(0, -1)
+          : cap[1]
+      });
+      continue;
+    }
+
+    // text
+    if (cap = this.rules.text.exec(src)) {
+      // Top-level should never reach here.
+      src = src.substring(cap[0].length);
+      this.tokens.push({
+        type: 'text',
+        text: cap[0]
+      });
+      continue;
+    }
+
+    if (src) {
+      throw new
+        Error('Infinite loop on byte: ' + src.charCodeAt(0));
+    }
+  }
+
+  return this.tokens;
+};
+
+/**
+ * Inline-Level Grammar
+ */
+
+var inline = {
+  escape: /^\\([\\`*{}\[\]()#+\-.!_>])/,
+  autolink: /^<([^ >]+(@|:\/)[^ >]+)>/,
+  url: noop,
+  tag: /^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,
+  link: /^!?\[(inside)\]\(href\)/,
+  reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/,
+  nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,
+  strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,
+  em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
+  code: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,
+  br: /^ {2,}\n(?!\s*$)/,
+  del: noop,
+  text: /^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/
+};
+
+inline._inside = /(?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*/;
+inline._href = /\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/;
+
+inline.link = replace(inline.link)
+  ('inside', inline._inside)
+  ('href', inline._href)
+  ();
+
+inline.reflink = replace(inline.reflink)
+  ('inside', inline._inside)
+  ();
+
+/**
+ * Normal Inline Grammar
+ */
+
+inline.normal = merge({}, inline);
+
+/**
+ * Pedantic Inline Grammar
+ */
+
+inline.pedantic = merge({}, inline.normal, {
+  strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
+  em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/
+});
+
+/**
+ * GFM Inline Grammar
+ */
+
+inline.gfm = merge({}, inline.normal, {
+  escape: replace(inline.escape)('])', '~|])')(),
+  url: /^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,
+  del: /^~~(?=\S)([\s\S]*?\S)~~/,
+  text: replace(inline.text)
+    (']|', '~]|')
+    ('|', '|https?://|')
+    ()
+});
+
+/**
+ * GFM + Line Breaks Inline Grammar
+ */
+
+inline.breaks = merge({}, inline.gfm, {
+  br: replace(inline.br)('{2,}', '*')(),
+  text: replace(inline.gfm.text)('{2,}', '*')()
+});
+
+/**
+ * Inline Lexer & Compiler
+ */
+
+function InlineLexer(links, options) {
+  this.options = options || marked.defaults;
+  this.links = links;
+  this.rules = inline.normal;
+  this.renderer = this.options.renderer || new Renderer;
+  this.renderer.options = this.options;
+
+  if (!this.links) {
+    throw new
+      Error('Tokens array requires a `links` property.');
+  }
+
+  if (this.options.gfm) {
+    if (this.options.breaks) {
+      this.rules = inline.breaks;
+    } else {
+      this.rules = inline.gfm;
+    }
+  } else if (this.options.pedantic) {
+    this.rules = inline.pedantic;
+  }
+}
+
+/**
+ * Expose Inline Rules
+ */
+
+InlineLexer.rules = inline;
+
+/**
+ * Static Lexing/Compiling Method
+ */
+
+InlineLexer.output = function(src, links, options) {
+  var inline = new InlineLexer(links, options);
+  return inline.output(src);
+};
+
+/**
+ * Lexing/Compiling
+ */
+
+InlineLexer.prototype.output = function(src) {
+  var out = ''
+    , link
+    , text
+    , href
+    , cap;
+
+  while (src) {
+    // escape
+    if (cap = this.rules.escape.exec(src)) {
+      src = src.substring(cap[0].length);
+      out += cap[1];
+      continue;
+    }
+
+    // autolink
+    if (cap = this.rules.autolink.exec(src)) {
+      src = src.substring(cap[0].length);
+      if (cap[2] === '@') {
+        text = cap[1].charAt(6) === ':'
+          ? this.mangle(cap[1].substring(7))
+          : this.mangle(cap[1]);
+        href = this.mangle('mailto:') + text;
+      } else {
+        text = escape(cap[1]);
+        href = text;
+      }
+      out += this.renderer.link(href, null, text);
+      continue;
+    }
+
+    // url (gfm)
+    if (!this.inLink && (cap = this.rules.url.exec(src))) {
+      src = src.substring(cap[0].length);
+      text = escape(cap[1]);
+      href = text;
+      out += this.renderer.link(href, null, text);
+      continue;
+    }
+
+    // tag
+    if (cap = this.rules.tag.exec(src)) {
+      if (!this.inLink && /^<a /i.test(cap[0])) {
+        this.inLink = true;
+      } else if (this.inLink && /^<\/a>/i.test(cap[0])) {
+        this.inLink = false;
+      }
+      src = src.substring(cap[0].length);
+      out += this.options.sanitize
+        ? escape(cap[0])
+        : cap[0];
+      continue;
+    }
+
+    // link
+    if (cap = this.rules.link.exec(src)) {
+      src = src.substring(cap[0].length);
+      this.inLink = true;
+      out += this.outputLink(cap, {
+        href: cap[2],
+        title: cap[3]
+      });
+      this.inLink = false;
+      continue;
+    }
+
+    // reflink, nolink
+    if ((cap = this.rules.reflink.exec(src))
+        || (cap = this.rules.nolink.exec(src))) {
+      src = src.substring(cap[0].length);
+      link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
+      link = this.links[link.toLowerCase()];
+      if (!link || !link.href) {
+        out += cap[0].charAt(0);
+        src = cap[0].substring(1) + src;
+        continue;
+      }
+      this.inLink = true;
+      out += this.outputLink(cap, link);
+      this.inLink = false;
+      continue;
+    }
+
+    // strong
+    if (cap = this.rules.strong.exec(src)) {
+      src = src.substring(cap[0].length);
+      out += this.renderer.strong(this.output(cap[2] || cap[1]));
+      continue;
+    }
+
+    // em
+    if (cap = this.rules.em.exec(src)) {
+      src = src.substring(cap[0].length);
+      out += this.renderer.em(this.output(cap[2] || cap[1]));
+      continue;
+    }
+
+    // code
+    if (cap = this.rules.code.exec(src)) {
+      src = src.substring(cap[0].length);
+      out += this.renderer.codespan(escape(cap[2], true));
+      continue;
+    }
+
+    // br
+    if (cap = this.rules.br.exec(src)) {
+      src = src.substring(cap[0].length);
+      out += this.renderer.br();
+      continue;
+    }
+
+    // del (gfm)
+    if (cap = this.rules.del.exec(src)) {
+      src = src.substring(cap[0].length);
+      out += this.renderer.del(this.output(cap[1]));
+      continue;
+    }
+
+    // text
+    if (cap = this.rules.text.exec(src)) {
+      src = src.substring(cap[0].length);
+      out += escape(this.smartypants(cap[0]));
+      continue;
+    }
+
+    if (src) {
+      throw new
+        Error('Infinite loop on byte: ' + src.charCodeAt(0));
+    }
+  }
+
+  return out;
+};
+
+/**
+ * Compile Link
+ */
+
+InlineLexer.prototype.outputLink = function(cap, link) {
+  var href = escape(link.href)
+    , title = link.title ? escape(link.title) : null;
+
+  return cap[0].charAt(0) !== '!'
+    ? this.renderer.link(href, title, this.output(cap[1]))
+    : this.renderer.image(href, title, escape(cap[1]));
+};
+
+/**
+ * Smartypants Transformations
+ */
+
+InlineLexer.prototype.smartypants = function(text) {
+  if (!this.options.smartypants) return text;
+  return text
+    // em-dashes
+    .replace(/--/g, '\u2014')
+    // opening singles
+    .replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018')
+    // closing singles & apostrophes
+    .replace(/'/g, '\u2019')
+    // opening doubles
+    .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c')
+    // closing doubles
+    .replace(/"/g, '\u201d')
+    // ellipses
+    .replace(/\.{3}/g, '\u2026');
+};
+
+/**
+ * Mangle Links
+ */
+
+InlineLexer.prototype.mangle = function(text) {
+  var out = ''
+    , l = text.length
+    , i = 0
+    , ch;
+
+  for (; i < l; i++) {
+    ch = text.charCodeAt(i);
+    if (Math.random() > 0.5) {
+      ch = 'x' + ch.toString(16);
+    }
+    out += '&#' + ch + ';';
+  }
+
+  return out;
+};
+
+/**
+ * Renderer
+ */
+
+function Renderer(options) {
+  this.options = options || {};
+}
+
+Renderer.prototype.code = function(code, lang, escaped) {
+  if (this.options.highlight) {
+    var out = this.options.highlight(code, lang);
+    if (out != null && out !== code) {
+      escaped = true;
+      code = out;
+    }
+  }
+
+  if (!lang) {
+    return '<pre><code>'
+      + (escaped ? code : escape(code, true))
+      + '\n</code></pre>';
+  }
+
+  return '<pre><code class="'
+    + this.options.langPrefix
+    + escape(lang, true)
+    + '">'
+    + (escaped ? code : escape(code, true))
+    + '\n</code></pre>\n';
+};
+
+Renderer.prototype.blockquote = function(quote) {
+  return '<blockquote>\n' + quote + '</blockquote>\n';
+};
+
+Renderer.prototype.html = function(html) {
+  return html;
+};
+
+Renderer.prototype.heading = function(text, level, raw) {
+  return '<h'
+    + level
+    + ' id="'
+    + this.options.headerPrefix
+    + raw.toLowerCase().replace(/[^\w]+/g, '-')
+    + '">'
+    + text
+    + '</h'
+    + level
+    + '>\n';
+};
+
+Renderer.prototype.hr = function() {
+  return this.options.xhtml ? '<hr/>\n' : '<hr>\n';
+};
+
+Renderer.prototype.list = function(body, ordered) {
+  var type = ordered ? 'ol' : 'ul';
+  return '<' + type + '>\n' + body + '</' + type + '>\n';
+};
+
+Renderer.prototype.listitem = function(text) {
+  return '<li>' + text + '</li>\n';
+};
+
+Renderer.prototype.paragraph = function(text) {
+  return '<p>' + text + '</p>\n';
+};
+
+Renderer.prototype.table = function(header, body) {
+  return '<table>\n'
+    + '<thead>\n'
+    + header
+    + '</thead>\n'
+    + '<tbody>\n'
+    + body
+    + '</tbody>\n'
+    + '</table>\n';
+};
+
+Renderer.prototype.tablerow = function(content) {
+  return '<tr>\n' + content + '</tr>\n';
+};
+
+Renderer.prototype.tablecell = function(content, flags) {
+  var type = flags.header ? 'th' : 'td';
+  var tag = flags.align
+    ? '<' + type + ' style="text-align:' + flags.align + '">'
+    : '<' + type + '>';
+  return tag + content + '</' + type + '>\n';
+};
+
+// span level renderer
+Renderer.prototype.strong = function(text) {
+  return '<strong>' + text + '</strong>';
+};
+
+Renderer.prototype.em = function(text) {
+  return '<em>' + text + '</em>';
+};
+
+Renderer.prototype.codespan = function(text) {
+  return '<code>' + text + '</code>';
+};
+
+Renderer.prototype.br = function() {
+  return this.options.xhtml ? '<br/>' : '<br>';
+};
+
+Renderer.prototype.del = function(text) {
+  return '<del>' + text + '</del>';
+};
+
+Renderer.prototype.link = function(href, title, text) {
+  if (this.options.sanitize) {
+    try {
+      var prot = decodeURIComponent(unescape(href))
+        .replace(/[^\w:]/g, '')
+        .toLowerCase();
+    } catch (e) {
+      return '';
+    }
+    if (prot.indexOf('javascript:') === 0) {
+      return '';
+    }
+  }
+  var out = '<a href="' + href + '"';
+  if (title) {
+    out += ' title="' + title + '"';
+  }
+  out += '>' + text + '</a>';
+  return out;
+};
+
+Renderer.prototype.image = function(href, title, text) {
+  var out = '<img src="' + href + '" alt="' + text + '"';
+  if (title) {
+    out += ' title="' + title + '"';
+  }
+  out += this.options.xhtml ? '/>' : '>';
+  return out;
+};
+
+/**
+ * Parsing & Compiling
+ */
+
+function Parser(options) {
+  this.tokens = [];
+  this.token = null;
+  this.options = options || marked.defaults;
+  this.options.renderer = this.options.renderer || new Renderer;
+  this.renderer = this.options.renderer;
+  this.renderer.options = this.options;
+}
+
+/**
+ * Static Parse Method
+ */
+
+Parser.parse = function(src, options, renderer) {
+  var parser = new Parser(options, renderer);
+  return parser.parse(src);
+};
+
+/**
+ * Parse Loop
+ */
+
+Parser.prototype.parse = function(src) {
+  this.inline = new InlineLexer(src.links, this.options, this.renderer);
+  this.tokens = src.reverse();
+
+  var out = '';
+  while (this.next()) {
+    out += this.tok();
+  }
+
+  return out;
+};
+
+/**
+ * Next Token
+ */
+
+Parser.prototype.next = function() {
+  return this.token = this.tokens.pop();
+};
+
+/**
+ * Preview Next Token
+ */
+
+Parser.prototype.peek = function() {
+  return this.tokens[this.tokens.length - 1] || 0;
+};
+
+/**
+ * Parse Text Tokens
+ */
+
+Parser.prototype.parseText = function() {
+  var body = this.token.text;
+
+  while (this.peek().type === 'text') {
+    body += '\n' + this.next().text;
+  }
+
+  return this.inline.output(body);
+};
+
+/**
+ * Parse Current Token
+ */
+
+Parser.prototype.tok = function() {
+  switch (this.token.type) {
+    case 'space': {
+      return '';
+    }
+    case 'hr': {
+      return this.renderer.hr();
+    }
+    case 'heading': {
+      return this.renderer.heading(
+        this.inline.output(this.token.text),
+        this.token.depth,
+        this.token.text);
+    }
+    case 'code': {
+      return this.renderer.code(this.token.text,
+        this.token.lang,
+        this.token.escaped);
+    }
+    case 'table': {
+      var header = ''
+        , body = ''
+        , i
+        , row
+        , cell
+        , flags
+        , j;
+
+      // header
+      cell = '';
+      for (i = 0; i < this.token.header.length; i++) {
+        flags = { header: true, align: this.token.align[i] };
+        cell += this.renderer.tablecell(
+          this.inline.output(this.token.header[i]),
+          { header: true, align: this.token.align[i] }
+        );
+      }
+      header += this.renderer.tablerow(cell);
+
+      for (i = 0; i < this.token.cells.length; i++) {
+        row = this.token.cells[i];
+
+        cell = '';
+        for (j = 0; j < row.length; j++) {
+          cell += this.renderer.tablecell(
+            this.inline.output(row[j]),
+            { header: false, align: this.token.align[j] }
+          );
+        }
+
+        body += this.renderer.tablerow(cell);
+      }
+      return this.renderer.table(header, body);
+    }
+    case 'blockquote_start': {
+      var body = '';
+
+      while (this.next().type !== 'blockquote_end') {
+        body += this.tok();
+      }
+
+      return this.renderer.blockquote(body);
+    }
+    case 'list_start': {
+      var body = ''
+        , ordered = this.token.ordered;
+
+      while (this.next().type !== 'list_end') {
+        body += this.tok();
+      }
+
+      return this.renderer.list(body, ordered);
+    }
+    case 'list_item_start': {
+      var body = '';
+
+      while (this.next().type !== 'list_item_end') {
+        body += this.token.type === 'text'
+          ? this.parseText()
+          : this.tok();
+      }
+
+      return this.renderer.listitem(body);
+    }
+    case 'loose_item_start': {
+      var body = '';
+
+      while (this.next().type !== 'list_item_end') {
+        body += this.tok();
+      }
+
+      return this.renderer.listitem(body);
+    }
+    case 'html': {
+      var html = !this.token.pre && !this.options.pedantic
+        ? this.inline.output(this.token.text)
+        : this.token.text;
+      return this.renderer.html(html);
+    }
+    case 'paragraph': {
+      return this.renderer.paragraph(this.inline.output(this.token.text));
+    }
+    case 'text': {
+      return this.renderer.paragraph(this.parseText());
+    }
+  }
+};
+
+/**
+ * Helpers
+ */
+
+function escape(html, encode) {
+  return html
+    .replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&amp;')
+    .replace(/</g, '&lt;')
+    .replace(/>/g, '&gt;')
+    .replace(/"/g, '&quot;')
+    .replace(/'/g, '&#39;');
+}
+
+function unescape(html) {
+  return html.replace(/&([#\w]+);/g, function(_, n) {
+    n = n.toLowerCase();
+    if (n === 'colon') return ':';
+    if (n.charAt(0) === '#') {
+      return n.charAt(1) === 'x'
+        ? String.fromCharCode(parseInt(n.substring(2), 16))
+        : String.fromCharCode(+n.substring(1));
+    }
+    return '';
+  });
+}
+
+function replace(regex, opt) {
+  regex = regex.source;
+  opt = opt || '';
+  return function self(name, val) {
+    if (!name) return new RegExp(regex, opt);
+    val = val.source || val;
+    val = val.replace(/(^|[^\[])\^/g, '$1');
+    regex = regex.replace(name, val);
+    return self;
+  };
+}
+
+function noop() {}
+noop.exec = noop;
+
+function merge(obj) {
+  var i = 1
+    , target
+    , key;
+
+  for (; i < arguments.length; i++) {
+    target = arguments[i];
+    for (key in target) {
+      if (Object.prototype.hasOwnProperty.call(target, key)) {
+        obj[key] = target[key];
+      }
+    }
+  }
+
+  return obj;
+}
+
+
+/**
+ * Marked
+ */
+
+function marked(src, opt, callback) {
+  if (callback || typeof opt === 'function') {
+    if (!callback) {
+      callback = opt;
+      opt = null;
+    }
+
+    opt = merge({}, marked.defaults, opt || {});
+
+    var highlight = opt.highlight
+      , tokens
+      , pending
+      , i = 0;
+
+    try {
+      tokens = Lexer.lex(src, opt)
+    } catch (e) {
+      return callback(e);
+    }
+
+    pending = tokens.length;
+
+    var done = function(err) {
+      if (err) {
+        opt.highlight = highlight;
+        return callback(err);
+      }
+
+      var out;
+
+      try {
+        out = Parser.parse(tokens, opt);
+      } catch (e) {
+        err = e;
+      }
+
+      opt.highlight = highlight;
+
+      return err
+        ? callback(err)
+        : callback(null, out);
+    };
+
+    if (!highlight || highlight.length < 3) {
+      return done();
+    }
+
+    delete opt.highlight;
+
+    if (!pending) return done();
+
+    for (; i < tokens.length; i++) {
+      (function(token) {
+        if (token.type !== 'code') {
+          return --pending || done();
+        }
+        return highlight(token.text, token.lang, function(err, code) {
+          if (err) return done(err);
+          if (code == null || code === token.text) {
+            return --pending || done();
+          }
+          token.text = code;
+          token.escaped = true;
+          --pending || done();
+        });
+      })(tokens[i]);
+    }
+
+    return;
+  }
+  try {
+    if (opt) opt = merge({}, marked.defaults, opt);
+    return Parser.parse(Lexer.lex(src, opt), opt);
+  } catch (e) {
+    e.message += '\nPlease report this to https://github.com/chjj/marked.';
+    if ((opt || marked.defaults).silent) {
+      return '<p>An error occured:</p><pre>'
+        + escape(e.message + '', true)
+        + '</pre>';
+    }
+    throw e;
+  }
+}
+
+/**
+ * Options
+ */
+
+marked.options =
+marked.setOptions = function(opt) {
+  merge(marked.defaults, opt);
+  return marked;
+};
+
+marked.defaults = {
+  gfm: true,
+  tables: true,
+  breaks: false,
+  pedantic: false,
+  sanitize: false,
+  smartLists: false,
+  silent: false,
+  highlight: null,
+  langPrefix: 'lang-',
+  smartypants: false,
+  headerPrefix: '',
+  renderer: new Renderer,
+  xhtml: false
+};
+
+/**
+ * Expose
+ */
+
+marked.Parser = Parser;
+marked.parser = Parser.parse;
+
+marked.Renderer = Renderer;
+
+marked.Lexer = Lexer;
+marked.lexer = Lexer.lex;
+
+marked.InlineLexer = InlineLexer;
+marked.inlineLexer = InlineLexer.output;
+
+marked.parse = marked;
+
+if (typeof module !== 'undefined' && typeof exports === 'object') {
+  module.exports = marked;
+} else if (typeof define === 'function' && define.amd) {
+  define(function() { return marked; });
+} else {
+  this.marked = marked;
+}
+
+}).call(function() {
+  return this || (typeof window !== 'undefined' ? window : global);
 }());
\ No newline at end of file
-/*\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-var require = function (file, cwd) {\r
-    var resolved = require.resolve(file, cwd || '/');\r
-    var mod = require.modules[resolved];\r
-    if (!mod) throw new Error(\r
-        'Failed to resolve module ' + file + ', tried ' + resolved\r
-    );\r
-    var res = mod._cached ? mod._cached : mod();\r
-    return res;\r
-}\r
-\r
-require.paths = [];\r
-require.modules = {};\r
-require.extensions = [".js",".coffee"];\r
-\r
-require._core = {\r
-    'assert': true,\r
-    'events': true,\r
-    'fs': true,\r
-    'path': true,\r
-    'vm': true\r
-};\r
-\r
-require.resolve = (function () {\r
-    return function (x, cwd) {\r
-        if (!cwd) cwd = '/';\r
-        \r
-        if (require._core[x]) return x;\r
-        var path = require.modules.path();\r
-        var y = cwd || '.';\r
-        \r
-        if (x.match(/^(?:\.\.?\/|\/)/)) {\r
-            var m = loadAsFileSync(path.resolve(y, x))\r
-                || loadAsDirectorySync(path.resolve(y, x));\r
-            if (m) return m;\r
-        }\r
-        \r
-        var n = loadNodeModulesSync(x, y);\r
-        if (n) return n;\r
-        \r
-        throw new Error("Cannot find module '" + x + "'");\r
-        \r
-        function loadAsFileSync (x) {\r
-            if (require.modules[x]) {\r
-                return x;\r
-            }\r
-            \r
-            for (var i = 0; i < require.extensions.length; i++) {\r
-                var ext = require.extensions[i];\r
-                if (require.modules[x + ext]) return x + ext;\r
-            }\r
-        }\r
-        \r
-        function loadAsDirectorySync (x) {\r
-            x = x.replace(/\/+$/, '');\r
-            var pkgfile = x + '/package.json';\r
-            if (require.modules[pkgfile]) {\r
-                var pkg = require.modules[pkgfile]();\r
-                var b = pkg.browserify;\r
-                if (typeof b === 'object' && b.main) {\r
-                    var m = loadAsFileSync(path.resolve(x, b.main));\r
-                    if (m) return m;\r
-                }\r
-                else if (typeof b === 'string') {\r
-                    var m = loadAsFileSync(path.resolve(x, b));\r
-                    if (m) return m;\r
-                }\r
-                else if (pkg.main) {\r
-                    var m = loadAsFileSync(path.resolve(x, pkg.main));\r
-                    if (m) return m;\r
-                }\r
-            }\r
-            \r
-            return loadAsFileSync(x + '/index');\r
-        }\r
-        \r
-        function loadNodeModulesSync (x, start) {\r
-            var dirs = nodeModulesPathsSync(start);\r
-            for (var i = 0; i < dirs.length; i++) {\r
-                var dir = dirs[i];\r
-                var m = loadAsFileSync(dir + '/' + x);\r
-                if (m) return m;\r
-                var n = loadAsDirectorySync(dir + '/' + x);\r
-                if (n) return n;\r
-            }\r
-            \r
-            var m = loadAsFileSync(x);\r
-            if (m) return m;\r
-        }\r
-        \r
-        function nodeModulesPathsSync (start) {\r
-            var parts;\r
-            if (start === '/') parts = [ '' ];\r
-            else parts = path.normalize(start).split('/');\r
-            \r
-            var dirs = [];\r
-            for (var i = parts.length - 1; i >= 0; i--) {\r
-                if (parts[i] === 'node_modules') continue;\r
-                var dir = parts.slice(0, i + 1).join('/') + '/node_modules';\r
-                dirs.push(dir);\r
-            }\r
-            \r
-            return dirs;\r
-        }\r
-    };\r
-})();\r
-\r
-require.alias = function (from, to) {\r
-    var path = require.modules.path();\r
-    var res = null;\r
-    try {\r
-        res = require.resolve(from + '/package.json', '/');\r
-    }\r
-    catch (err) {\r
-        res = require.resolve(from, '/');\r
-    }\r
-    var basedir = path.dirname(res);\r
-    \r
-    var keys = (Object.keys || function (obj) {\r
-        var res = [];\r
-        for (var key in obj) res.push(key)\r
-        return res;\r
-    })(require.modules);\r
-    \r
-    for (var i = 0; i < keys.length; i++) {\r
-        var key = keys[i];\r
-        if (key.slice(0, basedir.length + 1) === basedir + '/') {\r
-            var f = key.slice(basedir.length);\r
-            require.modules[to + f] = require.modules[basedir + f];\r
-        }\r
-        else if (key === basedir) {\r
-            require.modules[to] = require.modules[basedir];\r
-        }\r
-    }\r
-};\r
-\r
-require.define = function (filename, fn) {\r
-    var dirname = require._core[filename]\r
-        ? ''\r
-        : require.modules.path().dirname(filename)\r
-    ;\r
-    \r
-    var require_ = function (file) {\r
-        return require(file, dirname)\r
-    };\r
-    require_.resolve = function (name) {\r
-        return require.resolve(name, dirname);\r
-    };\r
-    require_.modules = require.modules;\r
-    require_.define = require.define;\r
-    var module_ = { exports : {} };\r
-    \r
-    require.modules[filename] = function () {\r
-        require.modules[filename]._cached = module_.exports;\r
-        fn.call(\r
-            module_.exports,\r
-            require_,\r
-            module_,\r
-            module_.exports,\r
-            dirname,\r
-            filename\r
-        );\r
-        require.modules[filename]._cached = module_.exports;\r
-        return module_.exports;\r
-    };\r
-};\r
-\r
-if (typeof process === 'undefined') process = {};\r
-\r
-if (!process.nextTick) process.nextTick = (function () {\r
-    var queue = [];\r
-    var canPost = typeof window !== 'undefined'\r
-        && window.postMessage && window.addEventListener\r
-    ;\r
-    \r
-    if (canPost) {\r
-        window.addEventListener('message', function (ev) {\r
-            if (ev.source === window && ev.data === 'browserify-tick') {\r
-                ev.stopPropagation();\r
-                if (queue.length > 0) {\r
-                    var fn = queue.shift();\r
-                    fn();\r
-                }\r
-            }\r
-        }, true);\r
-    }\r
-    \r
-    return function (fn) {\r
-        if (canPost) {\r
-            queue.push(fn);\r
-            window.postMessage('browserify-tick', '*');\r
-        }\r
-        else setTimeout(fn, 0);\r
-    };\r
-})();\r
-\r
-if (!process.title) process.title = 'browser';\r
-\r
-if (!process.binding) process.binding = function (name) {\r
-    if (name === 'evals') return require('vm')\r
-    else throw new Error('No such module')\r
-};\r
-\r
-if (!process.cwd) process.cwd = function () { return '.' };\r
-\r
-require.define("path", function (require, module, exports, __dirname, __filename) {\r
-    function filter (xs, fn) {\r
-    var res = [];\r
-    for (var i = 0; i < xs.length; i++) {\r
-        if (fn(xs[i], i, xs)) res.push(xs[i]);\r
-    }\r
-    return res;\r
-}\r
-\r
-// resolves . and .. elements in a path array with directory names there\r
-// must be no slashes, empty elements, or device names (c:\) in the array\r
-// (so also no leading and trailing slashes - it does not distinguish\r
-// relative and absolute paths)\r
-function normalizeArray(parts, allowAboveRoot) {\r
-  // if the path tries to go above the root, `up` ends up > 0\r
-  var up = 0;\r
-  for (var i = parts.length; i >= 0; i--) {\r
-    var last = parts[i];\r
-    if (last == '.') {\r
-      parts.splice(i, 1);\r
-    } else if (last === '..') {\r
-      parts.splice(i, 1);\r
-      up++;\r
-    } else if (up) {\r
-      parts.splice(i, 1);\r
-      up--;\r
-    }\r
-  }\r
-\r
-  // if the path is allowed to go above the root, restore leading ..s\r
-  if (allowAboveRoot) {\r
-    for (; up--; up) {\r
-      parts.unshift('..');\r
-    }\r
-  }\r
-\r
-  return parts;\r
-}\r
-\r
-// Regex to split a filename into [*, dir, basename, ext]\r
-// posix version\r
-var splitPathRe = /^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/;\r
-\r
-// path.resolve([from ...], to)\r
-// posix version\r
-exports.resolve = function() {\r
-var resolvedPath = '',\r
-    resolvedAbsolute = false;\r
-\r
-for (var i = arguments.length; i >= -1 && !resolvedAbsolute; i--) {\r
-  var path = (i >= 0)\r
-      ? arguments[i]\r
-      : process.cwd();\r
-\r
-  // Skip empty and invalid entries\r
-  if (typeof path !== 'string' || !path) {\r
-    continue;\r
-  }\r
-\r
-  resolvedPath = path + '/' + resolvedPath;\r
-  resolvedAbsolute = path.charAt(0) === '/';\r
-}\r
-\r
-// At this point the path should be resolved to a full absolute path, but\r
-// handle relative paths to be safe (might happen when process.cwd() fails)\r
-\r
-// Normalize the path\r
-resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\r
-    return !!p;\r
-  }), !resolvedAbsolute).join('/');\r
-\r
-  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\r
-};\r
-\r
-// path.normalize(path)\r
-// posix version\r
-exports.normalize = function(path) {\r
-var isAbsolute = path.charAt(0) === '/',\r
-    trailingSlash = path.slice(-1) === '/';\r
-\r
-// Normalize the path\r
-path = normalizeArray(filter(path.split('/'), function(p) {\r
-    return !!p;\r
-  }), !isAbsolute).join('/');\r
-\r
-  if (!path && !isAbsolute) {\r
-    path = '.';\r
-  }\r
-  if (path && trailingSlash) {\r
-    path += '/';\r
-  }\r
-  \r
-  return (isAbsolute ? '/' : '') + path;\r
-};\r
-\r
-\r
-// posix version\r
-exports.join = function() {\r
-  var paths = Array.prototype.slice.call(arguments, 0);\r
-  return exports.normalize(filter(paths, function(p, index) {\r
-    return p && typeof p === 'string';\r
-  }).join('/'));\r
-};\r
-\r
-\r
-exports.dirname = function(path) {\r
-  var dir = splitPathRe.exec(path)[1] || '';\r
-  var isWindows = false;\r
-  if (!dir) {\r
-    // No dirname\r
-    return '.';\r
-  } else if (dir.length === 1 ||\r
-      (isWindows && dir.length <= 3 && dir.charAt(1) === ':')) {\r
-    // It is just a slash or a drive letter with a slash\r
-    return dir;\r
-  } else {\r
-    // It is a full dirname, strip trailing slash\r
-    return dir.substring(0, dir.length - 1);\r
-  }\r
-};\r
-\r
-\r
-exports.basename = function(path, ext) {\r
-  var f = splitPathRe.exec(path)[2] || '';\r
-  // TODO: make this comparison case-insensitive on windows?\r
-  if (ext && f.substr(-1 * ext.length) === ext) {\r
-    f = f.substr(0, f.length - ext.length);\r
-  }\r
-  return f;\r
-};\r
-\r
-\r
-exports.extname = function(path) {\r
-  return splitPathRe.exec(path)[3] || '';\r
-};\r
-\r
-});\r
-\r
-require.define("/shred.js", function (require, module, exports, __dirname, __filename) {\r
-    // Shred is an HTTP client library intended to simplify the use of Node's\r
-// built-in HTTP library. In particular, we wanted to make it easier to interact\r
-// with HTTP-based APIs.\r
-// \r
-// See the [examples](./examples.html) for more details.\r
-\r
-// Ax is a nice logging library we wrote. You can use any logger, providing it\r
-// has `info`, `warn`, `debug`, and `error` methods that take a string.\r
-var Ax = require("ax")\r
-  , CookieJarLib = require( "cookiejar" )\r
-  , CookieJar = CookieJarLib.CookieJar\r
-;\r
-\r
-// Shred takes some options, including a logger and request defaults.\r
-\r
-var Shred = function(options) {\r
-  options = (options||{});\r
-  this.agent = options.agent;\r
-  this.defaults = options.defaults||{};\r
-  this.log = options.logger||(new Ax({ level: "info" }));\r
-  this._sharedCookieJar = new CookieJar();\r
-  this.logCurl = options.logCurl || false;\r
-};\r
-\r
-// Most of the real work is done in the request and reponse classes.\r
\r
-Shred.Request = require("./shred/request");\r
-Shred.Response = require("./shred/response");\r
-\r
-// The `request` method kicks off a new request, instantiating a new `Request`\r
-// object and passing along whatever default options we were given.\r
-\r
-Shred.prototype = {\r
-  request: function(options) {\r
-    options.logger = this.log;\r
-    options.logCurl = options.logCurl || this.logCurl;\r
-    options.cookieJar = ( 'cookieJar' in options ) ? options.cookieJar : this._sharedCookieJar; // let them set cookieJar = null\r
-    options.agent = options.agent || this.agent;\r
-    // fill in default options\r
-    for (var key in this.defaults) {\r
-      if (this.defaults.hasOwnProperty(key) && !options[key]) {\r
-        options[key] = this.defaults[key]\r
-      }\r
-    }\r
-    return new Shred.Request(options);\r
-  }\r
-};\r
-\r
-// Define a bunch of convenience methods so that you don't have to include\r
-// a `method` property in your request options.\r
-\r
-"get put post delete".split(" ").forEach(function(method) {\r
-  Shred.prototype[method] = function(options) {\r
-    options.method = method;\r
-    return this.request(options);\r
-  };\r
-});\r
-\r
-\r
-module.exports = Shred;\r
-\r
-});\r
-\r
-require.define("/node_modules/ax/package.json", function (require, module, exports, __dirname, __filename) {\r
-    module.exports = {"main":"./lib/ax.js"}\r
-});\r
-\r
-require.define("/node_modules/ax/lib/ax.js", function (require, module, exports, __dirname, __filename) {\r
-    var inspect = require("util").inspect\r
-  , fs = require("fs")\r
-;\r
-\r
-\r
-// this is a quick-and-dirty logger. there are other nicer loggers out there\r
-// but the ones i found were also somewhat involved. this one has a Ruby\r
-// logger type interface\r
-//\r
-// we can easily replace this, provide the info, debug, etc. methods are the\r
-// same. or, we can change Haiku to use a more standard node.js interface\r
-\r
-var format = function(level,message) {\r
-  var debug = (level=="debug"||level=="error");\r
-  if (!message) { return message.toString(); }\r
-  if (typeof(message) == "object") {\r
-    if (message instanceof Error && debug) {\r
-      return message.stack;\r
-    } else {\r
-      return inspect(message);\r
-    }\r
-  } else {\r
-    return message.toString();\r
-  }\r
-};\r
-\r
-var noOp = function(message) { return this; }\r
-var makeLogger = function(level,fn) {\r
-  return function(message) { \r
-    this.stream.write(this.format(level, message)+"\n");\r
-    return this;\r
-  }\r
-};\r
-\r
-var Logger = function(options) {\r
-  var logger = this;\r
-  var options = options||{};\r
-\r
-  // Default options\r
-  options.level = options.level || "info";\r
-  options.timestamp = options.timestamp || true;\r
-  options.prefix = options.prefix || "";\r
-  logger.options = options;\r
-\r
-  // Allows a prefix to be added to the message.\r
-  //\r
-  //    var logger = new Ax({ module: 'Haiku' })\r
-  //    logger.warn('this is going to be awesome!');\r
-  //    //=> Haiku: this is going to be awesome!\r
-  //\r
-  if (logger.options.module){\r
-    logger.options.prefix = logger.options.module;\r
-  }\r
-\r
-  // Write to stderr or a file\r
-  if (logger.options.file){\r
-    logger.stream = fs.createWriteStream(logger.options.file, {"flags": "a"});\r
-  } else {\r
-      if(process.title === "node")\r
-    logger.stream = process.stderr;\r
-      else if(process.title === "browser")\r
-    logger.stream = function () {\r
-      // Work around weird console context issue: http://code.google.com/p/chromium/issues/detail?id=48662\r
-      return console[logger.options.level].apply(console, arguments);\r
-    };\r
-  }\r
-\r
-  switch(logger.options.level){\r
-    case 'debug':\r
-      ['debug', 'info', 'warn'].forEach(function (level) {\r
-        logger[level] = Logger.writer(level);\r
-      });\r
-    case 'info':\r
-      ['info', 'warn'].forEach(function (level) {\r
-        logger[level] = Logger.writer(level);\r
-      });\r
-    case 'warn':\r
-      logger.warn = Logger.writer('warn');\r
-  }\r
-}\r
-\r
-// Used to define logger methods\r
-Logger.writer = function(level){\r
-  return function(message){\r
-    var logger = this;\r
-\r
-    if(process.title === "node")\r
-  logger.stream.write(logger.format(level, message) + '\n');\r
-    else if(process.title === "browser")\r
-  logger.stream(logger.format(level, message) + '\n');\r
-\r
-  };\r
-}\r
-\r
-\r
-Logger.prototype = {\r
-  info: function(){},\r
-  debug: function(){},\r
-  warn: function(){},\r
-  error: Logger.writer('error'),\r
-  format: function(level, message){\r
-    if (! message) return '';\r
-\r
-    var logger = this\r
-      , prefix = logger.options.prefix\r
-      , timestamp = logger.options.timestamp ? " " + (new Date().toISOString()) : ""\r
-    ;\r
-\r
-    return (prefix + timestamp + ": " + message);\r
-  }\r
-};\r
-\r
-module.exports = Logger;\r
-\r
-});\r
-\r
-require.define("util", function (require, module, exports, __dirname, __filename) {\r
-    // todo\r
-\r
-});\r
-\r
-require.define("fs", function (require, module, exports, __dirname, __filename) {\r
-    // nothing to see here... no file methods for the browser\r
-\r
-});\r
-\r
-require.define("/node_modules/cookiejar/package.json", function (require, module, exports, __dirname, __filename) {\r
-    module.exports = {"main":"cookiejar.js"}\r
-});\r
-\r
-require.define("/node_modules/cookiejar/cookiejar.js", function (require, module, exports, __dirname, __filename) {\r
-    exports.CookieAccessInfo=CookieAccessInfo=function CookieAccessInfo(domain,path,secure,script) {\r
-    if(this instanceof CookieAccessInfo) {\r
-      this.domain=domain||undefined;\r
-      this.path=path||"/";\r
-      this.secure=!!secure;\r
-      this.script=!!script;\r
-      return this;\r
-    }\r
-    else {\r
-        return new CookieAccessInfo(domain,path,secure,script)    \r
-    }\r
-}\r
-\r
-exports.Cookie=Cookie=function Cookie(cookiestr) {\r
-  if(cookiestr instanceof Cookie) {\r
-    return cookiestr;\r
-  }\r
-    else {\r
-        if(this instanceof Cookie) {\r
-          this.name = null;\r
-          this.value = null;\r
-          this.expiration_date = Infinity;\r
-          this.path = "/";\r
-          this.domain = null;\r
-          this.secure = false; //how to define?\r
-          this.noscript = false; //httponly\r
-          if(cookiestr) {\r
-            this.parse(cookiestr)\r
-          }\r
-          return this;\r
-        }\r
-        return new Cookie(cookiestr)\r
-    }\r
-}\r
-\r
-Cookie.prototype.toString = function toString() {\r
-  var str=[this.name+"="+this.value];\r
-  if(this.expiration_date !== Infinity) {\r
-    str.push("expires="+(new Date(this.expiration_date)).toGMTString());\r
-  }\r
-  if(this.domain) {\r
-    str.push("domain="+this.domain);\r
-  }\r
-  if(this.path) {\r
-    str.push("path="+this.path);\r
-  }\r
-  if(this.secure) {\r
-    str.push("secure");\r
-  }\r
-  if(this.noscript) {\r
-    str.push("httponly");\r
-  }\r
-  return str.join("; ");\r
-}\r
-\r
-Cookie.prototype.toValueString = function toValueString() {\r
-  return this.name+"="+this.value;\r
-}\r
-\r
-var cookie_str_splitter=/[:](?=\s*[a-zA-Z0-9_\-]+\s*[=])/g\r
-Cookie.prototype.parse = function parse(str) {\r
-  if(this instanceof Cookie) {\r
-      var parts=str.split(";")\r
-      , pair=parts[0].match(/([^=]+)=((?:.|\n)*)/)\r
-      , key=pair[1]\r
-      , value=pair[2];\r
-      this.name = key;\r
-      this.value = value;\r
-    \r
-      for(var i=1;i<parts.length;i++) {\r
-        pair=parts[i].match(/([^=]+)(?:=((?:.|\n)*))?/)\r
-        , key=pair[1].trim().toLowerCase()\r
-        , value=pair[2];\r
-        switch(key) {\r
-          case "httponly":\r
-            this.noscript = true;\r
-          break;\r
-          case "expires":\r
-            this.expiration_date = value\r
-              ? Number(Date.parse(value))\r
-              : Infinity;\r
-          break;\r
-          case "path":\r
-            this.path = value\r
-              ? value.trim()\r
-              : "";\r
-          break;\r
-          case "domain":\r
-            this.domain = value\r
-              ? value.trim()\r
-              : "";\r
-          break;\r
-          case "secure":\r
-            this.secure = true;\r
-          break\r
-        }\r
-      }\r
-    \r
-      return this;\r
-  }\r
-    return new Cookie().parse(str)\r
-}\r
-\r
-Cookie.prototype.matches = function matches(access_info) {\r
-  if(this.noscript && access_info.script\r
-  || this.secure && !access_info.secure\r
-  || !this.collidesWith(access_info)) {\r
-    return false\r
-  }\r
-  return true;\r
-}\r
-\r
-Cookie.prototype.collidesWith = function collidesWith(access_info) {\r
-  if((this.path && !access_info.path) || (this.domain && !access_info.domain)) {\r
-    return false\r
-  }\r
-  if(this.path && access_info.path.indexOf(this.path) !== 0) {\r
-    return false;\r
-  }\r
-  if (this.domain===access_info.domain) {\r
-    return true;\r
-  }\r
-  else if(this.domain && this.domain.charAt(0)===".")\r
-  {\r
-    var wildcard=access_info.domain.indexOf(this.domain.slice(1))\r
-    if(wildcard===-1 || wildcard!==access_info.domain.length-this.domain.length+1) {\r
-      return false;\r
-    }\r
-  }\r
-  else if(this.domain){\r
-    return false\r
-  }\r
-  return true;\r
-}\r
-\r
-exports.CookieJar=CookieJar=function CookieJar() {\r
-  if(this instanceof CookieJar) {\r
-      var cookies = {} //name: [Cookie]\r
-    \r
-      this.setCookie = function setCookie(cookie) {\r
-        cookie = Cookie(cookie);\r
-        //Delete the cookie if the set is past the current time\r
-        var remove = cookie.expiration_date <= Date.now();\r
-        if(cookie.name in cookies) {\r
-          var cookies_list = cookies[cookie.name];\r
-          for(var i=0;i<cookies_list.length;i++) {\r
-            var collidable_cookie = cookies_list[i];\r
-            if(collidable_cookie.collidesWith(cookie)) {\r
-              if(remove) {\r
-                cookies_list.splice(i,1);\r
-                if(cookies_list.length===0) {\r
-                  delete cookies[cookie.name]\r
-                }\r
-                return false;\r
-              }\r
-              else {\r
-                return cookies_list[i]=cookie;\r
-              }\r
-            }\r
-          }\r
-          if(remove) {\r
-            return false;\r
-          }\r
-          cookies_list.push(cookie);\r
-          return cookie;\r
-        }\r
-        else if(remove){\r
-          return false;\r
-        }\r
-        else {\r
-          return cookies[cookie.name]=[cookie];\r
-        }\r
-      }\r
-      //returns a cookie\r
-      this.getCookie = function getCookie(cookie_name,access_info) {\r
-        var cookies_list = cookies[cookie_name];\r
-        for(var i=0;i<cookies_list.length;i++) {\r
-          var cookie = cookies_list[i];\r
-          if(cookie.expiration_date <= Date.now()) {\r
-            if(cookies_list.length===0) {\r
-              delete cookies[cookie.name]\r
-            }\r
-            continue;\r
-          }\r
-          if(cookie.matches(access_info)) {\r
-            return cookie;\r
-          }\r
-        }\r
-      }\r
-      //returns a list of cookies\r
-      this.getCookies = function getCookies(access_info) {\r
-        var matches=[];\r
-        for(var cookie_name in cookies) {\r
-          var cookie=this.getCookie(cookie_name,access_info);\r
-          if (cookie) {\r
-            matches.push(cookie);\r
-          }\r
-        }\r
-        matches.toString=function toString(){return matches.join(":");}\r
-            matches.toValueString=function() {return matches.map(function(c){return c.toValueString();}).join(';');}\r
-        return matches;\r
-      }\r
-    \r
-      return this;\r
-  }\r
-    return new CookieJar()\r
-}\r
-\r
-\r
-//returns list of cookies that were set correctly\r
-CookieJar.prototype.setCookies = function setCookies(cookies) {\r
-  cookies=Array.isArray(cookies)\r
-    ?cookies\r
-    :cookies.split(cookie_str_splitter);\r
-  var successful=[]\r
-  for(var i=0;i<cookies.length;i++) {\r
-    var cookie = Cookie(cookies[i]);\r
-    if(this.setCookie(cookie)) {\r
-      successful.push(cookie);\r
-    }\r
-  }\r
-  return successful;\r
-}\r
-\r
-});\r
-\r
-require.define("/shred/request.js", function (require, module, exports, __dirname, __filename) {\r
-    // The request object encapsulates a request, creating a Node.js HTTP request and\r
-// then handling the response.\r
-\r
-var HTTP = require("http")\r
-  , HTTPS = require("https")\r
-  , parseUri = require("./parseUri")\r
-  , Emitter = require('events').EventEmitter\r
-  , sprintf = require("sprintf").sprintf\r
-  , Response = require("./response")\r
-  , HeaderMixins = require("./mixins/headers")\r
-  , Content = require("./content")\r
-;\r
-\r
-var STATUS_CODES = HTTP.STATUS_CODES || {\r
-    100 : 'Continue',\r
-    101 : 'Switching Protocols',\r
-    102 : 'Processing', // RFC 2518, obsoleted by RFC 4918\r
-    200 : 'OK',\r
-    201 : 'Created',\r
-    202 : 'Accepted',\r
-    203 : 'Non-Authoritative Information',\r
-    204 : 'No Content',\r
-    205 : 'Reset Content',\r
-    206 : 'Partial Content',\r
-    207 : 'Multi-Status', // RFC 4918\r
-    300 : 'Multiple Choices',\r
-    301 : 'Moved Permanently',\r
-    302 : 'Moved Temporarily',\r
-    303 : 'See Other',\r
-    304 : 'Not Modified',\r
-    305 : 'Use Proxy',\r
-    307 : 'Temporary Redirect',\r
-    400 : 'Bad Request',\r
-    401 : 'Unauthorized',\r
-    402 : 'Payment Required',\r
-    403 : 'Forbidden',\r
-    404 : 'Not Found',\r
-    405 : 'Method Not Allowed',\r
-    406 : 'Not Acceptable',\r
-    407 : 'Proxy Authentication Required',\r
-    408 : 'Request Time-out',\r
-    409 : 'Conflict',\r
-    410 : 'Gone',\r
-    411 : 'Length Required',\r
-    412 : 'Precondition Failed',\r
-    413 : 'Request Entity Too Large',\r
-    414 : 'Request-URI Too Large',\r
-    415 : 'Unsupported Media Type',\r
-    416 : 'Requested Range Not Satisfiable',\r
-    417 : 'Expectation Failed',\r
-    418 : 'I\'m a teapot', // RFC 2324\r
-    422 : 'Unprocessable Entity', // RFC 4918\r
-    423 : 'Locked', // RFC 4918\r
-    424 : 'Failed Dependency', // RFC 4918\r
-    425 : 'Unordered Collection', // RFC 4918\r
-    426 : 'Upgrade Required', // RFC 2817\r
-    500 : 'Internal Server Error',\r
-    501 : 'Not Implemented',\r
-    502 : 'Bad Gateway',\r
-    503 : 'Service Unavailable',\r
-    504 : 'Gateway Time-out',\r
-    505 : 'HTTP Version not supported',\r
-    506 : 'Variant Also Negotiates', // RFC 2295\r
-    507 : 'Insufficient Storage', // RFC 4918\r
-    509 : 'Bandwidth Limit Exceeded',\r
-    510 : 'Not Extended' // RFC 2774\r
-};\r
-\r
-// The Shred object itself constructs the `Request` object. You should rarely\r
-// need to do this directly.\r
-\r
-var Request = function(options) {\r
-  this.log = options.logger;\r
-  this.cookieJar = options.cookieJar;\r
-  this.encoding = options.encoding;\r
-  this.logCurl = options.logCurl;\r
-  processOptions(this,options||{});\r
-  createRequest(this);\r
-};\r
-\r
-// A `Request` has a number of properties, many of which help with details like\r
-// URL parsing or defaulting the port for the request.\r
-\r
-Object.defineProperties(Request.prototype, {\r
-\r
-// - **url**. You can set the `url` property with a valid URL string and all the\r
-//   URL-related properties (host, port, etc.) will be automatically set on the\r
-//   request object.\r
-\r
-  url: {\r
-    get: function() {\r
-      if (!this.scheme) { return null; }\r
-      return sprintf("%s://%s:%s%s",\r
-          this.scheme, this.host, this.port,\r
-          (this.proxy ? "/" : this.path) +\r
-          (this.query ? ("?" + this.query) : ""));\r
-    },\r
-    set: function(_url) {\r
-      _url = parseUri(_url);\r
-      this.scheme = _url.protocol;\r
-      this.host = _url.host;\r
-      this.port = _url.port;\r
-      this.path = _url.path;\r
-      this.query = _url.query;\r
-      return this;\r
-    },\r
-    enumerable: true\r
-  },\r
-\r
-// - **headers**. Returns a hash representing the request headers. You can't set\r
-//   this directly, only get it. You can add or modify headers by using the\r
-//   `setHeader` or `setHeaders` method. This ensures that the headers are\r
-//   normalized - that is, you don't accidentally send `Content-Type` and\r
-//   `content-type` headers. Keep in mind that if you modify the returned hash,\r
-//   it will *not* modify the request headers.\r
-\r
-  headers: {\r
-    get: function() {\r
-      return this.getHeaders();\r
-    },\r
-    enumerable: true\r
-  },\r
-\r
-// - **port**. Unless you set the `port` explicitly or include it in the URL, it\r
-//   will default based on the scheme.\r
-\r
-  port: {\r
-    get: function() {\r
-      if (!this._port) {\r
-        switch(this.scheme) {\r
-          case "https": return this._port = 443;\r
-          case "http":\r
-          default: return this._port = 80;\r
-        }\r
-      }\r
-      return this._port;\r
-    },\r
-    set: function(value) { this._port = value; return this; },\r
-    enumerable: true\r
-  },\r
-\r
-// - **method**. The request method - `get`, `put`, `post`, etc. that will be\r
-//   used to make the request. Defaults to `get`.\r
-\r
-  method: {\r
-    get: function() {\r
-      return this._method = (this._method||"GET");\r
-    },\r
-    set: function(value) {\r
-      this._method = value; return this;\r
-    },\r
-    enumerable: true\r
-  },\r
-\r
-// - **query**. Can be set either with a query string or a hash (object). Get\r
-//   will always return a properly escaped query string or null if there is no\r
-//   query component for the request.\r
-\r
-  query: {\r
-    get: function() {return this._query;},\r
-    set: function(value) {\r
-      var stringify = function (hash) {\r
-        var query = "";\r
-        for (var key in hash) {\r
-          query += encodeURIComponent(key) + '=' + encodeURIComponent(hash[key]) + '&';\r
-        }\r
-        // Remove the last '&'\r
-        query = query.slice(0, -1);\r
-        return query;\r
-      }\r
-\r
-      if (value) {\r
-        if (typeof value === 'object') {\r
-          value = stringify(value);\r
-        }\r
-        this._query = value;\r
-      } else {\r
-        this._query = "";\r
-      }\r
-      return this;\r
-    },\r
-    enumerable: true\r
-  },\r
-\r
-// - **parameters**. This will return the query parameters in the form of a hash\r
-//   (object).\r
-\r
-  parameters: {\r
-    get: function() { return QueryString.parse(this._query||""); },\r
-    enumerable: true\r
-  },\r
-\r
-// - **content**. (Aliased as `body`.) Set this to add a content entity to the\r
-//   request. Attempts to use the `content-type` header to determine what to do\r
-//   with the content value. Get this to get back a [`Content`\r
-//   object](./content.html).\r
-\r
-  body: {\r
-    get: function() { return this._body; },\r
-    set: function(value) {\r
-      this._body = new Content({\r
-        data: value,\r
-        type: this.getHeader("Content-Type")\r
-      });\r
-      this.setHeader("Content-Type",this.content.type);\r
-      this.setHeader("Content-Length",this.content.length);\r
-      return this;\r
-    },\r
-    enumerable: true\r
-  },\r
-\r
-// - **timeout**. Used to determine how long to wait for a response. Does not\r
-//   distinguish between connect timeouts versus request timeouts. Set either in\r
-//   milliseconds or with an object with temporal attributes (hours, minutes,\r
-//   seconds) and convert it into milliseconds. Get will always return\r
-//   milliseconds.\r
-\r
-  timeout: {\r
-    get: function() { return this._timeout; }, // in milliseconds\r
-    set: function(timeout) {\r
-      var request = this\r
-        , milliseconds = 0;\r
-      ;\r
-      if (!timeout) return this;\r
-      if (typeof timeout==="number") { milliseconds = timeout; }\r
-      else {\r
-        milliseconds = (timeout.milliseconds||0) +\r
-          (1000 * ((timeout.seconds||0) +\r
-              (60 * ((timeout.minutes||0) +\r
-                (60 * (timeout.hours||0))))));\r
-      }\r
-      this._timeout = milliseconds;\r
-      return this;\r
-    },\r
-    enumerable: true\r
-  }\r
-});\r
-\r
-// Alias `body` property to `content`. Since the [content object](./content.html)\r
-// has a `body` attribute, it's preferable to use `content` since you can then\r
-// access the raw content data using `content.body`.\r
-\r
-Object.defineProperty(Request.prototype,"content",\r
-    Object.getOwnPropertyDescriptor(Request.prototype, "body"));\r
-\r
-// The `Request` object can be pretty overwhelming to view using the built-in\r
-// Node.js inspect method. We want to make it a bit more manageable. This\r
-// probably goes [too far in the other\r
-// direction](https://github.com/spire-io/shred/issues/2).\r
-\r
-Request.prototype.inspect = function () {\r
-  var request = this;\r
-  var headers = this.format_headers();\r
-  var summary = ["<Shred Request> ", request.method.toUpperCase(),\r
-      request.url].join(" ")\r
-  return [ summary, "- Headers:", headers].join("\n");\r
-};\r
-\r
-Request.prototype.format_headers = function () {\r
-  var array = []\r
-  var headers = this._headers\r
-  for (var key in headers) {\r
-    if (headers.hasOwnProperty(key)) {\r
-      var value = headers[key]\r
-      array.push("\t" + key + ": " + value);\r
-    }\r
-  }\r
-  return array.join("\n");\r
-};\r
-\r
-// Allow chainable 'on's:  shred.get({ ... }).on( ... ).  You can pass in a\r
-// single function, a pair (event, function), or a hash:\r
-// { event: function, event: function }\r
-Request.prototype.on = function (eventOrHash, listener) {\r
-  var emitter = this.emitter;\r
-  // Pass in a single argument as a function then make it the default response handler\r
-  if (arguments.length === 1 && typeof(eventOrHash) === 'function') {\r
-    emitter.on('response', eventOrHash);\r
-  } else if (arguments.length === 1 && typeof(eventOrHash) === 'object') {\r
-    for (var key in eventOrHash) {\r
-      if (eventOrHash.hasOwnProperty(key)) {\r
-        emitter.on(key, eventOrHash[key]);\r
-      }\r
-    }\r
-  } else {\r
-    emitter.on(eventOrHash, listener);\r
-  }\r
-  return this;\r
-};\r
-\r
-// Add in the header methods. Again, these ensure we don't get the same header\r
-// multiple times with different case conventions.\r
-HeaderMixins.gettersAndSetters(Request);\r
-\r
-// `processOptions` is called from the constructor to handle all the work\r
-// associated with making sure we do our best to ensure we have a valid request.\r
-\r
-var processOptions = function(request,options) {\r
-\r
-  request.log.debug("Processing request options ..");\r
-\r
-  // We'll use `request.emitter` to manage the `on` event handlers.\r
-  request.emitter = (new Emitter);\r
-\r
-  request.agent = options.agent;\r
-\r
-  // Set up the handlers ...\r
-  if (options.on) {\r
-    for (var key in options.on) {\r
-      if (options.on.hasOwnProperty(key)) {\r
-        request.emitter.on(key, options.on[key]);\r
-      }\r
-    }\r
-  }\r
-\r
-  // Make sure we were give a URL or a host\r
-  if (!options.url && !options.host) {\r
-    request.emitter.emit("request_error",\r
-        new Error("No url or url options (host, port, etc.)"));\r
-    return;\r
-  }\r
-\r
-  // Allow for the [use of a proxy](http://www.jmarshall.com/easy/http/#proxies).\r
-\r
-  if (options.url) {\r
-    if (options.proxy) {\r
-      request.url = options.proxy;\r
-      request.path = options.url;\r
-    } else {\r
-      request.url = options.url;\r
-    }\r
-  }\r
-\r
-  // Set the remaining options.\r
-  request.query = options.query||options.parameters||request.query ;\r
-  request.method = options.method;\r
-  request.setHeader("user-agent",options.agent||"Shred");\r
-  request.setHeaders(options.headers);\r
-\r
-  if (request.cookieJar) {\r
-    var cookies = request.cookieJar.getCookies( CookieAccessInfo( request.host, request.path ) );\r
-    if (cookies.length) {\r
-      var cookieString = request.getHeader('cookie')||'';\r
-      for (var cookieIndex = 0; cookieIndex < cookies.length; ++cookieIndex) {\r
-          if ( cookieString.length && cookieString[ cookieString.length - 1 ] != ';' )\r
-          {\r
-              cookieString += ';';\r
-          }\r
-          cookieString += cookies[ cookieIndex ].name + '=' + cookies[ cookieIndex ].value + ';';\r
-      }\r
-      request.setHeader("cookie", cookieString);\r
-    }\r
-  }\r
-  \r
-  // The content entity can be set either using the `body` or `content` attributes.\r
-  if (options.body||options.content) {\r
-    request.content = options.body||options.content;\r
-  }\r
-  request.timeout = options.timeout;\r
-\r
-};\r
-\r
-// `createRequest` is also called by the constructor, after `processOptions`.\r
-// This actually makes the request and processes the response, so `createRequest`\r
-// is a bit of a misnomer.\r
-\r
-var createRequest = function(request) {\r
-  var timeout ;\r
-\r
-  request.log.debug("Creating request ..");\r
-  request.log.debug(request);\r
-\r
-  var reqParams = {\r
-    host: request.host,\r
-    port: request.port,\r
-    method: request.method,\r
-    path: request.path + (request.query ? '?'+request.query : ""),\r
-    headers: request.getHeaders(),\r
-    // Node's HTTP/S modules will ignore this, but we are using the\r
-    // browserify-http module in the browser for both HTTP and HTTPS, and this\r
-    // is how you differentiate the two.\r
-    scheme: request.scheme,\r
-    // Use a provided agent.  'Undefined' is the default, which uses a global\r
-    // agent.\r
-    agent: request.agent\r
-  };\r
-\r
-  if (request.logCurl) {\r
-    logCurl(request);\r
-  }\r
-\r
-  var http = request.scheme == "http" ? HTTP : HTTPS;\r
-\r
-  // Set up the real request using the selected library. The request won't be\r
-  // sent until we call `.end()`.\r
-  request._raw = http.request(reqParams, function(response) {\r
-    request.log.debug("Received response ..");\r
-\r
-    // We haven't timed out and we have a response, so make sure we clear the\r
-    // timeout so it doesn't fire while we're processing the response.\r
-    clearTimeout(timeout);\r
-\r
-    // Construct a Shred `Response` object from the response. This will stream\r
-    // the response, thus the need for the callback. We can access the response\r
-    // entity safely once we're in the callback.\r
-    response = new Response(response, request, function(response) {\r
-\r
-      // Set up some event magic. The precedence is given first to\r
-      // status-specific handlers, then to responses for a given event, and then\r
-      // finally to the more general `response` handler. In the last case, we\r
-      // need to first make sure we're not dealing with a a redirect.\r
-      var emit = function(event) {\r
-        var emitter = request.emitter;\r
-        var textStatus = STATUS_CODES[response.status] ? STATUS_CODES[response.status].toLowerCase() : null;\r
-        if (emitter.listeners(response.status).length > 0 || emitter.listeners(textStatus).length > 0) {\r
-          emitter.emit(response.status, response);\r
-          emitter.emit(textStatus, response);\r
-        } else {\r
-          if (emitter.listeners(event).length>0) {\r
-            emitter.emit(event, response);\r
-          } else if (!response.isRedirect) {\r
-            emitter.emit("response", response);\r
-            //console.warn("Request has no event listener for status code " + response.status);\r
-          }\r
-        }\r
-      };\r
-\r
-      // Next, check for a redirect. We simply repeat the request with the URL\r
-      // given in the `Location` header. We fire a `redirect` event.\r
-      if (response.isRedirect) {\r
-        request.log.debug("Redirecting to "\r
-            + response.getHeader("Location"));\r
-        request.url = response.getHeader("Location");\r
-        emit("redirect");\r
-        createRequest(request);\r
-\r
-      // Okay, it's not a redirect. Is it an error of some kind?\r
-      } else if (response.isError) {\r
-        emit("error");\r
-      } else {\r
-      // It looks like we're good shape. Trigger the `success` event.\r
-        emit("success");\r
-      }\r
-    });\r
-  });\r
-\r
-  // We're still setting up the request. Next, we're going to handle error cases\r
-  // where we have no response. We don't emit an error event because that event\r
-  // takes a response. We don't response handlers to have to check for a null\r
-  // value. However, we [should introduce a different event\r
-  // type](https://github.com/spire-io/shred/issues/3) for this type of error.\r
-  request._raw.on("error", function(error) {\r
-    request.emitter.emit("request_error", error);\r
-  });\r
-\r
-  request._raw.on("socket", function(socket) {\r
-    request.emitter.emit("socket", socket);\r
-  });\r
-\r
-  // TCP timeouts should also trigger the "response_error" event.\r
-  request._raw.on('socket', function () {\r
-    request._raw.socket.on('timeout', function () {\r
-      // This should trigger the "error" event on the raw request, which will\r
-      // trigger the "response_error" on the shred request.\r
-      request._raw.abort();\r
-    });\r
-  });\r
-\r
-\r
-  // We're almost there. Next, we need to write the request entity to the\r
-  // underlying request object.\r
-  if (request.content) {\r
-    request.log.debug("Streaming body: '" +\r
-        request.content.data.slice(0,59) + "' ... ");\r
-    request._raw.write(request.content.data);\r
-  }\r
-\r
-  // Finally, we need to set up the timeout. We do this last so that we don't\r
-  // start the clock ticking until the last possible moment.\r
-  if (request.timeout) {\r
-    timeout = setTimeout(function() {\r
-      request.log.debug("Timeout fired, aborting request ...");\r
-      request._raw.abort();\r
-      request.emitter.emit("timeout", request);\r
-    },request.timeout);\r
-  }\r
-\r
-  // The `.end()` method will cause the request to fire. Technically, it might\r
-  // have already sent the headers and body.\r
-  request.log.debug("Sending request ...");\r
-  request._raw.end();\r
-};\r
-\r
-// Logs the curl command for the request.\r
-var logCurl = function (req) {\r
-  var headers = req.getHeaders();\r
-  var headerString = "";\r
-\r
-  for (var key in headers) {\r
-    headerString += '-H "' + key + ": " + headers[key] + '" ';\r
-  }\r
-\r
-  var bodyString = ""\r
-\r
-  if (req.content) {\r
-    bodyString += "-d '" + req.content.body + "' ";\r
-  }\r
-\r
-  var query = req.query ? '?' + req.query : "";\r
-\r
-  console.log("curl " +\r
-    "-X " + req.method.toUpperCase() + " " +\r
-    req.scheme + "://" + req.host + ":" + req.port + req.path + query + " " +\r
-    headerString +\r
-    bodyString\r
-  );\r
-};\r
-\r
-\r
-module.exports = Request;\r
-\r
-});\r
-\r
-require.define("http", function (require, module, exports, __dirname, __filename) {\r
-    // todo\r
-\r
-});\r
-\r
-require.define("https", function (require, module, exports, __dirname, __filename) {\r
-    // todo\r
-\r
-});\r
-\r
-require.define("/shred/parseUri.js", function (require, module, exports, __dirname, __filename) {\r
-    // parseUri 1.2.2\r
-// (c) Steven Levithan <stevenlevithan.com>\r
-// MIT License\r
-\r
-function parseUri (str) {\r
-  var o   = parseUri.options,\r
-    m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),\r
-    uri = {},\r
-    i   = 14;\r
-\r
-  while (i--) uri[o.key[i]] = m[i] || "";\r
-\r
-  uri[o.q.name] = {};\r
-  uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {\r
-    if ($1) uri[o.q.name][$1] = $2;\r
-  });\r
-\r
-  return uri;\r
-};\r
-\r
-parseUri.options = {\r
-  strictMode: false,\r
-  key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],\r
-  q:   {\r
-    name:   "queryKey",\r
-    parser: /(?:^|&)([^&=]*)=?([^&]*)/g\r
-  },\r
-  parser: {\r
-    strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,\r
-    loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/\r
-  }\r
-};\r
-\r
-module.exports = parseUri;\r
-\r
-});\r
-\r
-require.define("events", function (require, module, exports, __dirname, __filename) {\r
-    if (!process.EventEmitter) process.EventEmitter = function () {};\r
-\r
-var EventEmitter = exports.EventEmitter = process.EventEmitter;\r
-var isArray = typeof Array.isArray === 'function'\r
-    ? Array.isArray\r
-    : function (xs) {\r
-        return Object.toString.call(xs) === '[object Array]'\r
-    }\r
-;\r
-\r
-// By default EventEmitters will print a warning if more than\r
-// 10 listeners are added to it. This is a useful default which\r
-// helps finding memory leaks.\r
-//\r
-// Obviously not all Emitters should be limited to 10. This function allows\r
-// that to be increased. Set to zero for unlimited.\r
-var defaultMaxListeners = 10;\r
-EventEmitter.prototype.setMaxListeners = function(n) {\r
-  if (!this._events) this._events = {};\r
-  this._events.maxListeners = n;\r
-};\r
-\r
-\r
-EventEmitter.prototype.emit = function(type) {\r
-  // If there is no 'error' event listener then throw.\r
-  if (type === 'error') {\r
-    if (!this._events || !this._events.error ||\r
-        (isArray(this._events.error) && !this._events.error.length))\r
-    {\r
-      if (arguments[1] instanceof Error) {\r
-        throw arguments[1]; // Unhandled 'error' event\r
-      } else {\r
-        throw new Error("Uncaught, unspecified 'error' event.");\r
-      }\r
-      return false;\r
-    }\r
-  }\r
-\r
-  if (!this._events) return false;\r
-  var handler = this._events[type];\r
-  if (!handler) return false;\r
-\r
-  if (typeof handler == 'function') {\r
-    switch (arguments.length) {\r
-      // fast cases\r
-      case 1:\r
-        handler.call(this);\r
-        break;\r
-      case 2:\r
-        handler.call(this, arguments[1]);\r
-        break;\r
-      case 3:\r
-        handler.call(this, arguments[1], arguments[2]);\r
-        break;\r
-      // slower\r
-      default:\r
-        var args = Array.prototype.slice.call(arguments, 1);\r
-        handler.apply(this, args);\r
-    }\r
-    return true;\r
-\r
-  } else if (isArray(handler)) {\r
-    var args = Array.prototype.slice.call(arguments, 1);\r
-\r
-    var listeners = handler.slice();\r
-    for (var i = 0, l = listeners.length; i < l; i++) {\r
-      listeners[i].apply(this, args);\r
-    }\r
-    return true;\r
-\r
-  } else {\r
-    return false;\r
-  }\r
-};\r
-\r
-// EventEmitter is defined in src/node_events.cc\r
-// EventEmitter.prototype.emit() is also defined there.\r
-EventEmitter.prototype.addListener = function(type, listener) {\r
-  if ('function' !== typeof listener) {\r
-    throw new Error('addListener only takes instances of Function');\r
-  }\r
-\r
-  if (!this._events) this._events = {};\r
-\r
-  // To avoid recursion in the case that type == "newListeners"! Before\r
-  // adding it to the listeners, first emit "newListeners".\r
-  this.emit('newListener', type, listener);\r
-\r
-  if (!this._events[type]) {\r
-    // Optimize the case of one listener. Don't need the extra array object.\r
-    this._events[type] = listener;\r
-  } else if (isArray(this._events[type])) {\r
-\r
-    // Check for listener leak\r
-    if (!this._events[type].warned) {\r
-      var m;\r
-      if (this._events.maxListeners !== undefined) {\r
-        m = this._events.maxListeners;\r
-      } else {\r
-        m = defaultMaxListeners;\r
-      }\r
-\r
-      if (m && m > 0 && this._events[type].length > m) {\r
-        this._events[type].warned = true;\r
-        console.error('(node) warning: possible EventEmitter memory ' +\r
-                      'leak detected. %d listeners added. ' +\r
-                      'Use emitter.setMaxListeners() to increase limit.',\r
-                      this._events[type].length);\r
-        console.trace();\r
-      }\r
-    }\r
-\r
-    // If we've already got an array, just append.\r
-    this._events[type].push(listener);\r
-  } else {\r
-    // Adding the second element, need to change to array.\r
-    this._events[type] = [this._events[type], listener];\r
-  }\r
-\r
-  return this;\r
-};\r
-\r
-EventEmitter.prototype.on = EventEmitter.prototype.addListener;\r
-\r
-EventEmitter.prototype.once = function(type, listener) {\r
-  var self = this;\r
-  self.on(type, function g() {\r
-    self.removeListener(type, g);\r
-    listener.apply(this, arguments);\r
-  });\r
-\r
-  return this;\r
-};\r
-\r
-EventEmitter.prototype.removeListener = function(type, listener) {\r
-  if ('function' !== typeof listener) {\r
-    throw new Error('removeListener only takes instances of Function');\r
-  }\r
-\r
-  // does not use listeners(), so no side effect of creating _events[type]\r
-  if (!this._events || !this._events[type]) return this;\r
-\r
-  var list = this._events[type];\r
-\r
-  if (isArray(list)) {\r
-    var i = list.indexOf(listener);\r
-    if (i < 0) return this;\r
-    list.splice(i, 1);\r
-    if (list.length == 0)\r
-      delete this._events[type];\r
-  } else if (this._events[type] === listener) {\r
-    delete this._events[type];\r
-  }\r
-\r
-  return this;\r
-};\r
-\r
-EventEmitter.prototype.removeAllListeners = function(type) {\r
-  // does not use listeners(), so no side effect of creating _events[type]\r
-  if (type && this._events && this._events[type]) this._events[type] = null;\r
-  return this;\r
-};\r
-\r
-EventEmitter.prototype.listeners = function(type) {\r
-  if (!this._events) this._events = {};\r
-  if (!this._events[type]) this._events[type] = [];\r
-  if (!isArray(this._events[type])) {\r
-    this._events[type] = [this._events[type]];\r
-  }\r
-  return this._events[type];\r
-};\r
-\r
-});\r
-\r
-require.define("/node_modules/sprintf/package.json", function (require, module, exports, __dirname, __filename) {\r
-    module.exports = {"main":"./lib/sprintf"}\r
-});\r
-\r
-require.define("/node_modules/sprintf/lib/sprintf.js", function (require, module, exports, __dirname, __filename) {\r
-    /**\r
-sprintf() for JavaScript 0.7-beta1\r
-http://www.diveintojavascript.com/projects/javascript-sprintf\r
-\r
-Copyright (c) Alexandru Marasteanu <alexaholic [at) gmail (dot] com>\r
-All rights reserved.\r
-\r
-Redistribution and use in source and binary forms, with or without\r
-modification, are permitted provided that the following conditions are met:\r
-    * Redistributions of source code must retain the above copyright\r
-      notice, this list of conditions and the following disclaimer.\r
-    * Redistributions in binary form must reproduce the above copyright\r
-      notice, this list of conditions and the following disclaimer in the\r
-      documentation and/or other materials provided with the distribution.\r
-    * Neither the name of sprintf() for JavaScript nor the\r
-      names of its contributors may be used to endorse or promote products\r
-      derived from this software without specific prior written permission.\r
-\r
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND\r
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
-DISCLAIMED. IN NO EVENT SHALL Alexandru Marasteanu BE LIABLE FOR ANY\r
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
-\r
-\r
-Changelog:\r
-2010.11.07 - 0.7-beta1-node\r
-  - converted it to a node.js compatible module\r
-\r
-2010.09.06 - 0.7-beta1\r
-  - features: vsprintf, support for named placeholders\r
-  - enhancements: format cache, reduced global namespace pollution\r
-\r
-2010.05.22 - 0.6:\r
- - reverted to 0.4 and fixed the bug regarding the sign of the number 0\r
- Note:\r
- Thanks to Raphael Pigulla <raph (at] n3rd [dot) org> (http://www.n3rd.org/)\r
- who warned me about a bug in 0.5, I discovered that the last update was\r
- a regress. I appologize for that.\r
-\r
-2010.05.09 - 0.5:\r
- - bug fix: 0 is now preceeded with a + sign\r
- - bug fix: the sign was not at the right position on padded results (Kamal Abdali)\r
- - switched from GPL to BSD license\r
-\r
-2007.10.21 - 0.4:\r
- - unit test and patch (David Baird)\r
-\r
-2007.09.17 - 0.3:\r
- - bug fix: no longer throws exception on empty paramenters (Hans Pufal)\r
-\r
-2007.09.11 - 0.2:\r
- - feature: added argument swapping\r
-\r
-2007.04.03 - 0.1:\r
- - initial release\r
-**/\r
-\r
-var sprintf = (function() {\r
-  function get_type(variable) {\r
-    return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase();\r
-  }\r
-  function str_repeat(input, multiplier) {\r
-    for (var output = []; multiplier > 0; output[--multiplier] = input) {/* do nothing */}\r
-    return output.join('');\r
-  }\r
-\r
-  var str_format = function() {\r
-    if (!str_format.cache.hasOwnProperty(arguments[0])) {\r
-      str_format.cache[arguments[0]] = str_format.parse(arguments[0]);\r
-    }\r
-    return str_format.format.call(null, str_format.cache[arguments[0]], arguments);\r
-  };\r
-\r
-  str_format.format = function(parse_tree, argv) {\r
-    var cursor = 1, tree_length = parse_tree.length, node_type = '', arg, output = [], i, k, match, pad, pad_character, pad_length;\r
-    for (i = 0; i < tree_length; i++) {\r
-      node_type = get_type(parse_tree[i]);\r
-      if (node_type === 'string') {\r
-        output.push(parse_tree[i]);\r
-      }\r
-      else if (node_type === 'array') {\r
-        match = parse_tree[i]; // convenience purposes only\r
-        if (match[2]) { // keyword argument\r
-          arg = argv[cursor];\r
-          for (k = 0; k < match[2].length; k++) {\r
-            if (!arg.hasOwnProperty(match[2][k])) {\r
-              throw(sprintf('[sprintf] property "%s" does not exist', match[2][k]));\r
-            }\r
-            arg = arg[match[2][k]];\r
-          }\r
-        }\r
-        else if (match[1]) { // positional argument (explicit)\r
-          arg = argv[match[1]];\r
-        }\r
-        else { // positional argument (implicit)\r
-          arg = argv[cursor++];\r
-        }\r
-\r
-        if (/[^s]/.test(match[8]) && (get_type(arg) != 'number')) {\r
-          throw(sprintf('[sprintf] expecting number but found %s', get_type(arg)));\r
-        }\r
-        switch (match[8]) {\r
-          case 'b': arg = arg.toString(2); break;\r
-          case 'c': arg = String.fromCharCode(arg); break;\r
-          case 'd': arg = parseInt(arg, 10); break;\r
-          case 'e': arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential(); break;\r
-          case 'f': arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg); break;\r
-          case 'o': arg = arg.toString(8); break;\r
-          case 's': arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg); break;\r
-          case 'u': arg = Math.abs(arg); break;\r
-          case 'x': arg = arg.toString(16); break;\r
-          case 'X': arg = arg.toString(16).toUpperCase(); break;\r
-        }\r
-        arg = (/[def]/.test(match[8]) && match[3] && arg >= 0 ? '+'+ arg : arg);\r
-        pad_character = match[4] ? match[4] == '0' ? '0' : match[4].charAt(1) : ' ';\r
-        pad_length = match[6] - String(arg).length;\r
-        pad = match[6] ? str_repeat(pad_character, pad_length) : '';\r
-        output.push(match[5] ? arg + pad : pad + arg);\r
-      }\r
-    }\r
-    return output.join('');\r
-  };\r
-\r
-  str_format.cache = {};\r
-\r
-  str_format.parse = function(fmt) {\r
-    var _fmt = fmt, match = [], parse_tree = [], arg_names = 0;\r
-    while (_fmt) {\r
-      if ((match = /^[^\x25]+/.exec(_fmt)) !== null) {\r
-        parse_tree.push(match[0]);\r
-      }\r
-      else if ((match = /^\x25{2}/.exec(_fmt)) !== null) {\r
-        parse_tree.push('%');\r
-      }\r
-      else if ((match = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt)) !== null) {\r
-        if (match[2]) {\r
-          arg_names |= 1;\r
-          var field_list = [], replacement_field = match[2], field_match = [];\r
-          if ((field_match = /^([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {\r
-            field_list.push(field_match[1]);\r
-            while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\r
-              if ((field_match = /^\.([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {\r
-                field_list.push(field_match[1]);\r
-              }\r
-              else if ((field_match = /^\[(\d+)\]/.exec(replacement_field)) !== null) {\r
-                field_list.push(field_match[1]);\r
-              }\r
-              else {\r
-                throw('[sprintf] huh?');\r
-              }\r
-            }\r
-          }\r
-          else {\r
-            throw('[sprintf] huh?');\r
-          }\r
-          match[2] = field_list;\r
-        }\r
-        else {\r
-          arg_names |= 2;\r
-        }\r
-        if (arg_names === 3) {\r
-          throw('[sprintf] mixing positional and named placeholders is not (yet) supported');\r
-        }\r
-        parse_tree.push(match);\r
-      }\r
-      else {\r
-        throw('[sprintf] huh?');\r
-      }\r
-      _fmt = _fmt.substring(match[0].length);\r
-    }\r
-    return parse_tree;\r
-  };\r
-\r
-  return str_format;\r
-})();\r
-\r
-var vsprintf = function(fmt, argv) {\r
-  argv.unshift(fmt);\r
-  return sprintf.apply(null, argv);\r
-};\r
-\r
-exports.sprintf = sprintf;\r
-exports.vsprintf = vsprintf;\r
-});\r
-\r
-require.define("/shred/response.js", function (require, module, exports, __dirname, __filename) {\r
-    // The `Response object` encapsulates a Node.js HTTP response.\r
-\r
-var Content = require("./content")\r
-  , HeaderMixins = require("./mixins/headers")\r
-  , CookieJarLib = require( "cookiejar" )\r
-  , Cookie = CookieJarLib.Cookie\r
-;\r
-\r
-// Browser doesn't have zlib.\r
-var zlib = null;\r
-try {\r
-  zlib = require('zlib');\r
-} catch (e) {\r
-  // console.warn("no zlib library");\r
-}\r
-\r
-// Iconv doesn't work in browser\r
-var Iconv = null;\r
-try {\r
-  Iconv = require('iconv-lite');\r
-} catch (e) {\r
-  // console.warn("no iconv library");\r
-}\r
-\r
-// Construct a `Response` object. You should never have to do this directly. The\r
-// `Request` object handles this, getting the raw response object and passing it\r
-// in here, along with the request. The callback allows us to stream the response\r
-// and then use the callback to let the request know when it's ready.\r
-var Response = function(raw, request, callback) { \r
-  var response = this;\r
-  this._raw = raw;\r
-\r
-  // The `._setHeaders` method is "private"; you can't otherwise set headers on\r
-  // the response.\r
-  this._setHeaders.call(this,raw.headers);\r
-  \r
-  // store any cookies\r
-  if (request.cookieJar && this.getHeader('set-cookie')) {\r
-    var cookieStrings = this.getHeader('set-cookie');\r
-    var cookieObjs = []\r
-      , cookie;\r
-\r
-    for (var i = 0; i < cookieStrings.length; i++) {\r
-      var cookieString = cookieStrings[i];\r
-      if (!cookieString) {\r
-        continue;\r
-      }\r
-\r
-      if (!cookieString.match(/domain\=/i)) {\r
-        cookieString += '; domain=' + request.host;\r
-      }\r
-\r
-      if (!cookieString.match(/path\=/i)) {\r
-        cookieString += '; path=' + request.path;\r
-      }\r
-\r
-      try {\r
-        cookie = new Cookie(cookieString);\r
-        if (cookie) {\r
-          cookieObjs.push(cookie);\r
-        }\r
-      } catch (e) {\r
-        console.warn("Tried to set bad cookie: " + cookieString);\r
-      }\r
-    }\r
-\r
-    request.cookieJar.setCookies(cookieObjs);\r
-  }\r
-\r
-  this.request = request;\r
-  this.client = request.client;\r
-  this.log = this.request.log;\r
-\r
-  // Stream the response content entity and fire the callback when we're done.\r
-  // Store the incoming data in a array of Buffers which we concatinate into one\r
-  // buffer at the end.  We need to use buffers instead of strings here in order\r
-  // to preserve binary data.\r
-  var chunkBuffers = [];\r
-  var dataLength = 0;\r
-  raw.on("data", function(chunk) {\r
-    chunkBuffers.push(chunk);\r
-    dataLength += chunk.length;\r
-  });\r
-  raw.on("end", function() {\r
-    var body;\r
-    if (typeof Buffer === 'undefined') {\r
-      // Just concatinate into a string\r
-      body = chunkBuffers.join('');\r
-    } else {\r
-      // Initialize new buffer and add the chunks one-at-a-time.\r
-      body = new Buffer(dataLength);\r
-      for (var i = 0, pos = 0; i < chunkBuffers.length; i++) {\r
-        chunkBuffers[i].copy(body, pos);\r
-        pos += chunkBuffers[i].length;\r
-      }\r
-    }\r
-\r
-    var setBodyAndFinish = function (body) {\r
-      response._body = new Content({ \r
-        body: body,\r
-        type: response.getHeader("Content-Type")\r
-      });\r
-      callback(response);\r
-    }\r
-\r
-    if (zlib && response.getHeader("Content-Encoding") === 'gzip'){\r
-      zlib.gunzip(body, function (err, gunzippedBody) {\r
-        if (Iconv && response.request.encoding){\r
-          body = Iconv.fromEncoding(gunzippedBody,response.request.encoding);\r
-        } else {\r
-          body = gunzippedBody.toString();\r
-        }\r
-        setBodyAndFinish(body);\r
-      })\r
-    }\r
-    else{\r
-       if (response.request.encoding){\r
-            body = Iconv.fromEncoding(body,response.request.encoding);\r
-        }        \r
-      setBodyAndFinish(body);\r
-    }\r
-  });\r
-};\r
-\r
-// The `Response` object can be pretty overwhelming to view using the built-in\r
-// Node.js inspect method. We want to make it a bit more manageable. This\r
-// probably goes [too far in the other\r
-// direction](https://github.com/spire-io/shred/issues/2).\r
-\r
-Response.prototype = {\r
-  inspect: function() {\r
-    var response = this;\r
-    var headers = this.format_headers();\r
-    var summary = ["<Shred Response> ", response.status].join(" ")\r
-    return [ summary, "- Headers:", headers].join("\n");\r
-  },\r
-  format_headers: function () {\r
-    var array = []\r
-    var headers = this._headers\r
-    for (var key in headers) {\r
-      if (headers.hasOwnProperty(key)) {\r
-        var value = headers[key]\r
-        array.push("\t" + key + ": " + value);\r
-      }\r
-    }\r
-    return array.join("\n");\r
-  }\r
-};\r
-\r
-// `Response` object properties, all of which are read-only:\r
-Object.defineProperties(Response.prototype, {\r
-  \r
-// - **status**. The HTTP status code for the response. \r
-  status: {\r
-    get: function() { return this._raw.statusCode; },\r
-    enumerable: true\r
-  },\r
-\r
-// - **content**. The HTTP content entity, if any. Provided as a [content\r
-//   object](./content.html), which will attempt to convert the entity based upon\r
-//   the `content-type` header. The converted value is available as\r
-//   `content.data`. The original raw content entity is available as\r
-//   `content.body`.\r
-  body: {\r
-    get: function() { return this._body; }\r
-  },\r
-  content: {\r
-    get: function() { return this.body; },\r
-    enumerable: true\r
-  },\r
-\r
-// - **isRedirect**. Is the response a redirect? These are responses with 3xx\r
-//   status and a `Location` header.\r
-  isRedirect: {\r
-    get: function() {\r
-      return (this.status>299\r
-          &&this.status<400\r
-          &&this.getHeader("Location"));\r
-    },\r
-    enumerable: true\r
-  },\r
-\r
-// - **isError**. Is the response an error? These are responses with status of\r
-//   400 or greater.\r
-  isError: {\r
-    get: function() {\r
-      return (this.status === 0 || this.status > 399)\r
-    },\r
-    enumerable: true\r
-  }\r
-});\r
-\r
-// Add in the [getters for accessing the normalized headers](./headers.js).\r
-HeaderMixins.getters(Response);\r
-HeaderMixins.privateSetters(Response);\r
-\r
-// Work around Mozilla bug #608735 [https://bugzil.la/608735], which causes\r
-// getAllResponseHeaders() to return {} if the response is a CORS request.\r
-// xhr.getHeader still works correctly.\r
-var getHeader = Response.prototype.getHeader;\r
-Response.prototype.getHeader = function (name) {\r
-  return (getHeader.call(this,name) ||\r
-    (typeof this._raw.getHeader === 'function' && this._raw.getHeader(name)));\r
-};\r
-\r
-module.exports = Response;\r
-\r
-});\r
-\r
-require.define("/shred/content.js", function (require, module, exports, __dirname, __filename) {\r
-    \r
-// The purpose of the `Content` object is to abstract away the data conversions\r
-// to and from raw content entities as strings. For example, you want to be able\r
-// to pass in a Javascript object and have it be automatically converted into a\r
-// JSON string if the `content-type` is set to a JSON-based media type.\r
-// Conversely, you want to be able to transparently get back a Javascript object\r
-// in the response if the `content-type` is a JSON-based media-type.\r
-\r
-// One limitation of the current implementation is that it [assumes the `charset` is UTF-8](https://github.com/spire-io/shred/issues/5).\r
-\r
-// The `Content` constructor takes an options object, which *must* have either a\r
-// `body` or `data` property and *may* have a `type` property indicating the\r
-// media type. If there is no `type` attribute, a default will be inferred.\r
-var Content = function(options) {\r
-  this.body = options.body;\r
-  this.data = options.data;\r
-  this.type = options.type;\r
-};\r
-\r
-Content.prototype = {\r
-  // Treat `toString()` as asking for the `content.body`. That is, the raw content entity.\r
-  //\r
-  //     toString: function() { return this.body; }\r
-  //\r
-  // Commented out, but I've forgotten why. :/\r
-};\r
-\r
-\r
-// `Content` objects have the following attributes:\r
-Object.defineProperties(Content.prototype,{\r
-  \r
-// - **type**. Typically accessed as `content.type`, reflects the `content-type`\r
-//   header associated with the request or response. If not passed as an options\r
-//   to the constructor or set explicitly, it will infer the type the `data`\r
-//   attribute, if possible, and, failing that, will default to `text/plain`.\r
-  type: {\r
-    get: function() {\r
-      if (this._type) {\r
-        return this._type;\r
-      } else {\r
-        if (this._data) {\r
-          switch(typeof this._data) {\r
-            case "string": return "text/plain";\r
-            case "object": return "application/json";\r
-          }\r
-        }\r
-      }\r
-      return "text/plain";\r
-    },\r
-    set: function(value) {\r
-      this._type = value;\r
-      return this;\r
-    },\r
-    enumerable: true\r
-  },\r
-\r
-// - **data**. Typically accessed as `content.data`, reflects the content entity\r
-//   converted into Javascript data. This can be a string, if the `type` is, say,\r
-//   `text/plain`, but can also be a Javascript object. The conversion applied is\r
-//   based on the `processor` attribute. The `data` attribute can also be set\r
-//   directly, in which case the conversion will be done the other way, to infer\r
-//   the `body` attribute.\r
-  data: {\r
-    get: function() {\r
-      if (this._body) {\r
-        return this.processor.parser(this._body);\r
-      } else {\r
-        return this._data;\r
-      }\r
-    },\r
-    set: function(data) {\r
-      if (this._body&&data) Errors.setDataWithBody(this);\r
-      this._data = data;\r
-      return this;\r
-    },\r
-    enumerable: true\r
-  },\r
-\r
-// - **body**. Typically accessed as `content.body`, reflects the content entity\r
-//   as a UTF-8 string. It is the mirror of the `data` attribute. If you set the\r
-//   `data` attribute, the `body` attribute will be inferred and vice-versa. If\r
-//   you attempt to set both, an exception is raised.\r
-  body: {\r
-    get: function() {\r
-      if (this._data) {\r
-        return this.processor.stringify(this._data);\r
-      } else {\r
-        return this.processor.stringify(this._body);\r
-      }\r
-    },\r
-    set: function(body) {\r
-      if (this._data&&body) Errors.setBodyWithData(this);\r
-      this._body = body;\r
-      return this;\r
-    },\r
-    enumerable: true\r
-  },\r
-\r
-// - **processor**. The functions that will be used to convert to/from `data` and\r
-//   `body` attributes. You can add processors. The two that are built-in are for\r
-//   `text/plain`, which is basically an identity transformation and\r
-//   `application/json` and other JSON-based media types (including custom media\r
-//   types with `+json`). You can add your own processors. See below.\r
-  processor: {\r
-    get: function() {\r
-      var processor = Content.processors[this.type];\r
-      if (processor) {\r
-        return processor;\r
-      } else {\r
-        // Return the first processor that matches any part of the\r
-        // content type. ex: application/vnd.foobar.baz+json will match json.\r
-        var main = this.type.split(";")[0];\r
-        var parts = main.split(/\+|\//);\r
-        for (var i=0, l=parts.length; i < l; i++) {\r
-          processor = Content.processors[parts[i]]\r
-        }\r
-        return processor || {parser:identity,stringify:toString};\r
-      }\r
-    },\r
-    enumerable: true\r
-  },\r
-\r
-// - **length**. Typically accessed as `content.length`, returns the length in\r
-//   bytes of the raw content entity.\r
-  length: {\r
-    get: function() {\r
-      if (typeof Buffer !== 'undefined') {\r
-        return Buffer.byteLength(this.body);\r
-      }\r
-      return this.body.length;\r
-    }\r
-  }\r
-});\r
-\r
-Content.processors = {};\r
-\r
-// The `registerProcessor` function allows you to add your own processors to\r
-// convert content entities. Each processor consists of a Javascript object with\r
-// two properties:\r
-// - **parser**. The function used to parse a raw content entity and convert it\r
-//   into a Javascript data type.\r
-// - **stringify**. The function used to convert a Javascript data type into a\r
-//   raw content entity.\r
-Content.registerProcessor = function(types,processor) {\r
-  \r
-// You can pass an array of types that will trigger this processor, or just one.\r
-// We determine the array via duck-typing here.\r
-  if (types.forEach) {\r
-    types.forEach(function(type) {\r
-      Content.processors[type] = processor;\r
-    });\r
-  } else {\r
-    // If you didn't pass an array, we just use what you pass in.\r
-    Content.processors[types] = processor;\r
-  }\r
-};\r
-\r
-// Register the identity processor, which is used for text-based media types.\r
-var identity = function(x) { return x; }\r
-  , toString = function(x) { return x.toString(); }\r
-Content.registerProcessor(\r
-  ["text/html","text/plain","text"],\r
-  { parser: identity, stringify: toString });\r
-\r
-// Register the JSON processor, which is used for JSON-based media types.\r
-Content.registerProcessor(\r
-  ["application/json; charset=utf-8","application/json","json"],\r
-  {\r
-    parser: function(string) {\r
-      return JSON.parse(string);\r
-    },\r
-    stringify: function(data) {\r
-      return JSON.stringify(data); }});\r
-\r
-// Error functions are defined separately here in an attempt to make the code\r
-// easier to read.\r
-var Errors = {\r
-  setDataWithBody: function(object) {\r
-    throw new Error("Attempt to set data attribute of a content object " +\r
-        "when the body attributes was already set.");\r
-  },\r
-  setBodyWithData: function(object) {\r
-    throw new Error("Attempt to set body attribute of a content object " +\r
-        "when the data attributes was already set.");\r
-  }\r
-}\r
-module.exports = Content;\r
-\r
-});\r
-\r
-require.define("/shred/mixins/headers.js", function (require, module, exports, __dirname, __filename) {\r
-    // The header mixins allow you to add HTTP header support to any object. This\r
-// might seem pointless: why not simply use a hash? The main reason is that, per\r
-// the [HTTP spec](http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2),\r
-// headers are case-insensitive. So, for example, `content-type` is the same as\r
-// `CONTENT-TYPE` which is the same as `Content-Type`. Since there is no way to\r
-// overload the index operator in Javascript, using a hash to represent the\r
-// headers means it's possible to have two conflicting values for a single\r
-// header.\r
-// \r
-// The solution to this is to provide explicit methods to set or get headers.\r
-// This also has the benefit of allowing us to introduce additional variations,\r
-// including snake case, which we automatically convert to what Matthew King has\r
-// dubbed "corset case" - the hyphen-separated names with initial caps:\r
-// `Content-Type`. We use corset-case just in case we're dealing with servers\r
-// that haven't properly implemented the spec.\r
-\r
-// Convert headers to corset-case. **Example:** `CONTENT-TYPE` will be converted\r
-// to `Content-Type`.\r
-\r
-var corsetCase = function(string) {\r
-  return string;//.toLowerCase()\r
-      //.replace("_","-")\r
-      // .replace(/(^|-)(\w)/g, \r
-          // function(s) { return s.toUpperCase(); });\r
-};\r
-\r
-// We suspect that `initializeHeaders` was once more complicated ...\r
-var initializeHeaders = function(object) {\r
-  return {};\r
-};\r
-\r
-// Access the `_headers` property using lazy initialization. **Warning:** If you\r
-// mix this into an object that is using the `_headers` property already, you're\r
-// going to have trouble.\r
-var $H = function(object) {\r
-  return object._headers||(object._headers=initializeHeaders(object));\r
-};\r
-\r
-// Hide the implementations as private functions, separate from how we expose them.\r
-\r
-// The "real" `getHeader` function: get the header after normalizing the name.\r
-var getHeader = function(object,name) {\r
-  return $H(object)[corsetCase(name)];\r
-};\r
-\r
-// The "real" `getHeader` function: get one or more headers, or all of them\r
-// if you don't ask for any specifics. \r
-var getHeaders = function(object,names) {\r
-  var keys = (names && names.length>0) ? names : Object.keys($H(object));\r
-  var hash = keys.reduce(function(hash,key) {\r
-    hash[key] = getHeader(object,key);\r
-    return hash;\r
-  },{});\r
-  // Freeze the resulting hash so you don't mistakenly think you're modifying\r
-  // the real headers.\r
-  Object.freeze(hash);\r
-  return hash;\r
-};\r
-\r
-// The "real" `setHeader` function: set a header, after normalizing the name.\r
-var setHeader = function(object,name,value) {\r
-  $H(object)[corsetCase(name)] = value;\r
-  return object;\r
-};\r
-\r
-// The "real" `setHeaders` function: set multiple headers based on a hash.\r
-var setHeaders = function(object,hash) {\r
-  for( var key in hash ) { setHeader(object,key,hash[key]); };\r
-  return this;\r
-};\r
-\r
-// Here's where we actually bind the functionality to an object. These mixins work by\r
-// exposing mixin functions. Each function mixes in a specific batch of features.\r
-module.exports = {\r
-  \r
-  // Add getters.\r
-  getters: function(constructor) {\r
-    constructor.prototype.getHeader = function(name) { return getHeader(this,name); };\r
-    constructor.prototype.getHeaders = function() { return getHeaders(this,arguments); };\r
-  },\r
-  // Add setters but as "private" methods.\r
-  privateSetters: function(constructor) {\r
-    constructor.prototype._setHeader = function(key,value) { return setHeader(this,key,value); };\r
-    constructor.prototype._setHeaders = function(hash) { return setHeaders(this,hash); };\r
-  },\r
-  // Add setters.\r
-  setters: function(constructor) {\r
-    constructor.prototype.setHeader = function(key,value) { return setHeader(this,key,value); };\r
-    constructor.prototype.setHeaders = function(hash) { return setHeaders(this,hash); };\r
-  },\r
-  // Add both getters and setters.\r
-  gettersAndSetters: function(constructor) {\r
-    constructor.prototype.getHeader = function(name) { return getHeader(this,name); };\r
-    constructor.prototype.getHeaders = function() { return getHeaders(this,arguments); };\r
-    constructor.prototype.setHeader = function(key,value) { return setHeader(this,key,value); };\r
-    constructor.prototype.setHeaders = function(hash) { return setHeaders(this,hash); };\r
-  }\r
-};\r
-\r
-});\r
-\r
-require.define("/node_modules/iconv-lite/package.json", function (require, module, exports, __dirname, __filename) {\r
-    module.exports = {}\r
-});\r
-\r
-require.define("/node_modules/iconv-lite/index.js", function (require, module, exports, __dirname, __filename) {\r
-    // Module exports\r
-var iconv = module.exports = {\r
-    toEncoding: function(str, encoding) {\r
-        return iconv.getCodec(encoding).toEncoding(str);\r
-    },\r
-    fromEncoding: function(buf, encoding) {\r
-        return iconv.getCodec(encoding).fromEncoding(buf);\r
-    },\r
-    \r
-    defaultCharUnicode: '�',\r
-    defaultCharSingleByte: '?',\r
-    \r
-    // Get correct codec for given encoding.\r
-    getCodec: function(encoding) {\r
-        var enc = encoding || "utf8";\r
-        var codecOptions = undefined;\r
-        while (1) {\r
-            if (getType(enc) === "String")\r
-                enc = enc.replace(/[- ]/g, "").toLowerCase();\r
-            var codec = iconv.encodings[enc];\r
-            var type = getType(codec);\r
-            if (type === "String") {\r
-                // Link to other encoding.\r
-                codecOptions = {originalEncoding: enc};\r
-                enc = codec;\r
-            }\r
-            else if (type === "Object" && codec.type != undefined) {\r
-                // Options for other encoding.\r
-                codecOptions = codec;\r
-                enc = codec.type;\r
-            } \r
-            else if (type === "Function")\r
-                // Codec itself.\r
-                return codec(codecOptions);\r
-            else\r
-                throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')");\r
-        }\r
-    },\r
-    \r
-    // Define basic encodings\r
-    encodings: {\r
-        internal: function(options) {\r
-            return {\r
-                toEncoding: function(str) {\r
-                    return new Buffer(ensureString(str), options.originalEncoding);\r
-                },\r
-                fromEncoding: function(buf) {\r
-                    return ensureBuffer(buf).toString(options.originalEncoding);\r
-                }\r
-            };\r
-        },\r
-        utf8: "internal",\r
-        ucs2: "internal",\r
-        binary: "internal",\r
-        ascii: "internal",\r
-        base64: "internal",\r
-        \r
-        // Codepage single-byte encodings.\r
-        singlebyte: function(options) {\r
-            // Prepare chars if needed\r
-            if (!options.chars || (options.chars.length !== 128 && options.chars.length !== 256))\r
-                throw new Error("Encoding '"+options.type+"' has incorrect 'chars' (must be of len 128 or 256)");\r
-            \r
-            if (options.chars.length === 128)\r
-                options.chars = asciiString + options.chars;\r
-            \r
-            if (!options.charsBuf) {\r
-                options.charsBuf = new Buffer(options.chars, 'ucs2');\r
-            }\r
-            \r
-            if (!options.revCharsBuf) {\r
-                options.revCharsBuf = new Buffer(65536);\r
-                var defChar = iconv.defaultCharSingleByte.charCodeAt(0);\r
-                for (var i = 0; i < options.revCharsBuf.length; i++)\r
-                    options.revCharsBuf[i] = defChar;\r
-                for (var i = 0; i < options.chars.length; i++)\r
-                    options.revCharsBuf[options.chars.charCodeAt(i)] = i;\r
-            }\r
-            \r
-            return {\r
-                toEncoding: function(str) {\r
-                    str = ensureString(str);\r
-                    \r
-                    var buf = new Buffer(str.length);\r
-                    var revCharsBuf = options.revCharsBuf;\r
-                    for (var i = 0; i < str.length; i++)\r
-                        buf[i] = revCharsBuf[str.charCodeAt(i)];\r
-                    \r
-                    return buf;\r
-                },\r
-                fromEncoding: function(buf) {\r
-                    buf = ensureBuffer(buf);\r
-                    \r
-                    // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\r
-                    var charsBuf = options.charsBuf;\r
-                    var newBuf = new Buffer(buf.length*2);\r
-                    var idx1 = 0, idx2 = 0;\r
-                    for (var i = 0, _len = buf.length; i < _len; i++) {\r
-                        idx1 = buf[i]*2; idx2 = i*2;\r
-                        newBuf[idx2] = charsBuf[idx1];\r
-                        newBuf[idx2+1] = charsBuf[idx1+1];\r
-                    }\r
-                    return newBuf.toString('ucs2');\r
-                }\r
-            };\r
-        },\r
-\r
-        // Codepage double-byte encodings.\r
-        table: function(options) {\r
-            var table = options.table, key, revCharsTable = options.revCharsTable;\r
-            if (!table) {\r
-                throw new Error("Encoding '" + options.type +"' has incorect 'table' option");\r
-            }\r
-            if(!revCharsTable) {\r
-                revCharsTable = options.revCharsTable = {};\r
-                for (key in table) {\r
-                    revCharsTable[table[key]] = parseInt(key);\r
-                }\r
-            }\r
-            \r
-            return {\r
-                toEncoding: function(str) {\r
-                    str = ensureString(str);\r
-                    var strLen = str.length;\r
-                    var bufLen = strLen;\r
-                    for (var i = 0; i < strLen; i++)\r
-                        if (str.charCodeAt(i) >> 7)\r
-                            bufLen++;\r
-\r
-                    var newBuf = new Buffer(bufLen), gbkcode, unicode, \r
-                        defaultChar = revCharsTable[iconv.defaultCharUnicode.charCodeAt(0)];\r
-\r
-                    for (var i = 0, j = 0; i < strLen; i++) {\r
-                        unicode = str.charCodeAt(i);\r
-                        if (unicode >> 7) {\r
-                            gbkcode = revCharsTable[unicode] || defaultChar;\r
-                            newBuf[j++] = gbkcode >> 8; //high byte;\r
-                            newBuf[j++] = gbkcode & 0xFF; //low byte\r
-                        } else {//ascii\r
-                            newBuf[j++] = unicode;\r
-                        }\r
-                    }\r
-                    return newBuf;\r
-                },\r
-                fromEncoding: function(buf) {\r
-                    buf = ensureBuffer(buf);\r
-                    var bufLen = buf.length, strLen = 0;\r
-                    for (var i = 0; i < bufLen; i++) {\r
-                        strLen++;\r
-                        if (buf[i] & 0x80) //the high bit is 1, so this byte is gbkcode's high byte.skip next byte\r
-                            i++;\r
-                    }\r
-                    var newBuf = new Buffer(strLen*2), unicode, gbkcode,\r
-                        defaultChar = iconv.defaultCharUnicode.charCodeAt(0);\r
-                    \r
-                    for (var i = 0, j = 0; i < bufLen; i++, j+=2) {\r
-                        gbkcode = buf[i];\r
-                        if (gbkcode & 0x80) {\r
-                            gbkcode = (gbkcode << 8) + buf[++i];\r
-                            unicode = table[gbkcode] || defaultChar;\r
-                        } else {\r
-                            unicode = gbkcode;\r
-                        }\r
-                        newBuf[j] = unicode & 0xFF; //low byte\r
-                        newBuf[j+1] = unicode >> 8; //high byte\r
-                    }\r
-                    return newBuf.toString('ucs2');\r
-                }\r
-            }\r
-        }\r
-    }\r
-};\r
-\r
-// Add aliases to convert functions\r
-iconv.encode = iconv.toEncoding;\r
-iconv.decode = iconv.fromEncoding;\r
-\r
-// Load other encodings from files in /encodings dir.\r
-var encodingsDir = __dirname+"/encodings/",\r
-    fs = require('fs');\r
-fs.readdirSync(encodingsDir).forEach(function(file) {\r
-    if(fs.statSync(encodingsDir + file).isDirectory()) return;\r
-    var encodings = require(encodingsDir + file)\r
-    for (var key in encodings)\r
-        iconv.encodings[key] = encodings[key]\r
-});\r
-\r
-// Utilities\r
-var asciiString = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f'+\r
-              ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f';\r
-\r
-var ensureBuffer = function(buf) {\r
-    buf = buf || new Buffer(0);\r
-    return (buf instanceof Buffer) ? buf : new Buffer(buf.toString(), "utf8");\r
-}\r
-\r
-var ensureString = function(str) {\r
-    str = str || "";\r
-    return (str instanceof String) ? str : str.toString((str instanceof Buffer) ? 'utf8' : undefined);\r
-}\r
-\r
-var getType = function(obj) {\r
-    return Object.prototype.toString.call(obj).slice(8, -1);\r
-}\r
-\r
-\r
-});\r
-\r
-require.define("/node_modules/http-browserify/package.json", function (require, module, exports, __dirname, __filename) {\r
-    module.exports = {"main":"index.js","browserify":"browser.js"}\r
-});\r
-\r
-require.define("/node_modules/http-browserify/browser.js", function (require, module, exports, __dirname, __filename) {\r
-    var http = module.exports;\r
-var EventEmitter = require('events').EventEmitter;\r
-var Request = require('./lib/request');\r
-\r
-http.request = function (params, cb) {\r
-    if (!params) params = {};\r
-    if (!params.host) params.host = window.location.host.split(':')[0];\r
-    if (!params.port) params.port = window.location.port;\r
-    \r
-    var req = new Request(new xhrHttp, params);\r
-    if (cb) req.on('response', cb);\r
-    return req;\r
-};\r
-\r
-http.get = function (params, cb) {\r
-    params.method = 'GET';\r
-    var req = http.request(params, cb);\r
-    req.end();\r
-    return req;\r
-};\r
-\r
-var xhrHttp = (function () {\r
-    if (typeof window === 'undefined') {\r
-        throw new Error('no window object present');\r
-    }\r
-    else if (window.XMLHttpRequest) {\r
-        return window.XMLHttpRequest;\r
-    }\r
-    else if (window.ActiveXObject) {\r
-        var axs = [\r
-            'Msxml2.XMLHTTP.6.0',\r
-            'Msxml2.XMLHTTP.3.0',\r
-            'Microsoft.XMLHTTP'\r
-        ];\r
-        for (var i = 0; i < axs.length; i++) {\r
-            try {\r
-                var ax = new(window.ActiveXObject)(axs[i]);\r
-                return function () {\r
-                    if (ax) {\r
-                        var ax_ = ax;\r
-                        ax = null;\r
-                        return ax_;\r
-                    }\r
-                    else {\r
-                        return new(window.ActiveXObject)(axs[i]);\r
-                    }\r
-                };\r
-            }\r
-            catch (e) {}\r
-        }\r
-        throw new Error('ajax not supported in this browser')\r
-    }\r
-    else {\r
-        throw new Error('ajax not supported in this browser');\r
-    }\r
-})();\r
-\r
-http.STATUS_CODES = {\r
-    100 : 'Continue',\r
-    101 : 'Switching Protocols',\r
-    102 : 'Processing', // RFC 2518, obsoleted by RFC 4918\r
-    200 : 'OK',\r
-    201 : 'Created',\r
-    202 : 'Accepted',\r
-    203 : 'Non-Authoritative Information',\r
-    204 : 'No Content',\r
-    205 : 'Reset Content',\r
-    206 : 'Partial Content',\r
-    207 : 'Multi-Status', // RFC 4918\r
-    300 : 'Multiple Choices',\r
-    301 : 'Moved Permanently',\r
-    302 : 'Moved Temporarily',\r
-    303 : 'See Other',\r
-    304 : 'Not Modified',\r
-    305 : 'Use Proxy',\r
-    307 : 'Temporary Redirect',\r
-    400 : 'Bad Request',\r
-    401 : 'Unauthorized',\r
-    402 : 'Payment Required',\r
-    403 : 'Forbidden',\r
-    404 : 'Not Found',\r
-    405 : 'Method Not Allowed',\r
-    406 : 'Not Acceptable',\r
-    407 : 'Proxy Authentication Required',\r
-    408 : 'Request Time-out',\r
-    409 : 'Conflict',\r
-    410 : 'Gone',\r
-    411 : 'Length Required',\r
-    412 : 'Precondition Failed',\r
-    413 : 'Request Entity Too Large',\r
-    414 : 'Request-URI Too Large',\r
-    415 : 'Unsupported Media Type',\r
-    416 : 'Requested Range Not Satisfiable',\r
-    417 : 'Expectation Failed',\r
-    418 : 'I\'m a teapot', // RFC 2324\r
-    422 : 'Unprocessable Entity', // RFC 4918\r
-    423 : 'Locked', // RFC 4918\r
-    424 : 'Failed Dependency', // RFC 4918\r
-    425 : 'Unordered Collection', // RFC 4918\r
-    426 : 'Upgrade Required', // RFC 2817\r
-    500 : 'Internal Server Error',\r
-    501 : 'Not Implemented',\r
-    502 : 'Bad Gateway',\r
-    503 : 'Service Unavailable',\r
-    504 : 'Gateway Time-out',\r
-    505 : 'HTTP Version not supported',\r
-    506 : 'Variant Also Negotiates', // RFC 2295\r
-    507 : 'Insufficient Storage', // RFC 4918\r
-    509 : 'Bandwidth Limit Exceeded',\r
-    510 : 'Not Extended' // RFC 2774\r
-};\r
-\r
-});\r
-\r
-require.define("/node_modules/http-browserify/lib/request.js", function (require, module, exports, __dirname, __filename) {\r
-    var EventEmitter = require('events').EventEmitter;\r
-var Response = require('./response');\r
-var isSafeHeader = require('./isSafeHeader');\r
-\r
-var Request = module.exports = function (xhr, params) {\r
-    var self = this;\r
-    self.xhr = xhr;\r
-    self.body = '';\r
-    \r
-    var uri = params.host + ':' + params.port + (params.path || '/');\r
-    \r
-    xhr.open(\r
-        params.method || 'GET',\r
-        (params.scheme || 'http') + '://' + uri,\r
-        true\r
-    );\r
-    \r
-    if (params.headers) {\r
-        Object.keys(params.headers).forEach(function (key) {\r
-            if (!isSafeHeader(key)) return;\r
-            var value = params.headers[key];\r
-            if (Array.isArray(value)) {\r
-                value.forEach(function (v) {\r
-                    xhr.setRequestHeader(key, v);\r
-                });\r
-            }\r
-            else xhr.setRequestHeader(key, value)\r
-        });\r
-    }\r
-    \r
-    var res = new Response(xhr);\r
-    res.on('ready', function () {\r
-        self.emit('response', res);\r
-    });\r
-    \r
-    xhr.onreadystatechange = function () {\r
-        res.handle(xhr);\r
-    };\r
-};\r
-\r
-Request.prototype = new EventEmitter;\r
-\r
-Request.prototype.setHeader = function (key, value) {\r
-    if ((Array.isArray && Array.isArray(value))\r
-    || value instanceof Array) {\r
-        for (var i = 0; i < value.length; i++) {\r
-            this.xhr.setRequestHeader(key, value[i]);\r
-        }\r
-    }\r
-    else {\r
-        this.xhr.setRequestHeader(key, value);\r
-    }\r
-};\r
-\r
-Request.prototype.write = function (s) {\r
-    this.body += s;\r
-};\r
-\r
-Request.prototype.end = function (s) {\r
-    if (s !== undefined) this.write(s);\r
-    this.xhr.send(this.body);\r
-};\r
-\r
-});\r
-\r
-require.define("/node_modules/http-browserify/lib/response.js", function (require, module, exports, __dirname, __filename) {\r
-    var EventEmitter = require('events').EventEmitter;\r
-var isSafeHeader = require('./isSafeHeader');\r
-\r
-var Response = module.exports = function (xhr) {\r
-    this.xhr = xhr;\r
-    this.offset = 0;\r
-};\r
-\r
-Response.prototype = new EventEmitter;\r
-\r
-var capable = {\r
-    streaming : true,\r
-    status2 : true\r
-};\r
-\r
-function parseHeaders (xhr) {\r
-    var lines = xhr.getAllResponseHeaders().split(/\r?\n/);\r
-    var headers = {};\r
-    for (var i = 0; i < lines.length; i++) {\r
-        var line = lines[i];\r
-        if (line === '') continue;\r
-        \r
-        var m = line.match(/^([^:]+):\s*(.*)/);\r
-        if (m) {\r
-            var key = m[1].toLowerCase(), value = m[2];\r
-            \r
-            if (headers[key] !== undefined) {\r
-                if ((Array.isArray && Array.isArray(headers[key]))\r
-                || headers[key] instanceof Array) {\r
-                    headers[key].push(value);\r
-                }\r
-                else {\r
-                    headers[key] = [ headers[key], value ];\r
-                }\r
-            }\r
-            else {\r
-                headers[key] = value;\r
-            }\r
-        }\r
-        else {\r
-            headers[line] = true;\r
-        }\r
-    }\r
-    return headers;\r
-}\r
-\r
-Response.prototype.getHeader = function (key) {\r
-    var header = this.headers ? this.headers[key.toLowerCase()] : null;\r
-    if (header) return header;\r
-\r
-    // Work around Mozilla bug #608735 [https://bugzil.la/608735], which causes\r
-    // getAllResponseHeaders() to return {} if the response is a CORS request.\r
-    // xhr.getHeader still works correctly.\r
-    if (isSafeHeader(key)) {\r
-      return this.xhr.getResponseHeader(key);\r
-    }\r
-    return null;\r
-};\r
-\r
-Response.prototype.handle = function () {\r
-    var xhr = this.xhr;\r
-    if (xhr.readyState === 2 && capable.status2) {\r
-        try {\r
-            this.statusCode = xhr.status;\r
-            this.headers = parseHeaders(xhr);\r
-        }\r
-        catch (err) {\r
-            capable.status2 = false;\r
-        }\r
-        \r
-        if (capable.status2) {\r
-            this.emit('ready');\r
-        }\r
-    }\r
-    else if (capable.streaming && xhr.readyState === 3) {\r
-        try {\r
-            if (!this.statusCode) {\r
-                this.statusCode = xhr.status;\r
-                this.headers = parseHeaders(xhr);\r
-                this.emit('ready');\r
-            }\r
-        }\r
-        catch (err) {}\r
-        \r
-        try {\r
-            this.write();\r
-        }\r
-        catch (err) {\r
-            capable.streaming = false;\r
-        }\r
-    }\r
-    else if (xhr.readyState === 4) {\r
-        if (!this.statusCode) {\r
-            this.statusCode = xhr.status;\r
-            this.emit('ready');\r
-        }\r
-        this.write();\r
-        \r
-        if (xhr.error) {\r
-            this.emit('error', xhr.responseText);\r
-        }\r
-        else this.emit('end');\r
-    }\r
-};\r
-\r
-Response.prototype.write = function () {\r
-    var xhr = this.xhr;\r
-    if (xhr.responseText.length > this.offset) {\r
-        this.emit('data', xhr.responseText.slice(this.offset));\r
-        this.offset = xhr.responseText.length;\r
-    }\r
-};\r
-\r
-});\r
-\r
-require.define("/node_modules/http-browserify/lib/isSafeHeader.js", function (require, module, exports, __dirname, __filename) {\r
-    // Taken from http://dxr.mozilla.org/mozilla/mozilla-central/content/base/src/nsXMLHttpRequest.cpp.html\r
-var unsafeHeaders = [\r
-    "accept-charset",\r
-    "accept-encoding",\r
-    "access-control-request-headers",\r
-    "access-control-request-method",\r
-    "connection",\r
-    "content-length",\r
-    "cookie",\r
-    "cookie2",\r
-    "content-transfer-encoding",\r
-    "date",\r
-    "expect",\r
-    "host",\r
-    "keep-alive",\r
-    "origin",\r
-    "referer",\r
-    "set-cookie",\r
-    "te",\r
-    "trailer",\r
-    "transfer-encoding",\r
-    "upgrade",\r
-    "user-agent",\r
-    "via"\r
-];\r
-\r
-module.exports = function (headerName) {\r
-    if (!headerName) return false;\r
-    return (unsafeHeaders.indexOf(headerName.toLowerCase()) === -1)\r
-};\r
-\r
-});\r
-\r
-require.alias("http-browserify", "/node_modules/http");\r
-\r
+/*
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var require = function (file, cwd) {
+    var resolved = require.resolve(file, cwd || '/');
+    var mod = require.modules[resolved];
+    if (!mod) throw new Error(
+        'Failed to resolve module ' + file + ', tried ' + resolved
+    );
+    var res = mod._cached ? mod._cached : mod();
+    return res;
+}
+
+require.paths = [];
+require.modules = {};
+require.extensions = [".js",".coffee"];
+
+require._core = {
+    'assert': true,
+    'events': true,
+    'fs': true,
+    'path': true,
+    'vm': true
+};
+
+require.resolve = (function () {
+    return function (x, cwd) {
+        if (!cwd) cwd = '/';
+        
+        if (require._core[x]) return x;
+        var path = require.modules.path();
+        var y = cwd || '.';
+        
+        if (x.match(/^(?:\.\.?\/|\/)/)) {
+            var m = loadAsFileSync(path.resolve(y, x))
+                || loadAsDirectorySync(path.resolve(y, x));
+            if (m) return m;
+        }
+        
+        var n = loadNodeModulesSync(x, y);
+        if (n) return n;
+        
+        throw new Error("Cannot find module '" + x + "'");
+        
+        function loadAsFileSync (x) {
+            if (require.modules[x]) {
+                return x;
+            }
+            
+            for (var i = 0; i < require.extensions.length; i++) {
+                var ext = require.extensions[i];
+                if (require.modules[x + ext]) return x + ext;
+            }
+        }
+        
+        function loadAsDirectorySync (x) {
+            x = x.replace(/\/+$/, '');
+            var pkgfile = x + '/package.json';
+            if (require.modules[pkgfile]) {
+                var pkg = require.modules[pkgfile]();
+                var b = pkg.browserify;
+                if (typeof b === 'object' && b.main) {
+                    var m = loadAsFileSync(path.resolve(x, b.main));
+                    if (m) return m;
+                }
+                else if (typeof b === 'string') {
+                    var m = loadAsFileSync(path.resolve(x, b));
+                    if (m) return m;
+                }
+                else if (pkg.main) {
+                    var m = loadAsFileSync(path.resolve(x, pkg.main));
+                    if (m) return m;
+                }
+            }
+            
+            return loadAsFileSync(x + '/index');
+        }
+        
+        function loadNodeModulesSync (x, start) {
+            var dirs = nodeModulesPathsSync(start);
+            for (var i = 0; i < dirs.length; i++) {
+                var dir = dirs[i];
+                var m = loadAsFileSync(dir + '/' + x);
+                if (m) return m;
+                var n = loadAsDirectorySync(dir + '/' + x);
+                if (n) return n;
+            }
+            
+            var m = loadAsFileSync(x);
+            if (m) return m;
+        }
+        
+        function nodeModulesPathsSync (start) {
+            var parts;
+            if (start === '/') parts = [ '' ];
+            else parts = path.normalize(start).split('/');
+            
+            var dirs = [];
+            for (var i = parts.length - 1; i >= 0; i--) {
+                if (parts[i] === 'node_modules') continue;
+                var dir = parts.slice(0, i + 1).join('/') + '/node_modules';
+                dirs.push(dir);
+            }
+            
+            return dirs;
+        }
+    };
+})();
+
+require.alias = function (from, to) {
+    var path = require.modules.path();
+    var res = null;
+    try {
+        res = require.resolve(from + '/package.json', '/');
+    }
+    catch (err) {
+        res = require.resolve(from, '/');
+    }
+    var basedir = path.dirname(res);
+    
+    var keys = (Object.keys || function (obj) {
+        var res = [];
+        for (var key in obj) res.push(key)
+        return res;
+    })(require.modules);
+    
+    for (var i = 0; i < keys.length; i++) {
+        var key = keys[i];
+        if (key.slice(0, basedir.length + 1) === basedir + '/') {
+            var f = key.slice(basedir.length);
+            require.modules[to + f] = require.modules[basedir + f];
+        }
+        else if (key === basedir) {
+            require.modules[to] = require.modules[basedir];
+        }
+    }
+};
+
+require.define = function (filename, fn) {
+    var dirname = require._core[filename]
+        ? ''
+        : require.modules.path().dirname(filename)
+    ;
+    
+    var require_ = function (file) {
+        return require(file, dirname)
+    };
+    require_.resolve = function (name) {
+        return require.resolve(name, dirname);
+    };
+    require_.modules = require.modules;
+    require_.define = require.define;
+    var module_ = { exports : {} };
+    
+    require.modules[filename] = function () {
+        require.modules[filename]._cached = module_.exports;
+        fn.call(
+            module_.exports,
+            require_,
+            module_,
+            module_.exports,
+            dirname,
+            filename
+        );
+        require.modules[filename]._cached = module_.exports;
+        return module_.exports;
+    };
+};
+
+if (typeof process === 'undefined') process = {};
+
+if (!process.nextTick) process.nextTick = (function () {
+    var queue = [];
+    var canPost = typeof window !== 'undefined'
+        && window.postMessage && window.addEventListener
+    ;
+    
+    if (canPost) {
+        window.addEventListener('message', function (ev) {
+            if (ev.source === window && ev.data === 'browserify-tick') {
+                ev.stopPropagation();
+                if (queue.length > 0) {
+                    var fn = queue.shift();
+                    fn();
+                }
+            }
+        }, true);
+    }
+    
+    return function (fn) {
+        if (canPost) {
+            queue.push(fn);
+            window.postMessage('browserify-tick', '*');
+        }
+        else setTimeout(fn, 0);
+    };
+})();
+
+if (!process.title) process.title = 'browser';
+
+if (!process.binding) process.binding = function (name) {
+    if (name === 'evals') return require('vm')
+    else throw new Error('No such module')
+};
+
+if (!process.cwd) process.cwd = function () { return '.' };
+
+require.define("path", function (require, module, exports, __dirname, __filename) {
+    function filter (xs, fn) {
+    var res = [];
+    for (var i = 0; i < xs.length; i++) {
+        if (fn(xs[i], i, xs)) res.push(xs[i]);
+    }
+    return res;
+}
+
+// resolves . and .. elements in a path array with directory names there
+// must be no slashes, empty elements, or device names (c:\) in the array
+// (so also no leading and trailing slashes - it does not distinguish
+// relative and absolute paths)
+function normalizeArray(parts, allowAboveRoot) {
+  // if the path tries to go above the root, `up` ends up > 0
+  var up = 0;
+  for (var i = parts.length; i >= 0; i--) {
+    var last = parts[i];
+    if (last == '.') {
+      parts.splice(i, 1);
+    } else if (last === '..') {
+      parts.splice(i, 1);
+      up++;
+    } else if (up) {
+      parts.splice(i, 1);
+      up--;
+    }
+  }
+
+  // if the path is allowed to go above the root, restore leading ..s
+  if (allowAboveRoot) {
+    for (; up--; up) {
+      parts.unshift('..');
+    }
+  }
+
+  return parts;
+}
+
+// Regex to split a filename into [*, dir, basename, ext]
+// posix version
+var splitPathRe = /^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/;
+
+// path.resolve([from ...], to)
+// posix version
+exports.resolve = function() {
+var resolvedPath = '',
+    resolvedAbsolute = false;
+
+for (var i = arguments.length; i >= -1 && !resolvedAbsolute; i--) {
+  var path = (i >= 0)
+      ? arguments[i]
+      : process.cwd();
+
+  // Skip empty and invalid entries
+  if (typeof path !== 'string' || !path) {
+    continue;
+  }
+
+  resolvedPath = path + '/' + resolvedPath;
+  resolvedAbsolute = path.charAt(0) === '/';
+}
+
+// At this point the path should be resolved to a full absolute path, but
+// handle relative paths to be safe (might happen when process.cwd() fails)
+
+// Normalize the path
+resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
+    return !!p;
+  }), !resolvedAbsolute).join('/');
+
+  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
+};
+
+// path.normalize(path)
+// posix version
+exports.normalize = function(path) {
+var isAbsolute = path.charAt(0) === '/',
+    trailingSlash = path.slice(-1) === '/';
+
+// Normalize the path
+path = normalizeArray(filter(path.split('/'), function(p) {
+    return !!p;
+  }), !isAbsolute).join('/');
+
+  if (!path && !isAbsolute) {
+    path = '.';
+  }
+  if (path && trailingSlash) {
+    path += '/';
+  }
+  
+  return (isAbsolute ? '/' : '') + path;
+};
+
+
+// posix version
+exports.join = function() {
+  var paths = Array.prototype.slice.call(arguments, 0);
+  return exports.normalize(filter(paths, function(p, index) {
+    return p && typeof p === 'string';
+  }).join('/'));
+};
+
+
+exports.dirname = function(path) {
+  var dir = splitPathRe.exec(path)[1] || '';
+  var isWindows = false;
+  if (!dir) {
+    // No dirname
+    return '.';
+  } else if (dir.length === 1 ||
+      (isWindows && dir.length <= 3 && dir.charAt(1) === ':')) {
+    // It is just a slash or a drive letter with a slash
+    return dir;
+  } else {
+    // It is a full dirname, strip trailing slash
+    return dir.substring(0, dir.length - 1);
+  }
+};
+
+
+exports.basename = function(path, ext) {
+  var f = splitPathRe.exec(path)[2] || '';
+  // TODO: make this comparison case-insensitive on windows?
+  if (ext && f.substr(-1 * ext.length) === ext) {
+    f = f.substr(0, f.length - ext.length);
+  }
+  return f;
+};
+
+
+exports.extname = function(path) {
+  return splitPathRe.exec(path)[3] || '';
+};
+
+});
+
+require.define("/shred.js", function (require, module, exports, __dirname, __filename) {
+    // Shred is an HTTP client library intended to simplify the use of Node's
+// built-in HTTP library. In particular, we wanted to make it easier to interact
+// with HTTP-based APIs.
+// 
+// See the [examples](./examples.html) for more details.
+
+// Ax is a nice logging library we wrote. You can use any logger, providing it
+// has `info`, `warn`, `debug`, and `error` methods that take a string.
+var Ax = require("ax")
+  , CookieJarLib = require( "cookiejar" )
+  , CookieJar = CookieJarLib.CookieJar
+;
+
+// Shred takes some options, including a logger and request defaults.
+
+var Shred = function(options) {
+  options = (options||{});
+  this.agent = options.agent;
+  this.defaults = options.defaults||{};
+  this.log = options.logger||(new Ax({ level: "info" }));
+  this._sharedCookieJar = new CookieJar();
+  this.logCurl = options.logCurl || false;
+};
+
+// Most of the real work is done in the request and reponse classes.
+Shred.Request = require("./shred/request");
+Shred.Response = require("./shred/response");
+
+// The `request` method kicks off a new request, instantiating a new `Request`
+// object and passing along whatever default options we were given.
+
+Shred.prototype = {
+  request: function(options) {
+    options.logger = this.log;
+    options.logCurl = options.logCurl || this.logCurl;
+    options.cookieJar = ( 'cookieJar' in options ) ? options.cookieJar : this._sharedCookieJar; // let them set cookieJar = null
+    options.agent = options.agent || this.agent;
+    // fill in default options
+    for (var key in this.defaults) {
+      if (this.defaults.hasOwnProperty(key) && !options[key]) {
+        options[key] = this.defaults[key]
+      }
+    }
+    return new Shred.Request(options);
+  }
+};
+
+// Define a bunch of convenience methods so that you don't have to include
+// a `method` property in your request options.
+
+"get put post delete".split(" ").forEach(function(method) {
+  Shred.prototype[method] = function(options) {
+    options.method = method;
+    return this.request(options);
+  };
+});
+
+
+module.exports = Shred;
+
+});
+
+require.define("/node_modules/ax/package.json", function (require, module, exports, __dirname, __filename) {
+    module.exports = {"main":"./lib/ax.js"}
+});
+
+require.define("/node_modules/ax/lib/ax.js", function (require, module, exports, __dirname, __filename) {
+    var inspect = require("util").inspect
+  , fs = require("fs")
+;
+
+
+// this is a quick-and-dirty logger. there are other nicer loggers out there
+// but the ones i found were also somewhat involved. this one has a Ruby
+// logger type interface
+//
+// we can easily replace this, provide the info, debug, etc. methods are the
+// same. or, we can change Haiku to use a more standard node.js interface
+
+var format = function(level,message) {
+  var debug = (level=="debug"||level=="error");
+  if (!message) { return message.toString(); }
+  if (typeof(message) == "object") {
+    if (message instanceof Error && debug) {
+      return message.stack;
+    } else {
+      return inspect(message);
+    }
+  } else {
+    return message.toString();
+  }
+};
+
+var noOp = function(message) { return this; }
+var makeLogger = function(level,fn) {
+  return function(message) { 
+    this.stream.write(this.format(level, message)+"\n");
+    return this;
+  }
+};
+
+var Logger = function(options) {
+  var logger = this;
+  var options = options||{};
+
+  // Default options
+  options.level = options.level || "info";
+  options.timestamp = options.timestamp || true;
+  options.prefix = options.prefix || "";
+  logger.options = options;
+
+  // Allows a prefix to be added to the message.
+  //
+  //    var logger = new Ax({ module: 'Haiku' })
+  //    logger.warn('this is going to be awesome!');
+  //    //=> Haiku: this is going to be awesome!
+  //
+  if (logger.options.module){
+    logger.options.prefix = logger.options.module;
+  }
+
+  // Write to stderr or a file
+  if (logger.options.file){
+    logger.stream = fs.createWriteStream(logger.options.file, {"flags": "a"});
+  } else {
+      if(process.title === "node")
+    logger.stream = process.stderr;
+      else if(process.title === "browser")
+    logger.stream = function () {
+      // Work around weird console context issue: http://code.google.com/p/chromium/issues/detail?id=48662
+      return console[logger.options.level].apply(console, arguments);
+    };
+  }
+
+  switch(logger.options.level){
+    case 'debug':
+      ['debug', 'info', 'warn'].forEach(function (level) {
+        logger[level] = Logger.writer(level);
+      });
+    case 'info':
+      ['info', 'warn'].forEach(function (level) {
+        logger[level] = Logger.writer(level);
+      });
+    case 'warn':
+      logger.warn = Logger.writer('warn');
+  }
+}
+
+// Used to define logger methods
+Logger.writer = function(level){
+  return function(message){
+    var logger = this;
+
+    if(process.title === "node")
+  logger.stream.write(logger.format(level, message) + '\n');
+    else if(process.title === "browser")
+  logger.stream(logger.format(level, message) + '\n');
+
+  };
+}
+
+
+Logger.prototype = {
+  info: function(){},
+  debug: function(){},
+  warn: function(){},
+  error: Logger.writer('error'),
+  format: function(level, message){
+    if (! message) return '';
+
+    var logger = this
+      , prefix = logger.options.prefix
+      , timestamp = logger.options.timestamp ? " " + (new Date().toISOString()) : ""
+    ;
+
+    return (prefix + timestamp + ": " + message);
+  }
+};
+
+module.exports = Logger;
+
+});
+
+require.define("util", function (require, module, exports, __dirname, __filename) {
+    // todo
+
+});
+
+require.define("fs", function (require, module, exports, __dirname, __filename) {
+    // nothing to see here... no file methods for the browser
+
+});
+
+require.define("/node_modules/cookiejar/package.json", function (require, module, exports, __dirname, __filename) {
+    module.exports = {"main":"cookiejar.js"}
+});
+
+require.define("/node_modules/cookiejar/cookiejar.js", function (require, module, exports, __dirname, __filename) {
+    exports.CookieAccessInfo=CookieAccessInfo=function CookieAccessInfo(domain,path,secure,script) {
+    if(this instanceof CookieAccessInfo) {
+      this.domain=domain||undefined;
+      this.path=path||"/";
+      this.secure=!!secure;
+      this.script=!!script;
+      return this;
+    }
+    else {
+        return new CookieAccessInfo(domain,path,secure,script)    
+    }
+}
+
+exports.Cookie=Cookie=function Cookie(cookiestr) {
+  if(cookiestr instanceof Cookie) {
+    return cookiestr;
+  }
+    else {
+        if(this instanceof Cookie) {
+          this.name = null;
+          this.value = null;
+          this.expiration_date = Infinity;
+          this.path = "/";
+          this.domain = null;
+          this.secure = false; //how to define?
+          this.noscript = false; //httponly
+          if(cookiestr) {
+            this.parse(cookiestr)
+          }
+          return this;
+        }
+        return new Cookie(cookiestr)
+    }
+}
+
+Cookie.prototype.toString = function toString() {
+  var str=[this.name+"="+this.value];
+  if(this.expiration_date !== Infinity) {
+    str.push("expires="+(new Date(this.expiration_date)).toGMTString());
+  }
+  if(this.domain) {
+    str.push("domain="+this.domain);
+  }
+  if(this.path) {
+    str.push("path="+this.path);
+  }
+  if(this.secure) {
+    str.push("secure");
+  }
+  if(this.noscript) {
+    str.push("httponly");
+  }
+  return str.join("; ");
+}
+
+Cookie.prototype.toValueString = function toValueString() {
+  return this.name+"="+this.value;
+}
+
+var cookie_str_splitter=/[:](?=\s*[a-zA-Z0-9_\-]+\s*[=])/g
+Cookie.prototype.parse = function parse(str) {
+  if(this instanceof Cookie) {
+      var parts=str.split(";")
+      , pair=parts[0].match(/([^=]+)=((?:.|\n)*)/)
+      , key=pair[1]
+      , value=pair[2];
+      this.name = key;
+      this.value = value;
+    
+      for(var i=1;i<parts.length;i++) {
+        pair=parts[i].match(/([^=]+)(?:=((?:.|\n)*))?/)
+        , key=pair[1].trim().toLowerCase()
+        , value=pair[2];
+        switch(key) {
+          case "httponly":
+            this.noscript = true;
+          break;
+          case "expires":
+            this.expiration_date = value
+              ? Number(Date.parse(value))
+              : Infinity;
+          break;
+          case "path":
+            this.path = value
+              ? value.trim()
+              : "";
+          break;
+          case "domain":
+            this.domain = value
+              ? value.trim()
+              : "";
+          break;
+          case "secure":
+            this.secure = true;
+          break
+        }
+      }
+    
+      return this;
+  }
+    return new Cookie().parse(str)
+}
+
+Cookie.prototype.matches = function matches(access_info) {
+  if(this.noscript && access_info.script
+  || this.secure && !access_info.secure
+  || !this.collidesWith(access_info)) {
+    return false
+  }
+  return true;
+}
+
+Cookie.prototype.collidesWith = function collidesWith(access_info) {
+  if((this.path && !access_info.path) || (this.domain && !access_info.domain)) {
+    return false
+  }
+  if(this.path && access_info.path.indexOf(this.path) !== 0) {
+    return false;
+  }
+  if (this.domain===access_info.domain) {
+    return true;
+  }
+  else if(this.domain && this.domain.charAt(0)===".")
+  {
+    var wildcard=access_info.domain.indexOf(this.domain.slice(1))
+    if(wildcard===-1 || wildcard!==access_info.domain.length-this.domain.length+1) {
+      return false;
+    }
+  }
+  else if(this.domain){
+    return false
+  }
+  return true;
+}
+
+exports.CookieJar=CookieJar=function CookieJar() {
+  if(this instanceof CookieJar) {
+      var cookies = {} //name: [Cookie]
+    
+      this.setCookie = function setCookie(cookie) {
+        cookie = Cookie(cookie);
+        //Delete the cookie if the set is past the current time
+        var remove = cookie.expiration_date <= Date.now();
+        if(cookie.name in cookies) {
+          var cookies_list = cookies[cookie.name];
+          for(var i=0;i<cookies_list.length;i++) {
+            var collidable_cookie = cookies_list[i];
+            if(collidable_cookie.collidesWith(cookie)) {
+              if(remove) {
+                cookies_list.splice(i,1);
+                if(cookies_list.length===0) {
+                  delete cookies[cookie.name]
+                }
+                return false;
+              }
+              else {
+                return cookies_list[i]=cookie;
+              }
+            }
+          }
+          if(remove) {
+            return false;
+          }
+          cookies_list.push(cookie);
+          return cookie;
+        }
+        else if(remove){
+          return false;
+        }
+        else {
+          return cookies[cookie.name]=[cookie];
+        }
+      }
+      //returns a cookie
+      this.getCookie = function getCookie(cookie_name,access_info) {
+        var cookies_list = cookies[cookie_name];
+        for(var i=0;i<cookies_list.length;i++) {
+          var cookie = cookies_list[i];
+          if(cookie.expiration_date <= Date.now()) {
+            if(cookies_list.length===0) {
+              delete cookies[cookie.name]
+            }
+            continue;
+          }
+          if(cookie.matches(access_info)) {
+            return cookie;
+          }
+        }
+      }
+      //returns a list of cookies
+      this.getCookies = function getCookies(access_info) {
+        var matches=[];
+        for(var cookie_name in cookies) {
+          var cookie=this.getCookie(cookie_name,access_info);
+          if (cookie) {
+            matches.push(cookie);
+          }
+        }
+        matches.toString=function toString(){return matches.join(":");}
+            matches.toValueString=function() {return matches.map(function(c){return c.toValueString();}).join(';');}
+        return matches;
+      }
+    
+      return this;
+  }
+    return new CookieJar()
+}
+
+
+//returns list of cookies that were set correctly
+CookieJar.prototype.setCookies = function setCookies(cookies) {
+  cookies=Array.isArray(cookies)
+    ?cookies
+    :cookies.split(cookie_str_splitter);
+  var successful=[]
+  for(var i=0;i<cookies.length;i++) {
+    var cookie = Cookie(cookies[i]);
+    if(this.setCookie(cookie)) {
+      successful.push(cookie);
+    }
+  }
+  return successful;
+}
+
+});
+
+require.define("/shred/request.js", function (require, module, exports, __dirname, __filename) {
+    // The request object encapsulates a request, creating a Node.js HTTP request and
+// then handling the response.
+
+var HTTP = require("http")
+  , HTTPS = require("https")
+  , parseUri = require("./parseUri")
+  , Emitter = require('events').EventEmitter
+  , sprintf = require("sprintf").sprintf
+  , Response = require("./response")
+  , HeaderMixins = require("./mixins/headers")
+  , Content = require("./content")
+;
+
+var STATUS_CODES = HTTP.STATUS_CODES || {
+    100 : 'Continue',
+    101 : 'Switching Protocols',
+    102 : 'Processing', // RFC 2518, obsoleted by RFC 4918
+    200 : 'OK',
+    201 : 'Created',
+    202 : 'Accepted',
+    203 : 'Non-Authoritative Information',
+    204 : 'No Content',
+    205 : 'Reset Content',
+    206 : 'Partial Content',
+    207 : 'Multi-Status', // RFC 4918
+    300 : 'Multiple Choices',
+    301 : 'Moved Permanently',
+    302 : 'Moved Temporarily',
+    303 : 'See Other',
+    304 : 'Not Modified',
+    305 : 'Use Proxy',
+    307 : 'Temporary Redirect',
+    400 : 'Bad Request',
+    401 : 'Unauthorized',
+    402 : 'Payment Required',
+    403 : 'Forbidden',
+    404 : 'Not Found',
+    405 : 'Method Not Allowed',
+    406 : 'Not Acceptable',
+    407 : 'Proxy Authentication Required',
+    408 : 'Request Time-out',
+    409 : 'Conflict',
+    410 : 'Gone',
+    411 : 'Length Required',
+    412 : 'Precondition Failed',
+    413 : 'Request Entity Too Large',
+    414 : 'Request-URI Too Large',
+    415 : 'Unsupported Media Type',
+    416 : 'Requested Range Not Satisfiable',
+    417 : 'Expectation Failed',
+    418 : 'I\'m a teapot', // RFC 2324
+    422 : 'Unprocessable Entity', // RFC 4918
+    423 : 'Locked', // RFC 4918
+    424 : 'Failed Dependency', // RFC 4918
+    425 : 'Unordered Collection', // RFC 4918
+    426 : 'Upgrade Required', // RFC 2817
+    500 : 'Internal Server Error',
+    501 : 'Not Implemented',
+    502 : 'Bad Gateway',
+    503 : 'Service Unavailable',
+    504 : 'Gateway Time-out',
+    505 : 'HTTP Version not supported',
+    506 : 'Variant Also Negotiates', // RFC 2295
+    507 : 'Insufficient Storage', // RFC 4918
+    509 : 'Bandwidth Limit Exceeded',
+    510 : 'Not Extended' // RFC 2774
+};
+
+// The Shred object itself constructs the `Request` object. You should rarely
+// need to do this directly.
+
+var Request = function(options) {
+  this.log = options.logger;
+  this.cookieJar = options.cookieJar;
+  this.encoding = options.encoding;
+  this.logCurl = options.logCurl;
+  processOptions(this,options||{});
+  createRequest(this);
+};
+
+// A `Request` has a number of properties, many of which help with details like
+// URL parsing or defaulting the port for the request.
+
+Object.defineProperties(Request.prototype, {
+
+// - **url**. You can set the `url` property with a valid URL string and all the
+//   URL-related properties (host, port, etc.) will be automatically set on the
+//   request object.
+
+  url: {
+    get: function() {
+      if (!this.scheme) { return null; }
+      return sprintf("%s://%s:%s%s",
+          this.scheme, this.host, this.port,
+          (this.proxy ? "/" : this.path) +
+          (this.query ? ("?" + this.query) : ""));
+    },
+    set: function(_url) {
+      _url = parseUri(_url);
+      this.scheme = _url.protocol;
+      this.host = _url.host;
+      this.port = _url.port;
+      this.path = _url.path;
+      this.query = _url.query;
+      return this;
+    },
+    enumerable: true
+  },
+
+// - **headers**. Returns a hash representing the request headers. You can't set
+//   this directly, only get it. You can add or modify headers by using the
+//   `setHeader` or `setHeaders` method. This ensures that the headers are
+//   normalized - that is, you don't accidentally send `Content-Type` and
+//   `content-type` headers. Keep in mind that if you modify the returned hash,
+//   it will *not* modify the request headers.
+
+  headers: {
+    get: function() {
+      return this.getHeaders();
+    },
+    enumerable: true
+  },
+
+// - **port**. Unless you set the `port` explicitly or include it in the URL, it
+//   will default based on the scheme.
+
+  port: {
+    get: function() {
+      if (!this._port) {
+        switch(this.scheme) {
+          case "https": return this._port = 443;
+          case "http":
+          default: return this._port = 80;
+        }
+      }
+      return this._port;
+    },
+    set: function(value) { this._port = value; return this; },
+    enumerable: true
+  },
+
+// - **method**. The request method - `get`, `put`, `post`, etc. that will be
+//   used to make the request. Defaults to `get`.
+
+  method: {
+    get: function() {
+      return this._method = (this._method||"GET");
+    },
+    set: function(value) {
+      this._method = value; return this;
+    },
+    enumerable: true
+  },
+
+// - **query**. Can be set either with a query string or a hash (object). Get
+//   will always return a properly escaped query string or null if there is no
+//   query component for the request.
+
+  query: {
+    get: function() {return this._query;},
+    set: function(value) {
+      var stringify = function (hash) {
+        var query = "";
+        for (var key in hash) {
+          query += encodeURIComponent(key) + '=' + encodeURIComponent(hash[key]) + '&';
+        }
+        // Remove the last '&'
+        query = query.slice(0, -1);
+        return query;
+      }
+
+      if (value) {
+        if (typeof value === 'object') {
+          value = stringify(value);
+        }
+        this._query = value;
+      } else {
+        this._query = "";
+      }
+      return this;
+    },
+    enumerable: true
+  },
+
+// - **parameters**. This will return the query parameters in the form of a hash
+//   (object).
+
+  parameters: {
+    get: function() { return QueryString.parse(this._query||""); },
+    enumerable: true
+  },
+
+// - **content**. (Aliased as `body`.) Set this to add a content entity to the
+//   request. Attempts to use the `content-type` header to determine what to do
+//   with the content value. Get this to get back a [`Content`
+//   object](./content.html).
+
+  body: {
+    get: function() { return this._body; },
+    set: function(value) {
+      this._body = new Content({
+        data: value,
+        type: this.getHeader("Content-Type")
+      });
+      this.setHeader("Content-Type",this.content.type);
+      this.setHeader("Content-Length",this.content.length);
+      return this;
+    },
+    enumerable: true
+  },
+
+// - **timeout**. Used to determine how long to wait for a response. Does not
+//   distinguish between connect timeouts versus request timeouts. Set either in
+//   milliseconds or with an object with temporal attributes (hours, minutes,
+//   seconds) and convert it into milliseconds. Get will always return
+//   milliseconds.
+
+  timeout: {
+    get: function() { return this._timeout; }, // in milliseconds
+    set: function(timeout) {
+      var request = this
+        , milliseconds = 0;
+      ;
+      if (!timeout) return this;
+      if (typeof timeout==="number") { milliseconds = timeout; }
+      else {
+        milliseconds = (timeout.milliseconds||0) +
+          (1000 * ((timeout.seconds||0) +
+              (60 * ((timeout.minutes||0) +
+                (60 * (timeout.hours||0))))));
+      }
+      this._timeout = milliseconds;
+      return this;
+    },
+    enumerable: true
+  }
+});
+
+// Alias `body` property to `content`. Since the [content object](./content.html)
+// has a `body` attribute, it's preferable to use `content` since you can then
+// access the raw content data using `content.body`.
+
+Object.defineProperty(Request.prototype,"content",
+    Object.getOwnPropertyDescriptor(Request.prototype, "body"));
+
+// The `Request` object can be pretty overwhelming to view using the built-in
+// Node.js inspect method. We want to make it a bit more manageable. This
+// probably goes [too far in the other
+// direction](https://github.com/spire-io/shred/issues/2).
+
+Request.prototype.inspect = function () {
+  var request = this;
+  var headers = this.format_headers();
+  var summary = ["<Shred Request> ", request.method.toUpperCase(),
+      request.url].join(" ")
+  return [ summary, "- Headers:", headers].join("\n");
+};
+
+Request.prototype.format_headers = function () {
+  var array = []
+  var headers = this._headers
+  for (var key in headers) {
+    if (headers.hasOwnProperty(key)) {
+      var value = headers[key]
+      array.push("\t" + key + ": " + value);
+    }
+  }
+  return array.join("\n");
+};
+
+// Allow chainable 'on's:  shred.get({ ... }).on( ... ).  You can pass in a
+// single function, a pair (event, function), or a hash:
+// { event: function, event: function }
+Request.prototype.on = function (eventOrHash, listener) {
+  var emitter = this.emitter;
+  // Pass in a single argument as a function then make it the default response handler
+  if (arguments.length === 1 && typeof(eventOrHash) === 'function') {
+    emitter.on('response', eventOrHash);
+  } else if (arguments.length === 1 && typeof(eventOrHash) === 'object') {
+    for (var key in eventOrHash) {
+      if (eventOrHash.hasOwnProperty(key)) {
+        emitter.on(key, eventOrHash[key]);
+      }
+    }
+  } else {
+    emitter.on(eventOrHash, listener);
+  }
+  return this;
+};
+
+// Add in the header methods. Again, these ensure we don't get the same header
+// multiple times with different case conventions.
+HeaderMixins.gettersAndSetters(Request);
+
+// `processOptions` is called from the constructor to handle all the work
+// associated with making sure we do our best to ensure we have a valid request.
+
+var processOptions = function(request,options) {
+
+  request.log.debug("Processing request options ..");
+
+  // We'll use `request.emitter` to manage the `on` event handlers.
+  request.emitter = (new Emitter);
+
+  request.agent = options.agent;
+
+  // Set up the handlers ...
+  if (options.on) {
+    for (var key in options.on) {
+      if (options.on.hasOwnProperty(key)) {
+        request.emitter.on(key, options.on[key]);
+      }
+    }
+  }
+
+  // Make sure we were give a URL or a host
+  if (!options.url && !options.host) {
+    request.emitter.emit("request_error",
+        new Error("No url or url options (host, port, etc.)"));
+    return;
+  }
+
+  // Allow for the [use of a proxy](http://www.jmarshall.com/easy/http/#proxies).
+
+  if (options.url) {
+    if (options.proxy) {
+      request.url = options.proxy;
+      request.path = options.url;
+    } else {
+      request.url = options.url;
+    }
+  }
+
+  // Set the remaining options.
+  request.query = options.query||options.parameters||request.query ;
+  request.method = options.method;
+  request.setHeader("user-agent",options.agent||"Shred");
+  request.setHeaders(options.headers);
+
+  if (request.cookieJar) {
+    var cookies = request.cookieJar.getCookies( CookieAccessInfo( request.host, request.path ) );
+    if (cookies.length) {
+      var cookieString = request.getHeader('cookie')||'';
+      for (var cookieIndex = 0; cookieIndex < cookies.length; ++cookieIndex) {
+          if ( cookieString.length && cookieString[ cookieString.length - 1 ] != ';' )
+          {
+              cookieString += ';';
+          }
+          cookieString += cookies[ cookieIndex ].name + '=' + cookies[ cookieIndex ].value + ';';
+      }
+      request.setHeader("cookie", cookieString);
+    }
+  }
+  
+  // The content entity can be set either using the `body` or `content` attributes.
+  if (options.body||options.content) {
+    request.content = options.body||options.content;
+  }
+  request.timeout = options.timeout;
+
+};
+
+// `createRequest` is also called by the constructor, after `processOptions`.
+// This actually makes the request and processes the response, so `createRequest`
+// is a bit of a misnomer.
+
+var createRequest = function(request) {
+  var timeout ;
+
+  request.log.debug("Creating request ..");
+  request.log.debug(request);
+
+  var reqParams = {
+    host: request.host,
+    port: request.port,
+    method: request.method,
+    path: request.path + (request.query ? '?'+request.query : ""),
+    headers: request.getHeaders(),
+    // Node's HTTP/S modules will ignore this, but we are using the
+    // browserify-http module in the browser for both HTTP and HTTPS, and this
+    // is how you differentiate the two.
+    scheme: request.scheme,
+    // Use a provided agent.  'Undefined' is the default, which uses a global
+    // agent.
+    agent: request.agent
+  };
+
+  if (request.logCurl) {
+    logCurl(request);
+  }
+
+  var http = request.scheme == "http" ? HTTP : HTTPS;
+
+  // Set up the real request using the selected library. The request won't be
+  // sent until we call `.end()`.
+  request._raw = http.request(reqParams, function(response) {
+    request.log.debug("Received response ..");
+
+    // We haven't timed out and we have a response, so make sure we clear the
+    // timeout so it doesn't fire while we're processing the response.
+    clearTimeout(timeout);
+
+    // Construct a Shred `Response` object from the response. This will stream
+    // the response, thus the need for the callback. We can access the response
+    // entity safely once we're in the callback.
+    response = new Response(response, request, function(response) {
+
+      // Set up some event magic. The precedence is given first to
+      // status-specific handlers, then to responses for a given event, and then
+      // finally to the more general `response` handler. In the last case, we
+      // need to first make sure we're not dealing with a a redirect.
+      var emit = function(event) {
+        var emitter = request.emitter;
+        var textStatus = STATUS_CODES[response.status] ? STATUS_CODES[response.status].toLowerCase() : null;
+        if (emitter.listeners(response.status).length > 0 || emitter.listeners(textStatus).length > 0) {
+          emitter.emit(response.status, response);
+          emitter.emit(textStatus, response);
+        } else {
+          if (emitter.listeners(event).length>0) {
+            emitter.emit(event, response);
+          } else if (!response.isRedirect) {
+            emitter.emit("response", response);
+            //console.warn("Request has no event listener for status code " + response.status);
+          }
+        }
+      };
+
+      // Next, check for a redirect. We simply repeat the request with the URL
+      // given in the `Location` header. We fire a `redirect` event.
+      if (response.isRedirect) {
+        request.log.debug("Redirecting to "
+            + response.getHeader("Location"));
+        request.url = response.getHeader("Location");
+        emit("redirect");
+        createRequest(request);
+
+      // Okay, it's not a redirect. Is it an error of some kind?
+      } else if (response.isError) {
+        emit("error");
+      } else {
+      // It looks like we're good shape. Trigger the `success` event.
+        emit("success");
+      }
+    });
+  });
+
+  // We're still setting up the request. Next, we're going to handle error cases
+  // where we have no response. We don't emit an error event because that event
+  // takes a response. We don't response handlers to have to check for a null
+  // value. However, we [should introduce a different event
+  // type](https://github.com/spire-io/shred/issues/3) for this type of error.
+  request._raw.on("error", function(error) {
+    request.emitter.emit("request_error", error);
+  });
+
+  request._raw.on("socket", function(socket) {
+    request.emitter.emit("socket", socket);
+  });
+
+  // TCP timeouts should also trigger the "response_error" event.
+  request._raw.on('socket', function () {
+    request._raw.socket.on('timeout', function () {
+      // This should trigger the "error" event on the raw request, which will
+      // trigger the "response_error" on the shred request.
+      request._raw.abort();
+    });
+  });
+
+
+  // We're almost there. Next, we need to write the request entity to the
+  // underlying request object.
+  if (request.content) {
+    request.log.debug("Streaming body: '" +
+        request.content.data.slice(0,59) + "' ... ");
+    request._raw.write(request.content.data);
+  }
+
+  // Finally, we need to set up the timeout. We do this last so that we don't
+  // start the clock ticking until the last possible moment.
+  if (request.timeout) {
+    timeout = setTimeout(function() {
+      request.log.debug("Timeout fired, aborting request ...");
+      request._raw.abort();
+      request.emitter.emit("timeout", request);
+    },request.timeout);
+  }
+
+  // The `.end()` method will cause the request to fire. Technically, it might
+  // have already sent the headers and body.
+  request.log.debug("Sending request ...");
+  request._raw.end();
+};
+
+// Logs the curl command for the request.
+var logCurl = function (req) {
+  var headers = req.getHeaders();
+  var headerString = "";
+
+  for (var key in headers) {
+    headerString += '-H "' + key + ": " + headers[key] + '" ';
+  }
+
+  var bodyString = ""
+
+  if (req.content) {
+    bodyString += "-d '" + req.content.body + "' ";
+  }
+
+  var query = req.query ? '?' + req.query : "";
+
+  console.log("curl " +
+    "-X " + req.method.toUpperCase() + " " +
+    req.scheme + "://" + req.host + ":" + req.port + req.path + query + " " +
+    headerString +
+    bodyString
+  );
+};
+
+
+module.exports = Request;
+
+});
+
+require.define("http", function (require, module, exports, __dirname, __filename) {
+    // todo
+
+});
+
+require.define("https", function (require, module, exports, __dirname, __filename) {
+    // todo
+
+});
+
+require.define("/shred/parseUri.js", function (require, module, exports, __dirname, __filename) {
+    // parseUri 1.2.2
+// (c) Steven Levithan <stevenlevithan.com>
+// MIT License
+
+function parseUri (str) {
+  var o   = parseUri.options,
+    m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
+    uri = {},
+    i   = 14;
+
+  while (i--) uri[o.key[i]] = m[i] || "";
+
+  uri[o.q.name] = {};
+  uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
+    if ($1) uri[o.q.name][$1] = $2;
+  });
+
+  return uri;
+};
+
+parseUri.options = {
+  strictMode: false,
+  key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
+  q:   {
+    name:   "queryKey",
+    parser: /(?:^|&)([^&=]*)=?([^&]*)/g
+  },
+  parser: {
+    strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
+    loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
+  }
+};
+
+module.exports = parseUri;
+
+});
+
+require.define("events", function (require, module, exports, __dirname, __filename) {
+    if (!process.EventEmitter) process.EventEmitter = function () {};
+
+var EventEmitter = exports.EventEmitter = process.EventEmitter;
+var isArray = typeof Array.isArray === 'function'
+    ? Array.isArray
+    : function (xs) {
+        return Object.toString.call(xs) === '[object Array]'
+    }
+;
+
+// By default EventEmitters will print a warning if more than
+// 10 listeners are added to it. This is a useful default which
+// helps finding memory leaks.
+//
+// Obviously not all Emitters should be limited to 10. This function allows
+// that to be increased. Set to zero for unlimited.
+var defaultMaxListeners = 10;
+EventEmitter.prototype.setMaxListeners = function(n) {
+  if (!this._events) this._events = {};
+  this._events.maxListeners = n;
+};
+
+
+EventEmitter.prototype.emit = function(type) {
+  // If there is no 'error' event listener then throw.
+  if (type === 'error') {
+    if (!this._events || !this._events.error ||
+        (isArray(this._events.error) && !this._events.error.length))
+    {
+      if (arguments[1] instanceof Error) {
+        throw arguments[1]; // Unhandled 'error' event
+      } else {
+        throw new Error("Uncaught, unspecified 'error' event.");
+      }
+      return false;
+    }
+  }
+
+  if (!this._events) return false;
+  var handler = this._events[type];
+  if (!handler) return false;
+
+  if (typeof handler == 'function') {
+    switch (arguments.length) {
+      // fast cases
+      case 1:
+        handler.call(this);
+        break;
+      case 2:
+        handler.call(this, arguments[1]);
+        break;
+      case 3:
+        handler.call(this, arguments[1], arguments[2]);
+        break;
+      // slower
+      default:
+        var args = Array.prototype.slice.call(arguments, 1);
+        handler.apply(this, args);
+    }
+    return true;
+
+  } else if (isArray(handler)) {
+    var args = Array.prototype.slice.call(arguments, 1);
+
+    var listeners = handler.slice();
+    for (var i = 0, l = listeners.length; i < l; i++) {
+      listeners[i].apply(this, args);
+    }
+    return true;
+
+  } else {
+    return false;
+  }
+};
+
+// EventEmitter is defined in src/node_events.cc
+// EventEmitter.prototype.emit() is also defined there.
+EventEmitter.prototype.addListener = function(type, listener) {
+  if ('function' !== typeof listener) {
+    throw new Error('addListener only takes instances of Function');
+  }
+
+  if (!this._events) this._events = {};
+
+  // To avoid recursion in the case that type == "newListeners"! Before
+  // adding it to the listeners, first emit "newListeners".
+  this.emit('newListener', type, listener);
+
+  if (!this._events[type]) {
+    // Optimize the case of one listener. Don't need the extra array object.
+    this._events[type] = listener;
+  } else if (isArray(this._events[type])) {
+
+    // Check for listener leak
+    if (!this._events[type].warned) {
+      var m;
+      if (this._events.maxListeners !== undefined) {
+        m = this._events.maxListeners;
+      } else {
+        m = defaultMaxListeners;
+      }
+
+      if (m && m > 0 && this._events[type].length > m) {
+        this._events[type].warned = true;
+        console.error('(node) warning: possible EventEmitter memory ' +
+                      'leak detected. %d listeners added. ' +
+                      'Use emitter.setMaxListeners() to increase limit.',
+                      this._events[type].length);
+        console.trace();
+      }
+    }
+
+    // If we've already got an array, just append.
+    this._events[type].push(listener);
+  } else {
+    // Adding the second element, need to change to array.
+    this._events[type] = [this._events[type], listener];
+  }
+
+  return this;
+};
+
+EventEmitter.prototype.on = EventEmitter.prototype.addListener;
+
+EventEmitter.prototype.once = function(type, listener) {
+  var self = this;
+  self.on(type, function g() {
+    self.removeListener(type, g);
+    listener.apply(this, arguments);
+  });
+
+  return this;
+};
+
+EventEmitter.prototype.removeListener = function(type, listener) {
+  if ('function' !== typeof listener) {
+    throw new Error('removeListener only takes instances of Function');
+  }
+
+  // does not use listeners(), so no side effect of creating _events[type]
+  if (!this._events || !this._events[type]) return this;
+
+  var list = this._events[type];
+
+  if (isArray(list)) {
+    var i = list.indexOf(listener);
+    if (i < 0) return this;
+    list.splice(i, 1);
+    if (list.length == 0)
+      delete this._events[type];
+  } else if (this._events[type] === listener) {
+    delete this._events[type];
+  }
+
+  return this;
+};
+
+EventEmitter.prototype.removeAllListeners = function(type) {
+  // does not use listeners(), so no side effect of creating _events[type]
+  if (type && this._events && this._events[type]) this._events[type] = null;
+  return this;
+};
+
+EventEmitter.prototype.listeners = function(type) {
+  if (!this._events) this._events = {};
+  if (!this._events[type]) this._events[type] = [];
+  if (!isArray(this._events[type])) {
+    this._events[type] = [this._events[type]];
+  }
+  return this._events[type];
+};
+
+});
+
+require.define("/node_modules/sprintf/package.json", function (require, module, exports, __dirname, __filename) {
+    module.exports = {"main":"./lib/sprintf"}
+});
+
+require.define("/node_modules/sprintf/lib/sprintf.js", function (require, module, exports, __dirname, __filename) {
+    /**
+sprintf() for JavaScript 0.7-beta1
+http://www.diveintojavascript.com/projects/javascript-sprintf
+
+Copyright (c) Alexandru Marasteanu <alexaholic [at) gmail (dot] com>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of sprintf() for JavaScript nor the
+      names of its contributors may be used to endorse or promote products
+      derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Alexandru Marasteanu BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+Changelog:
+2010.11.07 - 0.7-beta1-node
+  - converted it to a node.js compatible module
+
+2010.09.06 - 0.7-beta1
+  - features: vsprintf, support for named placeholders
+  - enhancements: format cache, reduced global namespace pollution
+
+2010.05.22 - 0.6:
+ - reverted to 0.4 and fixed the bug regarding the sign of the number 0
+ Note:
+ Thanks to Raphael Pigulla <raph (at] n3rd [dot) org> (http://www.n3rd.org/)
+ who warned me about a bug in 0.5, I discovered that the last update was
+ a regress. I appologize for that.
+
+2010.05.09 - 0.5:
+ - bug fix: 0 is now preceeded with a + sign
+ - bug fix: the sign was not at the right position on padded results (Kamal Abdali)
+ - switched from GPL to BSD license
+
+2007.10.21 - 0.4:
+ - unit test and patch (David Baird)
+
+2007.09.17 - 0.3:
+ - bug fix: no longer throws exception on empty paramenters (Hans Pufal)
+
+2007.09.11 - 0.2:
+ - feature: added argument swapping
+
+2007.04.03 - 0.1:
+ - initial release
+**/
+
+var sprintf = (function() {
+  function get_type(variable) {
+    return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase();
+  }
+  function str_repeat(input, multiplier) {
+    for (var output = []; multiplier > 0; output[--multiplier] = input) {/* do nothing */}
+    return output.join('');
+  }
+
+  var str_format = function() {
+    if (!str_format.cache.hasOwnProperty(arguments[0])) {
+      str_format.cache[arguments[0]] = str_format.parse(arguments[0]);
+    }
+    return str_format.format.call(null, str_format.cache[arguments[0]], arguments);
+  };
+
+  str_format.format = function(parse_tree, argv) {
+    var cursor = 1, tree_length = parse_tree.length, node_type = '', arg, output = [], i, k, match, pad, pad_character, pad_length;
+    for (i = 0; i < tree_length; i++) {
+      node_type = get_type(parse_tree[i]);
+      if (node_type === 'string') {
+        output.push(parse_tree[i]);
+      }
+      else if (node_type === 'array') {
+        match = parse_tree[i]; // convenience purposes only
+        if (match[2]) { // keyword argument
+          arg = argv[cursor];
+          for (k = 0; k < match[2].length; k++) {
+            if (!arg.hasOwnProperty(match[2][k])) {
+              throw(sprintf('[sprintf] property "%s" does not exist', match[2][k]));
+            }
+            arg = arg[match[2][k]];
+          }
+        }
+        else if (match[1]) { // positional argument (explicit)
+          arg = argv[match[1]];
+        }
+        else { // positional argument (implicit)
+          arg = argv[cursor++];
+        }
+
+        if (/[^s]/.test(match[8]) && (get_type(arg) != 'number')) {
+          throw(sprintf('[sprintf] expecting number but found %s', get_type(arg)));
+        }
+        switch (match[8]) {
+          case 'b': arg = arg.toString(2); break;
+          case 'c': arg = String.fromCharCode(arg); break;
+          case 'd': arg = parseInt(arg, 10); break;
+          case 'e': arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential(); break;
+          case 'f': arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg); break;
+          case 'o': arg = arg.toString(8); break;
+          case 's': arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg); break;
+          case 'u': arg = Math.abs(arg); break;
+          case 'x': arg = arg.toString(16); break;
+          case 'X': arg = arg.toString(16).toUpperCase(); break;
+        }
+        arg = (/[def]/.test(match[8]) && match[3] && arg >= 0 ? '+'+ arg : arg);
+        pad_character = match[4] ? match[4] == '0' ? '0' : match[4].charAt(1) : ' ';
+        pad_length = match[6] - String(arg).length;
+        pad = match[6] ? str_repeat(pad_character, pad_length) : '';
+        output.push(match[5] ? arg + pad : pad + arg);
+      }
+    }
+    return output.join('');
+  };
+
+  str_format.cache = {};
+
+  str_format.parse = function(fmt) {
+    var _fmt = fmt, match = [], parse_tree = [], arg_names = 0;
+    while (_fmt) {
+      if ((match = /^[^\x25]+/.exec(_fmt)) !== null) {
+        parse_tree.push(match[0]);
+      }
+      else if ((match = /^\x25{2}/.exec(_fmt)) !== null) {
+        parse_tree.push('%');
+      }
+      else if ((match = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt)) !== null) {
+        if (match[2]) {
+          arg_names |= 1;
+          var field_list = [], replacement_field = match[2], field_match = [];
+          if ((field_match = /^([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
+            field_list.push(field_match[1]);
+            while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
+              if ((field_match = /^\.([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
+                field_list.push(field_match[1]);
+              }
+              else if ((field_match = /^\[(\d+)\]/.exec(replacement_field)) !== null) {
+                field_list.push(field_match[1]);
+              }
+              else {
+                throw('[sprintf] huh?');
+              }
+            }
+          }
+          else {
+            throw('[sprintf] huh?');
+          }
+          match[2] = field_list;
+        }
+        else {
+          arg_names |= 2;
+        }
+        if (arg_names === 3) {
+          throw('[sprintf] mixing positional and named placeholders is not (yet) supported');
+        }
+        parse_tree.push(match);
+      }
+      else {
+        throw('[sprintf] huh?');
+      }
+      _fmt = _fmt.substring(match[0].length);
+    }
+    return parse_tree;
+  };
+
+  return str_format;
+})();
+
+var vsprintf = function(fmt, argv) {
+  argv.unshift(fmt);
+  return sprintf.apply(null, argv);
+};
+
+exports.sprintf = sprintf;
+exports.vsprintf = vsprintf;
+});
+
+require.define("/shred/response.js", function (require, module, exports, __dirname, __filename) {
+    // The `Response object` encapsulates a Node.js HTTP response.
+
+var Content = require("./content")
+  , HeaderMixins = require("./mixins/headers")
+  , CookieJarLib = require( "cookiejar" )
+  , Cookie = CookieJarLib.Cookie
+;
+
+// Browser doesn't have zlib.
+var zlib = null;
+try {
+  zlib = require('zlib');
+} catch (e) {
+  // console.warn("no zlib library");
+}
+
+// Iconv doesn't work in browser
+var Iconv = null;
+try {
+  Iconv = require('iconv-lite');
+} catch (e) {
+  // console.warn("no iconv library");
+}
+
+// Construct a `Response` object. You should never have to do this directly. The
+// `Request` object handles this, getting the raw response object and passing it
+// in here, along with the request. The callback allows us to stream the response
+// and then use the callback to let the request know when it's ready.
+var Response = function(raw, request, callback) { 
+  var response = this;
+  this._raw = raw;
+
+  // The `._setHeaders` method is "private"; you can't otherwise set headers on
+  // the response.
+  this._setHeaders.call(this,raw.headers);
+  
+  // store any cookies
+  if (request.cookieJar && this.getHeader('set-cookie')) {
+    var cookieStrings = this.getHeader('set-cookie');
+    var cookieObjs = []
+      , cookie;
+
+    for (var i = 0; i < cookieStrings.length; i++) {
+      var cookieString = cookieStrings[i];
+      if (!cookieString) {
+        continue;
+      }
+
+      if (!cookieString.match(/domain\=/i)) {
+        cookieString += '; domain=' + request.host;
+      }
+
+      if (!cookieString.match(/path\=/i)) {
+        cookieString += '; path=' + request.path;
+      }
+
+      try {
+        cookie = new Cookie(cookieString);
+        if (cookie) {
+          cookieObjs.push(cookie);
+        }
+      } catch (e) {
+        console.warn("Tried to set bad cookie: " + cookieString);
+      }
+    }
+
+    request.cookieJar.setCookies(cookieObjs);
+  }
+
+  this.request = request;
+  this.client = request.client;
+  this.log = this.request.log;
+
+  // Stream the response content entity and fire the callback when we're done.
+  // Store the incoming data in a array of Buffers which we concatinate into one
+  // buffer at the end.  We need to use buffers instead of strings here in order
+  // to preserve binary data.
+  var chunkBuffers = [];
+  var dataLength = 0;
+  raw.on("data", function(chunk) {
+    chunkBuffers.push(chunk);
+    dataLength += chunk.length;
+  });
+  raw.on("end", function() {
+    var body;
+    if (typeof Buffer === 'undefined') {
+      // Just concatinate into a string
+      body = chunkBuffers.join('');
+    } else {
+      // Initialize new buffer and add the chunks one-at-a-time.
+      body = new Buffer(dataLength);
+      for (var i = 0, pos = 0; i < chunkBuffers.length; i++) {
+        chunkBuffers[i].copy(body, pos);
+        pos += chunkBuffers[i].length;
+      }
+    }
+
+    var setBodyAndFinish = function (body) {
+      response._body = new Content({ 
+        body: body,
+        type: response.getHeader("Content-Type")
+      });
+      callback(response);
+    }
+
+    if (zlib && response.getHeader("Content-Encoding") === 'gzip'){
+      zlib.gunzip(body, function (err, gunzippedBody) {
+        if (Iconv && response.request.encoding){
+          body = Iconv.fromEncoding(gunzippedBody,response.request.encoding);
+        } else {
+          body = gunzippedBody.toString();
+        }
+        setBodyAndFinish(body);
+      })
+    }
+    else{
+       if (response.request.encoding){
+            body = Iconv.fromEncoding(body,response.request.encoding);
+        }        
+      setBodyAndFinish(body);
+    }
+  });
+};
+
+// The `Response` object can be pretty overwhelming to view using the built-in
+// Node.js inspect method. We want to make it a bit more manageable. This
+// probably goes [too far in the other
+// direction](https://github.com/spire-io/shred/issues/2).
+
+Response.prototype = {
+  inspect: function() {
+    var response = this;
+    var headers = this.format_headers();
+    var summary = ["<Shred Response> ", response.status].join(" ")
+    return [ summary, "- Headers:", headers].join("\n");
+  },
+  format_headers: function () {
+    var array = []
+    var headers = this._headers
+    for (var key in headers) {
+      if (headers.hasOwnProperty(key)) {
+        var value = headers[key]
+        array.push("\t" + key + ": " + value);
+      }
+    }
+    return array.join("\n");
+  }
+};
+
+// `Response` object properties, all of which are read-only:
+Object.defineProperties(Response.prototype, {
+  
+// - **status**. The HTTP status code for the response. 
+  status: {
+    get: function() { return this._raw.statusCode; },
+    enumerable: true
+  },
+
+// - **content**. The HTTP content entity, if any. Provided as a [content
+//   object](./content.html), which will attempt to convert the entity based upon
+//   the `content-type` header. The converted value is available as
+//   `content.data`. The original raw content entity is available as
+//   `content.body`.
+  body: {
+    get: function() { return this._body; }
+  },
+  content: {
+    get: function() { return this.body; },
+    enumerable: true
+  },
+
+// - **isRedirect**. Is the response a redirect? These are responses with 3xx
+//   status and a `Location` header.
+  isRedirect: {
+    get: function() {
+      return (this.status>299
+          &&this.status<400
+          &&this.getHeader("Location"));
+    },
+    enumerable: true
+  },
+
+// - **isError**. Is the response an error? These are responses with status of
+//   400 or greater.
+  isError: {
+    get: function() {
+      return (this.status === 0 || this.status > 399)
+    },
+    enumerable: true
+  }
+});
+
+// Add in the [getters for accessing the normalized headers](./headers.js).
+HeaderMixins.getters(Response);
+HeaderMixins.privateSetters(Response);
+
+// Work around Mozilla bug #608735 [https://bugzil.la/608735], which causes
+// getAllResponseHeaders() to return {} if the response is a CORS request.
+// xhr.getHeader still works correctly.
+var getHeader = Response.prototype.getHeader;
+Response.prototype.getHeader = function (name) {
+  return (getHeader.call(this,name) ||
+    (typeof this._raw.getHeader === 'function' && this._raw.getHeader(name)));
+};
+
+module.exports = Response;
+
+});
+
+require.define("/shred/content.js", function (require, module, exports, __dirname, __filename) {
+    
+// The purpose of the `Content` object is to abstract away the data conversions
+// to and from raw content entities as strings. For example, you want to be able
+// to pass in a Javascript object and have it be automatically converted into a
+// JSON string if the `content-type` is set to a JSON-based media type.
+// Conversely, you want to be able to transparently get back a Javascript object
+// in the response if the `content-type` is a JSON-based media-type.
+
+// One limitation of the current implementation is that it [assumes the `charset` is UTF-8](https://github.com/spire-io/shred/issues/5).
+
+// The `Content` constructor takes an options object, which *must* have either a
+// `body` or `data` property and *may* have a `type` property indicating the
+// media type. If there is no `type` attribute, a default will be inferred.
+var Content = function(options) {
+  this.body = options.body;
+  this.data = options.data;
+  this.type = options.type;
+};
+
+Content.prototype = {
+  // Treat `toString()` as asking for the `content.body`. That is, the raw content entity.
+  //
+  //     toString: function() { return this.body; }
+  //
+  // Commented out, but I've forgotten why. :/
+};
+
+
+// `Content` objects have the following attributes:
+Object.defineProperties(Content.prototype,{
+  
+// - **type**. Typically accessed as `content.type`, reflects the `content-type`
+//   header associated with the request or response. If not passed as an options
+//   to the constructor or set explicitly, it will infer the type the `data`
+//   attribute, if possible, and, failing that, will default to `text/plain`.
+  type: {
+    get: function() {
+      if (this._type) {
+        return this._type;
+      } else {
+        if (this._data) {
+          switch(typeof this._data) {
+            case "string": return "text/plain";
+            case "object": return "application/json";
+          }
+        }
+      }
+      return "text/plain";
+    },
+    set: function(value) {
+      this._type = value;
+      return this;
+    },
+    enumerable: true
+  },
+
+// - **data**. Typically accessed as `content.data`, reflects the content entity
+//   converted into Javascript data. This can be a string, if the `type` is, say,
+//   `text/plain`, but can also be a Javascript object. The conversion applied is
+//   based on the `processor` attribute. The `data` attribute can also be set
+//   directly, in which case the conversion will be done the other way, to infer
+//   the `body` attribute.
+  data: {
+    get: function() {
+      if (this._body) {
+        return this.processor.parser(this._body);
+      } else {
+        return this._data;
+      }
+    },
+    set: function(data) {
+      if (this._body&&data) Errors.setDataWithBody(this);
+      this._data = data;
+      return this;
+    },
+    enumerable: true
+  },
+
+// - **body**. Typically accessed as `content.body`, reflects the content entity
+//   as a UTF-8 string. It is the mirror of the `data` attribute. If you set the
+//   `data` attribute, the `body` attribute will be inferred and vice-versa. If
+//   you attempt to set both, an exception is raised.
+  body: {
+    get: function() {
+      if (this._data) {
+        return this.processor.stringify(this._data);
+      } else {
+        return this.processor.stringify(this._body);
+      }
+    },
+    set: function(body) {
+      if (this._data&&body) Errors.setBodyWithData(this);
+      this._body = body;
+      return this;
+    },
+    enumerable: true
+  },
+
+// - **processor**. The functions that will be used to convert to/from `data` and
+//   `body` attributes. You can add processors. The two that are built-in are for
+//   `text/plain`, which is basically an identity transformation and
+//   `application/json` and other JSON-based media types (including custom media
+//   types with `+json`). You can add your own processors. See below.
+  processor: {
+    get: function() {
+      var processor = Content.processors[this.type];
+      if (processor) {
+        return processor;
+      } else {
+        // Return the first processor that matches any part of the
+        // content type. ex: application/vnd.foobar.baz+json will match json.
+        var main = this.type.split(";")[0];
+        var parts = main.split(/\+|\//);
+        for (var i=0, l=parts.length; i < l; i++) {
+          processor = Content.processors[parts[i]]
+        }
+        return processor || {parser:identity,stringify:toString};
+      }
+    },
+    enumerable: true
+  },
+
+// - **length**. Typically accessed as `content.length`, returns the length in
+//   bytes of the raw content entity.
+  length: {
+    get: function() {
+      if (typeof Buffer !== 'undefined') {
+        return Buffer.byteLength(this.body);
+      }
+      return this.body.length;
+    }
+  }
+});
+
+Content.processors = {};
+
+// The `registerProcessor` function allows you to add your own processors to
+// convert content entities. Each processor consists of a Javascript object with
+// two properties:
+// - **parser**. The function used to parse a raw content entity and convert it
+//   into a Javascript data type.
+// - **stringify**. The function used to convert a Javascript data type into a
+//   raw content entity.
+Content.registerProcessor = function(types,processor) {
+  
+// You can pass an array of types that will trigger this processor, or just one.
+// We determine the array via duck-typing here.
+  if (types.forEach) {
+    types.forEach(function(type) {
+      Content.processors[type] = processor;
+    });
+  } else {
+    // If you didn't pass an array, we just use what you pass in.
+    Content.processors[types] = processor;
+  }
+};
+
+// Register the identity processor, which is used for text-based media types.
+var identity = function(x) { return x; }
+  , toString = function(x) { return x.toString(); }
+Content.registerProcessor(
+  ["text/html","text/plain","text"],
+  { parser: identity, stringify: toString });
+
+// Register the JSON processor, which is used for JSON-based media types.
+Content.registerProcessor(
+  ["application/json; charset=utf-8","application/json","json"],
+  {
+    parser: function(string) {
+      return JSON.parse(string);
+    },
+    stringify: function(data) {
+      return JSON.stringify(data); }});
+
+// Error functions are defined separately here in an attempt to make the code
+// easier to read.
+var Errors = {
+  setDataWithBody: function(object) {
+    throw new Error("Attempt to set data attribute of a content object " +
+        "when the body attributes was already set.");
+  },
+  setBodyWithData: function(object) {
+    throw new Error("Attempt to set body attribute of a content object " +
+        "when the data attributes was already set.");
+  }
+}
+module.exports = Content;
+
+});
+
+require.define("/shred/mixins/headers.js", function (require, module, exports, __dirname, __filename) {
+    // The header mixins allow you to add HTTP header support to any object. This
+// might seem pointless: why not simply use a hash? The main reason is that, per
+// the [HTTP spec](http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2),
+// headers are case-insensitive. So, for example, `content-type` is the same as
+// `CONTENT-TYPE` which is the same as `Content-Type`. Since there is no way to
+// overload the index operator in Javascript, using a hash to represent the
+// headers means it's possible to have two conflicting values for a single
+// header.
+// 
+// The solution to this is to provide explicit methods to set or get headers.
+// This also has the benefit of allowing us to introduce additional variations,
+// including snake case, which we automatically convert to what Matthew King has
+// dubbed "corset case" - the hyphen-separated names with initial caps:
+// `Content-Type`. We use corset-case just in case we're dealing with servers
+// that haven't properly implemented the spec.
+
+// Convert headers to corset-case. **Example:** `CONTENT-TYPE` will be converted
+// to `Content-Type`.
+
+var corsetCase = function(string) {
+  return string;//.toLowerCase()
+      //.replace("_","-")
+      // .replace(/(^|-)(\w)/g, 
+          // function(s) { return s.toUpperCase(); });
+};
+
+// We suspect that `initializeHeaders` was once more complicated ...
+var initializeHeaders = function(object) {
+  return {};
+};
+
+// Access the `_headers` property using lazy initialization. **Warning:** If you
+// mix this into an object that is using the `_headers` property already, you're
+// going to have trouble.
+var $H = function(object) {
+  return object._headers||(object._headers=initializeHeaders(object));
+};
+
+// Hide the implementations as private functions, separate from how we expose them.
+
+// The "real" `getHeader` function: get the header after normalizing the name.
+var getHeader = function(object,name) {
+  return $H(object)[corsetCase(name)];
+};
+
+// The "real" `getHeader` function: get one or more headers, or all of them
+// if you don't ask for any specifics. 
+var getHeaders = function(object,names) {
+  var keys = (names && names.length>0) ? names : Object.keys($H(object));
+  var hash = keys.reduce(function(hash,key) {
+    hash[key] = getHeader(object,key);
+    return hash;
+  },{});
+  // Freeze the resulting hash so you don't mistakenly think you're modifying
+  // the real headers.
+  Object.freeze(hash);
+  return hash;
+};
+
+// The "real" `setHeader` function: set a header, after normalizing the name.
+var setHeader = function(object,name,value) {
+  $H(object)[corsetCase(name)] = value;
+  return object;
+};
+
+// The "real" `setHeaders` function: set multiple headers based on a hash.
+var setHeaders = function(object,hash) {
+  for( var key in hash ) { setHeader(object,key,hash[key]); };
+  return this;
+};
+
+// Here's where we actually bind the functionality to an object. These mixins work by
+// exposing mixin functions. Each function mixes in a specific batch of features.
+module.exports = {
+  
+  // Add getters.
+  getters: function(constructor) {
+    constructor.prototype.getHeader = function(name) { return getHeader(this,name); };
+    constructor.prototype.getHeaders = function() { return getHeaders(this,arguments); };
+  },
+  // Add setters but as "private" methods.
+  privateSetters: function(constructor) {
+    constructor.prototype._setHeader = function(key,value) { return setHeader(this,key,value); };
+    constructor.prototype._setHeaders = function(hash) { return setHeaders(this,hash); };
+  },
+  // Add setters.
+  setters: function(constructor) {
+    constructor.prototype.setHeader = function(key,value) { return setHeader(this,key,value); };
+    constructor.prototype.setHeaders = function(hash) { return setHeaders(this,hash); };
+  },
+  // Add both getters and setters.
+  gettersAndSetters: function(constructor) {
+    constructor.prototype.getHeader = function(name) { return getHeader(this,name); };
+    constructor.prototype.getHeaders = function() { return getHeaders(this,arguments); };
+    constructor.prototype.setHeader = function(key,value) { return setHeader(this,key,value); };
+    constructor.prototype.setHeaders = function(hash) { return setHeaders(this,hash); };
+  }
+};
+
+});
+
+require.define("/node_modules/iconv-lite/package.json", function (require, module, exports, __dirname, __filename) {
+    module.exports = {}
+});
+
+require.define("/node_modules/iconv-lite/index.js", function (require, module, exports, __dirname, __filename) {
+    // Module exports
+var iconv = module.exports = {
+    toEncoding: function(str, encoding) {
+        return iconv.getCodec(encoding).toEncoding(str);
+    },
+    fromEncoding: function(buf, encoding) {
+        return iconv.getCodec(encoding).fromEncoding(buf);
+    },
+    
+    defaultCharUnicode: '�',
+    defaultCharSingleByte: '?',
+    
+    // Get correct codec for given encoding.
+    getCodec: function(encoding) {
+        var enc = encoding || "utf8";
+        var codecOptions = undefined;
+        while (1) {
+            if (getType(enc) === "String")
+                enc = enc.replace(/[- ]/g, "").toLowerCase();
+            var codec = iconv.encodings[enc];
+            var type = getType(codec);
+            if (type === "String") {
+                // Link to other encoding.
+                codecOptions = {originalEncoding: enc};
+                enc = codec;
+            }
+            else if (type === "Object" && codec.type != undefined) {
+                // Options for other encoding.
+                codecOptions = codec;
+                enc = codec.type;
+            } 
+            else if (type === "Function")
+                // Codec itself.
+                return codec(codecOptions);
+            else
+                throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')");
+        }
+    },
+    
+    // Define basic encodings
+    encodings: {
+        internal: function(options) {
+            return {
+                toEncoding: function(str) {
+                    return new Buffer(ensureString(str), options.originalEncoding);
+                },
+                fromEncoding: function(buf) {
+                    return ensureBuffer(buf).toString(options.originalEncoding);
+                }
+            };
+        },
+        utf8: "internal",
+        ucs2: "internal",
+        binary: "internal",
+        ascii: "internal",
+        base64: "internal",
+        
+        // Codepage single-byte encodings.
+        singlebyte: function(options) {
+            // Prepare chars if needed
+            if (!options.chars || (options.chars.length !== 128 && options.chars.length !== 256))
+                throw new Error("Encoding '"+options.type+"' has incorrect 'chars' (must be of len 128 or 256)");
+            
+            if (options.chars.length === 128)
+                options.chars = asciiString + options.chars;
+            
+            if (!options.charsBuf) {
+                options.charsBuf = new Buffer(options.chars, 'ucs2');
+            }
+            
+            if (!options.revCharsBuf) {
+                options.revCharsBuf = new Buffer(65536);
+                var defChar = iconv.defaultCharSingleByte.charCodeAt(0);
+                for (var i = 0; i < options.revCharsBuf.length; i++)
+                    options.revCharsBuf[i] = defChar;
+                for (var i = 0; i < options.chars.length; i++)
+                    options.revCharsBuf[options.chars.charCodeAt(i)] = i;
+            }
+            
+            return {
+                toEncoding: function(str) {
+                    str = ensureString(str);
+                    
+                    var buf = new Buffer(str.length);
+                    var revCharsBuf = options.revCharsBuf;
+                    for (var i = 0; i < str.length; i++)
+                        buf[i] = revCharsBuf[str.charCodeAt(i)];
+                    
+                    return buf;
+                },
+                fromEncoding: function(buf) {
+                    buf = ensureBuffer(buf);
+                    
+                    // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.
+                    var charsBuf = options.charsBuf;
+                    var newBuf = new Buffer(buf.length*2);
+                    var idx1 = 0, idx2 = 0;
+                    for (var i = 0, _len = buf.length; i < _len; i++) {
+                        idx1 = buf[i]*2; idx2 = i*2;
+                        newBuf[idx2] = charsBuf[idx1];
+                        newBuf[idx2+1] = charsBuf[idx1+1];
+                    }
+                    return newBuf.toString('ucs2');
+                }
+            };
+        },
+
+        // Codepage double-byte encodings.
+        table: function(options) {
+            var table = options.table, key, revCharsTable = options.revCharsTable;
+            if (!table) {
+                throw new Error("Encoding '" + options.type +"' has incorect 'table' option");
+            }
+            if(!revCharsTable) {
+                revCharsTable = options.revCharsTable = {};
+                for (key in table) {
+                    revCharsTable[table[key]] = parseInt(key);
+                }
+            }
+            
+            return {
+                toEncoding: function(str) {
+                    str = ensureString(str);
+                    var strLen = str.length;
+                    var bufLen = strLen;
+                    for (var i = 0; i < strLen; i++)
+                        if (str.charCodeAt(i) >> 7)
+                            bufLen++;
+
+                    var newBuf = new Buffer(bufLen), gbkcode, unicode, 
+                        defaultChar = revCharsTable[iconv.defaultCharUnicode.charCodeAt(0)];
+
+                    for (var i = 0, j = 0; i < strLen; i++) {
+                        unicode = str.charCodeAt(i);
+                        if (unicode >> 7) {
+                            gbkcode = revCharsTable[unicode] || defaultChar;
+                            newBuf[j++] = gbkcode >> 8; //high byte;
+                            newBuf[j++] = gbkcode & 0xFF; //low byte
+                        } else {//ascii
+                            newBuf[j++] = unicode;
+                        }
+                    }
+                    return newBuf;
+                },
+                fromEncoding: function(buf) {
+                    buf = ensureBuffer(buf);
+                    var bufLen = buf.length, strLen = 0;
+                    for (var i = 0; i < bufLen; i++) {
+                        strLen++;
+                        if (buf[i] & 0x80) //the high bit is 1, so this byte is gbkcode's high byte.skip next byte
+                            i++;
+                    }
+                    var newBuf = new Buffer(strLen*2), unicode, gbkcode,
+                        defaultChar = iconv.defaultCharUnicode.charCodeAt(0);
+                    
+                    for (var i = 0, j = 0; i < bufLen; i++, j+=2) {
+                        gbkcode = buf[i];
+                        if (gbkcode & 0x80) {
+                            gbkcode = (gbkcode << 8) + buf[++i];
+                            unicode = table[gbkcode] || defaultChar;
+                        } else {
+                            unicode = gbkcode;
+                        }
+                        newBuf[j] = unicode & 0xFF; //low byte
+                        newBuf[j+1] = unicode >> 8; //high byte
+                    }
+                    return newBuf.toString('ucs2');
+                }
+            }
+        }
+    }
+};
+
+// Add aliases to convert functions
+iconv.encode = iconv.toEncoding;
+iconv.decode = iconv.fromEncoding;
+
+// Load other encodings from files in /encodings dir.
+var encodingsDir = __dirname+"/encodings/",
+    fs = require('fs');
+fs.readdirSync(encodingsDir).forEach(function(file) {
+    if(fs.statSync(encodingsDir + file).isDirectory()) return;
+    var encodings = require(encodingsDir + file)
+    for (var key in encodings)
+        iconv.encodings[key] = encodings[key]
+});
+
+// Utilities
+var asciiString = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f'+
+              ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f';
+
+var ensureBuffer = function(buf) {
+    buf = buf || new Buffer(0);
+    return (buf instanceof Buffer) ? buf : new Buffer(buf.toString(), "utf8");
+}
+
+var ensureString = function(str) {
+    str = str || "";
+    return (str instanceof String) ? str : str.toString((str instanceof Buffer) ? 'utf8' : undefined);
+}
+
+var getType = function(obj) {
+    return Object.prototype.toString.call(obj).slice(8, -1);
+}
+
+
+});
+
+require.define("/node_modules/http-browserify/package.json", function (require, module, exports, __dirname, __filename) {
+    module.exports = {"main":"index.js","browserify":"browser.js"}
+});
+
+require.define("/node_modules/http-browserify/browser.js", function (require, module, exports, __dirname, __filename) {
+    var http = module.exports;
+var EventEmitter = require('events').EventEmitter;
+var Request = require('./lib/request');
+
+http.request = function (params, cb) {
+    if (!params) params = {};
+    if (!params.host) params.host = window.location.host.split(':')[0];
+    if (!params.port) params.port = window.location.port;
+    
+    var req = new Request(new xhrHttp, params);
+    if (cb) req.on('response', cb);
+    return req;
+};
+
+http.get = function (params, cb) {
+    params.method = 'GET';
+    var req = http.request(params, cb);
+    req.end();
+    return req;
+};
+
+var xhrHttp = (function () {
+    if (typeof window === 'undefined') {
+        throw new Error('no window object present');
+    }
+    else if (window.XMLHttpRequest) {
+        return window.XMLHttpRequest;
+    }
+    else if (window.ActiveXObject) {
+        var axs = [
+            'Msxml2.XMLHTTP.6.0',
+            'Msxml2.XMLHTTP.3.0',
+            'Microsoft.XMLHTTP'
+        ];
+        for (var i = 0; i < axs.length; i++) {
+            try {
+                var ax = new(window.ActiveXObject)(axs[i]);
+                return function () {
+                    if (ax) {
+                        var ax_ = ax;
+                        ax = null;
+                        return ax_;
+                    }
+                    else {
+                        return new(window.ActiveXObject)(axs[i]);
+                    }
+                };
+            }
+            catch (e) {}
+        }
+        throw new Error('ajax not supported in this browser')
+    }
+    else {
+        throw new Error('ajax not supported in this browser');
+    }
+})();
+
+http.STATUS_CODES = {
+    100 : 'Continue',
+    101 : 'Switching Protocols',
+    102 : 'Processing', // RFC 2518, obsoleted by RFC 4918
+    200 : 'OK',
+    201 : 'Created',
+    202 : 'Accepted',
+    203 : 'Non-Authoritative Information',
+    204 : 'No Content',
+    205 : 'Reset Content',
+    206 : 'Partial Content',
+    207 : 'Multi-Status', // RFC 4918
+    300 : 'Multiple Choices',
+    301 : 'Moved Permanently',
+    302 : 'Moved Temporarily',
+    303 : 'See Other',
+    304 : 'Not Modified',
+    305 : 'Use Proxy',
+    307 : 'Temporary Redirect',
+    400 : 'Bad Request',
+    401 : 'Unauthorized',
+    402 : 'Payment Required',
+    403 : 'Forbidden',
+    404 : 'Not Found',
+    405 : 'Method Not Allowed',
+    406 : 'Not Acceptable',
+    407 : 'Proxy Authentication Required',
+    408 : 'Request Time-out',
+    409 : 'Conflict',
+    410 : 'Gone',
+    411 : 'Length Required',
+    412 : 'Precondition Failed',
+    413 : 'Request Entity Too Large',
+    414 : 'Request-URI Too Large',
+    415 : 'Unsupported Media Type',
+    416 : 'Requested Range Not Satisfiable',
+    417 : 'Expectation Failed',
+    418 : 'I\'m a teapot', // RFC 2324
+    422 : 'Unprocessable Entity', // RFC 4918
+    423 : 'Locked', // RFC 4918
+    424 : 'Failed Dependency', // RFC 4918
+    425 : 'Unordered Collection', // RFC 4918
+    426 : 'Upgrade Required', // RFC 2817
+    500 : 'Internal Server Error',
+    501 : 'Not Implemented',
+    502 : 'Bad Gateway',
+    503 : 'Service Unavailable',
+    504 : 'Gateway Time-out',
+    505 : 'HTTP Version not supported',
+    506 : 'Variant Also Negotiates', // RFC 2295
+    507 : 'Insufficient Storage', // RFC 4918
+    509 : 'Bandwidth Limit Exceeded',
+    510 : 'Not Extended' // RFC 2774
+};
+
+});
+
+require.define("/node_modules/http-browserify/lib/request.js", function (require, module, exports, __dirname, __filename) {
+    var EventEmitter = require('events').EventEmitter;
+var Response = require('./response');
+var isSafeHeader = require('./isSafeHeader');
+
+var Request = module.exports = function (xhr, params) {
+    var self = this;
+    self.xhr = xhr;
+    self.body = '';
+    
+    var uri = params.host + ':' + params.port + (params.path || '/');
+    
+    xhr.open(
+        params.method || 'GET',
+        (params.scheme || 'http') + '://' + uri,
+        true
+    );
+    
+    if (params.headers) {
+        Object.keys(params.headers).forEach(function (key) {
+            if (!isSafeHeader(key)) return;
+            var value = params.headers[key];
+            if (Array.isArray(value)) {
+                value.forEach(function (v) {
+                    xhr.setRequestHeader(key, v);
+                });
+            }
+            else xhr.setRequestHeader(key, value)
+        });
+    }
+    
+    var res = new Response(xhr);
+    res.on('ready', function () {
+        self.emit('response', res);
+    });
+    
+    xhr.onreadystatechange = function () {
+        res.handle(xhr);
+    };
+};
+
+Request.prototype = new EventEmitter;
+
+Request.prototype.setHeader = function (key, value) {
+    if ((Array.isArray && Array.isArray(value))
+    || value instanceof Array) {
+        for (var i = 0; i < value.length; i++) {
+            this.xhr.setRequestHeader(key, value[i]);
+        }
+    }
+    else {
+        this.xhr.setRequestHeader(key, value);
+    }
+};
+
+Request.prototype.write = function (s) {
+    this.body += s;
+};
+
+Request.prototype.end = function (s) {
+    if (s !== undefined) this.write(s);
+    this.xhr.send(this.body);
+};
+
+});
+
+require.define("/node_modules/http-browserify/lib/response.js", function (require, module, exports, __dirname, __filename) {
+    var EventEmitter = require('events').EventEmitter;
+var isSafeHeader = require('./isSafeHeader');
+
+var Response = module.exports = function (xhr) {
+    this.xhr = xhr;
+    this.offset = 0;
+};
+
+Response.prototype = new EventEmitter;
+
+var capable = {
+    streaming : true,
+    status2 : true
+};
+
+function parseHeaders (xhr) {
+    var lines = xhr.getAllResponseHeaders().split(/\r?\n/);
+    var headers = {};
+    for (var i = 0; i < lines.length; i++) {
+        var line = lines[i];
+        if (line === '') continue;
+        
+        var m = line.match(/^([^:]+):\s*(.*)/);
+        if (m) {
+            var key = m[1].toLowerCase(), value = m[2];
+            
+            if (headers[key] !== undefined) {
+                if ((Array.isArray && Array.isArray(headers[key]))
+                || headers[key] instanceof Array) {
+                    headers[key].push(value);
+                }
+                else {
+                    headers[key] = [ headers[key], value ];
+                }
+            }
+            else {
+                headers[key] = value;
+            }
+        }
+        else {
+            headers[line] = true;
+        }
+    }
+    return headers;
+}
+
+Response.prototype.getHeader = function (key) {
+    var header = this.headers ? this.headers[key.toLowerCase()] : null;
+    if (header) return header;
+
+    // Work around Mozilla bug #608735 [https://bugzil.la/608735], which causes
+    // getAllResponseHeaders() to return {} if the response is a CORS request.
+    // xhr.getHeader still works correctly.
+    if (isSafeHeader(key)) {
+      return this.xhr.getResponseHeader(key);
+    }
+    return null;
+};
+
+Response.prototype.handle = function () {
+    var xhr = this.xhr;
+    if (xhr.readyState === 2 && capable.status2) {
+        try {
+            this.statusCode = xhr.status;
+            this.headers = parseHeaders(xhr);
+        }
+        catch (err) {
+            capable.status2 = false;
+        }
+        
+        if (capable.status2) {
+            this.emit('ready');
+        }
+    }
+    else if (capable.streaming && xhr.readyState === 3) {
+        try {
+            if (!this.statusCode) {
+                this.statusCode = xhr.status;
+                this.headers = parseHeaders(xhr);
+                this.emit('ready');
+            }
+        }
+        catch (err) {}
+        
+        try {
+            this.write();
+        }
+        catch (err) {
+            capable.streaming = false;
+        }
+    }
+    else if (xhr.readyState === 4) {
+        if (!this.statusCode) {
+            this.statusCode = xhr.status;
+            this.emit('ready');
+        }
+        this.write();
+        
+        if (xhr.error) {
+            this.emit('error', xhr.responseText);
+        }
+        else this.emit('end');
+    }
+};
+
+Response.prototype.write = function () {
+    var xhr = this.xhr;
+    if (xhr.responseText.length > this.offset) {
+        this.emit('data', xhr.responseText.slice(this.offset));
+        this.offset = xhr.responseText.length;
+    }
+};
+
+});
+
+require.define("/node_modules/http-browserify/lib/isSafeHeader.js", function (require, module, exports, __dirname, __filename) {
+    // Taken from http://dxr.mozilla.org/mozilla/mozilla-central/content/base/src/nsXMLHttpRequest.cpp.html
+var unsafeHeaders = [
+    "accept-charset",
+    "accept-encoding",
+    "access-control-request-headers",
+    "access-control-request-method",
+    "connection",
+    "content-length",
+    "cookie",
+    "cookie2",
+    "content-transfer-encoding",
+    "date",
+    "expect",
+    "host",
+    "keep-alive",
+    "origin",
+    "referer",
+    "set-cookie",
+    "te",
+    "trailer",
+    "transfer-encoding",
+    "upgrade",
+    "user-agent",
+    "via"
+];
+
+module.exports = function (headerName) {
+    if (!headerName) return false;
+    return (unsafeHeaders.indexOf(headerName.toLowerCase()) === -1)
+};
+
+});
+
+require.alias("http-browserify", "/node_modules/http");
+
 require.alias("http-browserify", "/node_modules/https");
\ No newline at end of file
-/*\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-// The purpose of the `Content` object is to abstract away the data conversions\r
-// to and from raw content entities as strings. For example, you want to be able\r
-// to pass in a Javascript object and have it be automatically converted into a\r
-// JSON string if the `content-type` is set to a JSON-based media type.\r
-// Conversely, you want to be able to transparently get back a Javascript object\r
-// in the response if the `content-type` is a JSON-based media-type.\r
-\r
-// One limitation of the current implementation is that it [assumes the `charset` is UTF-8](https://github.com/spire-io/shred/issues/5).\r
-\r
-// The `Content` constructor takes an options object, which *must* have either a\r
-// `body` or `data` property and *may* have a `type` property indicating the\r
-// media type. If there is no `type` attribute, a default will be inferred.\r
-var Content = function(options) {\r
-  this.body = options.body;\r
-  this.data = options.data;\r
-  this.type = options.type;\r
-};\r
-\r
-Content.prototype = {\r
-  // Treat `toString()` as asking for the `content.body`. That is, the raw content entity.\r
-  //\r
-  //     toString: function() { return this.body; }\r
-  //\r
-  // Commented out, but I've forgotten why. :/\r
-};\r
-\r
-\r
-// `Content` objects have the following attributes:\r
-Object.defineProperties(Content.prototype,{\r
-  \r
-// - **type**. Typically accessed as `content.type`, reflects the `content-type`\r
-//   header associated with the request or response. If not passed as an options\r
-//   to the constructor or set explicitly, it will infer the type the `data`\r
-//   attribute, if possible, and, failing that, will default to `text/plain`.\r
-  type: {\r
-    get: function() {\r
-      if (this._type) {\r
-        return this._type;\r
-      } else {\r
-        if (this._data) {\r
-          switch(typeof this._data) {\r
-            case "string": return "text/plain";\r
-            case "object": return "application/json";\r
-          }\r
-        }\r
-      }\r
-      return "text/plain";\r
-    },\r
-    set: function(value) {\r
-      this._type = value;\r
-      return this;\r
-    },\r
-    enumerable: true\r
-  },\r
-\r
-// - **data**. Typically accessed as `content.data`, reflects the content entity\r
-//   converted into Javascript data. This can be a string, if the `type` is, say,\r
-//   `text/plain`, but can also be a Javascript object. The conversion applied is\r
-//   based on the `processor` attribute. The `data` attribute can also be set\r
-//   directly, in which case the conversion will be done the other way, to infer\r
-//   the `body` attribute.\r
-  data: {\r
-    get: function() {\r
-      if (this._body) {\r
-        return this.processor.parser(this._body);\r
-      } else {\r
-        return this._data;\r
-      }\r
-    },\r
-    set: function(data) {\r
-      if (this._body&&data) Errors.setDataWithBody(this);\r
-      this._data = data;\r
-      return this;\r
-    },\r
-    enumerable: true\r
-  },\r
-\r
-// - **body**. Typically accessed as `content.body`, reflects the content entity\r
-//   as a UTF-8 string. It is the mirror of the `data` attribute. If you set the\r
-//   `data` attribute, the `body` attribute will be inferred and vice-versa. If\r
-//   you attempt to set both, an exception is raised.\r
-  body: {\r
-    get: function() {\r
-      if (this._data) {\r
-        return this.processor.stringify(this._data);\r
-      } else {\r
-        return this._body.toString();\r
-      }\r
-    },\r
-    set: function(body) {\r
-      if (this._data&&body) Errors.setBodyWithData(this);\r
-      this._body = body;\r
-      return this;\r
-    },\r
-    enumerable: true\r
-  },\r
-\r
-// - **processor**. The functions that will be used to convert to/from `data` and\r
-//   `body` attributes. You can add processors. The two that are built-in are for\r
-//   `text/plain`, which is basically an identity transformation and\r
-//   `application/json` and other JSON-based media types (including custom media\r
-//   types with `+json`). You can add your own processors. See below.\r
-  processor: {\r
-    get: function() {\r
-      var processor = Content.processors[this.type];\r
-      if (processor) {\r
-        return processor;\r
-      } else {\r
-        // Return the first processor that matches any part of the\r
-        // content type. ex: application/vnd.foobar.baz+json will match json.\r
-        var main = this.type.split(";")[0];\r
-        var parts = main.split(/\+|\//);\r
-        for (var i=0, l=parts.length; i < l; i++) {\r
-          processor = Content.processors[parts[i]]\r
-        }\r
-        return processor || {parser:identity,stringify:toString};\r
-      }\r
-    },\r
-    enumerable: true\r
-  },\r
-\r
-// - **length**. Typically accessed as `content.length`, returns the length in\r
-//   bytes of the raw content entity.\r
-  length: {\r
-    get: function() {\r
-      if (typeof Buffer !== 'undefined') {\r
-        return Buffer.byteLength(this.body);\r
-      }\r
-      return this.body.length;\r
-    }\r
-  }\r
-});\r
-\r
-Content.processors = {};\r
-\r
-// The `registerProcessor` function allows you to add your own processors to\r
-// convert content entities. Each processor consists of a Javascript object with\r
-// two properties:\r
-// - **parser**. The function used to parse a raw content entity and convert it\r
-//   into a Javascript data type.\r
-// - **stringify**. The function used to convert a Javascript data type into a\r
-//   raw content entity.\r
-Content.registerProcessor = function(types,processor) {\r
-  \r
-// You can pass an array of types that will trigger this processor, or just one.\r
-// We determine the array via duck-typing here.\r
-  if (types.forEach) {\r
-    types.forEach(function(type) {\r
-      Content.processors[type] = processor;\r
-    });\r
-  } else {\r
-    // If you didn't pass an array, we just use what you pass in.\r
-    Content.processors[types] = processor;\r
-  }\r
-};\r
-\r
-// Register the identity processor, which is used for text-based media types.\r
-var identity = function(x) { return x; }\r
-  , toString = function(x) { return x.toString(); }\r
-Content.registerProcessor(\r
-  ["text/html","text/plain","text"],\r
-  { parser: identity, stringify: toString });\r
-\r
-// Register the JSON processor, which is used for JSON-based media types.\r
-Content.registerProcessor(\r
-  ["application/json; charset=utf-8","application/json","json"],\r
-  {\r
-    parser: function(string) {\r
-      return JSON.parse(string);\r
-    },\r
-    stringify: function(data) {\r
-      return JSON.stringify(data); }});\r
-\r
-var qs = require('querystring');\r
-// Register the post processor, which is used for JSON-based media types.\r
-Content.registerProcessor(\r
-  ["application/x-www-form-urlencoded"],\r
-  { parser : qs.parse, stringify : qs.stringify });\r
-\r
-// Error functions are defined separately here in an attempt to make the code\r
-// easier to read.\r
-var Errors = {\r
-  setDataWithBody: function(object) {\r
-    throw new Error("Attempt to set data attribute of a content object " +\r
-        "when the body attributes was already set.");\r
-  },\r
-  setBodyWithData: function(object) {\r
-    throw new Error("Attempt to set body attribute of a content object " +\r
-        "when the data attributes was already set.");\r
-  }\r
-}\r
+/*
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+// The purpose of the `Content` object is to abstract away the data conversions
+// to and from raw content entities as strings. For example, you want to be able
+// to pass in a Javascript object and have it be automatically converted into a
+// JSON string if the `content-type` is set to a JSON-based media type.
+// Conversely, you want to be able to transparently get back a Javascript object
+// in the response if the `content-type` is a JSON-based media-type.
+
+// One limitation of the current implementation is that it [assumes the `charset` is UTF-8](https://github.com/spire-io/shred/issues/5).
+
+// The `Content` constructor takes an options object, which *must* have either a
+// `body` or `data` property and *may* have a `type` property indicating the
+// media type. If there is no `type` attribute, a default will be inferred.
+var Content = function(options) {
+  this.body = options.body;
+  this.data = options.data;
+  this.type = options.type;
+};
+
+Content.prototype = {
+  // Treat `toString()` as asking for the `content.body`. That is, the raw content entity.
+  //
+  //     toString: function() { return this.body; }
+  //
+  // Commented out, but I've forgotten why. :/
+};
+
+
+// `Content` objects have the following attributes:
+Object.defineProperties(Content.prototype,{
+  
+// - **type**. Typically accessed as `content.type`, reflects the `content-type`
+//   header associated with the request or response. If not passed as an options
+//   to the constructor or set explicitly, it will infer the type the `data`
+//   attribute, if possible, and, failing that, will default to `text/plain`.
+  type: {
+    get: function() {
+      if (this._type) {
+        return this._type;
+      } else {
+        if (this._data) {
+          switch(typeof this._data) {
+            case "string": return "text/plain";
+            case "object": return "application/json";
+          }
+        }
+      }
+      return "text/plain";
+    },
+    set: function(value) {
+      this._type = value;
+      return this;
+    },
+    enumerable: true
+  },
+
+// - **data**. Typically accessed as `content.data`, reflects the content entity
+//   converted into Javascript data. This can be a string, if the `type` is, say,
+//   `text/plain`, but can also be a Javascript object. The conversion applied is
+//   based on the `processor` attribute. The `data` attribute can also be set
+//   directly, in which case the conversion will be done the other way, to infer
+//   the `body` attribute.
+  data: {
+    get: function() {
+      if (this._body) {
+        return this.processor.parser(this._body);
+      } else {
+        return this._data;
+      }
+    },
+    set: function(data) {
+      if (this._body&&data) Errors.setDataWithBody(this);
+      this._data = data;
+      return this;
+    },
+    enumerable: true
+  },
+
+// - **body**. Typically accessed as `content.body`, reflects the content entity
+//   as a UTF-8 string. It is the mirror of the `data` attribute. If you set the
+//   `data` attribute, the `body` attribute will be inferred and vice-versa. If
+//   you attempt to set both, an exception is raised.
+  body: {
+    get: function() {
+      if (this._data) {
+        return this.processor.stringify(this._data);
+      } else {
+        return this._body.toString();
+      }
+    },
+    set: function(body) {
+      if (this._data&&body) Errors.setBodyWithData(this);
+      this._body = body;
+      return this;
+    },
+    enumerable: true
+  },
+
+// - **processor**. The functions that will be used to convert to/from `data` and
+//   `body` attributes. You can add processors. The two that are built-in are for
+//   `text/plain`, which is basically an identity transformation and
+//   `application/json` and other JSON-based media types (including custom media
+//   types with `+json`). You can add your own processors. See below.
+  processor: {
+    get: function() {
+      var processor = Content.processors[this.type];
+      if (processor) {
+        return processor;
+      } else {
+        // Return the first processor that matches any part of the
+        // content type. ex: application/vnd.foobar.baz+json will match json.
+        var main = this.type.split(";")[0];
+        var parts = main.split(/\+|\//);
+        for (var i=0, l=parts.length; i < l; i++) {
+          processor = Content.processors[parts[i]]
+        }
+        return processor || {parser:identity,stringify:toString};
+      }
+    },
+    enumerable: true
+  },
+
+// - **length**. Typically accessed as `content.length`, returns the length in
+//   bytes of the raw content entity.
+  length: {
+    get: function() {
+      if (typeof Buffer !== 'undefined') {
+        return Buffer.byteLength(this.body);
+      }
+      return this.body.length;
+    }
+  }
+});
+
+Content.processors = {};
+
+// The `registerProcessor` function allows you to add your own processors to
+// convert content entities. Each processor consists of a Javascript object with
+// two properties:
+// - **parser**. The function used to parse a raw content entity and convert it
+//   into a Javascript data type.
+// - **stringify**. The function used to convert a Javascript data type into a
+//   raw content entity.
+Content.registerProcessor = function(types,processor) {
+  
+// You can pass an array of types that will trigger this processor, or just one.
+// We determine the array via duck-typing here.
+  if (types.forEach) {
+    types.forEach(function(type) {
+      Content.processors[type] = processor;
+    });
+  } else {
+    // If you didn't pass an array, we just use what you pass in.
+    Content.processors[types] = processor;
+  }
+};
+
+// Register the identity processor, which is used for text-based media types.
+var identity = function(x) { return x; }
+  , toString = function(x) { return x.toString(); }
+Content.registerProcessor(
+  ["text/html","text/plain","text"],
+  { parser: identity, stringify: toString });
+
+// Register the JSON processor, which is used for JSON-based media types.
+Content.registerProcessor(
+  ["application/json; charset=utf-8","application/json","json"],
+  {
+    parser: function(string) {
+      return JSON.parse(string);
+    },
+    stringify: function(data) {
+      return JSON.stringify(data); }});
+
+var qs = require('querystring');
+// Register the post processor, which is used for JSON-based media types.
+Content.registerProcessor(
+  ["application/x-www-form-urlencoded"],
+  { parser : qs.parse, stringify : qs.stringify });
+
+// Error functions are defined separately here in an attempt to make the code
+// easier to read.
+var Errors = {
+  setDataWithBody: function(object) {
+    throw new Error("Attempt to set data attribute of a content object " +
+        "when the body attributes was already set.");
+  },
+  setBodyWithData: function(object) {
+    throw new Error("Attempt to set body attribute of a content object " +
+        "when the data attributes was already set.");
+  }
+}
 module.exports = Content;
\ No newline at end of file
-/*\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-/**\r
- * swagger-client - swagger.js is a javascript client for use with swaggering APIs.\r
- * @version v2.1.9-M1\r
- * @link http://swagger.io\r
- * @license apache 2.0\r
- */\r
-(function(){\r
-var ArrayModel = function(definition) {\r
-  this.name = "arrayModel";\r
-  this.definition = definition || {};\r
-  this.properties = [];\r
-  \r
-  var requiredFields = definition.enum || [];\r
-  var innerType = definition.items;\r
-  if(innerType) {\r
-    if(innerType.type) {\r
-      this.type = typeFromJsonSchema(innerType.type, innerType.format);\r
-    }\r
-    else {\r
-      this.ref = innerType.$ref;\r
-    }\r
-  }\r
-  return this;\r
-};\r
-\r
-ArrayModel.prototype.createJSONSample = function(modelsToIgnore) {\r
-  var result;\r
-  modelsToIgnore = (modelsToIgnore||{});\r
-  if(this.type) {\r
-    result = this.type;\r
-  }\r
-  else if (this.ref) {\r
-    var name = simpleRef(this.ref);\r
-    if(typeof modelsToIgnore[name] === 'undefined') {\r
-      modelsToIgnore[name] = this;\r
-      result = models[name].createJSONSample(modelsToIgnore);\r
-    }\r
-    else {\r
-      return name;\r
-    }\r
-  }\r
-  return [ result ];\r
-};\r
-\r
-ArrayModel.prototype.getSampleValue = function(modelsToIgnore) {\r
-  var result;\r
-  modelsToIgnore = (modelsToIgnore || {});\r
-  if(this.type) {\r
-    result = type;\r
-  }\r
-  else if (this.ref) {\r
-    var name = simpleRef(this.ref);\r
-    result = models[name].getSampleValue(modelsToIgnore);\r
-  }\r
-  return [ result ];\r
-};\r
-\r
-ArrayModel.prototype.getMockSignature = function(modelsToIgnore) {\r
-  var propertiesStr = [];\r
-  var i, prop;\r
-  for (i = 0; i < this.properties.length; i++) {\r
-    prop = this.properties[i];\r
-    propertiesStr.push(prop.toString());\r
-  }\r
-\r
-  var strong = '<span class="strong">';\r
-  var stronger = '<span class="stronger">';\r
-  var strongClose = '</span>';\r
-  var classOpen = strong + 'array' + ' {' + strongClose;\r
-  var classClose = strong + '}' + strongClose;\r
-  var returnVal = classOpen + '<div>' + propertiesStr.join(',</div><div>') + '</div>' + classClose;\r
-\r
-  if (!modelsToIgnore)\r
-    modelsToIgnore = {};\r
-  modelsToIgnore[this.name] = this;\r
-  for (i = 0; i < this.properties.length; i++) {\r
-    prop = this.properties[i];\r
-    var ref = prop.$ref;\r
-    var model = models[ref];\r
-    if (model && typeof modelsToIgnore[ref] === 'undefined') {\r
-      returnVal = returnVal + ('<br>' + model.getMockSignature(modelsToIgnore));\r
-    }\r
-  }\r
-  return returnVal;\r
-};\r
-\r
-\r
-/**\r
- * SwaggerAuthorizations applys the correct authorization to an operation being executed\r
- */\r
-var SwaggerAuthorizations = function() {\r
-  this.authz = {};\r
-};\r
-\r
-SwaggerAuthorizations.prototype.add = function(name, auth) {\r
-  this.authz[name] = auth;\r
-  return auth;\r
-};\r
-\r
-SwaggerAuthorizations.prototype.remove = function(name) {\r
-  return delete this.authz[name];\r
-};\r
-\r
-SwaggerAuthorizations.prototype.apply = function (obj, authorizations) {\r
-  var status = null;\r
-  var key, name, value, result;\r
-\r
-  // if the "authorizations" key is undefined, or has an empty array, add all keys\r
-  if (typeof authorizations === 'undefined' || Object.keys(authorizations).length === 0) {\r
-    for (key in this.authz) {\r
-      value = this.authz[key];\r
-      result = value.apply(obj, authorizations);\r
-      if (result === true)\r
-        status = true;\r
-    }\r
-  }\r
-  else {\r
-    // 2.0 support\r
-    if (Array.isArray(authorizations)) {\r
-\r
-      for (var i = 0; i < authorizations.length; i++) {\r
-        var auth = authorizations[i];\r
-        for (name in auth) {\r
-          for (key in this.authz) {\r
-            if (key == name) {\r
-              value = this.authz[key];\r
-              result = value.apply(obj, authorizations);\r
-              if (result === true)\r
-                status = true;\r
-            }\r
-          }\r
-        }\r
-      }\r
-    }\r
-    else {\r
-      // 1.2 support\r
-      for (name in authorizations) {\r
-        for (key in this.authz) {\r
-          if (key == name) {\r
-            value = this.authz[key];\r
-            result = value.apply(obj, authorizations);\r
-            if (result === true)\r
-              status = true;\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-\r
-  return status;\r
-};\r
-\r
-/**\r
- * ApiKeyAuthorization allows a query param or header to be injected\r
- */\r
-var ApiKeyAuthorization = function(name, value, type) {\r
-  this.name = name;\r
-  this.value = value;\r
-  this.type = type;\r
-};\r
-\r
-ApiKeyAuthorization.prototype.apply = function(obj, authorizations) {\r
-  if (this.type === "query") {\r
-    if (obj.url.indexOf('?') > 0)\r
-      obj.url = obj.url + "&" + this.name + "=" + this.value;\r
-    else\r
-      obj.url = obj.url + "?" + this.name + "=" + this.value;\r
-    return true;\r
-  } else if (this.type === "header") {\r
-    obj.headers[this.name] = this.value;\r
-    return true;\r
-  }\r
-};\r
-\r
-var CookieAuthorization = function(cookie) {\r
-  this.cookie = cookie;\r
-};\r
-\r
-CookieAuthorization.prototype.apply = function(obj, authorizations) {\r
-  obj.cookieJar = obj.cookieJar || CookieJar();\r
-  obj.cookieJar.setCookie(this.cookie);\r
-  return true;\r
-};\r
-\r
-/**\r
- * Password Authorization is a basic auth implementation\r
- */\r
-var PasswordAuthorization = function(name, username, password) {\r
-  this.name = name;\r
-  this.username = username;\r
-  this.password = password;\r
-  this._btoa = null;\r
-  if (typeof window !== 'undefined')\r
-    this._btoa = btoa;\r
-  else\r
-    this._btoa = require("btoa");\r
-};\r
-\r
-PasswordAuthorization.prototype.apply = function(obj, authorizations) {\r
-  var base64encoder = this._btoa;\r
-  obj.headers.Authorization = "Basic " + base64encoder(this.username + ":" + this.password);\r
-  return true;\r
-};\r
-var __bind = function(fn, me){\r
-  return function(){\r
-    return fn.apply(me, arguments);\r
-  };\r
-};\r
-\r
-fail = function(message) {\r
-  log(message);\r
-};\r
-\r
-log = function(){\r
-  log.history = log.history || [];\r
-  log.history.push(arguments);\r
-  if(this.console){\r
-    console.log( Array.prototype.slice.call(arguments)[0] );\r
-  }\r
-};\r
-\r
-if (!Array.prototype.indexOf) {\r
-  Array.prototype.indexOf = function(obj, start) {\r
-    for (var i = (start || 0), j = this.length; i < j; i++) {\r
-      if (this[i] === obj) { return i; }\r
-    }\r
-    return -1;\r
-  };\r
-}\r
-\r
-/**\r
- * allows override of the default value based on the parameter being\r
- * supplied\r
- **/\r
-var applyParameterMacro = function (operation, parameter) {\r
-  var e = (typeof window !== 'undefined' ? window : exports);\r
-  if(e.parameterMacro)\r
-    return e.parameterMacro(operation, parameter);\r
-  else\r
-    return parameter.defaultValue;\r
-};\r
-\r
-/**\r
- * allows overriding the default value of an model property\r
- **/\r
-var applyModelPropertyMacro = function (model, property) {\r
-  var e = (typeof window !== 'undefined' ? window : exports);\r
-  if(e.modelPropertyMacro)\r
-    return e.modelPropertyMacro(model, property);\r
-  else\r
-    return property.defaultValue;\r
-};\r
-\r
-/**\r
- * PrimitiveModel\r
- **/\r
-var PrimitiveModel = function(definition) {\r
-  this.name = "name";\r
-  this.definition = definition || {};\r
-  this.properties = [];\r
-\r
-  var requiredFields = definition.enum || [];\r
-  this.type = typeFromJsonSchema(definition.type, definition.format);\r
-};\r
-\r
-PrimitiveModel.prototype.createJSONSample = function(modelsToIgnore) {\r
-  var result = this.type;\r
-  return result;\r
-};\r
-\r
-PrimitiveModel.prototype.getSampleValue = function() {\r
-  var result = this.type;\r
-  return null;\r
-};\r
-\r
-PrimitiveModel.prototype.getMockSignature = function(modelsToIgnore) {\r
-  var propertiesStr = [];\r
-  var i, prop;\r
-  for (i = 0; i < this.properties.length; i++) {\r
-    prop = this.properties[i];\r
-    propertiesStr.push(prop.toString());\r
-  }\r
-\r
-  var strong = '<span class="strong">';\r
-  var stronger = '<span class="stronger">';\r
-  var strongClose = '</span>';\r
-  var classOpen = strong + this.name + ' {' + strongClose;\r
-  var classClose = strong + '}' + strongClose;\r
-  var returnVal = classOpen + '<div>' + propertiesStr.join(',</div><div>') + '</div>' + classClose;\r
-\r
-  if (!modelsToIgnore)\r
-    modelsToIgnore = {};\r
-  modelsToIgnore[this.name] = this;\r
-  for (i = 0; i < this.properties.length; i++) {\r
-    prop = this.properties[i];\r
-    var ref = prop.$ref;\r
-    var model = models[ref];\r
-    if (model && typeof modelsToIgnore[ref] === 'undefined') {\r
-      returnVal = returnVal + ('<br>' + model.getMockSignature(modelsToIgnore));\r
-    }\r
-  }\r
-  return returnVal;\r
-};\r
-/** \r
- * Resolves a spec's remote references\r
- */\r
-var Resolver = function (){};\r
-\r
-Resolver.prototype.resolve = function(spec, callback, scope) {\r
-  this.scope = (scope || this);\r
-  var host, name, path, property, propertyName, type;\r
-  var processedCalls = 0, resolvedRefs = {}, unresolvedRefs = {};\r
-\r
-  // store objects for dereferencing\r
-  var resolutionTable = {};\r
-\r
-  // models\r
-  for(name in spec.definitions) {\r
-    var model = spec.definitions[name];\r
-    for(propertyName in model.properties) {\r
-      property = model.properties[propertyName];\r
-      this.resolveTo(property, resolutionTable);\r
-    }\r
-  }\r
-  // operations\r
-  for(name in spec.paths) {\r
-    var method, operation, responseCode;\r
-    path = spec.paths[name];\r
-    for(method in path) {\r
-      operation = path[method];\r
-      var i, parameters = operation.parameters;\r
-      for(i in parameters) {\r
-        var parameter = parameters[i];\r
-        if(parameter.in === 'body' && parameter.schema) {\r
-          this.resolveTo(parameter.schema, resolutionTable);\r
-        }\r
-        if(parameter.$ref) {\r
-          this.resolveInline(spec, parameter, resolutionTable, unresolvedRefs);\r
-        }\r
-      }\r
-      for(responseCode in operation.responses) {\r
-        var response = operation.responses[responseCode];\r
-        if(response.schema) {\r
-          this.resolveTo(response.schema, resolutionTable);\r
-        }\r
-      }\r
-    }\r
-  }\r
-  // get hosts\r
-  var opts = {}, expectedCalls = 0;\r
-  for(name in resolutionTable) {\r
-    var parts = name.split('#');\r
-    if(parts.length == 2) {\r
-      host = parts[0]; path = parts[1];\r
-      if(!Array.isArray(opts[host])) {\r
-        opts[host] = [];\r
-        expectedCalls += 1;\r
-      }\r
-      opts[host].push(path);\r
-    }\r
-  }\r
-\r
-  for(name in opts) {\r
-    var self = this, opt = opts[name];\r
-    host = name;\r
-\r
-    var obj = {\r
-      useJQuery: false,  // TODO\r
-      url: host,\r
-      method: "get",\r
-      headers: {\r
-        accept: this.scope.swaggerRequestHeaders || 'application/json'\r
-      },\r
-      on: {\r
-        error: function(response) {\r
-          processedCalls += 1;\r
-          var i;\r
-          for(i = 0; i < opt.length; i++) {\r
-            // fail all of these\r
-            var resolved = host + '#' + opt[i];\r
-            unresolvedRefs[resolved] = null;\r
-          }\r
-          if(processedCalls === expectedCalls)\r
-            self.finish(spec, resolutionTable, resolvedRefs, unresolvedRefs, callback);\r
-        },\r
-        response: function(response) {\r
-          var i, j, swagger = response.obj;\r
-          processedCalls += 1;\r
-          for(i = 0; i < opt.length; i++) {\r
-            var location = swagger, path = opt[i], parts = path.split('/');\r
-            for(j = 0; j < parts.length; j++) {\r
-              var segment = parts[j];\r
-              if(typeof location === 'undefined')\r
-                break;\r
-              if(segment.length > 0)\r
-                location = location[segment];\r
-            }\r
-            var resolved = host + '#' + path, resolvedName = parts[j-1];\r
-            if(typeof location !== 'undefined') {\r
-              resolvedRefs[resolved] = {\r
-                name: resolvedName,\r
-                obj: location\r
-              };\r
-            }\r
-            else unresolvedRefs[resolved] = null;\r
-          }\r
-          if(processedCalls === expectedCalls)\r
-            self.finish(spec, resolutionTable, resolvedRefs, unresolvedRefs, callback);\r
-        }\r
-      }\r
-    };\r
-    authorizations.apply(obj);\r
-    new SwaggerHttp().execute(obj);\r
-  }\r
-  if(Object.keys(opts).length === 0)\r
-    callback.call(this.scope, spec, unresolvedRefs);\r
-};\r
-\r
-Resolver.prototype.finish = function(spec, resolutionTable, resolvedRefs, unresolvedRefs, callback) {\r
-  // walk resolution table and replace with resolved refs\r
-  var ref;\r
-  for(ref in resolutionTable) {\r
-    var i, locations = resolutionTable[ref];\r
-    for(i = 0; i < locations.length; i++) {\r
-      var resolvedTo = resolvedRefs[locations[i].obj.$ref];\r
-      if(resolvedTo) {\r
-        if(!spec.definitions)\r
-          spec.definitions = {};\r
-        if(locations[i].resolveAs === '$ref') {\r
-          spec.definitions[resolvedTo.name] = resolvedTo.obj;\r
-          locations[i].obj.$ref = '#/definitions/' + resolvedTo.name;\r
-        }\r
-        else if (locations[i].resolveAs === 'inline') {\r
-          var key;\r
-          var targetObj = locations[i].obj;\r
-          delete targetObj.$ref;\r
-          for(key in resolvedTo.obj) {\r
-            targetObj[key] = resolvedTo.obj[key];\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-  callback.call(this.scope, spec, unresolvedRefs);\r
-};\r
-\r
-/**\r
- * immediately in-lines local refs, queues remote refs\r
- * for inline resolution\r
- */\r
-Resolver.prototype.resolveInline = function (spec, property, objs, unresolvedRefs) {\r
-  var ref = property.$ref;\r
-  if(ref) {\r
-    if(ref.indexOf('http') === 0) {\r
-      if(Array.isArray(objs[ref])) {\r
-        objs[ref].push({obj: property, resolveAs: 'inline'});\r
-      }\r
-      else {\r
-        objs[ref] = [{obj: property, resolveAs: 'inline'}];\r
-      }\r
-    }\r
-    else if (ref.indexOf('#') === 0) {\r
-      // local resolve\r
-      var shortenedRef = ref.substring(1);\r
-      var i, parts = shortenedRef.split('/'), location = spec;\r
-      for(i = 0; i < parts.length; i++) {\r
-        var part = parts[i];\r
-        if(part.length > 0) {\r
-          location = location[part];\r
-        }\r
-      }\r
-      if(location) {\r
-        delete property.$ref;\r
-        var key;\r
-        for(key in location) {\r
-          property[key] = location[key];\r
-        }\r
-      }\r
-      else unresolvedRefs[ref] = null;\r
-    }\r
-  }\r
-  else if(property.type === 'array') {\r
-    this.resolveTo(property.items, objs);\r
-  }\r
-};\r
-\r
-Resolver.prototype.resolveTo = function (property, objs) {\r
-  var ref = property.$ref;\r
-  if(ref) {\r
-    if(ref.indexOf('http') === 0) {\r
-      if(Array.isArray(objs[ref])) {\r
-        objs[ref].push({obj: property, resolveAs: '$ref'});\r
-      }\r
-      else {\r
-        objs[ref] = [{obj: property, resolveAs: '$ref'}];\r
-      }\r
-    }\r
-  }\r
-  else if(property.type === 'array') {\r
-    var items = property.items;\r
-    this.resolveTo(items, objs);\r
-  }\r
-};\r
-var addModel = function(name, model) {\r
-  models[name] = model;\r
-};\r
-\r
-var SwaggerClient = function(url, options) {\r
-  this.isBuilt = false;\r
-  this.url = null;\r
-  this.debug = false;\r
-  this.basePath = null;\r
-  this.modelsArray = [];\r
-  this.authorizations = null;\r
-  this.authorizationScheme = null;\r
-  this.isValid = false;\r
-  this.info = null;\r
-  this.useJQuery = false;\r
-  this.resourceCount = 0;\r
-\r
-  if(typeof url !== 'undefined')\r
-    return this.initialize(url, options);\r
-};\r
-\r
-SwaggerClient.prototype.initialize = function (url, options) {\r
-  this.models = models = {};\r
-\r
-  options = (options||{});\r
-\r
-  if(typeof url === 'string')\r
-    this.url = url;\r
-  else if(typeof url === 'object') {\r
-    options = url;\r
-    this.url = options.url;\r
-  }\r
-  this.swaggerRequstHeaders = options.swaggerRequstHeaders || 'application/json;charset=utf-8,*/*';\r
-  this.defaultSuccessCallback = options.defaultSuccessCallback || null;\r
-  this.defaultErrorCallback = options.defaultErrorCallback || null;\r
-\r
-  if (typeof options.success === 'function')\r
-    this.success = options.success;\r
-\r
-  if (options.useJQuery)\r
-    this.useJQuery = options.useJQuery;\r
-\r
-  if (options.authorizations) {\r
-    this.clientAuthorizations = options.authorizations;\r
-  } else {\r
-    this.clientAuthorizations = authorizations;\r
-  }\r
-\r
-  this.supportedSubmitMethods = options.supportedSubmitMethods || [];\r
-  this.failure = options.failure || function() {};\r
-  this.progress = options.progress || function() {};\r
-  this.spec = options.spec;\r
-  this.options = options;\r
-\r
-  if (typeof options.success === 'function') {\r
-    this.ready = true;\r
-    this.build();\r
-  }\r
-};\r
-\r
-SwaggerClient.prototype.build = function(mock) {\r
-  if (this.isBuilt) return this;\r
-  var self = this;\r
-  this.progress('fetching resource list: ' + this.url);\r
-  var obj = {\r
-    useJQuery: this.useJQuery,\r
-    url: this.url,\r
-    method: "get",\r
-    headers: {\r
-      accept: this.swaggerRequstHeaders\r
-    },\r
-    on: {\r
-      error: function(response) {\r
-        if (self.url.substring(0, 4) !== 'http')\r
-          return self.fail('Please specify the protocol for ' + self.url);\r
-        else if (response.status === 0)\r
-          return self.fail('Can\'t read from server.  It may not have the appropriate access-control-origin settings.');\r
-        else if (response.status === 404)\r
-          return self.fail('Can\'t read swagger JSON from ' + self.url);\r
-        else\r
-          return self.fail(response.status + ' : ' + response.statusText + ' ' + self.url);\r
-      },\r
-      response: function(resp) {\r
-        var responseObj = resp.obj || JSON.parse(resp.data);\r
-        self.swaggerVersion = responseObj.swaggerVersion;\r
-\r
-        if(responseObj.swagger && parseInt(responseObj.swagger) === 2) {\r
-          self.swaggerVersion = responseObj.swagger;\r
-          new Resolver().resolve(responseObj, self.buildFromSpec, self);\r
-          self.isValid = true;\r
-        }\r
-        else {\r
-          if (self.swaggerVersion === '1.2') {\r
-            return self.buildFrom1_2Spec(responseObj);\r
-          } else {\r
-            return self.buildFrom1_1Spec(responseObj);\r
-          }\r
-        }\r
-      }\r
-    }\r
-  };\r
-  if(this.spec) {\r
-    setTimeout(function() {\r
-      new Resolver().resolve(self.spec, self.buildFromSpec, self);\r
-   }, 10);\r
-  }\r
-  else {\r
-    authorizations.apply(obj);\r
-    if(mock)\r
-      return obj;\r
-    new SwaggerHttp().execute(obj);\r
-  }\r
-  return this;\r
-};\r
-\r
-SwaggerClient.prototype.buildFromSpec = function(response) {\r
-  if(this.isBuilt) return this;\r
-\r
-  this.info = response.info || {};\r
-  this.title = response.title || '';\r
-  this.host = response.host || '';\r
-  this.schemes = response.schemes || [];\r
-  this.basePath = response.basePath || '';\r
-  this.apis = {};\r
-  this.apisArray = [];\r
-  this.consumes = response.consumes;\r
-  this.produces = response.produces;\r
-  this.securityDefinitions = response.securityDefinitions;\r
-\r
-  // legacy support\r
-  this.authSchemes = response.securityDefinitions;\r
-\r
-  var definedTags = {};\r
-  if(Array.isArray(response.tags)) {\r
-    definedTags = {};\r
-    for(k = 0; k < response.tags.length; k++) {\r
-      var t = response.tags[k];\r
-      definedTags[t.name] = t;\r
-    }\r
-  }\r
-\r
-  var location;\r
-  if(typeof this.url === 'string') {\r
-    location = this.parseUri(this.url);\r
-  }\r
-\r
-  if(typeof this.schemes === 'undefined' || this.schemes.length === 0) {\r
-    this.scheme = location.scheme || 'http';\r
-  }\r
-  else {\r
-    this.scheme = this.schemes[0];\r
-  }\r
-\r
-  if(typeof this.host === 'undefined' || this.host === '') {\r
-    this.host = location.host;\r
-    if (location.port) {\r
-      this.host = this.host + ':' + location.port;\r
-    }\r
-  }\r
-\r
-  this.definitions = response.definitions;\r
-  var key;\r
-  for(key in this.definitions) {\r
-    var model = new Model(key, this.definitions[key]);\r
-    if(model) {\r
-      models[key] = model;\r
-    }\r
-  }\r
-\r
-  // get paths, create functions for each operationId\r
-  var path;\r
-  var operations = [];\r
-  for(path in response.paths) {\r
-    if(typeof response.paths[path] === 'object') {\r
-      var httpMethod;\r
-      for(httpMethod in response.paths[path]) {\r
-        if(['delete', 'get', 'head', 'options', 'patch', 'post', 'put'].indexOf(httpMethod) === -1) {\r
-          continue;\r
-        }\r
-        var operation = response.paths[path][httpMethod];\r
-        var tags = operation.tags;\r
-        if(typeof tags === 'undefined') {\r
-          operation.tags = [ 'default' ];\r
-          tags = operation.tags;\r
-        }\r
-        var operationId = this.idFromOp(path, httpMethod, operation);\r
-        var operationObject = new Operation (\r
-          this,\r
-          operation.scheme,\r
-          operationId,\r
-          httpMethod,\r
-          path,\r
-          operation,\r
-          this.definitions\r
-        );\r
-        // bind this operation's execute command to the api\r
-        if(tags.length > 0) {\r
-          var i;\r
-          for(i = 0; i < tags.length; i++) {\r
-            var tag = this.tagFromLabel(tags[i]);\r
-            var operationGroup = this[tag];\r
-            if(typeof this.apis[tag] === 'undefined')\r
-              this.apis[tag] = {};\r
-            if(typeof operationGroup === 'undefined') {\r
-              this[tag] = [];\r
-              operationGroup = this[tag];\r
-              operationGroup.operations = {};\r
-              operationGroup.label = tag;\r
-              operationGroup.apis = [];\r
-              var tagObject = definedTags[tag];\r
-              if(typeof tagObject === 'object') {\r
-                operationGroup.description = tagObject.description;\r
-                operationGroup.externalDocs = tagObject.externalDocs;\r
-              }\r
-              this[tag].help = this.help.bind(operationGroup);\r
-              this.apisArray.push(new OperationGroup(tag, operationGroup.description, operationGroup.externalDocs, operationObject));\r
-            }\r
-            if(typeof this.apis[tag].help !== 'function')\r
-              this.apis[tag].help = this.help.bind(operationGroup);\r
-            // bind to the apis object\r
-            this.apis[tag][operationId] = operationObject.execute.bind(operationObject);\r
-            this.apis[tag][operationId].help = operationObject.help.bind(operationObject);\r
-            this.apis[tag][operationId].asCurl = operationObject.asCurl.bind(operationObject);\r
-            operationGroup[operationId] = operationObject.execute.bind(operationObject);\r
-            operationGroup[operationId].help = operationObject.help.bind(operationObject);\r
-            operationGroup[operationId].asCurl = operationObject.asCurl.bind(operationObject);\r
-\r
-            operationGroup.apis.push(operationObject);\r
-            operationGroup.operations[operationId] = operationObject;\r
-\r
-            // legacy UI feature\r
-            var j;\r
-            var api;\r
-            for(j = 0; j < this.apisArray.length; j++) {\r
-              if(this.apisArray[j].tag === tag) {\r
-                api = this.apisArray[j];\r
-              }\r
-            }\r
-            if(api) {\r
-              api.operationsArray.push(operationObject);\r
-            }\r
-          }\r
-        }\r
-        else {\r
-          log('no group to bind to');\r
-        }\r
-      }\r
-    }\r
-  }\r
-  this.isBuilt = true;\r
-  if (this.success) {\r
-    this.isValid = true;\r
-    this.isBuilt = true;\r
-    this.success();\r
-  }\r
-  return this;\r
-};\r
-\r
-SwaggerClient.prototype.parseUri = function(uri) {\r
-  var urlParseRE = /^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/;\r
-  var parts = urlParseRE.exec(uri);\r
-  return {\r
-    scheme: parts[4].replace(':',''),\r
-    host: parts[11],\r
-    port: parts[12],\r
-    path: parts[15]\r
-  };\r
-};\r
-\r
-SwaggerClient.prototype.help = function(dontPrint) {\r
-  var i;\r
-  var output = 'operations for the "' + this.label + '" tag';\r
-  for(i = 0; i < this.apis.length; i++) {\r
-    var api = this.apis[i];\r
-    output += '\n  * ' + api.nickname + ': ' + api.operation.summary;\r
-  }\r
-  if(dontPrint)\r
-    return output;\r
-  else {\r
-    log(output);\r
-    return output;\r
-  }\r
-};\r
-\r
-SwaggerClient.prototype.tagFromLabel = function(label) {\r
-  return label;\r
-};\r
-\r
-SwaggerClient.prototype.idFromOp = function(path, httpMethod, op) {\r
-  var opId = op.operationId || (path.substring(1) + '_' + httpMethod);\r
-  return opId.replace(/[\.,-\/#!$%\^&\*;:{}=\-_`~()\+\s]/g,'_');\r
-};\r
-\r
-SwaggerClient.prototype.fail = function(message) {\r
-  this.failure(message);\r
-  throw message;\r
-};\r
-\r
-var OperationGroup = function(tag, description, externalDocs, operation) {\r
-  this.tag = tag;\r
-  this.path = tag;\r
-  this.description = description;\r
-  this.externalDocs = externalDocs;\r
-  this.name = tag;\r
-  this.operation = operation;\r
-  this.operationsArray = [];\r
-};\r
-\r
-var Operation = function(parent, scheme, operationId, httpMethod, path, args, definitions) {\r
-  var errors = [];\r
-  parent = parent||{};\r
-  args = args||{};\r
-\r
-  this.operations = {};\r
-  this.operation = args;\r
-  this.deprecated = args.deprecated;\r
-  this.consumes = args.consumes;\r
-  this.produces = args.produces;\r
-  this.parent = parent;\r
-  this.host = parent.host || 'localhost';\r
-  this.schemes = parent.schemes;\r
-  this.scheme = scheme || parent.scheme || 'http';\r
-  this.basePath = parent.basePath || '/';\r
-  this.nickname = (operationId||errors.push('Operations must have a nickname.'));\r
-  this.method = (httpMethod||errors.push('Operation ' + operationId + ' is missing method.'));\r
-  this.path = (path||errors.push('Operation ' + this.nickname + ' is missing path.'));\r
-  this.parameters = args !== null ? (args.parameters||[]) : {};\r
-  this.summary = args.summary || '';\r
-  this.responses = (args.responses||{});\r
-  this.type = null;\r
-  this.security = args.security;\r
-  this.authorizations = args.security;\r
-  this.description = args.description;\r
-  this.useJQuery = parent.useJQuery;\r
-\r
-  if(typeof this.deprecated === 'string') {\r
-    switch(this.deprecated.toLowerCase()) {\r
-      case 'true': case 'yes': case '1': {\r
-        this.deprecated = true;\r
-        break;\r
-      }\r
-      case 'false': case 'no': case '0': case null: {\r
-        this.deprecated = false;\r
-        break;\r
-      }\r
-      default: this.deprecated = Boolean(this.deprecated);\r
-    }\r
-  }\r
-\r
-  var i, model;\r
-\r
-  if(definitions) {\r
-    // add to global models\r
-    var key;\r
-    for(key in this.definitions) {\r
-      model = new Model(key, definitions[key]);\r
-      if(model) {\r
-        models[key] = model;\r
-      }\r
-    }\r
-  }\r
-  for(i = 0; i < this.parameters.length; i++) {\r
-    var param = this.parameters[i];\r
-    if(param.type === 'array') {\r
-      param.isList = true;\r
-      param.allowMultiple = true;\r
-    }\r
-    var innerType = this.getType(param);\r
-    if(innerType && innerType.toString().toLowerCase() === 'boolean') {\r
-      param.allowableValues = {};\r
-      param.isList = true;\r
-      param['enum'] = ["true", "false"];\r
-    }\r
-    if(typeof param['enum'] !== 'undefined') {\r
-      var id;\r
-      param.allowableValues = {};\r
-      param.allowableValues.values = [];\r
-      param.allowableValues.descriptiveValues = [];\r
-      for(id = 0; id < param['enum'].length; id++) {\r
-        var value = param['enum'][id];\r
-        var isDefault = (value === param.default) ? true : false;\r
-        param.allowableValues.values.push(value);\r
-        param.allowableValues.descriptiveValues.push({value : value, isDefault: isDefault});\r
-      }\r
-    }\r
-    if(param.type === 'array') {\r
-      innerType = [innerType];\r
-      if(typeof param.allowableValues === 'undefined') {\r
-        // can't show as a list if no values to select from\r
-        delete param.isList;\r
-        delete param.allowMultiple;\r
-      }\r
-    }\r
-    param.signature = this.getModelSignature(innerType, models).toString();\r
-    param.sampleJSON = this.getModelSampleJSON(innerType, models);\r
-    param.responseClassSignature = param.signature;\r
-  }\r
-\r
-  var defaultResponseCode, response, responses = this.responses;\r
-\r
-  if(responses['200']) {\r
-    response = responses['200'];\r
-    defaultResponseCode = '200';\r
-  }\r
-  else if(responses['201']) {\r
-    response = responses['201'];\r
-    defaultResponseCode = '201';\r
-  }\r
-  else if(responses['202']) {\r
-    response = responses['202'];\r
-    defaultResponseCode = '202';\r
-  }\r
-  else if(responses['203']) {\r
-    response = responses['203'];\r
-    defaultResponseCode = '203';\r
-  }\r
-  else if(responses['204']) {\r
-    response = responses['204'];\r
-    defaultResponseCode = '204';\r
-  }\r
-  else if(responses['205']) {\r
-    response = responses['205'];\r
-    defaultResponseCode = '205';\r
-  }\r
-  else if(responses['206']) {\r
-    response = responses['206'];\r
-    defaultResponseCode = '206';\r
-  }\r
-  else if(responses['default']) {\r
-    response = responses['default'];\r
-    defaultResponseCode = 'default';\r
-  }\r
-\r
-  if(response && response.schema) {\r
-    var resolvedModel = this.resolveModel(response.schema, definitions);\r
-    delete responses[defaultResponseCode];\r
-    if(resolvedModel) {\r
-      this.successResponse = {};\r
-      this.successResponse[defaultResponseCode] = resolvedModel;\r
-    }\r
-    else {\r
-      this.successResponse = {};\r
-      this.successResponse[defaultResponseCode] = response.schema.type;\r
-    }\r
-    this.type = response;\r
-  }\r
-\r
-  if (errors.length > 0) {\r
-    if(this.resource && this.resource.api && this.resource.api.fail)\r
-      this.resource.api.fail(errors);\r
-  }\r
-\r
-  return this;\r
-};\r
-\r
-OperationGroup.prototype.sort = function(sorter) {\r
-\r
-};\r
-\r
-Operation.prototype.getType = function (param) {\r
-  var type = param.type;\r
-  var format = param.format;\r
-  var isArray = false;\r
-  var str;\r
-  if(type === 'integer' && format === 'int32')\r
-    str = 'integer';\r
-  else if(type === 'integer' && format === 'int64')\r
-    str = 'long';\r
-  else if(type === 'integer')\r
-    str = 'integer';\r
-  else if(type === 'string') {\r
-    if(format === 'date-time')\r
-      str = 'date-time';\r
-    else if(format === 'date')\r
-      str = 'date';\r
-    else\r
-      str = 'string';\r
-  }\r
-  else if(type === 'number' && format === 'float')\r
-    str = 'float';\r
-  else if(type === 'number' && format === 'double')\r
-    str = 'double';\r
-  else if(type === 'number')\r
-    str = 'double';\r
-  else if(type === 'boolean')\r
-    str = 'boolean';\r
-  else if(type === 'array') {\r
-    isArray = true;\r
-    if(param.items)\r
-      str = this.getType(param.items);\r
-  }\r
-  if(param.$ref)\r
-    str = param.$ref;\r
-\r
-  var schema = param.schema;\r
-  if(schema) {\r
-    var ref = schema.$ref;\r
-    if(ref) {\r
-      ref = simpleRef(ref);\r
-      if(isArray)\r
-        return [ ref ];\r
-      else\r
-        return ref;\r
-    }\r
-    else\r
-      return this.getType(schema);\r
-  }\r
-  if(isArray)\r
-    return [ str ];\r
-  else\r
-    return str;\r
-};\r
-\r
-Operation.prototype.resolveModel = function (schema, definitions) {\r
-  if(typeof schema.$ref !== 'undefined') {\r
-    var ref = schema.$ref;\r
-    if(ref.indexOf('#/definitions/') === 0)\r
-      ref = ref.substring('#/definitions/'.length);\r
-    if(definitions[ref]) {\r
-      return new Model(ref, definitions[ref]);\r
-    }\r
-  }\r
-  if(schema.type === 'array')\r
-    return new ArrayModel(schema);\r
-  else\r
-    return null;\r
-};\r
-\r
-Operation.prototype.help = function(dontPrint) {\r
-  var out = this.nickname + ': ' + this.summary + '\n';\r
-  for(var i = 0; i < this.parameters.length; i++) {\r
-    var param = this.parameters[i];\r
-    var typeInfo = param.signature;\r
-    out += '\n  * ' + param.name + ' (' + typeInfo + '): ' + param.description;\r
-  }\r
-  if(typeof dontPrint === 'undefined')\r
-    log(out);\r
-  return out;\r
-};\r
-\r
-Operation.prototype.getModelSignature = function(type, definitions) {\r
-  var isPrimitive, listType;\r
-\r
-  if(type instanceof Array) {\r
-    listType = true;\r
-    type = type[0];\r
-  }\r
-  else if(typeof type === 'undefined')\r
-    type = 'undefined';\r
-\r
-  if(type === 'string')\r
-    isPrimitive = true;\r
-  else\r
-    isPrimitive = (listType && definitions[listType]) || (definitions[type]) ? false : true;\r
-  if (isPrimitive) {\r
-    if(listType)\r
-      return 'Array[' + type + ']';\r
-    else\r
-      return type.toString();\r
-  } else {\r
-    if (listType)\r
-      return 'Array[' + definitions[type].getMockSignature() + ']';\r
-    else\r
-      return definitions[type].getMockSignature();\r
-  }\r
-};\r
-\r
-Operation.prototype.supportHeaderParams = function () {\r
-  return true;\r
-};\r
-\r
-Operation.prototype.supportedSubmitMethods = function () {\r
-  return this.parent.supportedSubmitMethods;\r
-};\r
-\r
-Operation.prototype.getHeaderParams = function (args) {\r
-  var headers = this.setContentTypes(args, {});\r
-  for(var i = 0; i < this.parameters.length; i++) {\r
-    var param = this.parameters[i];\r
-    if(typeof args[param.name] !== 'undefined') {\r
-      if (param.in === 'header') {\r
-        var value = args[param.name];\r
-        if(Array.isArray(value))\r
-          value = value.toString();\r
-        headers[param.name] = value;\r
-      }\r
-    }\r
-  }\r
-  return headers;\r
-};\r
-\r
-Operation.prototype.urlify = function (args) {\r
-  var formParams = {};\r
-  var requestUrl = this.path;\r
-\r
-  // grab params from the args, build the querystring along the way\r
-  var querystring = '';\r
-  for(var i = 0; i < this.parameters.length; i++) {\r
-    var param = this.parameters[i];\r
-    if(typeof args[param.name] !== 'undefined') {\r
-      if(param.in === 'path') {\r
-        var reg = new RegExp('\{' + param.name + '\}', 'gi');\r
-        var value = args[param.name];\r
-        if(Array.isArray(value))\r
-          value = this.encodePathCollection(param.collectionFormat, param.name, value);\r
-        else\r
-          value = this.encodePathParam(value);\r
-        requestUrl = requestUrl.replace(reg, value);\r
-      }\r
-      else if (param.in === 'query' && typeof args[param.name] !== 'undefined') {\r
-        if(querystring === '')\r
-          querystring += '?';\r
-        else\r
-          querystring += '&';\r
-        if(typeof param.collectionFormat !== 'undefined') {\r
-          var qp = args[param.name];\r
-          if(Array.isArray(qp))\r
-            querystring += this.encodeQueryCollection(param.collectionFormat, param.name, qp);\r
-          else\r
-            querystring += this.encodeQueryParam(param.name) + '=' + this.encodeQueryParam(args[param.name]);\r
-        }\r
-        else\r
-          querystring += this.encodeQueryParam(param.name) + '=' + this.encodeQueryParam(args[param.name]);\r
-      }\r
-      else if (param.in === 'formData')\r
-        formParams[param.name] = args[param.name];\r
-    }\r
-  }\r
-  var url = this.scheme + '://' + this.host;\r
-\r
-  if(this.basePath !== '/')\r
-    url += this.basePath;\r
-\r
-  return url + requestUrl + querystring;\r
-};\r
-\r
-Operation.prototype.getMissingParams = function(args) {\r
-  var missingParams = [];\r
-  // check required params, track the ones that are missing\r
-  var i;\r
-  for(i = 0; i < this.parameters.length; i++) {\r
-    var param = this.parameters[i];\r
-    if(param.required === true) {\r
-      if(typeof args[param.name] === 'undefined')\r
-        missingParams = param.name;\r
-    }\r
-  }\r
-  return missingParams;\r
-};\r
-\r
-Operation.prototype.getBody = function(headers, args, opts) {\r
-  var formParams = {}, body, key;\r
-\r
-  for(var i = 0; i < this.parameters.length; i++) {\r
-    var param = this.parameters[i];\r
-    if(typeof args[param.name] !== 'undefined') {\r
-      if (param.in === 'body') {\r
-        body = args[param.name];\r
-      } else if(param.in === 'formData') {\r
-        formParams[param.name] = args[param.name];\r
-      }\r
-    }\r
-  }\r
-\r
-  // handle form params\r
-  if(headers['Content-Type'] === 'application/x-www-form-urlencoded') {\r
-    var encoded = "";\r
-    for(key in formParams) {\r
-      value = formParams[key];\r
-      if(typeof value !== 'undefined'){\r
-        if(encoded !== "")\r
-          encoded += "&";\r
-        encoded += encodeURIComponent(key) + '=' + encodeURIComponent(value);\r
-      }\r
-    }\r
-    body = encoded;\r
-  }\r
-  else if (headers['Content-Type'] && headers['Content-Type'].indexOf('multipart/form-data') >= 0) {\r
-    if(opts.useJQuery) {\r
-      var bodyParam = new FormData();\r
-      bodyParam.type = 'formData';\r
-      for (key in formParams) {\r
-        value = args[key];\r
-        if (typeof value !== 'undefined') {\r
-          // required for jquery file upload\r
-          if(value.type === 'file' && value.value) {\r
-            delete headers['Content-Type'];\r
-            bodyParam.append(key, value.value);\r
-          }\r
-          else\r
-            bodyParam.append(key, value);\r
-        }\r
-      }\r
-      body = bodyParam;\r
-    }\r
-  }\r
-\r
-  return body;\r
-};\r
-\r
-/**\r
- * gets sample response for a single operation\r
- **/\r
-Operation.prototype.getModelSampleJSON = function(type, models) {\r
-  var isPrimitive, listType, sampleJson;\r
-\r
-  listType = (type instanceof Array);\r
-  isPrimitive = models[type] ? false : true;\r
-  sampleJson = isPrimitive ? void 0 : models[type].createJSONSample();\r
-  if (sampleJson) {\r
-    sampleJson = listType ? [sampleJson] : sampleJson;\r
-    if(typeof sampleJson == 'string')\r
-      return sampleJson;\r
-    else if(typeof sampleJson === 'object') {\r
-      var t = sampleJson;\r
-      if(sampleJson instanceof Array && sampleJson.length > 0) {\r
-        t = sampleJson[0];\r
-      }\r
-      if(t.nodeName) {\r
-        var xmlString = new XMLSerializer().serializeToString(t);\r
-        return this.formatXml(xmlString);\r
-      }\r
-      else\r
-        return JSON.stringify(sampleJson, null, 2);\r
-    }\r
-    else\r
-      return sampleJson;\r
-  }\r
-};\r
-\r
-/**\r
- * legacy binding\r
- **/\r
-Operation.prototype["do"] = function(args, opts, callback, error, parent) {\r
-  return this.execute(args, opts, callback, error, parent);\r
-};\r
-\r
-\r
-/**\r
- * executes an operation\r
- **/\r
-Operation.prototype.execute = function(arg1, arg2, arg3, arg4, parent) {\r
-  var args = arg1 || {};\r
-  var opts = {}, success, error;\r
-  if(typeof arg2 === 'object') {\r
-    opts = arg2;\r
-    success = arg3;\r
-    error = arg4;\r
-  }\r
-\r
-  if(typeof arg2 === 'function') {\r
-    success = arg2;\r
-    error = arg3;\r
-  }\r
-\r
-  success = (success||log);\r
-  error = (error||log);\r
-\r
-  if(opts.useJQuery)\r
-    this.useJQuery = opts.useJQuery;\r
-\r
-  var missingParams = this.getMissingParams(args);\r
-  if(missingParams.length > 0) {\r
-    var message = 'missing required params: ' + missingParams;\r
-    fail(message);\r
-    return;\r
-  }\r
-  var allHeaders = this.getHeaderParams(args);\r
-  var contentTypeHeaders = this.setContentTypes(args, opts);\r
-\r
-  var headers = {}, attrname;\r
-  for (attrname in allHeaders) { headers[attrname] = allHeaders[attrname]; }\r
-  for (attrname in contentTypeHeaders) { headers[attrname] = contentTypeHeaders[attrname]; }\r
-\r
-  var body = this.getBody(headers, args, opts);\r
-  var url = this.urlify(args);\r
-\r
-  var obj = {\r
-    url: url,\r
-    method: this.method.toUpperCase(),\r
-    body: body,\r
-    useJQuery: this.useJQuery,\r
-    headers: headers,\r
-    on: {\r
-      response: function(response) {\r
-        return success(response, parent);\r
-      },\r
-      error: function(response) {\r
-        return error(response, parent);\r
-      }\r
-    }\r
-  };\r
-  var status = authorizations.apply(obj, this.operation.security);\r
-  if(opts.mock === true)\r
-    return obj;\r
-  else\r
-    new SwaggerHttp().execute(obj, opts);\r
-};\r
-\r
-Operation.prototype.setContentTypes = function(args, opts) {\r
-  // default type\r
-  var accepts = 'application/json';\r
-  var consumes = args.parameterContentType || 'application/json';\r
-  var allDefinedParams = this.parameters;\r
-  var definedFormParams = [];\r
-  var definedFileParams = [];\r
-  var body;\r
-  var headers = {};\r
-\r
-  // get params from the operation and set them in definedFileParams, definedFormParams, headers\r
-  var i;\r
-  for(i = 0; i < allDefinedParams.length; i++) {\r
-    var param = allDefinedParams[i];\r
-    if(param.in === 'formData') {\r
-      if(param.type === 'file')\r
-        definedFileParams.push(param);\r
-      else\r
-        definedFormParams.push(param);\r
-    }\r
-    else if(param.in === 'header' && opts) {\r
-      var key = param.name;\r
-      var headerValue = opts[param.name];\r
-      if(typeof opts[param.name] !== 'undefined')\r
-        headers[key] = headerValue;\r
-    }\r
-    else if(param.in === 'body' && typeof args[param.name] !== 'undefined') {\r
-      body = args[param.name];\r
-    }\r
-  }\r
-\r
-  // if there's a body, need to set the consumes header via requestContentType\r
-  if (body && (this.method === 'post' || this.method === 'put' || this.method === 'patch' || this.method === 'delete')) {\r
-    if (opts.requestContentType)\r
-      consumes = opts.requestContentType;\r
-  } else {\r
-    // if any form params, content type must be set\r
-    if(definedFormParams.length > 0) {\r
-      if(opts.requestContentType)           // override if set\r
-        consumes = opts.requestContentType;\r
-      else if(definedFileParams.length > 0) // if a file, must be multipart/form-data\r
-        consumes = 'multipart/form-data';\r
-      else                                  // default to x-www-from-urlencoded\r
-        consumes = 'application/x-www-form-urlencoded';\r
-    }\r
-    else if (this.type == 'DELETE')\r
-      body = '{}';\r
-    else if (this.type != 'DELETE')\r
-      consumes = null;\r
-  }\r
-\r
-  if (consumes && this.consumes) {\r
-    if (this.consumes.indexOf(consumes) === -1) {\r
-      log('server doesn\'t consume ' + consumes + ', try ' + JSON.stringify(this.consumes));\r
-    }\r
-  }\r
-\r
-  if (opts.responseContentType) {\r
-    accepts = opts.responseContentType;\r
-  } else {\r
-    accepts = 'application/json';\r
-  }\r
-  if (accepts && this.produces) {\r
-    if (this.produces.indexOf(accepts) === -1) {\r
-      log('server can\'t produce ' + accepts);\r
-    }\r
-  }\r
-\r
-  if ((consumes && body !== '') || (consumes === 'application/x-www-form-urlencoded'))\r
-    headers['Content-Type'] = consumes;\r
-  if (accepts)\r
-    headers.Accept = accepts;\r
-  return headers;\r
-};\r
-\r
-Operation.prototype.asCurl = function (args) {\r
-  var obj = this.execute(args, {mock: true});\r
-  authorizations.apply(obj);\r
-  var results = [];\r
-  results.push('-X ' + this.method.toUpperCase());\r
-  if (obj.headers) {\r
-    var key;\r
-    for (key in obj.headers)\r
-      results.push('--header "' + key + ': ' + obj.headers[key] + '"');\r
-  }\r
-  if(obj.body) {\r
-    var body;\r
-    if(typeof obj.body === 'object')\r
-      body = JSON.stringify(obj.body);\r
-    else\r
-      body = obj.body;\r
-    results.push('-d "' + body.replace(/"/g, '\\"') + '"');\r
-  }\r
-  return 'curl ' + (results.join(' ')) + ' "' + obj.url + '"';\r
-};\r
-\r
-Operation.prototype.encodePathCollection = function(type, name, value) {\r
-  var encoded = '';\r
-  var i;\r
-  var separator = '';\r
-  if(type === 'ssv')\r
-    separator = '%20';\r
-  else if(type === 'tsv')\r
-    separator = '\\t';\r
-  else if(type === 'pipes')\r
-    separator = '|';\r
-  else\r
-    separator = ',';\r
-\r
-  for(i = 0; i < value.length; i++) {\r
-    if(i === 0)\r
-      encoded = this.encodeQueryParam(value[i]);\r
-    else\r
-      encoded += separator + this.encodeQueryParam(value[i]);\r
-  }\r
-  return encoded;\r
-};\r
-\r
-Operation.prototype.encodeQueryCollection = function(type, name, value) {\r
-  var encoded = '';\r
-  var i;\r
-  if(type === 'default' || type === 'multi') {\r
-    for(i = 0; i < value.length; i++) {\r
-      if(i > 0) encoded += '&';\r
-      encoded += this.encodeQueryParam(name) + '=' + this.encodeQueryParam(value[i]);\r
-    }\r
-  }\r
-  else {\r
-    var separator = '';\r
-    if(type === 'csv')\r
-      separator = ',';\r
-    else if(type === 'ssv')\r
-      separator = '%20';\r
-    else if(type === 'tsv')\r
-      separator = '\\t';\r
-    else if(type === 'pipes')\r
-      separator = '|';\r
-    else if(type === 'brackets') {\r
-      for(i = 0; i < value.length; i++) {\r
-        if(i !== 0)\r
-          encoded += '&';\r
-        encoded += this.encodeQueryParam(name) + '[]=' + this.encodeQueryParam(value[i]);\r
-      }\r
-    }\r
-    if(separator !== '') {\r
-      for(i = 0; i < value.length; i++) {\r
-        if(i === 0)\r
-          encoded = this.encodeQueryParam(name) + '=' + this.encodeQueryParam(value[i]);\r
-        else\r
-          encoded += separator + this.encodeQueryParam(value[i]);\r
-      }\r
-    }\r
-  }\r
-  return encoded;\r
-};\r
-\r
-Operation.prototype.encodeQueryParam = function(arg) {\r
-  return encodeURIComponent(arg);\r
-};\r
-\r
-/**\r
- * TODO revisit, might not want to leave '/'\r
- **/\r
-Operation.prototype.encodePathParam = function(pathParam) {\r
-  var encParts, part, parts, i, len;\r
-  pathParam = pathParam.toString();\r
-  if (pathParam.indexOf('/') === -1) {\r
-    return encodeURIComponent(pathParam);\r
-  } else {\r
-    parts = pathParam.split('/');\r
-    encParts = [];\r
-    for (i = 0, len = parts.length; i < len; i++) {\r
-      encParts.push(encodeURIComponent(parts[i]));\r
-    }\r
-    return encParts.join('/');\r
-  }\r
-};\r
-\r
-var Model = function(name, definition) {\r
-  this.name = name;\r
-  this.definition = definition || {};\r
-  this.properties = [];\r
-  var requiredFields = definition.required || [];\r
-  if(definition.type === 'array') {\r
-    var out = new ArrayModel(definition);\r
-    return out;\r
-  }\r
-  var key;\r
-  var props = definition.properties;\r
-  if(props) {\r
-    for(key in props) {\r
-      var required = false;\r
-      var property = props[key];\r
-      if(requiredFields.indexOf(key) >= 0)\r
-        required = true;\r
-      this.properties.push(new Property(key, property, required));\r
-    }\r
-  }\r
-};\r
-\r
-Model.prototype.createJSONSample = function(modelsToIgnore) {\r
-  var i, result = {}, representations = {};\r
-  modelsToIgnore = (modelsToIgnore||{});\r
-  modelsToIgnore[this.name] = this;\r
-  for (i = 0; i < this.properties.length; i++) {\r
-    prop = this.properties[i];\r
-    var sample = prop.getSampleValue(modelsToIgnore, representations);\r
-    result[prop.name] = sample;\r
-  }\r
-  delete modelsToIgnore[this.name];\r
-  return result;\r
-};\r
-\r
-Model.prototype.getSampleValue = function(modelsToIgnore) {\r
-  var i, obj = {}, representations = {};\r
-  for(i = 0; i < this.properties.length; i++ ) {\r
-    var property = this.properties[i];\r
-    obj[property.name] = property.sampleValue(false, modelsToIgnore, representations);\r
-  }\r
-  return obj;\r
-};\r
-\r
-Model.prototype.getMockSignature = function(modelsToIgnore) {\r
-  var i, prop, propertiesStr = [];\r
-  for (i = 0; i < this.properties.length; i++) {\r
-    prop = this.properties[i];\r
-    propertiesStr.push(prop.toString());\r
-  }\r
-  var strong = '<span class="strong">';\r
-  var stronger = '<span class="stronger">';\r
-  var strongClose = '</span>';\r
-  var classOpen = strong + this.name + ' {' + strongClose;\r
-  var classClose = strong + '}' + strongClose;\r
-  var returnVal = classOpen + '<div>' + propertiesStr.join(',</div><div>') + '</div>' + classClose;\r
-  if (!modelsToIgnore)\r
-    modelsToIgnore = {};\r
-\r
-  modelsToIgnore[this.name] = this;\r
-  for (i = 0; i < this.properties.length; i++) {\r
-    prop = this.properties[i];\r
-    var ref = prop.$ref;\r
-    var model = models[ref];\r
-    if (model && typeof modelsToIgnore[model.name] === 'undefined') {\r
-      returnVal = returnVal + ('<br>' + model.getMockSignature(modelsToIgnore));\r
-    }\r
-  }\r
-  return returnVal;\r
-};\r
-\r
-var Property = function(name, obj, required) {\r
-  this.schema = obj;\r
-  this.required = required;\r
-  if(obj.$ref)\r
-    this.$ref = simpleRef(obj.$ref);\r
-  else if (obj.type === 'array' && obj.items) {\r
-    if(obj.items.$ref)\r
-      this.$ref = simpleRef(obj.items.$ref);\r
-    else\r
-      obj = obj.items;\r
-  }\r
-  this.name = name;\r
-  this.description = obj.description;\r
-  this.obj = obj;\r
-  this.optional = true;\r
-  this.optional = !required;\r
-  this.default = obj.default || null;\r
-  this.example = obj.example !== undefined ? obj.example : null;\r
-  this.collectionFormat = obj.collectionFormat || null;\r
-  this.maximum = obj.maximum || null;\r
-  this.exclusiveMaximum = obj.exclusiveMaximum || null;\r
-  this.minimum = obj.minimum || null;\r
-  this.exclusiveMinimum = obj.exclusiveMinimum || null;\r
-  this.maxLength = obj.maxLength || null;\r
-  this.minLength = obj.minLength || null;\r
-  this.pattern = obj.pattern || null;\r
-  this.maxItems = obj.maxItems || null;\r
-  this.minItems = obj.minItems || null;\r
-  this.uniqueItems = obj.uniqueItems || null;\r
-  this['enum'] = obj['enum'] || null;\r
-  this.multipleOf = obj.multipleOf || null;\r
-};\r
-\r
-Property.prototype.getSampleValue = function (modelsToIgnore, representations) {\r
-  return this.sampleValue(false, modelsToIgnore, representations);\r
-};\r
-\r
-Property.prototype.isArray = function () {\r
-  var schema = this.schema;\r
-  if(schema.type === 'array')\r
-    return true;\r
-  else\r
-    return false;\r
-};\r
-\r
-Property.prototype.sampleValue = function(isArray, ignoredModels, representations) {\r
-  isArray = (isArray || this.isArray());\r
-  ignoredModels = (ignoredModels || {});\r
-  // representations = (representations || {});\r
-\r
-  var type = getStringSignature(this.obj, true);\r
-  var output;\r
-\r
-  if(this.$ref) {\r
-    var refModelName = simpleRef(this.$ref);\r
-    var refModel = models[refModelName];\r
-    if(typeof representations[type] !== 'undefined') {\r
-      return representations[type];\r
-    }\r
-    else\r
-\r
-    if(refModel && typeof ignoredModels[type] === 'undefined') {\r
-      ignoredModels[type] = this;\r
-      output = refModel.getSampleValue(ignoredModels, representations);\r
-      representations[type] = output;\r
-    }\r
-    else {\r
-      output = (representations[type] || refModelName);\r
-    }\r
-  }\r
-  else if(this.example)\r
-    output = this.example;\r
-  else if(this.default)\r
-    output = this.default;\r
-  else if(type === 'date-time')\r
-    output = new Date().toISOString();\r
-  else if(type === 'date')\r
-    output = new Date().toISOString().split("T")[0];\r
-  else if(type === 'string')\r
-    output = 'string';\r
-  else if(type === 'integer')\r
-    output = 0;\r
-  else if(type === 'long')\r
-    output = 0;\r
-  else if(type === 'float')\r
-    output = 0.0;\r
-  else if(type === 'double')\r
-    output = 0.0;\r
-  else if(type === 'boolean')\r
-    output = true;\r
-  else\r
-    output = {};\r
-  ignoredModels[type] = output;\r
-  if(isArray)\r
-    return [output];\r
-  else\r
-    return output;\r
-};\r
-\r
-getStringSignature = function(obj, baseComponent) {\r
-  var str = '';\r
-  if(typeof obj.$ref !== 'undefined')\r
-    str += simpleRef(obj.$ref);\r
-  else if(typeof obj.type === 'undefined')\r
-    str += 'object';\r
-  else if(obj.type === 'array') {\r
-    if(baseComponent)\r
-      str += getStringSignature((obj.items || obj.$ref || {}));\r
-    else {\r
-      str += 'Array[';\r
-      str += getStringSignature((obj.items || obj.$ref || {}));\r
-      str += ']';\r
-    }\r
-  }\r
-  else if(obj.type === 'integer' && obj.format === 'int32')\r
-    str += 'integer';\r
-  else if(obj.type === 'integer' && obj.format === 'int64')\r
-    str += 'long';\r
-  else if(obj.type === 'integer' && typeof obj.format === 'undefined')\r
-    str += 'long';\r
-  else if(obj.type === 'string' && obj.format === 'date-time')\r
-    str += 'date-time';\r
-  else if(obj.type === 'string' && obj.format === 'date')\r
-    str += 'date';\r
-  else if(obj.type === 'string' && typeof obj.format === 'undefined')\r
-    str += 'string';\r
-  else if(obj.type === 'number' && obj.format === 'float')\r
-    str += 'float';\r
-  else if(obj.type === 'number' && obj.format === 'double')\r
-    str += 'double';\r
-  else if(obj.type === 'number' && typeof obj.format === 'undefined')\r
-    str += 'double';\r
-  else if(obj.type === 'boolean')\r
-    str += 'boolean';\r
-  else if(obj.$ref)\r
-    str += simpleRef(obj.$ref);\r
-  else\r
-    str += obj.type;\r
-  return str;\r
-};\r
-\r
-simpleRef = function(name) {\r
-  if(typeof name === 'undefined')\r
-    return null;\r
-  if(name.indexOf("#/definitions/") === 0)\r
-    return name.substring('#/definitions/'.length);\r
-  else\r
-    return name;\r
-};\r
-\r
-Property.prototype.toString = function() {\r
-  var str = getStringSignature(this.obj);\r
-  if(str !== '') {\r
-    str = '<span class="propName ' + this.required + '">' + this.name + '</span> (<span class="propType">' + str + '</span>';\r
-    if(!this.required)\r
-      str += ', <span class="propOptKey">optional</span>';\r
-    str += ')';\r
-  }\r
-  else\r
-    str = this.name + ' (' + JSON.stringify(this.obj) + ')';\r
-\r
-  if(typeof this.description !== 'undefined')\r
-    str += ': ' + this.description;\r
-\r
-  if (this['enum']) {\r
-    str += ' = <span class="propVals">[\'' + this['enum'].join('\' or \'') + '\']</span>';\r
-  }\r
-  if (this.descr) {\r
-    str += ': <span class="propDesc">' + this.descr + '</span>';\r
-  }\r
-\r
-\r
-  var options = ''; \r
-  var isArray = this.schema.type === 'array';\r
-  var type;\r
-\r
-  if(isArray) {\r
-    if(this.schema.items)\r
-      type = this.schema.items.type;\r
-    else\r
-      type = '';\r
-  }\r
-  else {\r
-    type = this.schema.type;\r
-  }\r
-\r
-  if (this.default)\r
-    options += optionHtml('Default', this.default);\r
-\r
-  switch (type) {\r
-    case 'string':\r
-      if (this.minLength)\r
-        options += optionHtml('Min. Length', this.minLength);\r
-      if (this.maxLength)\r
-        options += optionHtml('Max. Length', this.maxLength);\r
-      if (this.pattern)\r
-        options += optionHtml('Reg. Exp.', this.pattern);\r
-      break;\r
-    case 'integer':\r
-    case 'number':\r
-      if (this.minimum)\r
-        options += optionHtml('Min. Value', this.minimum);\r
-      if (this.exclusiveMinimum)\r
-        options += optionHtml('Exclusive Min.', "true");\r
-      if (this.maximum)\r
-        options += optionHtml('Max. Value', this.maximum);\r
-      if (this.exclusiveMaximum)\r
-        options += optionHtml('Exclusive Max.', "true");\r
-      if (this.multipleOf)\r
-        options += optionHtml('Multiple Of', this.multipleOf);\r
-      break;\r
-  }\r
-\r
-  if (isArray) {\r
-    if (this.minItems)\r
-      options += optionHtml('Min. Items', this.minItems);\r
-    if (this.maxItems)\r
-      options += optionHtml('Max. Items', this.maxItems);\r
-    if (this.uniqueItems)\r
-      options += optionHtml('Unique Items', "true");\r
-    if (this.collectionFormat)\r
-      options += optionHtml('Coll. Format', this.collectionFormat);\r
-  }\r
-\r
-  if (this['enum']) {\r
-    var enumString;\r
-\r
-    if (type === 'number' || type === 'integer')\r
-      enumString = this['enum'].join(', ');\r
-    else {\r
-      enumString = '"' + this['enum'].join('", "') + '"';\r
-    }\r
-\r
-    options += optionHtml('Enum', enumString);\r
-  }     \r
-\r
-  if (options.length > 0)\r
-    str = '<span class="propWrap">' + str + '<table class="optionsWrapper"><tr><th colspan="2">' + this.name + '</th></tr>' + options + '</table></span>';\r
-  \r
-  return str;\r
-};\r
-\r
-optionHtml = function(label, value) {\r
-  return '<tr><td class="optionName">' + label + ':</td><td>' + value + '</td></tr>';\r
-};\r
-\r
-typeFromJsonSchema = function(type, format) {\r
-  var str;\r
-  if(type === 'integer' && format === 'int32')\r
-    str = 'integer';\r
-  else if(type === 'integer' && format === 'int64')\r
-    str = 'long';\r
-  else if(type === 'integer' && typeof format === 'undefined')\r
-    str = 'long';\r
-  else if(type === 'string' && format === 'date-time')\r
-    str = 'date-time';\r
-  else if(type === 'string' && format === 'date')\r
-    str = 'date';\r
-  else if(type === 'number' && format === 'float')\r
-    str = 'float';\r
-  else if(type === 'number' && format === 'double')\r
-    str = 'double';\r
-  else if(type === 'number' && typeof format === 'undefined')\r
-    str = 'double';\r
-  else if(type === 'boolean')\r
-    str = 'boolean';\r
-  else if(type === 'string')\r
-    str = 'string';\r
-\r
-  return str;\r
-};\r
-\r
-var sampleModels = {};\r
-var cookies = {};\r
-var models = {};\r
-\r
-SwaggerClient.prototype.buildFrom1_2Spec = function (response) {\r
-  if (response.apiVersion !== null) {\r
-    this.apiVersion = response.apiVersion;\r
-  }\r
-  this.apis = {};\r
-  this.apisArray = [];\r
-  this.consumes = response.consumes;\r
-  this.produces = response.produces;\r
-  this.authSchemes = response.authorizations;\r
-  this.info = this.convertInfo(response.info);\r
-\r
-  var isApi = false, i, res;\r
-  for (i = 0; i < response.apis.length; i++) {\r
-    var api = response.apis[i];\r
-    if (api.operations) {\r
-      var j;\r
-      for (j = 0; j < api.operations.length; j++) {\r
-        operation = api.operations[j];\r
-        isApi = true;\r
-      }\r
-    }\r
-  }\r
-  if (response.basePath)\r
-    this.basePath = response.basePath;\r
-  else if (this.url.indexOf('?') > 0)\r
-    this.basePath = this.url.substring(0, this.url.lastIndexOf('?'));\r
-  else\r
-    this.basePath = this.url;\r
-\r
-  if (isApi) {\r
-    var newName = response.resourcePath.replace(/\//g, '');\r
-    this.resourcePath = response.resourcePath;\r
-    res = new SwaggerResource(response, this);\r
-    this.apis[newName] = res;\r
-    this.apisArray.push(res);\r
-    this.finish();\r
-  } else {\r
-    var k;\r
-    this.expectedResourceCount = response.apis.length;\r
-    for (k = 0; k < response.apis.length; k++) {\r
-      var resource = response.apis[k];\r
-      res = new SwaggerResource(resource, this);\r
-      this.apis[res.name] = res;\r
-      this.apisArray.push(res);\r
-    }\r
-  }\r
-  this.isValid = true;\r
-  return this;\r
-};\r
-\r
-SwaggerClient.prototype.finish = function() {\r
-  if (typeof this.success === 'function') {\r
-    this.isValid = true;\r
-    this.ready = true;\r
-    this.isBuilt = true;\r
-    this.selfReflect();\r
-    this.success();\r
-  }  \r
-};\r
-\r
-SwaggerClient.prototype.buildFrom1_1Spec = function (response) {\r
-  log('This API is using a deprecated version of Swagger!  Please see http://github.com/wordnik/swagger-core/wiki for more info');\r
-  if (response.apiVersion !== null)\r
-    this.apiVersion = response.apiVersion;\r
-  this.apis = {};\r
-  this.apisArray = [];\r
-  this.produces = response.produces;\r
-  this.info = this.convertInfo(response.info);\r
-  var isApi = false, res;\r
-  for (var i = 0; i < response.apis.length; i++) {\r
-    var api = response.apis[i];\r
-    if (api.operations) {\r
-      for (var j = 0; j < api.operations.length; j++) {\r
-        operation = api.operations[j];\r
-        isApi = true;\r
-      }\r
-    }\r
-  }\r
-  if (response.basePath) {\r
-    this.basePath = response.basePath;\r
-  } else if (this.url.indexOf('?') > 0) {\r
-    this.basePath = this.url.substring(0, this.url.lastIndexOf('?'));\r
-  } else {\r
-    this.basePath = this.url;\r
-  }\r
-  if (isApi) {\r
-    var newName = response.resourcePath.replace(/\//g, '');\r
-    this.resourcePath = response.resourcePath;\r
-    res = new SwaggerResource(response, this);\r
-    this.apis[newName] = res;\r
-    this.apisArray.push(res);\r
-    this.finish();\r
-  } else {\r
-    this.expectedResourceCount = response.apis.length;\r
-    for (k = 0; k < response.apis.length; k++) {\r
-      resource = response.apis[k];\r
-      res = new SwaggerResource(resource, this);\r
-      this.apis[res.name] = res;\r
-      this.apisArray.push(res);\r
-    }\r
-  }\r
-  this.isValid = true;\r
-  return this;\r
-};\r
-\r
-SwaggerClient.prototype.convertInfo = function (resp) {\r
-  if(typeof resp == 'object') {\r
-    var info = {};\r
-\r
-    info.title = resp.title;\r
-    info.description = resp.description;\r
-    info.termsOfService = resp.termsOfServiceUrl;\r
-    info.contact = {};\r
-    info.contact.name = resp.contact;\r
-    info.license = {};\r
-    info.license.name = resp.license;\r
-    info.license.url = resp.licenseUrl;\r
-\r
-    return info;\r
-  }\r
-};\r
-\r
-SwaggerClient.prototype.selfReflect = function () {\r
-  var resource, tag, ref;\r
-  if (this.apis === null) {\r
-    return false;\r
-  }\r
-  ref = this.apis;\r
-  for (tag in ref) {\r
-    api = ref[tag];\r
-    if (api.ready === null) {\r
-      return false;\r
-    }\r
-    this[tag] = api;\r
-    this[tag].help = __bind(api.help, api);\r
-  }\r
-  this.setConsolidatedModels();\r
-  this.ready = true;\r
-};\r
-\r
-SwaggerClient.prototype.setConsolidatedModels = function () {\r
-  var model, modelName, resource, resource_name, i, apis, models, results;\r
-  this.models = {};\r
-  apis = this.apis;\r
-  for (resource_name in apis) {\r
-    resource = apis[resource_name];\r
-    for (modelName in resource.models) {\r
-      if (typeof this.models[modelName] === 'undefined') {\r
-        this.models[modelName] = resource.models[modelName];\r
-        this.modelsArray.push(resource.models[modelName]);\r
-      }\r
-    }\r
-  }\r
-  models = this.modelsArray;\r
-  results = [];\r
-  for (i = 0; i < models.length; i++) {\r
-    model = models[i];\r
-    results.push(model.setReferencedModels(this.models));\r
-  }\r
-  return results;\r
-};\r
-\r
-var SwaggerResource = function (resourceObj, api) {\r
-  var _this = this;\r
-  this.api = api;\r
-  this.swaggerRequstHeaders = api.swaggerRequstHeaders;\r
-  this.path = (typeof this.api.resourcePath === 'string') ? this.api.resourcePath : resourceObj.path;\r
-  this.description = resourceObj.description;\r
-  this.authorizations = (resourceObj.authorizations || {});\r
-\r
-  var parts = this.path.split('/');\r
-  this.name = parts[parts.length - 1].replace('.{format}', '');\r
-  this.basePath = this.api.basePath;\r
-  this.operations = {};\r
-  this.operationsArray = [];\r
-  this.modelsArray = [];\r
-  this.models = api.models || {};\r
-  this.rawModels = {};\r
-  this.useJQuery = (typeof api.useJQuery !== 'undefined') ? api.useJQuery : null;\r
-\r
-  if ((resourceObj.apis) && this.api.resourcePath) {\r
-    this.addApiDeclaration(resourceObj);\r
-  } else {\r
-    if (typeof this.path === 'undefined') {\r
-      this.api.fail('SwaggerResources must have a path.');\r
-    }\r
-    if (this.path.substring(0, 4) === 'http') {\r
-      this.url = this.path.replace('{format}', 'json');\r
-    } else {\r
-      this.url = this.api.basePath + this.path.replace('{format}', 'json');\r
-    }\r
-    this.api.progress('fetching resource ' + this.name + ': ' + this.url);\r
-    var obj = {\r
-      url: this.url,\r
-      method: 'GET',\r
-      useJQuery: this.useJQuery,\r
-      headers: {\r
-        accept: this.swaggerRequstHeaders\r
-      },\r
-      on: {\r
-        response: function (resp) {\r
-          var responseObj = resp.obj || JSON.parse(resp.data);\r
-          _this.api.resourceCount += 1;\r
-          return _this.addApiDeclaration(responseObj);\r
-        },\r
-        error: function (response) {\r
-          _this.api.resourceCount += 1;\r
-          return _this.api.fail('Unable to read api \'' +\r
-          _this.name + '\' from path ' + _this.url + ' (server returned ' + response.statusText + ')');\r
-        }\r
-      }\r
-    };\r
-    var e = typeof window !== 'undefined' ? window : exports;\r
-    e.authorizations.apply(obj);\r
-    new SwaggerHttp().execute(obj);\r
-  }\r
-};\r
-\r
-SwaggerResource.prototype.help = function (dontPrint) {\r
-  var i;\r
-  var output = 'operations for the "' + this.name + '" tag';\r
-  for(i = 0; i < this.operationsArray.length; i++) {\r
-    var api = this.operationsArray[i];\r
-    output += '\n  * ' + api.nickname + ': ' + api.description;\r
-  }\r
-  if(dontPrint)\r
-    return output;\r
-  else {\r
-    log(output);\r
-    return output;\r
-  }\r
-};\r
-\r
-SwaggerResource.prototype.getAbsoluteBasePath = function (relativeBasePath) {\r
-  var pos, url;\r
-  url = this.api.basePath;\r
-  pos = url.lastIndexOf(relativeBasePath);\r
-  var parts = url.split('/');\r
-  var rootUrl = parts[0] + '//' + parts[2];\r
-\r
-  if (relativeBasePath.indexOf('http') === 0)\r
-    return relativeBasePath;\r
-  if (relativeBasePath === '/')\r
-    return rootUrl;\r
-  if (relativeBasePath.substring(0, 1) == '/') {\r
-    // use root + relative\r
-    return rootUrl + relativeBasePath;\r
-  }\r
-  else {\r
-    pos = this.basePath.lastIndexOf('/');\r
-    var base = this.basePath.substring(0, pos);\r
-    if (base.substring(base.length - 1) == '/')\r
-      return base + relativeBasePath;\r
-    else\r
-      return base + '/' + relativeBasePath;\r
-  }\r
-};\r
-\r
-SwaggerResource.prototype.addApiDeclaration = function (response) {\r
-  if (typeof response.produces === 'string')\r
-    this.produces = response.produces;\r
-  if (typeof response.consumes === 'string')\r
-    this.consumes = response.consumes;\r
-  if ((typeof response.basePath === 'string') && response.basePath.replace(/\s/g, '').length > 0)\r
-    this.basePath = response.basePath.indexOf('http') === -1 ? this.getAbsoluteBasePath(response.basePath) : response.basePath;\r
-  this.resourcePath = response.resourcePath;\r
-  this.addModels(response.models);\r
-  if (response.apis) {\r
-    for (var i = 0 ; i < response.apis.length; i++) {\r
-      var endpoint = response.apis[i];\r
-      this.addOperations(endpoint.path, endpoint.operations, response.consumes, response.produces);\r
-    }\r
-  }\r
-  this.api[this.name] = this;\r
-  this.ready = true;\r
-  if(this.api.resourceCount === this.api.expectedResourceCount)\r
-    this.api.finish();\r
-  return this;\r
-};\r
-\r
-SwaggerResource.prototype.addModels = function (models) {\r
-  if (typeof models === 'object') {\r
-    var modelName;\r
-    for (modelName in models) {\r
-      if (typeof this.models[modelName] === 'undefined') {\r
-        var swaggerModel = new SwaggerModel(modelName, models[modelName]);\r
-        this.modelsArray.push(swaggerModel);\r
-        this.models[modelName] = swaggerModel;\r
-        this.rawModels[modelName] = models[modelName];\r
-      }\r
-    }\r
-    var output = [];\r
-    for (var i = 0; i < this.modelsArray.length; i++) {\r
-      var model = this.modelsArray[i];\r
-      output.push(model.setReferencedModels(this.models));\r
-    }\r
-    return output;\r
-  }\r
-};\r
-\r
-SwaggerResource.prototype.addOperations = function (resource_path, ops, consumes, produces) {\r
-  if (ops) {\r
-    var output = [];\r
-    for (var i = 0; i < ops.length; i++) {\r
-      var o = ops[i];\r
-      consumes = this.consumes;\r
-      produces = this.produces;\r
-      if (typeof o.consumes !== 'undefined')\r
-        consumes = o.consumes;\r
-      else\r
-        consumes = this.consumes;\r
-\r
-      if (typeof o.produces !== 'undefined')\r
-        produces = o.produces;\r
-      else\r
-        produces = this.produces;\r
-      var type = (o.type || o.responseClass);\r
-\r
-      if (type === 'array') {\r
-        ref = null;\r
-        if (o.items)\r
-          ref = o.items.type || o.items.$ref;\r
-        type = 'array[' + ref + ']';\r
-      }\r
-      var responseMessages = o.responseMessages;\r
-      var method = o.method;\r
-      if (o.httpMethod) {\r
-        method = o.httpMethod;\r
-      }\r
-      if (o.supportedContentTypes) {\r
-        consumes = o.supportedContentTypes;\r
-      }\r
-      if (o.errorResponses) {\r
-        responseMessages = o.errorResponses;\r
-        for (var j = 0; j < responseMessages.length; j++) {\r
-          r = responseMessages[j];\r
-          r.message = r.reason;\r
-          r.reason = null;\r
-        }\r
-      }\r
-      o.nickname = this.sanitize(o.nickname);\r
-      var op = new SwaggerOperation(o.nickname,\r
-          resource_path,\r
-          method,\r
-          o.parameters,\r
-          o.summary,\r
-          o.notes,\r
-          type,\r
-          responseMessages, \r
-          this, \r
-          consumes, \r
-          produces, \r
-          o.authorizations, \r
-          o.deprecated);\r
-\r
-      this.operations[op.nickname] = op;\r
-      output.push(this.operationsArray.push(op));\r
-    }\r
-    return output;\r
-  }\r
-};\r
-\r
-SwaggerResource.prototype.sanitize = function (nickname) {\r
-  var op;\r
-  op = nickname.replace(/[\s!@#$%^&*()_+=\[{\]};:<>|.\/?,\\'""-]/g, '_');\r
-  op = op.replace(/((_){2,})/g, '_');\r
-  op = op.replace(/^(_)*/g, '');\r
-  op = op.replace(/([_])*$/g, '');\r
-  return op;\r
-};\r
-\r
-var SwaggerModel = function (modelName, obj) {\r
-  this.name = typeof obj.id !== 'undefined' ? obj.id : modelName;\r
-  this.properties = [];\r
-  var propertyName;\r
-  for (propertyName in obj.properties) {\r
-    if (obj.required) {\r
-      var value;\r
-      for (value in obj.required) {\r
-        if (propertyName === obj.required[value]) {\r
-          obj.properties[propertyName].required = true;\r
-        }\r
-      }\r
-    }\r
-    var prop = new SwaggerModelProperty(propertyName, obj.properties[propertyName], this);\r
-    this.properties.push(prop);\r
-  }\r
-};\r
-\r
-SwaggerModel.prototype.setReferencedModels = function (allModels) {\r
-  var results = [];\r
-  for (var i = 0; i < this.properties.length; i++) {\r
-    var property = this.properties[i];\r
-    var type = property.type || property.dataType;\r
-    if (allModels[type])\r
-      results.push(property.refModel = allModels[type]);\r
-    else if ((property.refDataType) && (allModels[property.refDataType]))\r
-      results.push(property.refModel = allModels[property.refDataType]);\r
-    else\r
-      results.push(void 0);\r
-  }\r
-  return results;\r
-};\r
-\r
-SwaggerModel.prototype.getMockSignature = function (modelsToIgnore) {\r
-  var i, prop, propertiesStr = [];\r
-  for (i = 0; i < this.properties.length; i++) {\r
-    prop = this.properties[i];\r
-    propertiesStr.push(prop.toString());\r
-  }\r
-\r
-  var strong = '<span class="strong">';\r
-  var strongClose = '</span>';\r
-  var classOpen = strong + this.name + ' {' + strongClose;\r
-  var classClose = strong + '}' + strongClose;\r
-  var returnVal = classOpen + '<div>' + propertiesStr.join(',</div><div>') + '</div>' + classClose;\r
-  if (!modelsToIgnore)\r
-    modelsToIgnore = [];\r
-  modelsToIgnore.push(this.name);\r
-\r
-  for (i = 0; i < this.properties.length; i++) {\r
-    prop = this.properties[i];\r
-    if ((prop.refModel) && modelsToIgnore.indexOf(prop.refModel.name) === -1) {\r
-      returnVal = returnVal + ('<br>' + prop.refModel.getMockSignature(modelsToIgnore));\r
-    }\r
-  }\r
-  return returnVal;\r
-};\r
-\r
-SwaggerModel.prototype.createJSONSample = function (modelsToIgnore) {\r
-  if (sampleModels[this.name]) {\r
-    return sampleModels[this.name];\r
-  }\r
-  else {\r
-    var result = {};\r
-    modelsToIgnore = (modelsToIgnore || []);\r
-    modelsToIgnore.push(this.name);\r
-    for (var i = 0; i < this.properties.length; i++) {\r
-      var prop = this.properties[i];\r
-      result[prop.name] = prop.getSampleValue(modelsToIgnore);\r
-    }\r
-    modelsToIgnore.pop(this.name);\r
-    return result;\r
-  }\r
-};\r
-\r
-var SwaggerModelProperty = function (name, obj, model) {\r
-  this.name = name;\r
-  this.dataType = obj.type || obj.dataType || obj.$ref;\r
-  this.isCollection = this.dataType && (this.dataType.toLowerCase() === 'array' || this.dataType.toLowerCase() === 'list' || this.dataType.toLowerCase() === 'set');\r
-  this.descr = obj.description;\r
-  this.required = obj.required;\r
-  this.defaultValue = applyModelPropertyMacro(obj, model);\r
-  if (obj.items) {\r
-    if (obj.items.type) {\r
-      this.refDataType = obj.items.type;\r
-    }\r
-    if (obj.items.$ref) {\r
-      this.refDataType = obj.items.$ref;\r
-    }\r
-  }\r
-  this.dataTypeWithRef = this.refDataType ? (this.dataType + '[' + this.refDataType + ']') : this.dataType;\r
-  if (obj.allowableValues) {\r
-    this.valueType = obj.allowableValues.valueType;\r
-    this.values = obj.allowableValues.values;\r
-    if (this.values) {\r
-      this.valuesString = '\'' + this.values.join('\' or \'') + '\'';\r
-    }\r
-  }\r
-  if (obj['enum']) {\r
-    this.valueType = 'string';\r
-    this.values = obj['enum'];\r
-    if (this.values) {\r
-      this.valueString = '\'' + this.values.join('\' or \'') + '\'';\r
-    }\r
-  }\r
-};\r
-\r
-SwaggerModelProperty.prototype.getSampleValue = function (modelsToIgnore) {\r
-  var result;\r
-  if ((this.refModel) && (modelsToIgnore.indexOf(this.refModel.name) === -1)) {\r
-    result = this.refModel.createJSONSample(modelsToIgnore);\r
-  } else {\r
-    if (this.isCollection) {\r
-      result = this.toSampleValue(this.refDataType);\r
-    } else {\r
-      result = this.toSampleValue(this.dataType);\r
-    }\r
-  }\r
-  if (this.isCollection) {\r
-    return [result];\r
-  } else {\r
-    return result;\r
-  }\r
-};\r
-\r
-SwaggerModelProperty.prototype.toSampleValue = function (value) {\r
-  var result;\r
-  if ((typeof this.defaultValue !== 'undefined') && this.defaultValue) {\r
-    result = this.defaultValue;\r
-  } else if (value === 'integer') {\r
-    result = 0;\r
-  } else if (value === 'boolean') {\r
-    result = false;\r
-  } else if (value === 'double' || value === 'number') {\r
-    result = 0.0;\r
-  } else if (value === 'string') {\r
-    result = '';\r
-  } else {\r
-    result = value;\r
-  }\r
-  return result;\r
-};\r
-\r
-SwaggerModelProperty.prototype.toString = function () {\r
-  var req = this.required ? 'propReq' : 'propOpt';\r
-  var str = '<span class="propName ' + req + '">' + this.name + '</span> (<span class="propType">' + this.dataTypeWithRef + '</span>';\r
-  if (!this.required) {\r
-    str += ', <span class="propOptKey">optional</span>';\r
-  }\r
-  str += ')';\r
-  if (this.values) {\r
-    str += ' = <span class="propVals">[\'' + this.values.join('\' or \'') + '\']</span>';\r
-  }\r
-  if (this.descr) {\r
-    str += ': <span class="propDesc">' + this.descr + '</span>';\r
-  }\r
-  return str;\r
-};\r
-\r
-var SwaggerOperation = function (nickname, path, method, parameters, summary, notes, type, responseMessages, resource, consumes, produces, authorizations, deprecated) {\r
-  var _this = this;\r
-\r
-  var errors = [];\r
-  this.nickname = (nickname || errors.push('SwaggerOperations must have a nickname.'));\r
-  this.path = (path || errors.push('SwaggerOperation ' + nickname + ' is missing path.'));\r
-  this.method = (method || errors.push('SwaggerOperation ' + nickname + ' is missing method.'));\r
-  this.parameters = parameters ? parameters : [];\r
-  this.summary = summary;\r
-  this.notes = notes;\r
-  this.type = type;\r
-  this.responseMessages = (responseMessages || []);\r
-  this.resource = (resource || errors.push('Resource is required'));\r
-  this.consumes = consumes;\r
-  this.produces = produces;\r
-  this.authorizations = typeof authorizations !== 'undefined' ? authorizations : resource.authorizations;\r
-  this.deprecated = deprecated;\r
-  this['do'] = __bind(this['do'], this);\r
-\r
-\r
-  if(typeof this.deprecated === 'string') {\r
-    switch(this.deprecated.toLowerCase()) {\r
-      case 'true': case 'yes': case '1': {\r
-        this.deprecated = true;\r
-        break;\r
-      }\r
-      case 'false': case 'no': case '0': case null: {\r
-        this.deprecated = false;\r
-        break;\r
-      }\r
-      default: this.deprecated = Boolean(this.deprecated);\r
-    }\r
-  }\r
-\r
-  if (errors.length > 0) {\r
-    console.error('SwaggerOperation errors', errors, arguments);\r
-    this.resource.api.fail(errors);\r
-  }\r
-\r
-  this.path = this.path.replace('{format}', 'json');\r
-  this.method = this.method.toLowerCase();\r
-  this.isGetMethod = this.method === 'get';\r
-\r
-  var i, j, v;\r
-  this.resourceName = this.resource.name;\r
-  if (typeof this.type !== 'undefined' && this.type === 'void')\r
-    this.type = null;\r
-  else {\r
-    this.responseClassSignature = this.getSignature(this.type, this.resource.models);\r
-    this.responseSampleJSON = this.getSampleJSON(this.type, this.resource.models);\r
-  }\r
-\r
-  for (i = 0; i < this.parameters.length; i++) {\r
-    var param = this.parameters[i];\r
-    // might take this away\r
-    param.name = param.name || param.type || param.dataType;\r
-    // for 1.1 compatibility\r
-    type = param.type || param.dataType;\r
-    if (type === 'array') {\r
-      type = 'array[' + (param.items.$ref ? param.items.$ref : param.items.type) + ']';\r
-    }\r
-    param.type = type;\r
-\r
-    if (type && type.toLowerCase() === 'boolean') {\r
-      param.allowableValues = {};\r
-      param.allowableValues.values = ['true', 'false'];\r
-    }\r
-    param.signature = this.getSignature(type, this.resource.models);\r
-    param.sampleJSON = this.getSampleJSON(type, this.resource.models);\r
-\r
-    var enumValue = param['enum'];\r
-    if (typeof enumValue !== 'undefined') {\r
-      param.isList = true;\r
-      param.allowableValues = {};\r
-      param.allowableValues.descriptiveValues = [];\r
-\r
-      for (j = 0; j < enumValue.length; j++) {\r
-        v = enumValue[j];\r
-        if (param.defaultValue) {\r
-          param.allowableValues.descriptiveValues.push({\r
-            value: String(v),\r
-            isDefault: (v === param.defaultValue)\r
-          });\r
-        }\r
-        else {\r
-          param.allowableValues.descriptiveValues.push({\r
-            value: String(v),\r
-            isDefault: false\r
-          });\r
-        }\r
-      }\r
-    }\r
-    else if (param.allowableValues) {\r
-      if (param.allowableValues.valueType === 'RANGE')\r
-        param.isRange = true;\r
-      else\r
-        param.isList = true;\r
-      if (param.allowableValues) {\r
-        param.allowableValues.descriptiveValues = [];\r
-        if (param.allowableValues.values) {\r
-          for (j = 0; j < param.allowableValues.values.length; j++) {\r
-            v = param.allowableValues.values[j];\r
-            if (param.defaultValue !== null) {\r
-              param.allowableValues.descriptiveValues.push({\r
-                value: String(v),\r
-                isDefault: (v === param.defaultValue)\r
-              });\r
-            }\r
-            else {\r
-              param.allowableValues.descriptiveValues.push({\r
-                value: String(v),\r
-                isDefault: false\r
-              });\r
-            }\r
-          }\r
-        }\r
-      }\r
-    }\r
-    param.defaultValue = applyParameterMacro(this, param);\r
-  }\r
-  var defaultSuccessCallback = this.resource.api.defaultSuccessCallback || null;\r
-  var defaultErrorCallback = this.resource.api.defaultErrorCallback || null;\r
-\r
-  this.resource[this.nickname] = function (args, opts, callback, error) {\r
-    var arg1, arg2, arg3, arg4;\r
-    if(typeof args === 'function') {  // right shift 3\r
-      arg1 = {}; arg2 = {}; arg3 = args; arg4 = opts;\r
-    }\r
-    else if(typeof args === 'object' && typeof opts === 'function') { // right shift 2\r
-      arg1 = args; arg2 = {}; arg3 = opts; arg4 = callback;\r
-    }\r
-    else {\r
-      arg1 = args; arg2 = opts; arg3 = callback; arg4 = error;\r
-    }\r
-    return _this['do'](arg1 || {}, arg2 || {}, arg3 || defaultSuccessCallback, arg4 || defaultErrorCallback);\r
-  };\r
-\r
-  this.resource[this.nickname].help = function (dontPrint) {\r
-    return _this.help(dontPrint);\r
-  };\r
-  this.resource[this.nickname].asCurl = function (args) {\r
-    return _this.asCurl(args);\r
-  };\r
-};\r
-\r
-SwaggerOperation.prototype.isListType = function (type) {\r
-  if (type && type.indexOf('[') >= 0) {\r
-    return type.substring(type.indexOf('[') + 1, type.indexOf(']'));\r
-  } else {\r
-    return void 0;\r
-  }\r
-};\r
-\r
-SwaggerOperation.prototype.getSignature = function (type, models) {\r
-  var isPrimitive, listType;\r
-  listType = this.isListType(type);\r
-  isPrimitive = ((typeof listType !== 'undefined') && models[listType]) || (typeof models[type] !== 'undefined') ? false : true;\r
-  if (isPrimitive) {\r
-    return type;\r
-  } else {\r
-    if (typeof listType !== 'undefined') {\r
-      return models[listType].getMockSignature();\r
-    } else {\r
-      return models[type].getMockSignature();\r
-    }\r
-  }\r
-};\r
-\r
-SwaggerOperation.prototype.getSampleJSON = function (type, models) {\r
-  var isPrimitive, listType, val;\r
-  listType = this.isListType(type);\r
-  isPrimitive = ((typeof listType !== 'undefined') && models[listType]) || (typeof models[type] !== 'undefined') ? false : true;\r
-  val = isPrimitive ? void 0 : (listType ? models[listType].createJSONSample() : models[type].createJSONSample());\r
-  if (val) {\r
-    val = listType ? [val] : val;\r
-    if (typeof val == 'string')\r
-      return val;\r
-    else if (typeof val === 'object') {\r
-      var t = val;\r
-      if (val instanceof Array && val.length > 0) {\r
-        t = val[0];\r
-      }\r
-      if (t.nodeName) {\r
-        var xmlString = new XMLSerializer().serializeToString(t);\r
-        return this.formatXml(xmlString);\r
-      }\r
-      else\r
-        return JSON.stringify(val, null, 2);\r
-    }\r
-    else\r
-      return val;\r
-  }\r
-};\r
-\r
-SwaggerOperation.prototype['do'] = function (args, opts, callback, error) {\r
-  var key, param, params, possibleParams = [], req, value;\r
-\r
-  if (typeof error !== 'function') {\r
-    error = function (xhr, textStatus, error) {\r
-      return log(xhr, textStatus, error);\r
-    };\r
-  }\r
-\r
-  if (typeof callback !== 'function') {\r
-    callback = function (response) {\r
-      var content;\r
-      content = null;\r
-      if (response !== null) {\r
-        content = response.data;\r
-      } else {\r
-        content = 'no data';\r
-      }\r
-      return log('default callback: ' + content);\r
-    };\r
-  }\r
-\r
-  params = {};\r
-  params.headers = [];\r
-  if (args.headers) {\r
-    params.headers = args.headers;\r
-    delete args.headers;\r
-  }\r
-  // allow override from the opts\r
-  if(opts && opts.responseContentType) {\r
-    params.headers['Content-Type'] = opts.responseContentType;\r
-  }\r
-  if(opts && opts.requestContentType) {\r
-    params.headers.Accept = opts.requestContentType;\r
-  }\r
-\r
-  for (var i = 0; i < this.parameters.length; i++) {\r
-    param = this.parameters[i];\r
-    if (param.paramType === 'header') {\r
-      if (typeof args[param.name] !== 'undefined')\r
-        params.headers[param.name] = args[param.name];\r
-    }\r
-    else if (param.paramType === 'form' || param.paramType.toLowerCase() === 'file')\r
-      possibleParams.push(param);\r
-    else if (param.paramType === 'body' && param.name !== 'body' && typeof args[param.name] !== 'undefined') {\r
-      if (args.body) {\r
-        throw new Error('Saw two body params in an API listing; expecting a max of one.');\r
-      }\r
-      args.body = args[param.name];\r
-    }\r
-  }\r
-\r
-  if (typeof args.body !== 'undefined') {\r
-    params.body = args.body;\r
-    delete args.body;\r
-  }\r
-\r
-  if (possibleParams) {\r
-    for (key in possibleParams) {\r
-      value = possibleParams[key];\r
-      if (args[value.name]) {\r
-        params[value.name] = args[value.name];\r
-      }\r
-    }\r
-  }\r
-\r
-  req = new SwaggerRequest(this.method, this.urlify(args), params, opts, callback, error, this);\r
-  if (opts.mock) {\r
-    return req;\r
-  } else {\r
-    return true;\r
-  }\r
-};\r
-\r
-SwaggerOperation.prototype.pathJson = function () {\r
-  return this.path.replace('{format}', 'json');\r
-};\r
-\r
-SwaggerOperation.prototype.pathXml = function () {\r
-  return this.path.replace('{format}', 'xml');\r
-};\r
-\r
-SwaggerOperation.prototype.encodePathParam = function (pathParam) {\r
-  var encParts, part, parts, _i, _len;\r
-  pathParam = pathParam.toString();\r
-  if (pathParam.indexOf('/') === -1) {\r
-    return encodeURIComponent(pathParam);\r
-  } else {\r
-    parts = pathParam.split('/');\r
-    encParts = [];\r
-    for (_i = 0, _len = parts.length; _i < _len; _i++) {\r
-      part = parts[_i];\r
-      encParts.push(encodeURIComponent(part));\r
-    }\r
-    return encParts.join('/');\r
-  }\r
-};\r
-\r
-SwaggerOperation.prototype.urlify = function (args) {\r
-  var i, j, param, url;\r
-  // ensure no double slashing...\r
-  if(this.resource.basePath.length > 1 && this.resource.basePath.slice(-1) === '/' && this.pathJson().charAt(0) === '/')\r
-    url = this.resource.basePath + this.pathJson().substring(1);\r
-  else\r
-    url = this.resource.basePath + this.pathJson();\r
-  var params = this.parameters;\r
-  for (i = 0; i < params.length; i++) {\r
-    param = params[i];\r
-    if (param.paramType === 'path') {\r
-      if (typeof args[param.name] !== 'undefined') {\r
-        // apply path params and remove from args\r
-        var reg = new RegExp('\\{\\s*?' + param.name + '[^\\{\\}\\/]*(?:\\{.*?\\}[^\\{\\}\\/]*)*\\}(?=(\\/?|$))', 'gi');\r
-        url = url.replace(reg, this.encodePathParam(args[param.name]));\r
-        delete args[param.name];\r
-      }\r
-      else\r
-        throw '' + param.name + ' is a required path param.';\r
-    }\r
-  }\r
-\r
-  var queryParams = '';\r
-  for (i = 0; i < params.length; i++) {\r
-    param = params[i];\r
-    if(param.paramType === 'query') {\r
-      if (queryParams !== '')\r
-        queryParams += '&';    \r
-      if (Array.isArray(param)) {\r
-        var output = '';   \r
-        for(j = 0; j < param.length; j++) {    \r
-          if(j > 0)    \r
-            output += ',';   \r
-          output += encodeURIComponent(param[j]);    \r
-        }    \r
-        queryParams += encodeURIComponent(param.name) + '=' + output;    \r
-      }\r
-      else {\r
-        if (typeof args[param.name] !== 'undefined') {\r
-          queryParams += encodeURIComponent(param.name) + '=' + encodeURIComponent(args[param.name]);\r
-        } else {\r
-          if (param.required)\r
-            throw '' + param.name + ' is a required query param.';\r
-        }\r
-      }\r
-    }\r
-  }\r
-  if ((queryParams) && queryParams.length > 0)\r
-    url += '?' + queryParams;\r
-  return url;\r
-};\r
-\r
-SwaggerOperation.prototype.supportHeaderParams = function () {\r
-  return this.resource.api.supportHeaderParams;\r
-};\r
-\r
-SwaggerOperation.prototype.supportedSubmitMethods = function () {\r
-  return this.resource.api.supportedSubmitMethods;\r
-};\r
-\r
-SwaggerOperation.prototype.getQueryParams = function (args) {\r
-  return this.getMatchingParams(['query'], args);\r
-};\r
-\r
-SwaggerOperation.prototype.getHeaderParams = function (args) {\r
-  return this.getMatchingParams(['header'], args);\r
-};\r
-\r
-SwaggerOperation.prototype.getMatchingParams = function (paramTypes, args) {\r
-  var matchingParams = {};\r
-  var params = this.parameters;\r
-  for (var i = 0; i < params.length; i++) {\r
-    param = params[i];\r
-    if (args && args[param.name])\r
-      matchingParams[param.name] = args[param.name];\r
-  }\r
-  var headers = this.resource.api.headers;\r
-  var name;\r
-  for (name in headers) {\r
-    var value = headers[name];\r
-    matchingParams[name] = value;\r
-  }\r
-  return matchingParams;\r
-};\r
-\r
-SwaggerOperation.prototype.help = function (dontPrint) {\r
-  var msg = this.nickname + ': ' + this.summary;\r
-  var params = this.parameters;\r
-  for (var i = 0; i < params.length; i++) {\r
-    var param = params[i];\r
-    msg += '\n* ' + param.name + (param.required ? ' (required)' : '') + " - " + param.description;\r
-  }\r
-  if(dontPrint)\r
-    return msg;\r
-  else {\r
-    console.log(msg);\r
-    return msg;\r
-  }\r
-};\r
-\r
-SwaggerOperation.prototype.asCurl = function (args) {\r
-  var results = [];\r
-  var i;\r
-\r
-  var headers = SwaggerRequest.prototype.setHeaders(args, {}, this);    \r
-  for(i = 0; i < this.parameters.length; i++) {\r
-    var param = this.parameters[i];\r
-    if(param.paramType && param.paramType === 'header' && args[param.name]) {\r
-      headers[param.name] = args[param.name];\r
-    }\r
-  }\r
-\r
-  var key;\r
-  for (key in headers) {\r
-    results.push('--header "' + key + ': ' + headers[key] + '"');\r
-  }\r
-  return 'curl ' + (results.join(' ')) + ' ' + this.urlify(args);\r
-};\r
-\r
-SwaggerOperation.prototype.formatXml = function (xml) {\r
-  var contexp, formatted, indent, lastType, lines, ln, pad, reg, transitions, wsexp, _fn, _i, _len;\r
-  reg = /(>)(<)(\/*)/g;\r
-  wsexp = /[ ]*(.*)[ ]+\n/g;\r
-  contexp = /(<.+>)(.+\n)/g;\r
-  xml = xml.replace(reg, '$1\n$2$3').replace(wsexp, '$1\n').replace(contexp, '$1\n$2');\r
-  pad = 0;\r
-  formatted = '';\r
-  lines = xml.split('\n');\r
-  indent = 0;\r
-  lastType = 'other';\r
-  transitions = {\r
-    'single->single': 0,\r
-    'single->closing': -1,\r
-    'single->opening': 0,\r
-    'single->other': 0,\r
-    'closing->single': 0,\r
-    'closing->closing': -1,\r
-    'closing->opening': 0,\r
-    'closing->other': 0,\r
-    'opening->single': 1,\r
-    'opening->closing': 0,\r
-    'opening->opening': 1,\r
-    'opening->other': 1,\r
-    'other->single': 0,\r
-    'other->closing': -1,\r
-    'other->opening': 0,\r
-    'other->other': 0\r
-  };\r
-  _fn = function (ln) {\r
-    var fromTo, j, key, padding, type, types, value;\r
-    types = {\r
-      single: Boolean(ln.match(/<.+\/>/)),\r
-      closing: Boolean(ln.match(/<\/.+>/)),\r
-      opening: Boolean(ln.match(/<[^!?].*>/))\r
-    };\r
-    type = ((function () {\r
-      var _results;\r
-      _results = [];\r
-      for (key in types) {\r
-        value = types[key];\r
-        if (value) {\r
-          _results.push(key);\r
-        }\r
-      }\r
-      return _results;\r
-    })())[0];\r
-    type = type === void 0 ? 'other' : type;\r
-    fromTo = lastType + '->' + type;\r
-    lastType = type;\r
-    padding = '';\r
-    indent += transitions[fromTo];\r
-    padding = ((function () {\r
-      var _j, _ref5, _results;\r
-      _results = [];\r
-      for (j = _j = 0, _ref5 = indent; 0 <= _ref5 ? _j < _ref5 : _j > _ref5; j = 0 <= _ref5 ? ++_j : --_j) {\r
-        _results.push('  ');\r
-      }\r
-      return _results;\r
-    })()).join('');\r
-    if (fromTo === 'opening->closing') {\r
-      formatted = formatted.substr(0, formatted.length - 1) + ln + '\n';\r
-    } else {\r
-      formatted += padding + ln + '\n';\r
-    }\r
-  };\r
-  for (_i = 0, _len = lines.length; _i < _len; _i++) {\r
-    ln = lines[_i];\r
-    _fn(ln);\r
-  }\r
-  return formatted;\r
-};\r
-\r
-var SwaggerRequest = function (type, url, params, opts, successCallback, errorCallback, operation, execution) {\r
-  var _this = this;\r
-  var errors = [];\r
-\r
-  this.useJQuery = (typeof operation.resource.useJQuery !== 'undefined' ? operation.resource.useJQuery : null);\r
-  this.type = (type || errors.push('SwaggerRequest type is required (get/post/put/delete/patch/options).'));\r
-  this.url = (url || errors.push('SwaggerRequest url is required.'));\r
-  this.params = params;\r
-  this.opts = opts;\r
-  this.successCallback = (successCallback || errors.push('SwaggerRequest successCallback is required.'));\r
-  this.errorCallback = (errorCallback || errors.push('SwaggerRequest error callback is required.'));\r
-  this.operation = (operation || errors.push('SwaggerRequest operation is required.'));\r
-  this.execution = execution;\r
-  this.headers = (params.headers || {});\r
-\r
-  if (errors.length > 0) {\r
-    throw errors;\r
-  }\r
-\r
-  this.type = this.type.toUpperCase();\r
-\r
-  // set request, response content type headers\r
-  var headers = this.setHeaders(params, opts, this.operation);\r
-  var body = params.body;\r
-\r
-  // encode the body for form submits\r
-  if (headers['Content-Type']) {\r
-    var key, value, values = {}, i;\r
-    var operationParams = this.operation.parameters;\r
-    for (i = 0; i < operationParams.length; i++) {\r
-      var param = operationParams[i];\r
-      if (param.paramType === 'form')\r
-        values[param.name] = param;\r
-    }\r
-\r
-    if (headers['Content-Type'].indexOf('application/x-www-form-urlencoded') === 0) {\r
-      var encoded = '';\r
-      for (key in values) {\r
-        value = this.params[key];\r
-        if (typeof value !== 'undefined') {\r
-          if (encoded !== '')\r
-            encoded += '&';\r
-          encoded += encodeURIComponent(key) + '=' + encodeURIComponent(value);\r
-        }\r
-      }\r
-      body = encoded;\r
-    }\r
-    else if (headers['Content-Type'].indexOf('multipart/form-data') === 0) {\r
-      // encode the body for form submits\r
-      var data = '';\r
-      var boundary = '----SwaggerFormBoundary' + Date.now();\r
-      for (key in values) {\r
-        value = this.params[key];\r
-        if (typeof value !== 'undefined') {\r
-          data += '--' + boundary + '\n';\r
-          data += 'Content-Disposition: form-data; name="' + key + '"';\r
-          data += '\n\n';\r
-          data += value + '\n';\r
-        }\r
-      }\r
-      data += '--' + boundary + '--\n';\r
-      headers['Content-Type'] = 'multipart/form-data; boundary=' + boundary;\r
-      body = data;\r
-    }\r
-  }\r
-\r
-  var obj;\r
-  if (!((this.headers) && (this.headers.mock))) {\r
-    obj = {\r
-      url: this.url,\r
-      method: this.type,\r
-      headers: headers,\r
-      body: body,\r
-      useJQuery: this.useJQuery,\r
-      on: {\r
-        error: function (response) {\r
-          return _this.errorCallback(response, _this.opts.parent);\r
-        },\r
-        redirect: function (response) {\r
-          return _this.successCallback(response, _this.opts.parent);\r
-        },\r
-        307: function (response) {\r
-          return _this.successCallback(response, _this.opts.parent);\r
-        },\r
-        response: function (response) {\r
-          return _this.successCallback(response, _this.opts.parent);\r
-        }\r
-      }\r
-    };\r
-\r
-    var status = false;\r
-    if (this.operation.resource && this.operation.resource.api && this.operation.resource.api.clientAuthorizations) {\r
-      // Get the client authorizations from the resource declaration\r
-      status = this.operation.resource.api.clientAuthorizations.apply(obj, this.operation.authorizations);\r
-    } else {\r
-      // Get the client authorization from the default authorization declaration\r
-      var e;\r
-      if (typeof window !== 'undefined') {\r
-        e = window;\r
-      } else {\r
-        e = exports;\r
-      }\r
-      status = e.authorizations.apply(obj, this.operation.authorizations);\r
-    }\r
-\r
-    if (!opts.mock) {\r
-      if (status !== false) {\r
-        new SwaggerHttp().execute(obj);\r
-      } else {\r
-        obj.canceled = true;\r
-      }\r
-    } else {\r
-      return obj;\r
-    }\r
-  }\r
-  return obj;\r
-};\r
-\r
-SwaggerRequest.prototype.setHeaders = function (params, opts, operation) {\r
-  // default type\r
-  var accepts = opts.responseContentType || 'application/json';\r
-  var consumes = opts.requestContentType || 'application/json';\r
-\r
-  var allDefinedParams = operation.parameters;\r
-  var definedFormParams = [];\r
-  var definedFileParams = [];\r
-  var body = params.body;\r
-  var headers = {};\r
-\r
-  // get params from the operation and set them in definedFileParams, definedFormParams, headers\r
-  var i;\r
-  for (i = 0; i < allDefinedParams.length; i++) {\r
-    var param = allDefinedParams[i];\r
-    if (param.paramType === 'form')\r
-      definedFormParams.push(param);\r
-    else if (param.paramType === 'file')\r
-      definedFileParams.push(param);\r
-    else if (param.paramType === 'header' && this.params.headers) {\r
-      var key = param.name;\r
-      var headerValue = this.params.headers[param.name];\r
-      if (typeof this.params.headers[param.name] !== 'undefined')\r
-        headers[key] = headerValue;\r
-    }\r
-  }\r
-\r
-  // if there's a body, need to set the accepts header via requestContentType\r
-  if (body && (this.type === 'POST' || this.type === 'PUT' || this.type === 'PATCH' || this.type === 'DELETE')) {\r
-    if (this.opts.requestContentType)\r
-      consumes = this.opts.requestContentType;\r
-  } else {\r
-    // if any form params, content type must be set\r
-    if (definedFormParams.length > 0) {\r
-      if (definedFileParams.length > 0)\r
-        consumes = 'multipart/form-data';\r
-      else\r
-        consumes = 'application/x-www-form-urlencoded';\r
-    }\r
-    else if (this.type === 'DELETE')\r
-      body = '{}';\r
-    else if (this.type != 'DELETE')\r
-      consumes = null;\r
-  }\r
-\r
-  if (consumes && this.operation.consumes) {\r
-    if (this.operation.consumes.indexOf(consumes) === -1) {\r
-      log('server doesn\'t consume ' + consumes + ', try ' + JSON.stringify(this.operation.consumes));\r
-    }\r
-  }\r
-\r
-  if (this.opts && this.opts.responseContentType) {\r
-    accepts = this.opts.responseContentType;\r
-  } else {\r
-    accepts = 'application/json';\r
-  }\r
-  if (accepts && operation.produces) {\r
-    if (operation.produces.indexOf(accepts) === -1) {\r
-      log('server can\'t produce ' + accepts);\r
-    }\r
-  }\r
-\r
-  if ((consumes && body !== '') || (consumes === 'application/x-www-form-urlencoded'))\r
-    headers['Content-Type'] = consumes;\r
-  if (accepts)\r
-    headers.Accept = accepts;\r
-  return headers;\r
-};\r
-\r
-/**\r
- * SwaggerHttp is a wrapper for executing requests\r
- */\r
-var SwaggerHttp = function() {};\r
-\r
-SwaggerHttp.prototype.execute = function(obj, opts) {\r
-  if(obj && (typeof obj.useJQuery === 'boolean'))\r
-    this.useJQuery = obj.useJQuery;\r
-  else\r
-    this.useJQuery = this.isIE8();\r
-\r
-  if(obj && typeof obj.body === 'object') {\r
-    if(obj.body.type && obj.body.type !== 'formData')\r
-      obj.body = JSON.stringify(obj.body);\r
-    else {\r
-      obj.contentType = false;\r
-      obj.processData = false;\r
-      // delete obj.cache;\r
-      delete obj.headers['Content-Type'];\r
-    }\r
-  }\r
-\r
-  if(this.useJQuery)\r
-    return new JQueryHttpClient(opts).execute(obj);\r
-  else\r
-    return new ShredHttpClient(opts).execute(obj);\r
-};\r
-\r
-SwaggerHttp.prototype.isIE8 = function() {\r
-  var detectedIE = false;\r
-  if (typeof navigator !== 'undefined' && navigator.userAgent) {\r
-    nav = navigator.userAgent.toLowerCase();\r
-    if (nav.indexOf('msie') !== -1) {\r
-      var version = parseInt(nav.split('msie')[1]);\r
-      if (version <= 8) {\r
-        detectedIE = true;\r
-      }\r
-    }\r
-  }\r
-  return detectedIE;\r
-};\r
-\r
-/*\r
- * JQueryHttpClient lets a browser take advantage of JQuery's cross-browser magic.\r
- * NOTE: when jQuery is available it will export both '$' and 'jQuery' to the global space.\r
- *       Since we are using closures here we need to alias it for internal use.\r
- */\r
-var JQueryHttpClient = function(options) {\r
-  "use strict";\r
-  if(!jQuery){\r
-    var jQuery = window.jQuery;\r
-  }\r
-};\r
-\r
-JQueryHttpClient.prototype.execute = function(obj) {\r
-  var cb = obj.on;\r
-  var request = obj;\r
-\r
-  obj.type = obj.method;\r
-  obj.cache = false;\r
-  delete obj.useJQuery;\r
-\r
-  /*\r
-  obj.beforeSend = function(xhr) {\r
-    var key, results;\r
-    if (obj.headers) {\r
-      results = [];\r
-      for (key in obj.headers) {\r
-        if (key.toLowerCase() === "content-type") {\r
-          results.push(obj.contentType = obj.headers[key]);\r
-        } else if (key.toLowerCase() === "accept") {\r
-          results.push(obj.accepts = obj.headers[key]);\r
-        } else {\r
-          results.push(xhr.setRequestHeader(key, obj.headers[key]));\r
-        }\r
-      }\r
-      return results;\r
-    }\r
-  };*/\r
-\r
-  obj.data = obj.body;\r
-  delete obj.body;\r
-  obj.complete = function(response, textStatus, opts) {\r
-    var headers = {},\r
-      headerArray = response.getAllResponseHeaders().split("\n");\r
-\r
-    for(var i = 0; i < headerArray.length; i++) {\r
-      var toSplit = headerArray[i].trim();\r
-      if(toSplit.length === 0)\r
-        continue;\r
-      var separator = toSplit.indexOf(":");\r
-      if(separator === -1) {\r
-        // Name but no value in the header\r
-        headers[toSplit] = null;\r
-        continue;\r
-      }\r
-      var name = toSplit.substring(0, separator).trim(),\r
-        value = toSplit.substring(separator + 1).trim();\r
-      headers[name] = value;\r
-    }\r
-\r
-    var out = {\r
-      url: request.url,\r
-      method: request.method,\r
-      status: response.status,\r
-      statusText: response.statusText,\r
-      data: response.responseText,\r
-      headers: headers\r
-    };\r
-\r
-    var contentType = (headers["content-type"]||headers["Content-Type"]||null);\r
-    if(contentType) {\r
-      if(contentType.indexOf("application/json") === 0 || contentType.indexOf("+json") > 0) {\r
-        try {\r
-          out.obj = response.responseJSON || JSON.parse(out.data) || {};\r
-        } catch (ex) {\r
-          // do not set out.obj\r
-          log("unable to parse JSON content");\r
-        }\r
-      }\r
-    }\r
-\r
-    if(response.status >= 200 && response.status < 300)\r
-      cb.response(out);\r
-    else if(response.status === 0 || (response.status >= 400 && response.status < 599))\r
-      cb.error(out);\r
-    else\r
-      return cb.response(out);\r
-  };\r
-\r
-  jQuery.support.cors = true;\r
-  return jQuery.ajax(obj);\r
-};\r
-\r
-/*\r
- * ShredHttpClient is a light-weight, node or browser HTTP client\r
- */\r
-var ShredHttpClient = function(opts) {\r
-  this.opts = (opts||{});\r
-  this.isInitialized = false;\r
-\r
-  var identity, toString;\r
-\r
-  if (typeof window !== 'undefined') {\r
-    this.Shred = require("./shred");\r
-    this.content = require("./shred/content");\r
-  }\r
-  else\r
-    this.Shred = require("shred");\r
-  this.shred = new this.Shred(opts);\r
-};\r
-\r
-ShredHttpClient.prototype.initShred = function () {\r
-  this.isInitialized = true;\r
-  this.registerProcessors(this.shred);\r
-};\r
-\r
-ShredHttpClient.prototype.registerProcessors = function(shred) {\r
-  var identity = function(x) {\r
-    return x;\r
-  };\r
-  var toString = function(x) {\r
-    return x.toString();\r
-  };\r
-\r
-  if (typeof window !== 'undefined') {\r
-    this.content.registerProcessor(["application/json; charset=utf-8", "application/json", "json"], {\r
-      parser: identity,\r
-      stringify: toString\r
-    });\r
-  } else {\r
-    this.Shred.registerProcessor(["application/json; charset=utf-8", "application/json", "json"], {\r
-      parser: identity,\r
-      stringify: toString\r
-    });\r
-  }\r
-};\r
-\r
-ShredHttpClient.prototype.execute = function(obj) {\r
-  if(!this.isInitialized)\r
-    this.initShred();\r
-\r
-  var cb = obj.on, res;\r
-  var transform = function(response) {\r
-    var out = {\r
-      headers: response._headers,\r
-      url: response.request.url,\r
-      method: response.request.method,\r
-      status: response.status,\r
-      data: response.content.data\r
-    };\r
-\r
-    var headers = response._headers.normalized || response._headers;\r
-    var contentType = (headers["content-type"]||headers["Content-Type"]||null);\r
-\r
-    if(contentType) {\r
-      if(contentType.indexOf("application/json") === 0 || contentType.indexOf("+json") > 0) {\r
-        if(response.content.data && response.content.data !== "")\r
-          try{\r
-            out.obj = JSON.parse(response.content.data);\r
-          }\r
-          catch (e) {\r
-            // unable to parse\r
-          }\r
-        else\r
-          out.obj = {};\r
-      }\r
-    }\r
-    return out;\r
-  };\r
-\r
-  // Transform an error into a usable response-like object\r
-  var transformError = function (error) {\r
-    var out = {\r
-      // Default to a status of 0 - The client will treat this as a generic permissions sort of error\r
-      status: 0,\r
-      data: error.message || error\r
-    };\r
-\r
-    if (error.code) {\r
-      out.obj = error;\r
-\r
-      if (error.code === 'ENOTFOUND' || error.code === 'ECONNREFUSED') {\r
-        // We can tell the client that this should be treated as a missing resource and not as a permissions thing\r
-        out.status = 404;\r
-      }\r
-    }\r
-    return out;\r
-  };\r
-\r
-  res = {\r
-    error: function (response) {\r
-      if (obj)\r
-        return cb.error(transform(response));\r
-    },\r
-    // Catch the Shred error raised when the request errors as it is made (i.e. No Response is coming)\r
-    request_error: function (err) {\r
-      if (obj)\r
-        return cb.error(transformError(err));\r
-    },\r
-    response: function (response) {\r
-      if (obj) {\r
-        return cb.response(transform(response));\r
-      }\r
-    }\r
-  };\r
-  if (obj) {\r
-    obj.on = res;\r
-  }\r
-  return this.shred.request(obj);\r
-};\r
-\r
-\r
-var e = (typeof window !== 'undefined' ? window : exports);\r
-\r
-e.authorizations = authorizations = new SwaggerAuthorizations();\r
-e.ApiKeyAuthorization = ApiKeyAuthorization;\r
-e.PasswordAuthorization = PasswordAuthorization;\r
-e.CookieAuthorization = CookieAuthorization;\r
-e.SwaggerClient = SwaggerClient;\r
-e.SwaggerApi = SwaggerClient;\r
-e.Operation = Operation;\r
-e.Model = Model;\r
-e.addModel = addModel;\r
-e.Resolver = Resolver;\r
+/*
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * swagger-client - swagger.js is a javascript client for use with swaggering APIs.
+ * @version v2.1.9-M1
+ * @link http://swagger.io
+ * @license apache 2.0
+ */
+(function(){
+var ArrayModel = function(definition) {
+  this.name = "arrayModel";
+  this.definition = definition || {};
+  this.properties = [];
+  
+  var requiredFields = definition.enum || [];
+  var innerType = definition.items;
+  if(innerType) {
+    if(innerType.type) {
+      this.type = typeFromJsonSchema(innerType.type, innerType.format);
+    }
+    else {
+      this.ref = innerType.$ref;
+    }
+  }
+  return this;
+};
+
+ArrayModel.prototype.createJSONSample = function(modelsToIgnore) {
+  var result;
+  modelsToIgnore = (modelsToIgnore||{});
+  if(this.type) {
+    result = this.type;
+  }
+  else if (this.ref) {
+    var name = simpleRef(this.ref);
+    if(typeof modelsToIgnore[name] === 'undefined') {
+      modelsToIgnore[name] = this;
+      result = models[name].createJSONSample(modelsToIgnore);
+    }
+    else {
+      return name;
+    }
+  }
+  return [ result ];
+};
+
+ArrayModel.prototype.getSampleValue = function(modelsToIgnore) {
+  var result;
+  modelsToIgnore = (modelsToIgnore || {});
+  if(this.type) {
+    result = type;
+  }
+  else if (this.ref) {
+    var name = simpleRef(this.ref);
+    result = models[name].getSampleValue(modelsToIgnore);
+  }
+  return [ result ];
+};
+
+ArrayModel.prototype.getMockSignature = function(modelsToIgnore) {
+  var propertiesStr = [];
+  var i, prop;
+  for (i = 0; i < this.properties.length; i++) {
+    prop = this.properties[i];
+    propertiesStr.push(prop.toString());
+  }
+
+  var strong = '<span class="strong">';
+  var stronger = '<span class="stronger">';
+  var strongClose = '</span>';
+  var classOpen = strong + 'array' + ' {' + strongClose;
+  var classClose = strong + '}' + strongClose;
+  var returnVal = classOpen + '<div>' + propertiesStr.join(',</div><div>') + '</div>' + classClose;
+
+  if (!modelsToIgnore)
+    modelsToIgnore = {};
+  modelsToIgnore[this.name] = this;
+  for (i = 0; i < this.properties.length; i++) {
+    prop = this.properties[i];
+    var ref = prop.$ref;
+    var model = models[ref];
+    if (model && typeof modelsToIgnore[ref] === 'undefined') {
+      returnVal = returnVal + ('<br>' + model.getMockSignature(modelsToIgnore));
+    }
+  }
+  return returnVal;
+};
+
+
+/**
+ * SwaggerAuthorizations applys the correct authorization to an operation being executed
+ */
+var SwaggerAuthorizations = function() {
+  this.authz = {};
+};
+
+SwaggerAuthorizations.prototype.add = function(name, auth) {
+  this.authz[name] = auth;
+  return auth;
+};
+
+SwaggerAuthorizations.prototype.remove = function(name) {
+  return delete this.authz[name];
+};
+
+SwaggerAuthorizations.prototype.apply = function (obj, authorizations) {
+  var status = null;
+  var key, name, value, result;
+
+  // if the "authorizations" key is undefined, or has an empty array, add all keys
+  if (typeof authorizations === 'undefined' || Object.keys(authorizations).length === 0) {
+    for (key in this.authz) {
+      value = this.authz[key];
+      result = value.apply(obj, authorizations);
+      if (result === true)
+        status = true;
+    }
+  }
+  else {
+    // 2.0 support
+    if (Array.isArray(authorizations)) {
+
+      for (var i = 0; i < authorizations.length; i++) {
+        var auth = authorizations[i];
+        for (name in auth) {
+          for (key in this.authz) {
+            if (key == name) {
+              value = this.authz[key];
+              result = value.apply(obj, authorizations);
+              if (result === true)
+                status = true;
+            }
+          }
+        }
+      }
+    }
+    else {
+      // 1.2 support
+      for (name in authorizations) {
+        for (key in this.authz) {
+          if (key == name) {
+            value = this.authz[key];
+            result = value.apply(obj, authorizations);
+            if (result === true)
+              status = true;
+          }
+        }
+      }
+    }
+  }
+
+  return status;
+};
+
+/**
+ * ApiKeyAuthorization allows a query param or header to be injected
+ */
+var ApiKeyAuthorization = function(name, value, type) {
+  this.name = name;
+  this.value = value;
+  this.type = type;
+};
+
+ApiKeyAuthorization.prototype.apply = function(obj, authorizations) {
+  if (this.type === "query") {
+    if (obj.url.indexOf('?') > 0)
+      obj.url = obj.url + "&" + this.name + "=" + this.value;
+    else
+      obj.url = obj.url + "?" + this.name + "=" + this.value;
+    return true;
+  } else if (this.type === "header") {
+    obj.headers[this.name] = this.value;
+    return true;
+  }
+};
+
+var CookieAuthorization = function(cookie) {
+  this.cookie = cookie;
+};
+
+CookieAuthorization.prototype.apply = function(obj, authorizations) {
+  obj.cookieJar = obj.cookieJar || CookieJar();
+  obj.cookieJar.setCookie(this.cookie);
+  return true;
+};
+
+/**
+ * Password Authorization is a basic auth implementation
+ */
+var PasswordAuthorization = function(name, username, password) {
+  this.name = name;
+  this.username = username;
+  this.password = password;
+  this._btoa = null;
+  if (typeof window !== 'undefined')
+    this._btoa = btoa;
+  else
+    this._btoa = require("btoa");
+};
+
+PasswordAuthorization.prototype.apply = function(obj, authorizations) {
+  var base64encoder = this._btoa;
+  obj.headers.Authorization = "Basic " + base64encoder(this.username + ":" + this.password);
+  return true;
+};
+var __bind = function(fn, me){
+  return function(){
+    return fn.apply(me, arguments);
+  };
+};
+
+fail = function(message) {
+  log(message);
+};
+
+log = function(){
+  log.history = log.history || [];
+  log.history.push(arguments);
+  if(this.console){
+    console.log( Array.prototype.slice.call(arguments)[0] );
+  }
+};
+
+if (!Array.prototype.indexOf) {
+  Array.prototype.indexOf = function(obj, start) {
+    for (var i = (start || 0), j = this.length; i < j; i++) {
+      if (this[i] === obj) { return i; }
+    }
+    return -1;
+  };
+}
+
+/**
+ * allows override of the default value based on the parameter being
+ * supplied
+ **/
+var applyParameterMacro = function (operation, parameter) {
+  var e = (typeof window !== 'undefined' ? window : exports);
+  if(e.parameterMacro)
+    return e.parameterMacro(operation, parameter);
+  else
+    return parameter.defaultValue;
+};
+
+/**
+ * allows overriding the default value of an model property
+ **/
+var applyModelPropertyMacro = function (model, property) {
+  var e = (typeof window !== 'undefined' ? window : exports);
+  if(e.modelPropertyMacro)
+    return e.modelPropertyMacro(model, property);
+  else
+    return property.defaultValue;
+};
+
+/**
+ * PrimitiveModel
+ **/
+var PrimitiveModel = function(definition) {
+  this.name = "name";
+  this.definition = definition || {};
+  this.properties = [];
+
+  var requiredFields = definition.enum || [];
+  this.type = typeFromJsonSchema(definition.type, definition.format);
+};
+
+PrimitiveModel.prototype.createJSONSample = function(modelsToIgnore) {
+  var result = this.type;
+  return result;
+};
+
+PrimitiveModel.prototype.getSampleValue = function() {
+  var result = this.type;
+  return null;
+};
+
+PrimitiveModel.prototype.getMockSignature = function(modelsToIgnore) {
+  var propertiesStr = [];
+  var i, prop;
+  for (i = 0; i < this.properties.length; i++) {
+    prop = this.properties[i];
+    propertiesStr.push(prop.toString());
+  }
+
+  var strong = '<span class="strong">';
+  var stronger = '<span class="stronger">';
+  var strongClose = '</span>';
+  var classOpen = strong + this.name + ' {' + strongClose;
+  var classClose = strong + '}' + strongClose;
+  var returnVal = classOpen + '<div>' + propertiesStr.join(',</div><div>') + '</div>' + classClose;
+
+  if (!modelsToIgnore)
+    modelsToIgnore = {};
+  modelsToIgnore[this.name] = this;
+  for (i = 0; i < this.properties.length; i++) {
+    prop = this.properties[i];
+    var ref = prop.$ref;
+    var model = models[ref];
+    if (model && typeof modelsToIgnore[ref] === 'undefined') {
+      returnVal = returnVal + ('<br>' + model.getMockSignature(modelsToIgnore));
+    }
+  }
+  return returnVal;
+};
+/** 
+ * Resolves a spec's remote references
+ */
+var Resolver = function (){};
+
+Resolver.prototype.resolve = function(spec, callback, scope) {
+  this.scope = (scope || this);
+  var host, name, path, property, propertyName, type;
+  var processedCalls = 0, resolvedRefs = {}, unresolvedRefs = {};
+
+  // store objects for dereferencing
+  var resolutionTable = {};
+
+  // models
+  for(name in spec.definitions) {
+    var model = spec.definitions[name];
+    for(propertyName in model.properties) {
+      property = model.properties[propertyName];
+      this.resolveTo(property, resolutionTable);
+    }
+  }
+  // operations
+  for(name in spec.paths) {
+    var method, operation, responseCode;
+    path = spec.paths[name];
+    for(method in path) {
+      operation = path[method];
+      var i, parameters = operation.parameters;
+      for(i in parameters) {
+        var parameter = parameters[i];
+        if(parameter.in === 'body' && parameter.schema) {
+          this.resolveTo(parameter.schema, resolutionTable);
+        }
+        if(parameter.$ref) {
+          this.resolveInline(spec, parameter, resolutionTable, unresolvedRefs);
+        }
+      }
+      for(responseCode in operation.responses) {
+        var response = operation.responses[responseCode];
+        if(response.schema) {
+          this.resolveTo(response.schema, resolutionTable);
+        }
+      }
+    }
+  }
+  // get hosts
+  var opts = {}, expectedCalls = 0;
+  for(name in resolutionTable) {
+    var parts = name.split('#');
+    if(parts.length == 2) {
+      host = parts[0]; path = parts[1];
+      if(!Array.isArray(opts[host])) {
+        opts[host] = [];
+        expectedCalls += 1;
+      }
+      opts[host].push(path);
+    }
+  }
+
+  for(name in opts) {
+    var self = this, opt = opts[name];
+    host = name;
+
+    var obj = {
+      useJQuery: false,  // TODO
+      url: host,
+      method: "get",
+      headers: {
+        accept: this.scope.swaggerRequestHeaders || 'application/json'
+      },
+      on: {
+        error: function(response) {
+          processedCalls += 1;
+          var i;
+          for(i = 0; i < opt.length; i++) {
+            // fail all of these
+            var resolved = host + '#' + opt[i];
+            unresolvedRefs[resolved] = null;
+          }
+          if(processedCalls === expectedCalls)
+            self.finish(spec, resolutionTable, resolvedRefs, unresolvedRefs, callback);
+        },
+        response: function(response) {
+          var i, j, swagger = response.obj;
+          processedCalls += 1;
+          for(i = 0; i < opt.length; i++) {
+            var location = swagger, path = opt[i], parts = path.split('/');
+            for(j = 0; j < parts.length; j++) {
+              var segment = parts[j];
+              if(typeof location === 'undefined')
+                break;
+              if(segment.length > 0)
+                location = location[segment];
+            }
+            var resolved = host + '#' + path, resolvedName = parts[j-1];
+            if(typeof location !== 'undefined') {
+              resolvedRefs[resolved] = {
+                name: resolvedName,
+                obj: location
+              };
+            }
+            else unresolvedRefs[resolved] = null;
+          }
+          if(processedCalls === expectedCalls)
+            self.finish(spec, resolutionTable, resolvedRefs, unresolvedRefs, callback);
+        }
+      }
+    };
+    authorizations.apply(obj);
+    new SwaggerHttp().execute(obj);
+  }
+  if(Object.keys(opts).length === 0)
+    callback.call(this.scope, spec, unresolvedRefs);
+};
+
+Resolver.prototype.finish = function(spec, resolutionTable, resolvedRefs, unresolvedRefs, callback) {
+  // walk resolution table and replace with resolved refs
+  var ref;
+  for(ref in resolutionTable) {
+    var i, locations = resolutionTable[ref];
+    for(i = 0; i < locations.length; i++) {
+      var resolvedTo = resolvedRefs[locations[i].obj.$ref];
+      if(resolvedTo) {
+        if(!spec.definitions)
+          spec.definitions = {};
+        if(locations[i].resolveAs === '$ref') {
+          spec.definitions[resolvedTo.name] = resolvedTo.obj;
+          locations[i].obj.$ref = '#/definitions/' + resolvedTo.name;
+        }
+        else if (locations[i].resolveAs === 'inline') {
+          var key;
+          var targetObj = locations[i].obj;
+          delete targetObj.$ref;
+          for(key in resolvedTo.obj) {
+            targetObj[key] = resolvedTo.obj[key];
+          }
+        }
+      }
+    }
+  }
+  callback.call(this.scope, spec, unresolvedRefs);
+};
+
+/**
+ * immediately in-lines local refs, queues remote refs
+ * for inline resolution
+ */
+Resolver.prototype.resolveInline = function (spec, property, objs, unresolvedRefs) {
+  var ref = property.$ref;
+  if(ref) {
+    if(ref.indexOf('http') === 0) {
+      if(Array.isArray(objs[ref])) {
+        objs[ref].push({obj: property, resolveAs: 'inline'});
+      }
+      else {
+        objs[ref] = [{obj: property, resolveAs: 'inline'}];
+      }
+    }
+    else if (ref.indexOf('#') === 0) {
+      // local resolve
+      var shortenedRef = ref.substring(1);
+      var i, parts = shortenedRef.split('/'), location = spec;
+      for(i = 0; i < parts.length; i++) {
+        var part = parts[i];
+        if(part.length > 0) {
+          location = location[part];
+        }
+      }
+      if(location) {
+        delete property.$ref;
+        var key;
+        for(key in location) {
+          property[key] = location[key];
+        }
+      }
+      else unresolvedRefs[ref] = null;
+    }
+  }
+  else if(property.type === 'array') {
+    this.resolveTo(property.items, objs);
+  }
+};
+
+Resolver.prototype.resolveTo = function (property, objs) {
+  var ref = property.$ref;
+  if(ref) {
+    if(ref.indexOf('http') === 0) {
+      if(Array.isArray(objs[ref])) {
+        objs[ref].push({obj: property, resolveAs: '$ref'});
+      }
+      else {
+        objs[ref] = [{obj: property, resolveAs: '$ref'}];
+      }
+    }
+  }
+  else if(property.type === 'array') {
+    var items = property.items;
+    this.resolveTo(items, objs);
+  }
+};
+var addModel = function(name, model) {
+  models[name] = model;
+};
+
+var SwaggerClient = function(url, options) {
+  this.isBuilt = false;
+  this.url = null;
+  this.debug = false;
+  this.basePath = null;
+  this.modelsArray = [];
+  this.authorizations = null;
+  this.authorizationScheme = null;
+  this.isValid = false;
+  this.info = null;
+  this.useJQuery = false;
+  this.resourceCount = 0;
+
+  if(typeof url !== 'undefined')
+    return this.initialize(url, options);
+};
+
+SwaggerClient.prototype.initialize = function (url, options) {
+  this.models = models = {};
+
+  options = (options||{});
+
+  if(typeof url === 'string')
+    this.url = url;
+  else if(typeof url === 'object') {
+    options = url;
+    this.url = options.url;
+  }
+  this.swaggerRequstHeaders = options.swaggerRequstHeaders || 'application/json;charset=utf-8,*/*';
+  this.defaultSuccessCallback = options.defaultSuccessCallback || null;
+  this.defaultErrorCallback = options.defaultErrorCallback || null;
+
+  if (typeof options.success === 'function')
+    this.success = options.success;
+
+  if (options.useJQuery)
+    this.useJQuery = options.useJQuery;
+
+  if (options.authorizations) {
+    this.clientAuthorizations = options.authorizations;
+  } else {
+    this.clientAuthorizations = authorizations;
+  }
+
+  this.supportedSubmitMethods = options.supportedSubmitMethods || [];
+  this.failure = options.failure || function() {};
+  this.progress = options.progress || function() {};
+  this.spec = options.spec;
+  this.options = options;
+
+  if (typeof options.success === 'function') {
+    this.ready = true;
+    this.build();
+  }
+};
+
+SwaggerClient.prototype.build = function(mock) {
+  if (this.isBuilt) return this;
+  var self = this;
+  this.progress('fetching resource list: ' + this.url);
+  var obj = {
+    useJQuery: this.useJQuery,
+    url: this.url,
+    method: "get",
+    headers: {
+      accept: this.swaggerRequstHeaders
+    },
+    on: {
+      error: function(response) {
+        if (self.url.substring(0, 4) !== 'http')
+          return self.fail('Please specify the protocol for ' + self.url);
+        else if (response.status === 0)
+          return self.fail('Can\'t read from server.  It may not have the appropriate access-control-origin settings.');
+        else if (response.status === 404)
+          return self.fail('Can\'t read swagger JSON from ' + self.url);
+        else
+          return self.fail(response.status + ' : ' + response.statusText + ' ' + self.url);
+      },
+      response: function(resp) {
+        var responseObj = resp.obj || JSON.parse(resp.data);
+        self.swaggerVersion = responseObj.swaggerVersion;
+
+        if(responseObj.swagger && parseInt(responseObj.swagger) === 2) {
+          self.swaggerVersion = responseObj.swagger;
+          new Resolver().resolve(responseObj, self.buildFromSpec, self);
+          self.isValid = true;
+        }
+        else {
+          if (self.swaggerVersion === '1.2') {
+            return self.buildFrom1_2Spec(responseObj);
+          } else {
+            return self.buildFrom1_1Spec(responseObj);
+          }
+        }
+      }
+    }
+  };
+  if(this.spec) {
+    setTimeout(function() {
+      new Resolver().resolve(self.spec, self.buildFromSpec, self);
+   }, 10);
+  }
+  else {
+    authorizations.apply(obj);
+    if(mock)
+      return obj;
+    new SwaggerHttp().execute(obj);
+  }
+  return this;
+};
+
+SwaggerClient.prototype.buildFromSpec = function(response) {
+  if(this.isBuilt) return this;
+
+  this.info = response.info || {};
+  this.title = response.title || '';
+  this.host = response.host || '';
+  this.schemes = response.schemes || [];
+  this.basePath = response.basePath || '';
+  this.apis = {};
+  this.apisArray = [];
+  this.consumes = response.consumes;
+  this.produces = response.produces;
+  this.securityDefinitions = response.securityDefinitions;
+
+  // legacy support
+  this.authSchemes = response.securityDefinitions;
+
+  var definedTags = {};
+  if(Array.isArray(response.tags)) {
+    definedTags = {};
+    for(k = 0; k < response.tags.length; k++) {
+      var t = response.tags[k];
+      definedTags[t.name] = t;
+    }
+  }
+
+  var location;
+  if(typeof this.url === 'string') {
+    location = this.parseUri(this.url);
+  }
+
+  if(typeof this.schemes === 'undefined' || this.schemes.length === 0) {
+    this.scheme = location.scheme || 'http';
+  }
+  else {
+    this.scheme = this.schemes[0];
+  }
+
+  if(typeof this.host === 'undefined' || this.host === '') {
+    this.host = location.host;
+    if (location.port) {
+      this.host = this.host + ':' + location.port;
+    }
+  }
+
+  this.definitions = response.definitions;
+  var key;
+  for(key in this.definitions) {
+    var model = new Model(key, this.definitions[key]);
+    if(model) {
+      models[key] = model;
+    }
+  }
+
+  // get paths, create functions for each operationId
+  var path;
+  var operations = [];
+  for(path in response.paths) {
+    if(typeof response.paths[path] === 'object') {
+      var httpMethod;
+      for(httpMethod in response.paths[path]) {
+        if(['delete', 'get', 'head', 'options', 'patch', 'post', 'put'].indexOf(httpMethod) === -1) {
+          continue;
+        }
+        var operation = response.paths[path][httpMethod];
+        var tags = operation.tags;
+        if(typeof tags === 'undefined') {
+          operation.tags = [ 'default' ];
+          tags = operation.tags;
+        }
+        var operationId = this.idFromOp(path, httpMethod, operation);
+        var operationObject = new Operation (
+          this,
+          operation.scheme,
+          operationId,
+          httpMethod,
+          path,
+          operation,
+          this.definitions
+        );
+        // bind this operation's execute command to the api
+        if(tags.length > 0) {
+          var i;
+          for(i = 0; i < tags.length; i++) {
+            var tag = this.tagFromLabel(tags[i]);
+            var operationGroup = this[tag];
+            if(typeof this.apis[tag] === 'undefined')
+              this.apis[tag] = {};
+            if(typeof operationGroup === 'undefined') {
+              this[tag] = [];
+              operationGroup = this[tag];
+              operationGroup.operations = {};
+              operationGroup.label = tag;
+              operationGroup.apis = [];
+              var tagObject = definedTags[tag];
+              if(typeof tagObject === 'object') {
+                operationGroup.description = tagObject.description;
+                operationGroup.externalDocs = tagObject.externalDocs;
+              }
+              this[tag].help = this.help.bind(operationGroup);
+              this.apisArray.push(new OperationGroup(tag, operationGroup.description, operationGroup.externalDocs, operationObject));
+            }
+            if(typeof this.apis[tag].help !== 'function')
+              this.apis[tag].help = this.help.bind(operationGroup);
+            // bind to the apis object
+            this.apis[tag][operationId] = operationObject.execute.bind(operationObject);
+            this.apis[tag][operationId].help = operationObject.help.bind(operationObject);
+            this.apis[tag][operationId].asCurl = operationObject.asCurl.bind(operationObject);
+            operationGroup[operationId] = operationObject.execute.bind(operationObject);
+            operationGroup[operationId].help = operationObject.help.bind(operationObject);
+            operationGroup[operationId].asCurl = operationObject.asCurl.bind(operationObject);
+
+            operationGroup.apis.push(operationObject);
+            operationGroup.operations[operationId] = operationObject;
+
+            // legacy UI feature
+            var j;
+            var api;
+            for(j = 0; j < this.apisArray.length; j++) {
+              if(this.apisArray[j].tag === tag) {
+                api = this.apisArray[j];
+              }
+            }
+            if(api) {
+              api.operationsArray.push(operationObject);
+            }
+          }
+        }
+        else {
+          log('no group to bind to');
+        }
+      }
+    }
+  }
+  this.isBuilt = true;
+  if (this.success) {
+    this.isValid = true;
+    this.isBuilt = true;
+    this.success();
+  }
+  return this;
+};
+
+SwaggerClient.prototype.parseUri = function(uri) {
+  var urlParseRE = /^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/;
+  var parts = urlParseRE.exec(uri);
+  return {
+    scheme: parts[4].replace(':',''),
+    host: parts[11],
+    port: parts[12],
+    path: parts[15]
+  };
+};
+
+SwaggerClient.prototype.help = function(dontPrint) {
+  var i;
+  var output = 'operations for the "' + this.label + '" tag';
+  for(i = 0; i < this.apis.length; i++) {
+    var api = this.apis[i];
+    output += '\n  * ' + api.nickname + ': ' + api.operation.summary;
+  }
+  if(dontPrint)
+    return output;
+  else {
+    log(output);
+    return output;
+  }
+};
+
+SwaggerClient.prototype.tagFromLabel = function(label) {
+  return label;
+};
+
+SwaggerClient.prototype.idFromOp = function(path, httpMethod, op) {
+  var opId = op.operationId || (path.substring(1) + '_' + httpMethod);
+  return opId.replace(/[\.,-\/#!$%\^&\*;:{}=\-_`~()\+\s]/g,'_');
+};
+
+SwaggerClient.prototype.fail = function(message) {
+  this.failure(message);
+  throw message;
+};
+
+var OperationGroup = function(tag, description, externalDocs, operation) {
+  this.tag = tag;
+  this.path = tag;
+  this.description = description;
+  this.externalDocs = externalDocs;
+  this.name = tag;
+  this.operation = operation;
+  this.operationsArray = [];
+};
+
+var Operation = function(parent, scheme, operationId, httpMethod, path, args, definitions) {
+  var errors = [];
+  parent = parent||{};
+  args = args||{};
+
+  this.operations = {};
+  this.operation = args;
+  this.deprecated = args.deprecated;
+  this.consumes = args.consumes;
+  this.produces = args.produces;
+  this.parent = parent;
+  this.host = parent.host || 'localhost';
+  this.schemes = parent.schemes;
+  this.scheme = scheme || parent.scheme || 'http';
+  this.basePath = parent.basePath || '/';
+  this.nickname = (operationId||errors.push('Operations must have a nickname.'));
+  this.method = (httpMethod||errors.push('Operation ' + operationId + ' is missing method.'));
+  this.path = (path||errors.push('Operation ' + this.nickname + ' is missing path.'));
+  this.parameters = args !== null ? (args.parameters||[]) : {};
+  this.summary = args.summary || '';
+  this.responses = (args.responses||{});
+  this.type = null;
+  this.security = args.security;
+  this.authorizations = args.security;
+  this.description = args.description;
+  this.useJQuery = parent.useJQuery;
+
+  if(typeof this.deprecated === 'string') {
+    switch(this.deprecated.toLowerCase()) {
+      case 'true': case 'yes': case '1': {
+        this.deprecated = true;
+        break;
+      }
+      case 'false': case 'no': case '0': case null: {
+        this.deprecated = false;
+        break;
+      }
+      default: this.deprecated = Boolean(this.deprecated);
+    }
+  }
+
+  var i, model;
+
+  if(definitions) {
+    // add to global models
+    var key;
+    for(key in this.definitions) {
+      model = new Model(key, definitions[key]);
+      if(model) {
+        models[key] = model;
+      }
+    }
+  }
+  for(i = 0; i < this.parameters.length; i++) {
+    var param = this.parameters[i];
+    if(param.type === 'array') {
+      param.isList = true;
+      param.allowMultiple = true;
+    }
+    var innerType = this.getType(param);
+    if(innerType && innerType.toString().toLowerCase() === 'boolean') {
+      param.allowableValues = {};
+      param.isList = true;
+      param['enum'] = ["true", "false"];
+    }
+    if(typeof param['enum'] !== 'undefined') {
+      var id;
+      param.allowableValues = {};
+      param.allowableValues.values = [];
+      param.allowableValues.descriptiveValues = [];
+      for(id = 0; id < param['enum'].length; id++) {
+        var value = param['enum'][id];
+        var isDefault = (value === param.default) ? true : false;
+        param.allowableValues.values.push(value);
+        param.allowableValues.descriptiveValues.push({value : value, isDefault: isDefault});
+      }
+    }
+    if(param.type === 'array') {
+      innerType = [innerType];
+      if(typeof param.allowableValues === 'undefined') {
+        // can't show as a list if no values to select from
+        delete param.isList;
+        delete param.allowMultiple;
+      }
+    }
+    param.signature = this.getModelSignature(innerType, models).toString();
+    param.sampleJSON = this.getModelSampleJSON(innerType, models);
+    param.responseClassSignature = param.signature;
+  }
+
+  var defaultResponseCode, response, responses = this.responses;
+
+  if(responses['200']) {
+    response = responses['200'];
+    defaultResponseCode = '200';
+  }
+  else if(responses['201']) {
+    response = responses['201'];
+    defaultResponseCode = '201';
+  }
+  else if(responses['202']) {
+    response = responses['202'];
+    defaultResponseCode = '202';
+  }
+  else if(responses['203']) {
+    response = responses['203'];
+    defaultResponseCode = '203';
+  }
+  else if(responses['204']) {
+    response = responses['204'];
+    defaultResponseCode = '204';
+  }
+  else if(responses['205']) {
+    response = responses['205'];
+    defaultResponseCode = '205';
+  }
+  else if(responses['206']) {
+    response = responses['206'];
+    defaultResponseCode = '206';
+  }
+  else if(responses['default']) {
+    response = responses['default'];
+    defaultResponseCode = 'default';
+  }
+
+  if(response && response.schema) {
+    var resolvedModel = this.resolveModel(response.schema, definitions);
+    delete responses[defaultResponseCode];
+    if(resolvedModel) {
+      this.successResponse = {};
+      this.successResponse[defaultResponseCode] = resolvedModel;
+    }
+    else {
+      this.successResponse = {};
+      this.successResponse[defaultResponseCode] = response.schema.type;
+    }
+    this.type = response;
+  }
+
+  if (errors.length > 0) {
+    if(this.resource && this.resource.api && this.resource.api.fail)
+      this.resource.api.fail(errors);
+  }
+
+  return this;
+};
+
+OperationGroup.prototype.sort = function(sorter) {
+
+};
+
+Operation.prototype.getType = function (param) {
+  var type = param.type;
+  var format = param.format;
+  var isArray = false;
+  var str;
+  if(type === 'integer' && format === 'int32')
+    str = 'integer';
+  else if(type === 'integer' && format === 'int64')
+    str = 'long';
+  else if(type === 'integer')
+    str = 'integer';
+  else if(type === 'string') {
+    if(format === 'date-time')
+      str = 'date-time';
+    else if(format === 'date')
+      str = 'date';
+    else
+      str = 'string';
+  }
+  else if(type === 'number' && format === 'float')
+    str = 'float';
+  else if(type === 'number' && format === 'double')
+    str = 'double';
+  else if(type === 'number')
+    str = 'double';
+  else if(type === 'boolean')
+    str = 'boolean';
+  else if(type === 'array') {
+    isArray = true;
+    if(param.items)
+      str = this.getType(param.items);
+  }
+  if(param.$ref)
+    str = param.$ref;
+
+  var schema = param.schema;
+  if(schema) {
+    var ref = schema.$ref;
+    if(ref) {
+      ref = simpleRef(ref);
+      if(isArray)
+        return [ ref ];
+      else
+        return ref;
+    }
+    else
+      return this.getType(schema);
+  }
+  if(isArray)
+    return [ str ];
+  else
+    return str;
+};
+
+Operation.prototype.resolveModel = function (schema, definitions) {
+  if(typeof schema.$ref !== 'undefined') {
+    var ref = schema.$ref;
+    if(ref.indexOf('#/definitions/') === 0)
+      ref = ref.substring('#/definitions/'.length);
+    if(definitions[ref]) {
+      return new Model(ref, definitions[ref]);
+    }
+  }
+  if(schema.type === 'array')
+    return new ArrayModel(schema);
+  else
+    return null;
+};
+
+Operation.prototype.help = function(dontPrint) {
+  var out = this.nickname + ': ' + this.summary + '\n';
+  for(var i = 0; i < this.parameters.length; i++) {
+    var param = this.parameters[i];
+    var typeInfo = param.signature;
+    out += '\n  * ' + param.name + ' (' + typeInfo + '): ' + param.description;
+  }
+  if(typeof dontPrint === 'undefined')
+    log(out);
+  return out;
+};
+
+Operation.prototype.getModelSignature = function(type, definitions) {
+  var isPrimitive, listType;
+
+  if(type instanceof Array) {
+    listType = true;
+    type = type[0];
+  }
+  else if(typeof type === 'undefined')
+    type = 'undefined';
+
+  if(type === 'string')
+    isPrimitive = true;
+  else
+    isPrimitive = (listType && definitions[listType]) || (definitions[type]) ? false : true;
+  if (isPrimitive) {
+    if(listType)
+      return 'Array[' + type + ']';
+    else
+      return type.toString();
+  } else {
+    if (listType)
+      return 'Array[' + definitions[type].getMockSignature() + ']';
+    else
+      return definitions[type].getMockSignature();
+  }
+};
+
+Operation.prototype.supportHeaderParams = function () {
+  return true;
+};
+
+Operation.prototype.supportedSubmitMethods = function () {
+  return this.parent.supportedSubmitMethods;
+};
+
+Operation.prototype.getHeaderParams = function (args) {
+  var headers = this.setContentTypes(args, {});
+  for(var i = 0; i < this.parameters.length; i++) {
+    var param = this.parameters[i];
+    if(typeof args[param.name] !== 'undefined') {
+      if (param.in === 'header') {
+        var value = args[param.name];
+        if(Array.isArray(value))
+          value = value.toString();
+        headers[param.name] = value;
+      }
+    }
+  }
+  return headers;
+};
+
+Operation.prototype.urlify = function (args) {
+  var formParams = {};
+  var requestUrl = this.path;
+
+  // grab params from the args, build the querystring along the way
+  var querystring = '';
+  for(var i = 0; i < this.parameters.length; i++) {
+    var param = this.parameters[i];
+    if(typeof args[param.name] !== 'undefined') {
+      if(param.in === 'path') {
+        var reg = new RegExp('\{' + param.name + '\}', 'gi');
+        var value = args[param.name];
+        if(Array.isArray(value))
+          value = this.encodePathCollection(param.collectionFormat, param.name, value);
+        else
+          value = this.encodePathParam(value);
+        requestUrl = requestUrl.replace(reg, value);
+      }
+      else if (param.in === 'query' && typeof args[param.name] !== 'undefined') {
+        if(querystring === '')
+          querystring += '?';
+        else
+          querystring += '&';
+        if(typeof param.collectionFormat !== 'undefined') {
+          var qp = args[param.name];
+          if(Array.isArray(qp))
+            querystring += this.encodeQueryCollection(param.collectionFormat, param.name, qp);
+          else
+            querystring += this.encodeQueryParam(param.name) + '=' + this.encodeQueryParam(args[param.name]);
+        }
+        else
+          querystring += this.encodeQueryParam(param.name) + '=' + this.encodeQueryParam(args[param.name]);
+      }
+      else if (param.in === 'formData')
+        formParams[param.name] = args[param.name];
+    }
+  }
+  var url = this.scheme + '://' + this.host;
+
+  if(this.basePath !== '/')
+    url += this.basePath;
+
+  return url + requestUrl + querystring;
+};
+
+Operation.prototype.getMissingParams = function(args) {
+  var missingParams = [];
+  // check required params, track the ones that are missing
+  var i;
+  for(i = 0; i < this.parameters.length; i++) {
+    var param = this.parameters[i];
+    if(param.required === true) {
+      if(typeof args[param.name] === 'undefined')
+        missingParams = param.name;
+    }
+  }
+  return missingParams;
+};
+
+Operation.prototype.getBody = function(headers, args, opts) {
+  var formParams = {}, body, key;
+
+  for(var i = 0; i < this.parameters.length; i++) {
+    var param = this.parameters[i];
+    if(typeof args[param.name] !== 'undefined') {
+      if (param.in === 'body') {
+        body = args[param.name];
+      } else if(param.in === 'formData') {
+        formParams[param.name] = args[param.name];
+      }
+    }
+  }
+
+  // handle form params
+  if(headers['Content-Type'] === 'application/x-www-form-urlencoded') {
+    var encoded = "";
+    for(key in formParams) {
+      value = formParams[key];
+      if(typeof value !== 'undefined'){
+        if(encoded !== "")
+          encoded += "&";
+        encoded += encodeURIComponent(key) + '=' + encodeURIComponent(value);
+      }
+    }
+    body = encoded;
+  }
+  else if (headers['Content-Type'] && headers['Content-Type'].indexOf('multipart/form-data') >= 0) {
+    if(opts.useJQuery) {
+      var bodyParam = new FormData();
+      bodyParam.type = 'formData';
+      for (key in formParams) {
+        value = args[key];
+        if (typeof value !== 'undefined') {
+          // required for jquery file upload
+          if(value.type === 'file' && value.value) {
+            delete headers['Content-Type'];
+            bodyParam.append(key, value.value);
+          }
+          else
+            bodyParam.append(key, value);
+        }
+      }
+      body = bodyParam;
+    }
+  }
+
+  return body;
+};
+
+/**
+ * gets sample response for a single operation
+ **/
+Operation.prototype.getModelSampleJSON = function(type, models) {
+  var isPrimitive, listType, sampleJson;
+
+  listType = (type instanceof Array);
+  isPrimitive = models[type] ? false : true;
+  sampleJson = isPrimitive ? void 0 : models[type].createJSONSample();
+  if (sampleJson) {
+    sampleJson = listType ? [sampleJson] : sampleJson;
+    if(typeof sampleJson == 'string')
+      return sampleJson;
+    else if(typeof sampleJson === 'object') {
+      var t = sampleJson;
+      if(sampleJson instanceof Array && sampleJson.length > 0) {
+        t = sampleJson[0];
+      }
+      if(t.nodeName) {
+        var xmlString = new XMLSerializer().serializeToString(t);
+        return this.formatXml(xmlString);
+      }
+      else
+        return JSON.stringify(sampleJson, null, 2);
+    }
+    else
+      return sampleJson;
+  }
+};
+
+/**
+ * legacy binding
+ **/
+Operation.prototype["do"] = function(args, opts, callback, error, parent) {
+  return this.execute(args, opts, callback, error, parent);
+};
+
+
+/**
+ * executes an operation
+ **/
+Operation.prototype.execute = function(arg1, arg2, arg3, arg4, parent) {
+  var args = arg1 || {};
+  var opts = {}, success, error;
+  if(typeof arg2 === 'object') {
+    opts = arg2;
+    success = arg3;
+    error = arg4;
+  }
+
+  if(typeof arg2 === 'function') {
+    success = arg2;
+    error = arg3;
+  }
+
+  success = (success||log);
+  error = (error||log);
+
+  if(opts.useJQuery)
+    this.useJQuery = opts.useJQuery;
+
+  var missingParams = this.getMissingParams(args);
+  if(missingParams.length > 0) {
+    var message = 'missing required params: ' + missingParams;
+    fail(message);
+    return;
+  }
+  var allHeaders = this.getHeaderParams(args);
+  var contentTypeHeaders = this.setContentTypes(args, opts);
+
+  var headers = {}, attrname;
+  for (attrname in allHeaders) { headers[attrname] = allHeaders[attrname]; }
+  for (attrname in contentTypeHeaders) { headers[attrname] = contentTypeHeaders[attrname]; }
+
+  var body = this.getBody(headers, args, opts);
+  var url = this.urlify(args);
+
+  var obj = {
+    url: url,
+    method: this.method.toUpperCase(),
+    body: body,
+    useJQuery: this.useJQuery,
+    headers: headers,
+    on: {
+      response: function(response) {
+        return success(response, parent);
+      },
+      error: function(response) {
+        return error(response, parent);
+      }
+    }
+  };
+  var status = authorizations.apply(obj, this.operation.security);
+  if(opts.mock === true)
+    return obj;
+  else
+    new SwaggerHttp().execute(obj, opts);
+};
+
+Operation.prototype.setContentTypes = function(args, opts) {
+  // default type
+  var accepts = 'application/json';
+  var consumes = args.parameterContentType || 'application/json';
+  var allDefinedParams = this.parameters;
+  var definedFormParams = [];
+  var definedFileParams = [];
+  var body;
+  var headers = {};
+
+  // get params from the operation and set them in definedFileParams, definedFormParams, headers
+  var i;
+  for(i = 0; i < allDefinedParams.length; i++) {
+    var param = allDefinedParams[i];
+    if(param.in === 'formData') {
+      if(param.type === 'file')
+        definedFileParams.push(param);
+      else
+        definedFormParams.push(param);
+    }
+    else if(param.in === 'header' && opts) {
+      var key = param.name;
+      var headerValue = opts[param.name];
+      if(typeof opts[param.name] !== 'undefined')
+        headers[key] = headerValue;
+    }
+    else if(param.in === 'body' && typeof args[param.name] !== 'undefined') {
+      body = args[param.name];
+    }
+  }
+
+  // if there's a body, need to set the consumes header via requestContentType
+  if (body && (this.method === 'post' || this.method === 'put' || this.method === 'patch' || this.method === 'delete')) {
+    if (opts.requestContentType)
+      consumes = opts.requestContentType;
+  } else {
+    // if any form params, content type must be set
+    if(definedFormParams.length > 0) {
+      if(opts.requestContentType)           // override if set
+        consumes = opts.requestContentType;
+      else if(definedFileParams.length > 0) // if a file, must be multipart/form-data
+        consumes = 'multipart/form-data';
+      else                                  // default to x-www-from-urlencoded
+        consumes = 'application/x-www-form-urlencoded';
+    }
+    else if (this.type == 'DELETE')
+      body = '{}';
+    else if (this.type != 'DELETE')
+      consumes = null;
+  }
+
+  if (consumes && this.consumes) {
+    if (this.consumes.indexOf(consumes) === -1) {
+      log('server doesn\'t consume ' + consumes + ', try ' + JSON.stringify(this.consumes));
+    }
+  }
+
+  if (opts.responseContentType) {
+    accepts = opts.responseContentType;
+  } else {
+    accepts = 'application/json';
+  }
+  if (accepts && this.produces) {
+    if (this.produces.indexOf(accepts) === -1) {
+      log('server can\'t produce ' + accepts);
+    }
+  }
+
+  if ((consumes && body !== '') || (consumes === 'application/x-www-form-urlencoded'))
+    headers['Content-Type'] = consumes;
+  if (accepts)
+    headers.Accept = accepts;
+  return headers;
+};
+
+Operation.prototype.asCurl = function (args) {
+  var obj = this.execute(args, {mock: true});
+  authorizations.apply(obj);
+  var results = [];
+  results.push('-X ' + this.method.toUpperCase());
+  if (obj.headers) {
+    var key;
+    for (key in obj.headers)
+      results.push('--header "' + key + ': ' + obj.headers[key] + '"');
+  }
+  if(obj.body) {
+    var body;
+    if(typeof obj.body === 'object')
+      body = JSON.stringify(obj.body);
+    else
+      body = obj.body;
+    results.push('-d "' + body.replace(/"/g, '\\"') + '"');
+  }
+  return 'curl ' + (results.join(' ')) + ' "' + obj.url + '"';
+};
+
+Operation.prototype.encodePathCollection = function(type, name, value) {
+  var encoded = '';
+  var i;
+  var separator = '';
+  if(type === 'ssv')
+    separator = '%20';
+  else if(type === 'tsv')
+    separator = '\\t';
+  else if(type === 'pipes')
+    separator = '|';
+  else
+    separator = ',';
+
+  for(i = 0; i < value.length; i++) {
+    if(i === 0)
+      encoded = this.encodeQueryParam(value[i]);
+    else
+      encoded += separator + this.encodeQueryParam(value[i]);
+  }
+  return encoded;
+};
+
+Operation.prototype.encodeQueryCollection = function(type, name, value) {
+  var encoded = '';
+  var i;
+  if(type === 'default' || type === 'multi') {
+    for(i = 0; i < value.length; i++) {
+      if(i > 0) encoded += '&';
+      encoded += this.encodeQueryParam(name) + '=' + this.encodeQueryParam(value[i]);
+    }
+  }
+  else {
+    var separator = '';
+    if(type === 'csv')
+      separator = ',';
+    else if(type === 'ssv')
+      separator = '%20';
+    else if(type === 'tsv')
+      separator = '\\t';
+    else if(type === 'pipes')
+      separator = '|';
+    else if(type === 'brackets') {
+      for(i = 0; i < value.length; i++) {
+        if(i !== 0)
+          encoded += '&';
+        encoded += this.encodeQueryParam(name) + '[]=' + this.encodeQueryParam(value[i]);
+      }
+    }
+    if(separator !== '') {
+      for(i = 0; i < value.length; i++) {
+        if(i === 0)
+          encoded = this.encodeQueryParam(name) + '=' + this.encodeQueryParam(value[i]);
+        else
+          encoded += separator + this.encodeQueryParam(value[i]);
+      }
+    }
+  }
+  return encoded;
+};
+
+Operation.prototype.encodeQueryParam = function(arg) {
+  return encodeURIComponent(arg);
+};
+
+/**
+ * TODO revisit, might not want to leave '/'
+ **/
+Operation.prototype.encodePathParam = function(pathParam) {
+  var encParts, part, parts, i, len;
+  pathParam = pathParam.toString();
+  if (pathParam.indexOf('/') === -1) {
+    return encodeURIComponent(pathParam);
+  } else {
+    parts = pathParam.split('/');
+    encParts = [];
+    for (i = 0, len = parts.length; i < len; i++) {
+      encParts.push(encodeURIComponent(parts[i]));
+    }
+    return encParts.join('/');
+  }
+};
+
+var Model = function(name, definition) {
+  this.name = name;
+  this.definition = definition || {};
+  this.properties = [];
+  var requiredFields = definition.required || [];
+  if(definition.type === 'array') {
+    var out = new ArrayModel(definition);
+    return out;
+  }
+  var key;
+  var props = definition.properties;
+  if(props) {
+    for(key in props) {
+      var required = false;
+      var property = props[key];
+      if(requiredFields.indexOf(key) >= 0)
+        required = true;
+      this.properties.push(new Property(key, property, required));
+    }
+  }
+};
+
+Model.prototype.createJSONSample = function(modelsToIgnore) {
+  var i, result = {}, representations = {};
+  modelsToIgnore = (modelsToIgnore||{});
+  modelsToIgnore[this.name] = this;
+  for (i = 0; i < this.properties.length; i++) {
+    prop = this.properties[i];
+    var sample = prop.getSampleValue(modelsToIgnore, representations);
+    result[prop.name] = sample;
+  }
+  delete modelsToIgnore[this.name];
+  return result;
+};
+
+Model.prototype.getSampleValue = function(modelsToIgnore) {
+  var i, obj = {}, representations = {};
+  for(i = 0; i < this.properties.length; i++ ) {
+    var property = this.properties[i];
+    obj[property.name] = property.sampleValue(false, modelsToIgnore, representations);
+  }
+  return obj;
+};
+
+Model.prototype.getMockSignature = function(modelsToIgnore) {
+  var i, prop, propertiesStr = [];
+  for (i = 0; i < this.properties.length; i++) {
+    prop = this.properties[i];
+    propertiesStr.push(prop.toString());
+  }
+  var strong = '<span class="strong">';
+  var stronger = '<span class="stronger">';
+  var strongClose = '</span>';
+  var classOpen = strong + this.name + ' {' + strongClose;
+  var classClose = strong + '}' + strongClose;
+  var returnVal = classOpen + '<div>' + propertiesStr.join(',</div><div>') + '</div>' + classClose;
+  if (!modelsToIgnore)
+    modelsToIgnore = {};
+
+  modelsToIgnore[this.name] = this;
+  for (i = 0; i < this.properties.length; i++) {
+    prop = this.properties[i];
+    var ref = prop.$ref;
+    var model = models[ref];
+    if (model && typeof modelsToIgnore[model.name] === 'undefined') {
+      returnVal = returnVal + ('<br>' + model.getMockSignature(modelsToIgnore));
+    }
+  }
+  return returnVal;
+};
+
+var Property = function(name, obj, required) {
+  this.schema = obj;
+  this.required = required;
+  if(obj.$ref)
+    this.$ref = simpleRef(obj.$ref);
+  else if (obj.type === 'array' && obj.items) {
+    if(obj.items.$ref)
+      this.$ref = simpleRef(obj.items.$ref);
+    else
+      obj = obj.items;
+  }
+  this.name = name;
+  this.description = obj.description;
+  this.obj = obj;
+  this.optional = true;
+  this.optional = !required;
+  this.default = obj.default || null;
+  this.example = obj.example !== undefined ? obj.example : null;
+  this.collectionFormat = obj.collectionFormat || null;
+  this.maximum = obj.maximum || null;
+  this.exclusiveMaximum = obj.exclusiveMaximum || null;
+  this.minimum = obj.minimum || null;
+  this.exclusiveMinimum = obj.exclusiveMinimum || null;
+  this.maxLength = obj.maxLength || null;
+  this.minLength = obj.minLength || null;
+  this.pattern = obj.pattern || null;
+  this.maxItems = obj.maxItems || null;
+  this.minItems = obj.minItems || null;
+  this.uniqueItems = obj.uniqueItems || null;
+  this['enum'] = obj['enum'] || null;
+  this.multipleOf = obj.multipleOf || null;
+};
+
+Property.prototype.getSampleValue = function (modelsToIgnore, representations) {
+  return this.sampleValue(false, modelsToIgnore, representations);
+};
+
+Property.prototype.isArray = function () {
+  var schema = this.schema;
+  if(schema.type === 'array')
+    return true;
+  else
+    return false;
+};
+
+Property.prototype.sampleValue = function(isArray, ignoredModels, representations) {
+  isArray = (isArray || this.isArray());
+  ignoredModels = (ignoredModels || {});
+  // representations = (representations || {});
+
+  var type = getStringSignature(this.obj, true);
+  var output;
+
+  if(this.$ref) {
+    var refModelName = simpleRef(this.$ref);
+    var refModel = models[refModelName];
+    if(typeof representations[type] !== 'undefined') {
+      return representations[type];
+    }
+    else
+
+    if(refModel && typeof ignoredModels[type] === 'undefined') {
+      ignoredModels[type] = this;
+      output = refModel.getSampleValue(ignoredModels, representations);
+      representations[type] = output;
+    }
+    else {
+      output = (representations[type] || refModelName);
+    }
+  }
+  else if(this.example)
+    output = this.example;
+  else if(this.default)
+    output = this.default;
+  else if(type === 'date-time')
+    output = new Date().toISOString();
+  else if(type === 'date')
+    output = new Date().toISOString().split("T")[0];
+  else if(type === 'string')
+    output = 'string';
+  else if(type === 'integer')
+    output = 0;
+  else if(type === 'long')
+    output = 0;
+  else if(type === 'float')
+    output = 0.0;
+  else if(type === 'double')
+    output = 0.0;
+  else if(type === 'boolean')
+    output = true;
+  else
+    output = {};
+  ignoredModels[type] = output;
+  if(isArray)
+    return [output];
+  else
+    return output;
+};
+
+getStringSignature = function(obj, baseComponent) {
+  var str = '';
+  if(typeof obj.$ref !== 'undefined')
+    str += simpleRef(obj.$ref);
+  else if(typeof obj.type === 'undefined')
+    str += 'object';
+  else if(obj.type === 'array') {
+    if(baseComponent)
+      str += getStringSignature((obj.items || obj.$ref || {}));
+    else {
+      str += 'Array[';
+      str += getStringSignature((obj.items || obj.$ref || {}));
+      str += ']';
+    }
+  }
+  else if(obj.type === 'integer' && obj.format === 'int32')
+    str += 'integer';
+  else if(obj.type === 'integer' && obj.format === 'int64')
+    str += 'long';
+  else if(obj.type === 'integer' && typeof obj.format === 'undefined')
+    str += 'long';
+  else if(obj.type === 'string' && obj.format === 'date-time')
+    str += 'date-time';
+  else if(obj.type === 'string' && obj.format === 'date')
+    str += 'date';
+  else if(obj.type === 'string' && typeof obj.format === 'undefined')
+    str += 'string';
+  else if(obj.type === 'number' && obj.format === 'float')
+    str += 'float';
+  else if(obj.type === 'number' && obj.format === 'double')
+    str += 'double';
+  else if(obj.type === 'number' && typeof obj.format === 'undefined')
+    str += 'double';
+  else if(obj.type === 'boolean')
+    str += 'boolean';
+  else if(obj.$ref)
+    str += simpleRef(obj.$ref);
+  else
+    str += obj.type;
+  return str;
+};
+
+simpleRef = function(name) {
+  if(typeof name === 'undefined')
+    return null;
+  if(name.indexOf("#/definitions/") === 0)
+    return name.substring('#/definitions/'.length);
+  else
+    return name;
+};
+
+Property.prototype.toString = function() {
+  var str = getStringSignature(this.obj);
+  if(str !== '') {
+    str = '<span class="propName ' + this.required + '">' + this.name + '</span> (<span class="propType">' + str + '</span>';
+    if(!this.required)
+      str += ', <span class="propOptKey">optional</span>';
+    str += ')';
+  }
+  else
+    str = this.name + ' (' + JSON.stringify(this.obj) + ')';
+
+  if(typeof this.description !== 'undefined')
+    str += ': ' + this.description;
+
+  if (this['enum']) {
+    str += ' = <span class="propVals">[\'' + this['enum'].join('\' or \'') + '\']</span>';
+  }
+  if (this.descr) {
+    str += ': <span class="propDesc">' + this.descr + '</span>';
+  }
+
+
+  var options = ''; 
+  var isArray = this.schema.type === 'array';
+  var type;
+
+  if(isArray) {
+    if(this.schema.items)
+      type = this.schema.items.type;
+    else
+      type = '';
+  }
+  else {
+    type = this.schema.type;
+  }
+
+  if (this.default)
+    options += optionHtml('Default', this.default);
+
+  switch (type) {
+    case 'string':
+      if (this.minLength)
+        options += optionHtml('Min. Length', this.minLength);
+      if (this.maxLength)
+        options += optionHtml('Max. Length', this.maxLength);
+      if (this.pattern)
+        options += optionHtml('Reg. Exp.', this.pattern);
+      break;
+    case 'integer':
+    case 'number':
+      if (this.minimum)
+        options += optionHtml('Min. Value', this.minimum);
+      if (this.exclusiveMinimum)
+        options += optionHtml('Exclusive Min.', "true");
+      if (this.maximum)
+        options += optionHtml('Max. Value', this.maximum);
+      if (this.exclusiveMaximum)
+        options += optionHtml('Exclusive Max.', "true");
+      if (this.multipleOf)
+        options += optionHtml('Multiple Of', this.multipleOf);
+      break;
+  }
+
+  if (isArray) {
+    if (this.minItems)
+      options += optionHtml('Min. Items', this.minItems);
+    if (this.maxItems)
+      options += optionHtml('Max. Items', this.maxItems);
+    if (this.uniqueItems)
+      options += optionHtml('Unique Items', "true");
+    if (this.collectionFormat)
+      options += optionHtml('Coll. Format', this.collectionFormat);
+  }
+
+  if (this['enum']) {
+    var enumString;
+
+    if (type === 'number' || type === 'integer')
+      enumString = this['enum'].join(', ');
+    else {
+      enumString = '"' + this['enum'].join('", "') + '"';
+    }
+
+    options += optionHtml('Enum', enumString);
+  }     
+
+  if (options.length > 0)
+    str = '<span class="propWrap">' + str + '<table class="optionsWrapper"><tr><th colspan="2">' + this.name + '</th></tr>' + options + '</table></span>';
+  
+  return str;
+};
+
+optionHtml = function(label, value) {
+  return '<tr><td class="optionName">' + label + ':</td><td>' + value + '</td></tr>';
+};
+
+typeFromJsonSchema = function(type, format) {
+  var str;
+  if(type === 'integer' && format === 'int32')
+    str = 'integer';
+  else if(type === 'integer' && format === 'int64')
+    str = 'long';
+  else if(type === 'integer' && typeof format === 'undefined')
+    str = 'long';
+  else if(type === 'string' && format === 'date-time')
+    str = 'date-time';
+  else if(type === 'string' && format === 'date')
+    str = 'date';
+  else if(type === 'number' && format === 'float')
+    str = 'float';
+  else if(type === 'number' && format === 'double')
+    str = 'double';
+  else if(type === 'number' && typeof format === 'undefined')
+    str = 'double';
+  else if(type === 'boolean')
+    str = 'boolean';
+  else if(type === 'string')
+    str = 'string';
+
+  return str;
+};
+
+var sampleModels = {};
+var cookies = {};
+var models = {};
+
+SwaggerClient.prototype.buildFrom1_2Spec = function (response) {
+  if (response.apiVersion !== null) {
+    this.apiVersion = response.apiVersion;
+  }
+  this.apis = {};
+  this.apisArray = [];
+  this.consumes = response.consumes;
+  this.produces = response.produces;
+  this.authSchemes = response.authorizations;
+  this.info = this.convertInfo(response.info);
+
+  var isApi = false, i, res;
+  for (i = 0; i < response.apis.length; i++) {
+    var api = response.apis[i];
+    if (api.operations) {
+      var j;
+      for (j = 0; j < api.operations.length; j++) {
+        operation = api.operations[j];
+        isApi = true;
+      }
+    }
+  }
+  if (response.basePath)
+    this.basePath = response.basePath;
+  else if (this.url.indexOf('?') > 0)
+    this.basePath = this.url.substring(0, this.url.lastIndexOf('?'));
+  else
+    this.basePath = this.url;
+
+  if (isApi) {
+    var newName = response.resourcePath.replace(/\//g, '');
+    this.resourcePath = response.resourcePath;
+    res = new SwaggerResource(response, this);
+    this.apis[newName] = res;
+    this.apisArray.push(res);
+    this.finish();
+  } else {
+    var k;
+    this.expectedResourceCount = response.apis.length;
+    for (k = 0; k < response.apis.length; k++) {
+      var resource = response.apis[k];
+      res = new SwaggerResource(resource, this);
+      this.apis[res.name] = res;
+      this.apisArray.push(res);
+    }
+  }
+  this.isValid = true;
+  return this;
+};
+
+SwaggerClient.prototype.finish = function() {
+  if (typeof this.success === 'function') {
+    this.isValid = true;
+    this.ready = true;
+    this.isBuilt = true;
+    this.selfReflect();
+    this.success();
+  }  
+};
+
+SwaggerClient.prototype.buildFrom1_1Spec = function (response) {
+  log('This API is using a deprecated version of Swagger!  Please see http://github.com/wordnik/swagger-core/wiki for more info');
+  if (response.apiVersion !== null)
+    this.apiVersion = response.apiVersion;
+  this.apis = {};
+  this.apisArray = [];
+  this.produces = response.produces;
+  this.info = this.convertInfo(response.info);
+  var isApi = false, res;
+  for (var i = 0; i < response.apis.length; i++) {
+    var api = response.apis[i];
+    if (api.operations) {
+      for (var j = 0; j < api.operations.length; j++) {
+        operation = api.operations[j];
+        isApi = true;
+      }
+    }
+  }
+  if (response.basePath) {
+    this.basePath = response.basePath;
+  } else if (this.url.indexOf('?') > 0) {
+    this.basePath = this.url.substring(0, this.url.lastIndexOf('?'));
+  } else {
+    this.basePath = this.url;
+  }
+  if (isApi) {
+    var newName = response.resourcePath.replace(/\//g, '');
+    this.resourcePath = response.resourcePath;
+    res = new SwaggerResource(response, this);
+    this.apis[newName] = res;
+    this.apisArray.push(res);
+    this.finish();
+  } else {
+    this.expectedResourceCount = response.apis.length;
+    for (k = 0; k < response.apis.length; k++) {
+      resource = response.apis[k];
+      res = new SwaggerResource(resource, this);
+      this.apis[res.name] = res;
+      this.apisArray.push(res);
+    }
+  }
+  this.isValid = true;
+  return this;
+};
+
+SwaggerClient.prototype.convertInfo = function (resp) {
+  if(typeof resp == 'object') {
+    var info = {};
+
+    info.title = resp.title;
+    info.description = resp.description;
+    info.termsOfService = resp.termsOfServiceUrl;
+    info.contact = {};
+    info.contact.name = resp.contact;
+    info.license = {};
+    info.license.name = resp.license;
+    info.license.url = resp.licenseUrl;
+
+    return info;
+  }
+};
+
+SwaggerClient.prototype.selfReflect = function () {
+  var resource, tag, ref;
+  if (this.apis === null) {
+    return false;
+  }
+  ref = this.apis;
+  for (tag in ref) {
+    api = ref[tag];
+    if (api.ready === null) {
+      return false;
+    }
+    this[tag] = api;
+    this[tag].help = __bind(api.help, api);
+  }
+  this.setConsolidatedModels();
+  this.ready = true;
+};
+
+SwaggerClient.prototype.setConsolidatedModels = function () {
+  var model, modelName, resource, resource_name, i, apis, models, results;
+  this.models = {};
+  apis = this.apis;
+  for (resource_name in apis) {
+    resource = apis[resource_name];
+    for (modelName in resource.models) {
+      if (typeof this.models[modelName] === 'undefined') {
+        this.models[modelName] = resource.models[modelName];
+        this.modelsArray.push(resource.models[modelName]);
+      }
+    }
+  }
+  models = this.modelsArray;
+  results = [];
+  for (i = 0; i < models.length; i++) {
+    model = models[i];
+    results.push(model.setReferencedModels(this.models));
+  }
+  return results;
+};
+
+var SwaggerResource = function (resourceObj, api) {
+  var _this = this;
+  this.api = api;
+  this.swaggerRequstHeaders = api.swaggerRequstHeaders;
+  this.path = (typeof this.api.resourcePath === 'string') ? this.api.resourcePath : resourceObj.path;
+  this.description = resourceObj.description;
+  this.authorizations = (resourceObj.authorizations || {});
+
+  var parts = this.path.split('/');
+  this.name = parts[parts.length - 1].replace('.{format}', '');
+  this.basePath = this.api.basePath;
+  this.operations = {};
+  this.operationsArray = [];
+  this.modelsArray = [];
+  this.models = api.models || {};
+  this.rawModels = {};
+  this.useJQuery = (typeof api.useJQuery !== 'undefined') ? api.useJQuery : null;
+
+  if ((resourceObj.apis) && this.api.resourcePath) {
+    this.addApiDeclaration(resourceObj);
+  } else {
+    if (typeof this.path === 'undefined') {
+      this.api.fail('SwaggerResources must have a path.');
+    }
+    if (this.path.substring(0, 4) === 'http') {
+      this.url = this.path.replace('{format}', 'json');
+    } else {
+      this.url = this.api.basePath + this.path.replace('{format}', 'json');
+    }
+    this.api.progress('fetching resource ' + this.name + ': ' + this.url);
+    var obj = {
+      url: this.url,
+      method: 'GET',
+      useJQuery: this.useJQuery,
+      headers: {
+        accept: this.swaggerRequstHeaders
+      },
+      on: {
+        response: function (resp) {
+          var responseObj = resp.obj || JSON.parse(resp.data);
+          _this.api.resourceCount += 1;
+          return _this.addApiDeclaration(responseObj);
+        },
+        error: function (response) {
+          _this.api.resourceCount += 1;
+          return _this.api.fail('Unable to read api \'' +
+          _this.name + '\' from path ' + _this.url + ' (server returned ' + response.statusText + ')');
+        }
+      }
+    };
+    var e = typeof window !== 'undefined' ? window : exports;
+    e.authorizations.apply(obj);
+    new SwaggerHttp().execute(obj);
+  }
+};
+
+SwaggerResource.prototype.help = function (dontPrint) {
+  var i;
+  var output = 'operations for the "' + this.name + '" tag';
+  for(i = 0; i < this.operationsArray.length; i++) {
+    var api = this.operationsArray[i];
+    output += '\n  * ' + api.nickname + ': ' + api.description;
+  }
+  if(dontPrint)
+    return output;
+  else {
+    log(output);
+    return output;
+  }
+};
+
+SwaggerResource.prototype.getAbsoluteBasePath = function (relativeBasePath) {
+  var pos, url;
+  url = this.api.basePath;
+  pos = url.lastIndexOf(relativeBasePath);
+  var parts = url.split('/');
+  var rootUrl = parts[0] + '//' + parts[2];
+
+  if (relativeBasePath.indexOf('http') === 0)
+    return relativeBasePath;
+  if (relativeBasePath === '/')
+    return rootUrl;
+  if (relativeBasePath.substring(0, 1) == '/') {
+    // use root + relative
+    return rootUrl + relativeBasePath;
+  }
+  else {
+    pos = this.basePath.lastIndexOf('/');
+    var base = this.basePath.substring(0, pos);
+    if (base.substring(base.length - 1) == '/')
+      return base + relativeBasePath;
+    else
+      return base + '/' + relativeBasePath;
+  }
+};
+
+SwaggerResource.prototype.addApiDeclaration = function (response) {
+  if (typeof response.produces === 'string')
+    this.produces = response.produces;
+  if (typeof response.consumes === 'string')
+    this.consumes = response.consumes;
+  if ((typeof response.basePath === 'string') && response.basePath.replace(/\s/g, '').length > 0)
+    this.basePath = response.basePath.indexOf('http') === -1 ? this.getAbsoluteBasePath(response.basePath) : response.basePath;
+  this.resourcePath = response.resourcePath;
+  this.addModels(response.models);
+  if (response.apis) {
+    for (var i = 0 ; i < response.apis.length; i++) {
+      var endpoint = response.apis[i];
+      this.addOperations(endpoint.path, endpoint.operations, response.consumes, response.produces);
+    }
+  }
+  this.api[this.name] = this;
+  this.ready = true;
+  if(this.api.resourceCount === this.api.expectedResourceCount)
+    this.api.finish();
+  return this;
+};
+
+SwaggerResource.prototype.addModels = function (models) {
+  if (typeof models === 'object') {
+    var modelName;
+    for (modelName in models) {
+      if (typeof this.models[modelName] === 'undefined') {
+        var swaggerModel = new SwaggerModel(modelName, models[modelName]);
+        this.modelsArray.push(swaggerModel);
+        this.models[modelName] = swaggerModel;
+        this.rawModels[modelName] = models[modelName];
+      }
+    }
+    var output = [];
+    for (var i = 0; i < this.modelsArray.length; i++) {
+      var model = this.modelsArray[i];
+      output.push(model.setReferencedModels(this.models));
+    }
+    return output;
+  }
+};
+
+SwaggerResource.prototype.addOperations = function (resource_path, ops, consumes, produces) {
+  if (ops) {
+    var output = [];
+    for (var i = 0; i < ops.length; i++) {
+      var o = ops[i];
+      consumes = this.consumes;
+      produces = this.produces;
+      if (typeof o.consumes !== 'undefined')
+        consumes = o.consumes;
+      else
+        consumes = this.consumes;
+
+      if (typeof o.produces !== 'undefined')
+        produces = o.produces;
+      else
+        produces = this.produces;
+      var type = (o.type || o.responseClass);
+
+      if (type === 'array') {
+        ref = null;
+        if (o.items)
+          ref = o.items.type || o.items.$ref;
+        type = 'array[' + ref + ']';
+      }
+      var responseMessages = o.responseMessages;
+      var method = o.method;
+      if (o.httpMethod) {
+        method = o.httpMethod;
+      }
+      if (o.supportedContentTypes) {
+        consumes = o.supportedContentTypes;
+      }
+      if (o.errorResponses) {
+        responseMessages = o.errorResponses;
+        for (var j = 0; j < responseMessages.length; j++) {
+          r = responseMessages[j];
+          r.message = r.reason;
+          r.reason = null;
+        }
+      }
+      o.nickname = this.sanitize(o.nickname);
+      var op = new SwaggerOperation(o.nickname,
+          resource_path,
+          method,
+          o.parameters,
+          o.summary,
+          o.notes,
+          type,
+          responseMessages, 
+          this, 
+          consumes, 
+          produces, 
+          o.authorizations, 
+          o.deprecated);
+
+      this.operations[op.nickname] = op;
+      output.push(this.operationsArray.push(op));
+    }
+    return output;
+  }
+};
+
+SwaggerResource.prototype.sanitize = function (nickname) {
+  var op;
+  op = nickname.replace(/[\s!@#$%^&*()_+=\[{\]};:<>|.\/?,\\'""-]/g, '_');
+  op = op.replace(/((_){2,})/g, '_');
+  op = op.replace(/^(_)*/g, '');
+  op = op.replace(/([_])*$/g, '');
+  return op;
+};
+
+var SwaggerModel = function (modelName, obj) {
+  this.name = typeof obj.id !== 'undefined' ? obj.id : modelName;
+  this.properties = [];
+  var propertyName;
+  for (propertyName in obj.properties) {
+    if (obj.required) {
+      var value;
+      for (value in obj.required) {
+        if (propertyName === obj.required[value]) {
+          obj.properties[propertyName].required = true;
+        }
+      }
+    }
+    var prop = new SwaggerModelProperty(propertyName, obj.properties[propertyName], this);
+    this.properties.push(prop);
+  }
+};
+
+SwaggerModel.prototype.setReferencedModels = function (allModels) {
+  var results = [];
+  for (var i = 0; i < this.properties.length; i++) {
+    var property = this.properties[i];
+    var type = property.type || property.dataType;
+    if (allModels[type])
+      results.push(property.refModel = allModels[type]);
+    else if ((property.refDataType) && (allModels[property.refDataType]))
+      results.push(property.refModel = allModels[property.refDataType]);
+    else
+      results.push(void 0);
+  }
+  return results;
+};
+
+SwaggerModel.prototype.getMockSignature = function (modelsToIgnore) {
+  var i, prop, propertiesStr = [];
+  for (i = 0; i < this.properties.length; i++) {
+    prop = this.properties[i];
+    propertiesStr.push(prop.toString());
+  }
+
+  var strong = '<span class="strong">';
+  var strongClose = '</span>';
+  var classOpen = strong + this.name + ' {' + strongClose;
+  var classClose = strong + '}' + strongClose;
+  var returnVal = classOpen + '<div>' + propertiesStr.join(',</div><div>') + '</div>' + classClose;
+  if (!modelsToIgnore)
+    modelsToIgnore = [];
+  modelsToIgnore.push(this.name);
+
+  for (i = 0; i < this.properties.length; i++) {
+    prop = this.properties[i];
+    if ((prop.refModel) && modelsToIgnore.indexOf(prop.refModel.name) === -1) {
+      returnVal = returnVal + ('<br>' + prop.refModel.getMockSignature(modelsToIgnore));
+    }
+  }
+  return returnVal;
+};
+
+SwaggerModel.prototype.createJSONSample = function (modelsToIgnore) {
+  if (sampleModels[this.name]) {
+    return sampleModels[this.name];
+  }
+  else {
+    var result = {};
+    modelsToIgnore = (modelsToIgnore || []);
+    modelsToIgnore.push(this.name);
+    for (var i = 0; i < this.properties.length; i++) {
+      var prop = this.properties[i];
+      result[prop.name] = prop.getSampleValue(modelsToIgnore);
+    }
+    modelsToIgnore.pop(this.name);
+    return result;
+  }
+};
+
+var SwaggerModelProperty = function (name, obj, model) {
+  this.name = name;
+  this.dataType = obj.type || obj.dataType || obj.$ref;
+  this.isCollection = this.dataType && (this.dataType.toLowerCase() === 'array' || this.dataType.toLowerCase() === 'list' || this.dataType.toLowerCase() === 'set');
+  this.descr = obj.description;
+  this.required = obj.required;
+  this.defaultValue = applyModelPropertyMacro(obj, model);
+  if (obj.items) {
+    if (obj.items.type) {
+      this.refDataType = obj.items.type;
+    }
+    if (obj.items.$ref) {
+      this.refDataType = obj.items.$ref;
+    }
+  }
+  this.dataTypeWithRef = this.refDataType ? (this.dataType + '[' + this.refDataType + ']') : this.dataType;
+  if (obj.allowableValues) {
+    this.valueType = obj.allowableValues.valueType;
+    this.values = obj.allowableValues.values;
+    if (this.values) {
+      this.valuesString = '\'' + this.values.join('\' or \'') + '\'';
+    }
+  }
+  if (obj['enum']) {
+    this.valueType = 'string';
+    this.values = obj['enum'];
+    if (this.values) {
+      this.valueString = '\'' + this.values.join('\' or \'') + '\'';
+    }
+  }
+};
+
+SwaggerModelProperty.prototype.getSampleValue = function (modelsToIgnore) {
+  var result;
+  if ((this.refModel) && (modelsToIgnore.indexOf(this.refModel.name) === -1)) {
+    result = this.refModel.createJSONSample(modelsToIgnore);
+  } else {
+    if (this.isCollection) {
+      result = this.toSampleValue(this.refDataType);
+    } else {
+      result = this.toSampleValue(this.dataType);
+    }
+  }
+  if (this.isCollection) {
+    return [result];
+  } else {
+    return result;
+  }
+};
+
+SwaggerModelProperty.prototype.toSampleValue = function (value) {
+  var result;
+  if ((typeof this.defaultValue !== 'undefined') && this.defaultValue) {
+    result = this.defaultValue;
+  } else if (value === 'integer') {
+    result = 0;
+  } else if (value === 'boolean') {
+    result = false;
+  } else if (value === 'double' || value === 'number') {
+    result = 0.0;
+  } else if (value === 'string') {
+    result = '';
+  } else {
+    result = value;
+  }
+  return result;
+};
+
+SwaggerModelProperty.prototype.toString = function () {
+  var req = this.required ? 'propReq' : 'propOpt';
+  var str = '<span class="propName ' + req + '">' + this.name + '</span> (<span class="propType">' + this.dataTypeWithRef + '</span>';
+  if (!this.required) {
+    str += ', <span class="propOptKey">optional</span>';
+  }
+  str += ')';
+  if (this.values) {
+    str += ' = <span class="propVals">[\'' + this.values.join('\' or \'') + '\']</span>';
+  }
+  if (this.descr) {
+    str += ': <span class="propDesc">' + this.descr + '</span>';
+  }
+  return str;
+};
+
+var SwaggerOperation = function (nickname, path, method, parameters, summary, notes, type, responseMessages, resource, consumes, produces, authorizations, deprecated) {
+  var _this = this;
+
+  var errors = [];
+  this.nickname = (nickname || errors.push('SwaggerOperations must have a nickname.'));
+  this.path = (path || errors.push('SwaggerOperation ' + nickname + ' is missing path.'));
+  this.method = (method || errors.push('SwaggerOperation ' + nickname + ' is missing method.'));
+  this.parameters = parameters ? parameters : [];
+  this.summary = summary;
+  this.notes = notes;
+  this.type = type;
+  this.responseMessages = (responseMessages || []);
+  this.resource = (resource || errors.push('Resource is required'));
+  this.consumes = consumes;
+  this.produces = produces;
+  this.authorizations = typeof authorizations !== 'undefined' ? authorizations : resource.authorizations;
+  this.deprecated = deprecated;
+  this['do'] = __bind(this['do'], this);
+
+
+  if(typeof this.deprecated === 'string') {
+    switch(this.deprecated.toLowerCase()) {
+      case 'true': case 'yes': case '1': {
+        this.deprecated = true;
+        break;
+      }
+      case 'false': case 'no': case '0': case null: {
+        this.deprecated = false;
+        break;
+      }
+      default: this.deprecated = Boolean(this.deprecated);
+    }
+  }
+
+  if (errors.length > 0) {
+    console.error('SwaggerOperation errors', errors, arguments);
+    this.resource.api.fail(errors);
+  }
+
+  this.path = this.path.replace('{format}', 'json');
+  this.method = this.method.toLowerCase();
+  this.isGetMethod = this.method === 'get';
+
+  var i, j, v;
+  this.resourceName = this.resource.name;
+  if (typeof this.type !== 'undefined' && this.type === 'void')
+    this.type = null;
+  else {
+    this.responseClassSignature = this.getSignature(this.type, this.resource.models);
+    this.responseSampleJSON = this.getSampleJSON(this.type, this.resource.models);
+  }
+
+  for (i = 0; i < this.parameters.length; i++) {
+    var param = this.parameters[i];
+    // might take this away
+    param.name = param.name || param.type || param.dataType;
+    // for 1.1 compatibility
+    type = param.type || param.dataType;
+    if (type === 'array') {
+      type = 'array[' + (param.items.$ref ? param.items.$ref : param.items.type) + ']';
+    }
+    param.type = type;
+
+    if (type && type.toLowerCase() === 'boolean') {
+      param.allowableValues = {};
+      param.allowableValues.values = ['true', 'false'];
+    }
+    param.signature = this.getSignature(type, this.resource.models);
+    param.sampleJSON = this.getSampleJSON(type, this.resource.models);
+
+    var enumValue = param['enum'];
+    if (typeof enumValue !== 'undefined') {
+      param.isList = true;
+      param.allowableValues = {};
+      param.allowableValues.descriptiveValues = [];
+
+      for (j = 0; j < enumValue.length; j++) {
+        v = enumValue[j];
+        if (param.defaultValue) {
+          param.allowableValues.descriptiveValues.push({
+            value: String(v),
+            isDefault: (v === param.defaultValue)
+          });
+        }
+        else {
+          param.allowableValues.descriptiveValues.push({
+            value: String(v),
+            isDefault: false
+          });
+        }
+      }
+    }
+    else if (param.allowableValues) {
+      if (param.allowableValues.valueType === 'RANGE')
+        param.isRange = true;
+      else
+        param.isList = true;
+      if (param.allowableValues) {
+        param.allowableValues.descriptiveValues = [];
+        if (param.allowableValues.values) {
+          for (j = 0; j < param.allowableValues.values.length; j++) {
+            v = param.allowableValues.values[j];
+            if (param.defaultValue !== null) {
+              param.allowableValues.descriptiveValues.push({
+                value: String(v),
+                isDefault: (v === param.defaultValue)
+              });
+            }
+            else {
+              param.allowableValues.descriptiveValues.push({
+                value: String(v),
+                isDefault: false
+              });
+            }
+          }
+        }
+      }
+    }
+    param.defaultValue = applyParameterMacro(this, param);
+  }
+  var defaultSuccessCallback = this.resource.api.defaultSuccessCallback || null;
+  var defaultErrorCallback = this.resource.api.defaultErrorCallback || null;
+
+  this.resource[this.nickname] = function (args, opts, callback, error) {
+    var arg1, arg2, arg3, arg4;
+    if(typeof args === 'function') {  // right shift 3
+      arg1 = {}; arg2 = {}; arg3 = args; arg4 = opts;
+    }
+    else if(typeof args === 'object' && typeof opts === 'function') { // right shift 2
+      arg1 = args; arg2 = {}; arg3 = opts; arg4 = callback;
+    }
+    else {
+      arg1 = args; arg2 = opts; arg3 = callback; arg4 = error;
+    }
+    return _this['do'](arg1 || {}, arg2 || {}, arg3 || defaultSuccessCallback, arg4 || defaultErrorCallback);
+  };
+
+  this.resource[this.nickname].help = function (dontPrint) {
+    return _this.help(dontPrint);
+  };
+  this.resource[this.nickname].asCurl = function (args) {
+    return _this.asCurl(args);
+  };
+};
+
+SwaggerOperation.prototype.isListType = function (type) {
+  if (type && type.indexOf('[') >= 0) {
+    return type.substring(type.indexOf('[') + 1, type.indexOf(']'));
+  } else {
+    return void 0;
+  }
+};
+
+SwaggerOperation.prototype.getSignature = function (type, models) {
+  var isPrimitive, listType;
+  listType = this.isListType(type);
+  isPrimitive = ((typeof listType !== 'undefined') && models[listType]) || (typeof models[type] !== 'undefined') ? false : true;
+  if (isPrimitive) {
+    return type;
+  } else {
+    if (typeof listType !== 'undefined') {
+      return models[listType].getMockSignature();
+    } else {
+      return models[type].getMockSignature();
+    }
+  }
+};
+
+SwaggerOperation.prototype.getSampleJSON = function (type, models) {
+  var isPrimitive, listType, val;
+  listType = this.isListType(type);
+  isPrimitive = ((typeof listType !== 'undefined') && models[listType]) || (typeof models[type] !== 'undefined') ? false : true;
+  val = isPrimitive ? void 0 : (listType ? models[listType].createJSONSample() : models[type].createJSONSample());
+  if (val) {
+    val = listType ? [val] : val;
+    if (typeof val == 'string')
+      return val;
+    else if (typeof val === 'object') {
+      var t = val;
+      if (val instanceof Array && val.length > 0) {
+        t = val[0];
+      }
+      if (t.nodeName) {
+        var xmlString = new XMLSerializer().serializeToString(t);
+        return this.formatXml(xmlString);
+      }
+      else
+        return JSON.stringify(val, null, 2);
+    }
+    else
+      return val;
+  }
+};
+
+SwaggerOperation.prototype['do'] = function (args, opts, callback, error) {
+  var key, param, params, possibleParams = [], req, value;
+
+  if (typeof error !== 'function') {
+    error = function (xhr, textStatus, error) {
+      return log(xhr, textStatus, error);
+    };
+  }
+
+  if (typeof callback !== 'function') {
+    callback = function (response) {
+      var content;
+      content = null;
+      if (response !== null) {
+        content = response.data;
+      } else {
+        content = 'no data';
+      }
+      return log('default callback: ' + content);
+    };
+  }
+
+  params = {};
+  params.headers = [];
+  if (args.headers) {
+    params.headers = args.headers;
+    delete args.headers;
+  }
+  // allow override from the opts
+  if(opts && opts.responseContentType) {
+    params.headers['Content-Type'] = opts.responseContentType;
+  }
+  if(opts && opts.requestContentType) {
+    params.headers.Accept = opts.requestContentType;
+  }
+
+  for (var i = 0; i < this.parameters.length; i++) {
+    param = this.parameters[i];
+    if (param.paramType === 'header') {
+      if (typeof args[param.name] !== 'undefined')
+        params.headers[param.name] = args[param.name];
+    }
+    else if (param.paramType === 'form' || param.paramType.toLowerCase() === 'file')
+      possibleParams.push(param);
+    else if (param.paramType === 'body' && param.name !== 'body' && typeof args[param.name] !== 'undefined') {
+      if (args.body) {
+        throw new Error('Saw two body params in an API listing; expecting a max of one.');
+      }
+      args.body = args[param.name];
+    }
+  }
+
+  if (typeof args.body !== 'undefined') {
+    params.body = args.body;
+    delete args.body;
+  }
+
+  if (possibleParams) {
+    for (key in possibleParams) {
+      value = possibleParams[key];
+      if (args[value.name]) {
+        params[value.name] = args[value.name];
+      }
+    }
+  }
+
+  req = new SwaggerRequest(this.method, this.urlify(args), params, opts, callback, error, this);
+  if (opts.mock) {
+    return req;
+  } else {
+    return true;
+  }
+};
+
+SwaggerOperation.prototype.pathJson = function () {
+  return this.path.replace('{format}', 'json');
+};
+
+SwaggerOperation.prototype.pathXml = function () {
+  return this.path.replace('{format}', 'xml');
+};
+
+SwaggerOperation.prototype.encodePathParam = function (pathParam) {
+  var encParts, part, parts, _i, _len;
+  pathParam = pathParam.toString();
+  if (pathParam.indexOf('/') === -1) {
+    return encodeURIComponent(pathParam);
+  } else {
+    parts = pathParam.split('/');
+    encParts = [];
+    for (_i = 0, _len = parts.length; _i < _len; _i++) {
+      part = parts[_i];
+      encParts.push(encodeURIComponent(part));
+    }
+    return encParts.join('/');
+  }
+};
+
+SwaggerOperation.prototype.urlify = function (args) {
+  var i, j, param, url;
+  // ensure no double slashing...
+  if(this.resource.basePath.length > 1 && this.resource.basePath.slice(-1) === '/' && this.pathJson().charAt(0) === '/')
+    url = this.resource.basePath + this.pathJson().substring(1);
+  else
+    url = this.resource.basePath + this.pathJson();
+  var params = this.parameters;
+  for (i = 0; i < params.length; i++) {
+    param = params[i];
+    if (param.paramType === 'path') {
+      if (typeof args[param.name] !== 'undefined') {
+        // apply path params and remove from args
+        var reg = new RegExp('\\{\\s*?' + param.name + '[^\\{\\}\\/]*(?:\\{.*?\\}[^\\{\\}\\/]*)*\\}(?=(\\/?|$))', 'gi');
+        url = url.replace(reg, this.encodePathParam(args[param.name]));
+        delete args[param.name];
+      }
+      else
+        throw '' + param.name + ' is a required path param.';
+    }
+  }
+
+  var queryParams = '';
+  for (i = 0; i < params.length; i++) {
+    param = params[i];
+    if(param.paramType === 'query') {
+      if (queryParams !== '')
+        queryParams += '&';    
+      if (Array.isArray(param)) {
+        var output = '';   
+        for(j = 0; j < param.length; j++) {    
+          if(j > 0)    
+            output += ',';   
+          output += encodeURIComponent(param[j]);    
+        }    
+        queryParams += encodeURIComponent(param.name) + '=' + output;    
+      }
+      else {
+        if (typeof args[param.name] !== 'undefined') {
+          queryParams += encodeURIComponent(param.name) + '=' + encodeURIComponent(args[param.name]);
+        } else {
+          if (param.required)
+            throw '' + param.name + ' is a required query param.';
+        }
+      }
+    }
+  }
+  if ((queryParams) && queryParams.length > 0)
+    url += '?' + queryParams;
+  return url;
+};
+
+SwaggerOperation.prototype.supportHeaderParams = function () {
+  return this.resource.api.supportHeaderParams;
+};
+
+SwaggerOperation.prototype.supportedSubmitMethods = function () {
+  return this.resource.api.supportedSubmitMethods;
+};
+
+SwaggerOperation.prototype.getQueryParams = function (args) {
+  return this.getMatchingParams(['query'], args);
+};
+
+SwaggerOperation.prototype.getHeaderParams = function (args) {
+  return this.getMatchingParams(['header'], args);
+};
+
+SwaggerOperation.prototype.getMatchingParams = function (paramTypes, args) {
+  var matchingParams = {};
+  var params = this.parameters;
+  for (var i = 0; i < params.length; i++) {
+    param = params[i];
+    if (args && args[param.name])
+      matchingParams[param.name] = args[param.name];
+  }
+  var headers = this.resource.api.headers;
+  var name;
+  for (name in headers) {
+    var value = headers[name];
+    matchingParams[name] = value;
+  }
+  return matchingParams;
+};
+
+SwaggerOperation.prototype.help = function (dontPrint) {
+  var msg = this.nickname + ': ' + this.summary;
+  var params = this.parameters;
+  for (var i = 0; i < params.length; i++) {
+    var param = params[i];
+    msg += '\n* ' + param.name + (param.required ? ' (required)' : '') + " - " + param.description;
+  }
+  if(dontPrint)
+    return msg;
+  else {
+    console.log(msg);
+    return msg;
+  }
+};
+
+SwaggerOperation.prototype.asCurl = function (args) {
+  var results = [];
+  var i;
+
+  var headers = SwaggerRequest.prototype.setHeaders(args, {}, this);    
+  for(i = 0; i < this.parameters.length; i++) {
+    var param = this.parameters[i];
+    if(param.paramType && param.paramType === 'header' && args[param.name]) {
+      headers[param.name] = args[param.name];
+    }
+  }
+
+  var key;
+  for (key in headers) {
+    results.push('--header "' + key + ': ' + headers[key] + '"');
+  }
+  return 'curl ' + (results.join(' ')) + ' ' + this.urlify(args);
+};
+
+SwaggerOperation.prototype.formatXml = function (xml) {
+  var contexp, formatted, indent, lastType, lines, ln, pad, reg, transitions, wsexp, _fn, _i, _len;
+  reg = /(>)(<)(\/*)/g;
+  wsexp = /[ ]*(.*)[ ]+\n/g;
+  contexp = /(<.+>)(.+\n)/g;
+  xml = xml.replace(reg, '$1\n$2$3').replace(wsexp, '$1\n').replace(contexp, '$1\n$2');
+  pad = 0;
+  formatted = '';
+  lines = xml.split('\n');
+  indent = 0;
+  lastType = 'other';
+  transitions = {
+    'single->single': 0,
+    'single->closing': -1,
+    'single->opening': 0,
+    'single->other': 0,
+    'closing->single': 0,
+    'closing->closing': -1,
+    'closing->opening': 0,
+    'closing->other': 0,
+    'opening->single': 1,
+    'opening->closing': 0,
+    'opening->opening': 1,
+    'opening->other': 1,
+    'other->single': 0,
+    'other->closing': -1,
+    'other->opening': 0,
+    'other->other': 0
+  };
+  _fn = function (ln) {
+    var fromTo, j, key, padding, type, types, value;
+    types = {
+      single: Boolean(ln.match(/<.+\/>/)),
+      closing: Boolean(ln.match(/<\/.+>/)),
+      opening: Boolean(ln.match(/<[^!?].*>/))
+    };
+    type = ((function () {
+      var _results;
+      _results = [];
+      for (key in types) {
+        value = types[key];
+        if (value) {
+          _results.push(key);
+        }
+      }
+      return _results;
+    })())[0];
+    type = type === void 0 ? 'other' : type;
+    fromTo = lastType + '->' + type;
+    lastType = type;
+    padding = '';
+    indent += transitions[fromTo];
+    padding = ((function () {
+      var _j, _ref5, _results;
+      _results = [];
+      for (j = _j = 0, _ref5 = indent; 0 <= _ref5 ? _j < _ref5 : _j > _ref5; j = 0 <= _ref5 ? ++_j : --_j) {
+        _results.push('  ');
+      }
+      return _results;
+    })()).join('');
+    if (fromTo === 'opening->closing') {
+      formatted = formatted.substr(0, formatted.length - 1) + ln + '\n';
+    } else {
+      formatted += padding + ln + '\n';
+    }
+  };
+  for (_i = 0, _len = lines.length; _i < _len; _i++) {
+    ln = lines[_i];
+    _fn(ln);
+  }
+  return formatted;
+};
+
+var SwaggerRequest = function (type, url, params, opts, successCallback, errorCallback, operation, execution) {
+  var _this = this;
+  var errors = [];
+
+  this.useJQuery = (typeof operation.resource.useJQuery !== 'undefined' ? operation.resource.useJQuery : null);
+  this.type = (type || errors.push('SwaggerRequest type is required (get/post/put/delete/patch/options).'));
+  this.url = (url || errors.push('SwaggerRequest url is required.'));
+  this.params = params;
+  this.opts = opts;
+  this.successCallback = (successCallback || errors.push('SwaggerRequest successCallback is required.'));
+  this.errorCallback = (errorCallback || errors.push('SwaggerRequest error callback is required.'));
+  this.operation = (operation || errors.push('SwaggerRequest operation is required.'));
+  this.execution = execution;
+  this.headers = (params.headers || {});
+
+  if (errors.length > 0) {
+    throw errors;
+  }
+
+  this.type = this.type.toUpperCase();
+
+  // set request, response content type headers
+  var headers = this.setHeaders(params, opts, this.operation);
+  var body = params.body;
+
+  // encode the body for form submits
+  if (headers['Content-Type']) {
+    var key, value, values = {}, i;
+    var operationParams = this.operation.parameters;
+    for (i = 0; i < operationParams.length; i++) {
+      var param = operationParams[i];
+      if (param.paramType === 'form')
+        values[param.name] = param;
+    }
+
+    if (headers['Content-Type'].indexOf('application/x-www-form-urlencoded') === 0) {
+      var encoded = '';
+      for (key in values) {
+        value = this.params[key];
+        if (typeof value !== 'undefined') {
+          if (encoded !== '')
+            encoded += '&';
+          encoded += encodeURIComponent(key) + '=' + encodeURIComponent(value);
+        }
+      }
+      body = encoded;
+    }
+    else if (headers['Content-Type'].indexOf('multipart/form-data') === 0) {
+      // encode the body for form submits
+      var data = '';
+      var boundary = '----SwaggerFormBoundary' + Date.now();
+      for (key in values) {
+        value = this.params[key];
+        if (typeof value !== 'undefined') {
+          data += '--' + boundary + '\n';
+          data += 'Content-Disposition: form-data; name="' + key + '"';
+          data += '\n\n';
+          data += value + '\n';
+        }
+      }
+      data += '--' + boundary + '--\n';
+      headers['Content-Type'] = 'multipart/form-data; boundary=' + boundary;
+      body = data;
+    }
+  }
+
+  var obj;
+  if (!((this.headers) && (this.headers.mock))) {
+    obj = {
+      url: this.url,
+      method: this.type,
+      headers: headers,
+      body: body,
+      useJQuery: this.useJQuery,
+      on: {
+        error: function (response) {
+          return _this.errorCallback(response, _this.opts.parent);
+        },
+        redirect: function (response) {
+          return _this.successCallback(response, _this.opts.parent);
+        },
+        307: function (response) {
+          return _this.successCallback(response, _this.opts.parent);
+        },
+        response: function (response) {
+          return _this.successCallback(response, _this.opts.parent);
+        }
+      }
+    };
+
+    var status = false;
+    if (this.operation.resource && this.operation.resource.api && this.operation.resource.api.clientAuthorizations) {
+      // Get the client authorizations from the resource declaration
+      status = this.operation.resource.api.clientAuthorizations.apply(obj, this.operation.authorizations);
+    } else {
+      // Get the client authorization from the default authorization declaration
+      var e;
+      if (typeof window !== 'undefined') {
+        e = window;
+      } else {
+        e = exports;
+      }
+      status = e.authorizations.apply(obj, this.operation.authorizations);
+    }
+
+    if (!opts.mock) {
+      if (status !== false) {
+        new SwaggerHttp().execute(obj);
+      } else {
+        obj.canceled = true;
+      }
+    } else {
+      return obj;
+    }
+  }
+  return obj;
+};
+
+SwaggerRequest.prototype.setHeaders = function (params, opts, operation) {
+  // default type
+  var accepts = opts.responseContentType || 'application/json';
+  var consumes = opts.requestContentType || 'application/json';
+
+  var allDefinedParams = operation.parameters;
+  var definedFormParams = [];
+  var definedFileParams = [];
+  var body = params.body;
+  var headers = {};
+
+  // get params from the operation and set them in definedFileParams, definedFormParams, headers
+  var i;
+  for (i = 0; i < allDefinedParams.length; i++) {
+    var param = allDefinedParams[i];
+    if (param.paramType === 'form')
+      definedFormParams.push(param);
+    else if (param.paramType === 'file')
+      definedFileParams.push(param);
+    else if (param.paramType === 'header' && this.params.headers) {
+      var key = param.name;
+      var headerValue = this.params.headers[param.name];
+      if (typeof this.params.headers[param.name] !== 'undefined')
+        headers[key] = headerValue;
+    }
+  }
+
+  // if there's a body, need to set the accepts header via requestContentType
+  if (body && (this.type === 'POST' || this.type === 'PUT' || this.type === 'PATCH' || this.type === 'DELETE')) {
+    if (this.opts.requestContentType)
+      consumes = this.opts.requestContentType;
+  } else {
+    // if any form params, content type must be set
+    if (definedFormParams.length > 0) {
+      if (definedFileParams.length > 0)
+        consumes = 'multipart/form-data';
+      else
+        consumes = 'application/x-www-form-urlencoded';
+    }
+    else if (this.type === 'DELETE')
+      body = '{}';
+    else if (this.type != 'DELETE')
+      consumes = null;
+  }
+
+  if (consumes && this.operation.consumes) {
+    if (this.operation.consumes.indexOf(consumes) === -1) {
+      log('server doesn\'t consume ' + consumes + ', try ' + JSON.stringify(this.operation.consumes));
+    }
+  }
+
+  if (this.opts && this.opts.responseContentType) {
+    accepts = this.opts.responseContentType;
+  } else {
+    accepts = 'application/json';
+  }
+  if (accepts && operation.produces) {
+    if (operation.produces.indexOf(accepts) === -1) {
+      log('server can\'t produce ' + accepts);
+    }
+  }
+
+  if ((consumes && body !== '') || (consumes === 'application/x-www-form-urlencoded'))
+    headers['Content-Type'] = consumes;
+  if (accepts)
+    headers.Accept = accepts;
+  return headers;
+};
+
+/**
+ * SwaggerHttp is a wrapper for executing requests
+ */
+var SwaggerHttp = function() {};
+
+SwaggerHttp.prototype.execute = function(obj, opts) {
+  if(obj && (typeof obj.useJQuery === 'boolean'))
+    this.useJQuery = obj.useJQuery;
+  else
+    this.useJQuery = this.isIE8();
+
+  if(obj && typeof obj.body === 'object') {
+    if(obj.body.type && obj.body.type !== 'formData')
+      obj.body = JSON.stringify(obj.body);
+    else {
+      obj.contentType = false;
+      obj.processData = false;
+      // delete obj.cache;
+      delete obj.headers['Content-Type'];
+    }
+  }
+
+  if(this.useJQuery)
+    return new JQueryHttpClient(opts).execute(obj);
+  else
+    return new ShredHttpClient(opts).execute(obj);
+};
+
+SwaggerHttp.prototype.isIE8 = function() {
+  var detectedIE = false;
+  if (typeof navigator !== 'undefined' && navigator.userAgent) {
+    nav = navigator.userAgent.toLowerCase();
+    if (nav.indexOf('msie') !== -1) {
+      var version = parseInt(nav.split('msie')[1]);
+      if (version <= 8) {
+        detectedIE = true;
+      }
+    }
+  }
+  return detectedIE;
+};
+
+/*
+ * JQueryHttpClient lets a browser take advantage of JQuery's cross-browser magic.
+ * NOTE: when jQuery is available it will export both '$' and 'jQuery' to the global space.
+ *       Since we are using closures here we need to alias it for internal use.
+ */
+var JQueryHttpClient = function(options) {
+  "use strict";
+  if(!jQuery){
+    var jQuery = window.jQuery;
+  }
+};
+
+JQueryHttpClient.prototype.execute = function(obj) {
+  var cb = obj.on;
+  var request = obj;
+
+  obj.type = obj.method;
+  obj.cache = false;
+  delete obj.useJQuery;
+
+  /*
+  obj.beforeSend = function(xhr) {
+    var key, results;
+    if (obj.headers) {
+      results = [];
+      for (key in obj.headers) {
+        if (key.toLowerCase() === "content-type") {
+          results.push(obj.contentType = obj.headers[key]);
+        } else if (key.toLowerCase() === "accept") {
+          results.push(obj.accepts = obj.headers[key]);
+        } else {
+          results.push(xhr.setRequestHeader(key, obj.headers[key]));
+        }
+      }
+      return results;
+    }
+  };*/
+
+  obj.data = obj.body;
+  delete obj.body;
+  obj.complete = function(response, textStatus, opts) {
+    var headers = {},
+      headerArray = response.getAllResponseHeaders().split("\n");
+
+    for(var i = 0; i < headerArray.length; i++) {
+      var toSplit = headerArray[i].trim();
+      if(toSplit.length === 0)
+        continue;
+      var separator = toSplit.indexOf(":");
+      if(separator === -1) {
+        // Name but no value in the header
+        headers[toSplit] = null;
+        continue;
+      }
+      var name = toSplit.substring(0, separator).trim(),
+        value = toSplit.substring(separator + 1).trim();
+      headers[name] = value;
+    }
+
+    var out = {
+      url: request.url,
+      method: request.method,
+      status: response.status,
+      statusText: response.statusText,
+      data: response.responseText,
+      headers: headers
+    };
+
+    var contentType = (headers["content-type"]||headers["Content-Type"]||null);
+    if(contentType) {
+      if(contentType.indexOf("application/json") === 0 || contentType.indexOf("+json") > 0) {
+        try {
+          out.obj = response.responseJSON || JSON.parse(out.data) || {};
+        } catch (ex) {
+          // do not set out.obj
+          log("unable to parse JSON content");
+        }
+      }
+    }
+
+    if(response.status >= 200 && response.status < 300)
+      cb.response(out);
+    else if(response.status === 0 || (response.status >= 400 && response.status < 599))
+      cb.error(out);
+    else
+      return cb.response(out);
+  };
+
+  jQuery.support.cors = true;
+  return jQuery.ajax(obj);
+};
+
+/*
+ * ShredHttpClient is a light-weight, node or browser HTTP client
+ */
+var ShredHttpClient = function(opts) {
+  this.opts = (opts||{});
+  this.isInitialized = false;
+
+  var identity, toString;
+
+  if (typeof window !== 'undefined') {
+    this.Shred = require("./shred");
+    this.content = require("./shred/content");
+  }
+  else
+    this.Shred = require("shred");
+  this.shred = new this.Shred(opts);
+};
+
+ShredHttpClient.prototype.initShred = function () {
+  this.isInitialized = true;
+  this.registerProcessors(this.shred);
+};
+
+ShredHttpClient.prototype.registerProcessors = function(shred) {
+  var identity = function(x) {
+    return x;
+  };
+  var toString = function(x) {
+    return x.toString();
+  };
+
+  if (typeof window !== 'undefined') {
+    this.content.registerProcessor(["application/json; charset=utf-8", "application/json", "json"], {
+      parser: identity,
+      stringify: toString
+    });
+  } else {
+    this.Shred.registerProcessor(["application/json; charset=utf-8", "application/json", "json"], {
+      parser: identity,
+      stringify: toString
+    });
+  }
+};
+
+ShredHttpClient.prototype.execute = function(obj) {
+  if(!this.isInitialized)
+    this.initShred();
+
+  var cb = obj.on, res;
+  var transform = function(response) {
+    var out = {
+      headers: response._headers,
+      url: response.request.url,
+      method: response.request.method,
+      status: response.status,
+      data: response.content.data
+    };
+
+    var headers = response._headers.normalized || response._headers;
+    var contentType = (headers["content-type"]||headers["Content-Type"]||null);
+
+    if(contentType) {
+      if(contentType.indexOf("application/json") === 0 || contentType.indexOf("+json") > 0) {
+        if(response.content.data && response.content.data !== "")
+          try{
+            out.obj = JSON.parse(response.content.data);
+          }
+          catch (e) {
+            // unable to parse
+          }
+        else
+          out.obj = {};
+      }
+    }
+    return out;
+  };
+
+  // Transform an error into a usable response-like object
+  var transformError = function (error) {
+    var out = {
+      // Default to a status of 0 - The client will treat this as a generic permissions sort of error
+      status: 0,
+      data: error.message || error
+    };
+
+    if (error.code) {
+      out.obj = error;
+
+      if (error.code === 'ENOTFOUND' || error.code === 'ECONNREFUSED') {
+        // We can tell the client that this should be treated as a missing resource and not as a permissions thing
+        out.status = 404;
+      }
+    }
+    return out;
+  };
+
+  res = {
+    error: function (response) {
+      if (obj)
+        return cb.error(transform(response));
+    },
+    // Catch the Shred error raised when the request errors as it is made (i.e. No Response is coming)
+    request_error: function (err) {
+      if (obj)
+        return cb.error(transformError(err));
+    },
+    response: function (response) {
+      if (obj) {
+        return cb.response(transform(response));
+      }
+    }
+  };
+  if (obj) {
+    obj.on = res;
+  }
+  return this.shred.request(obj);
+};
+
+
+var e = (typeof window !== 'undefined' ? window : exports);
+
+e.authorizations = authorizations = new SwaggerAuthorizations();
+e.ApiKeyAuthorization = ApiKeyAuthorization;
+e.PasswordAuthorization = PasswordAuthorization;
+e.CookieAuthorization = CookieAuthorization;
+e.SwaggerClient = SwaggerClient;
+e.SwaggerApi = SwaggerClient;
+e.Operation = Operation;
+e.Model = Model;
+e.addModel = addModel;
+e.Resolver = Resolver;
 })();
\ No newline at end of file
-/*\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-var appName;\r
-var popupMask;\r
-var popupDialog;\r
-var clientId;\r
-var realm;\r
-var oauth2KeyName;\r
-var redirect_uri;\r
-\r
-function handleLogin() {\r
-  var scopes = [];\r
-\r
-  var auths = window.swaggerUi.api.authSchemes || window.swaggerUi.api.securityDefinitions;\r
-  if(auths) {\r
-    var key;\r
-    var defs = auths;\r
-    for(key in defs) {\r
-      var auth = defs[key];\r
-      if(auth.type === 'oauth2' && auth.scopes) {\r
-        oauth2KeyName = key;\r
-        var scope;\r
-        if(Array.isArray(auth.scopes)) {\r
-          // 1.2 support\r
-          var i;\r
-          for(i = 0; i < auth.scopes.length; i++) {\r
-            scopes.push(auth.scopes[i]);\r
-          }\r
-        }\r
-        else {\r
-          // 2.0 support\r
-          for(scope in auth.scopes) {\r
-            scopes.push({scope: scope, description: auth.scopes[scope]});\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-\r
-  if(window.swaggerUi.api\r
-    && window.swaggerUi.api.info) {\r
-    appName = window.swaggerUi.api.info.title;\r
-  }\r
-\r
-  popupDialog = $(\r
-    [\r
-      '<div class="api-popup-dialog">',\r
-      '<div class="api-popup-title">Select OAuth2.0 Scopes</div>',\r
-      '<div class="api-popup-content">',\r
-        '<p>Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.',\r
-          '<a href="#">Learn how to use</a>',\r
-        '</p>',\r
-        '<p><strong>' + appName + '</strong> API requires the following scopes. Select which ones you want to grant to Swagger UI.</p>',\r
-        '<ul class="api-popup-scopes">',\r
-        '</ul>',\r
-        '<p class="error-msg"></p>',\r
-        '<div class="api-popup-actions"><button class="api-popup-authbtn api-button green" type="button">Authorize</button><button class="api-popup-cancel api-button gray" type="button">Cancel</button></div>',\r
-      '</div>',\r
-      '</div>'].join(''));\r
-  $(document.body).append(popupDialog);\r
-\r
-  popup = popupDialog.find('ul.api-popup-scopes').empty();\r
-  for (i = 0; i < scopes.length; i ++) {\r
-    scope = scopes[i];\r
-    str = '<li><input type="checkbox" id="scope_' + i + '" scope="' + scope.scope + '"/>' + '<label for="scope_' + i + '">' + scope.scope;\r
-    if (scope.description) {\r
-      str += '<br/><span class="api-scope-desc">' + scope.description + '</span>';\r
-    }\r
-    str += '</label></li>';\r
-    popup.append(str);\r
-  }\r
-\r
-  var $win = $(window),\r
-    dw = $win.width(),\r
-    dh = $win.height(),\r
-    st = $win.scrollTop(),\r
-    dlgWd = popupDialog.outerWidth(),\r
-    dlgHt = popupDialog.outerHeight(),\r
-    top = (dh -dlgHt)/2 + st,\r
-    left = (dw - dlgWd)/2;\r
-\r
-  popupDialog.css({\r
-    top: (top < 0? 0 : top) + 'px',\r
-    left: (left < 0? 0 : left) + 'px'\r
-  });\r
-\r
-  popupDialog.find('button.api-popup-cancel').click(function() {\r
-    popupMask.hide();\r
-    popupDialog.hide();\r
-    popupDialog.empty();\r
-    popupDialog = [];\r
-  });\r
-\r
-  $('button.api-popup-authbtn').unbind();\r
-  popupDialog.find('button.api-popup-authbtn').click(function() {\r
-    popupMask.hide();\r
-    popupDialog.hide();\r
-\r
-    var authSchemes = window.swaggerUi.api.authSchemes;\r
-    var host = window.location;\r
-    var pathname = location.pathname.substring(0, location.pathname.lastIndexOf("/"));\r
-    var redirectUrl = host.protocol + '//' + host.host + pathname + '/o2c.html';\r
-    var url = null;\r
-\r
-    for (var key in authSchemes) {\r
-      if (authSchemes.hasOwnProperty(key)) {\r
-        var flow = authSchemes[key].flow;\r
-        \r
-        if(authSchemes[key].type === 'oauth2' && flow && (flow === 'implicit' || flow === 'accessCode')) {\r
-          var dets = authSchemes[key];\r
-          url = dets.authorizationUrl + '?response_type=' + (flow === 'implicit' ? 'token' : 'code');\r
-          window.swaggerUi.tokenName = dets.tokenName || 'access_token';\r
-          window.swaggerUi.tokenUrl = (flow === 'accessCode' ? dets.tokenUrl : null);          \r
-        }\r
-        else if(authSchemes[key].grantTypes) {\r
-          // 1.2 support\r
-          var o = authSchemes[key].grantTypes;\r
-          for(var t in o) {\r
-            if(o.hasOwnProperty(t) && t === 'implicit') {\r
-              var dets = o[t];\r
-              var ep = dets.loginEndpoint.url;\r
-              url = dets.loginEndpoint.url + '?response_type=token';\r
-              window.swaggerUi.tokenName = dets.tokenName;\r
-            }\r
-            else if (o.hasOwnProperty(t) && t === 'accessCode') {\r
-              var dets = o[t];\r
-              var ep = dets.tokenRequestEndpoint.url;\r
-              url = dets.tokenRequestEndpoint.url + '?response_type=code';\r
-              window.swaggerUi.tokenName = dets.tokenName;\r
-            }\r
-          }\r
-        }\r
-      }\r
-    }\r
-    var scopes = []\r
-    var o = $('.api-popup-scopes').find('input:checked');\r
-\r
-    for(k =0; k < o.length; k++) {\r
-      var scope = $(o[k]).attr('scope');\r
-      \r
-      if (scopes.indexOf(scope) === -1)\r
-        scopes.push(scope);\r
-    }\r
-\r
-    window.enabledScopes=scopes;\r
-\r
-    redirect_uri = redirectUrl;\r
-\r
-    url += '&redirect_uri=' + encodeURIComponent(redirectUrl);\r
-    url += '&realm=' + encodeURIComponent(realm);\r
-    url += '&client_id=' + encodeURIComponent(clientId);\r
-    url += '&scope=' + encodeURIComponent(scopes);\r
-\r
-    window.open(url);\r
-  });\r
-\r
-  popupMask.show();\r
-  popupDialog.show();\r
-  return;\r
-}\r
-\r
-\r
-function handleLogout() {\r
-  for(key in window.authorizations.authz){\r
-    window.authorizations.remove(key)\r
-  }\r
-  window.enabledScopes = null;\r
-  $('.api-ic.ic-on').addClass('ic-off');\r
-  $('.api-ic.ic-on').removeClass('ic-on');\r
-\r
-  // set the info box\r
-  $('.api-ic.ic-warning').addClass('ic-error');\r
-  $('.api-ic.ic-warning').removeClass('ic-warning');\r
-}\r
-\r
-function initOAuth(opts) {\r
-  var o = (opts||{});\r
-  var errors = [];\r
-\r
-  appName = (o.appName||errors.push('missing appName'));\r
-  popupMask = (o.popupMask||$('#api-common-mask'));\r
-  popupDialog = (o.popupDialog||$('.api-popup-dialog'));\r
-  clientId = (o.clientId||errors.push('missing client id'));\r
-  realm = (o.realm||errors.push('missing realm'));\r
-\r
-  if(errors.length > 0){\r
-    log('auth unable initialize oauth: ' + errors);\r
-    return;\r
-  }\r
-\r
-  $('pre code').each(function(i, e) {hljs.highlightBlock(e)});\r
-  $('.api-ic').unbind();\r
-  $('.api-ic').click(function(s) {\r
-    if($(s.target).hasClass('ic-off'))\r
-      handleLogin();\r
-    else {\r
-      handleLogout();\r
-    }\r
-    false;\r
-  });\r
-}\r
-\r
-function processOAuthCode(data) {\r
-  var params = {\r
-    'client_id': clientId,\r
-    'code': data.code,\r
-    'grant_type': 'authorization_code',\r
-    'redirect_uri': redirect_uri\r
-  }\r
-  $.ajax(\r
-  {\r
-    url : window.swaggerUi.tokenUrl,\r
-    type: "POST",\r
-    data: params,\r
-    success:function(data, textStatus, jqXHR) \r
-    {\r
-      onOAuthComplete(data);\r
-    },\r
-    error: function(jqXHR, textStatus, errorThrown) \r
-    {\r
-      onOAuthComplete("");\r
-    }\r
-  });\r
-}\r
-\r
-function onOAuthComplete(token) {\r
-  if(token) {\r
-    if(token.error) {\r
-      var checkbox = $('input[type=checkbox],.secured')\r
-      checkbox.each(function(pos){\r
-        checkbox[pos].checked = false;\r
-      });\r
-      alert(token.error);\r
-    }\r
-    else {\r
-      var b = token[window.swaggerUi.tokenName];\r
-      if(b){\r
-        // if all roles are satisfied\r
-        var o = null;\r
-        $.each($('.auth #api_information_panel'), function(k, v) {\r
-          var children = v;\r
-          if(children && children.childNodes) {\r
-            var requiredScopes = [];\r
-            $.each((children.childNodes), function (k1, v1){\r
-              var inner = v1.innerHTML;\r
-              if(inner)\r
-                requiredScopes.push(inner);\r
-            });\r
-            var diff = [];\r
-            for(var i=0; i < requiredScopes.length; i++) {\r
-              var s = requiredScopes[i];\r
-              if(window.enabledScopes && window.enabledScopes.indexOf(s) == -1) {\r
-                diff.push(s);\r
-              }\r
-            }\r
-            if(diff.length > 0){\r
-              o = v.parentNode;\r
-              $(o.parentNode).find('.api-ic.ic-on').addClass('ic-off');\r
-              $(o.parentNode).find('.api-ic.ic-on').removeClass('ic-on');\r
-\r
-              // sorry, not all scopes are satisfied\r
-              $(o).find('.api-ic').addClass('ic-warning');\r
-              $(o).find('.api-ic').removeClass('ic-error');\r
-            }\r
-            else {\r
-              o = v.parentNode;\r
-              $(o.parentNode).find('.api-ic.ic-off').addClass('ic-on');\r
-              $(o.parentNode).find('.api-ic.ic-off').removeClass('ic-off');\r
-\r
-              // all scopes are satisfied\r
-              $(o).find('.api-ic').addClass('ic-info');\r
-              $(o).find('.api-ic').removeClass('ic-warning');\r
-              $(o).find('.api-ic').removeClass('ic-error');          \r
-            }\r
-          }\r
-        });\r
-        window.authorizations.add(oauth2KeyName, new ApiKeyAuthorization('Authorization', 'Bearer ' + b, 'header'));\r
-      }\r
-    }\r
-  }\r
+/*
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var appName;
+var popupMask;
+var popupDialog;
+var clientId;
+var realm;
+var oauth2KeyName;
+var redirect_uri;
+
+function handleLogin() {
+  var scopes = [];
+
+  var auths = window.swaggerUi.api.authSchemes || window.swaggerUi.api.securityDefinitions;
+  if(auths) {
+    var key;
+    var defs = auths;
+    for(key in defs) {
+      var auth = defs[key];
+      if(auth.type === 'oauth2' && auth.scopes) {
+        oauth2KeyName = key;
+        var scope;
+        if(Array.isArray(auth.scopes)) {
+          // 1.2 support
+          var i;
+          for(i = 0; i < auth.scopes.length; i++) {
+            scopes.push(auth.scopes[i]);
+          }
+        }
+        else {
+          // 2.0 support
+          for(scope in auth.scopes) {
+            scopes.push({scope: scope, description: auth.scopes[scope]});
+          }
+        }
+      }
+    }
+  }
+
+  if(window.swaggerUi.api
+    && window.swaggerUi.api.info) {
+    appName = window.swaggerUi.api.info.title;
+  }
+
+  popupDialog = $(
+    [
+      '<div class="api-popup-dialog">',
+      '<div class="api-popup-title">Select OAuth2.0 Scopes</div>',
+      '<div class="api-popup-content">',
+        '<p>Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.',
+          '<a href="#">Learn how to use</a>',
+        '</p>',
+        '<p><strong>' + appName + '</strong> API requires the following scopes. Select which ones you want to grant to Swagger UI.</p>',
+        '<ul class="api-popup-scopes">',
+        '</ul>',
+        '<p class="error-msg"></p>',
+        '<div class="api-popup-actions"><button class="api-popup-authbtn api-button green" type="button">Authorize</button><button class="api-popup-cancel api-button gray" type="button">Cancel</button></div>',
+      '</div>',
+      '</div>'].join(''));
+  $(document.body).append(popupDialog);
+
+  popup = popupDialog.find('ul.api-popup-scopes').empty();
+  for (i = 0; i < scopes.length; i ++) {
+    scope = scopes[i];
+    str = '<li><input type="checkbox" id="scope_' + i + '" scope="' + scope.scope + '"/>' + '<label for="scope_' + i + '">' + scope.scope;
+    if (scope.description) {
+      str += '<br/><span class="api-scope-desc">' + scope.description + '</span>';
+    }
+    str += '</label></li>';
+    popup.append(str);
+  }
+
+  var $win = $(window),
+    dw = $win.width(),
+    dh = $win.height(),
+    st = $win.scrollTop(),
+    dlgWd = popupDialog.outerWidth(),
+    dlgHt = popupDialog.outerHeight(),
+    top = (dh -dlgHt)/2 + st,
+    left = (dw - dlgWd)/2;
+
+  popupDialog.css({
+    top: (top < 0? 0 : top) + 'px',
+    left: (left < 0? 0 : left) + 'px'
+  });
+
+  popupDialog.find('button.api-popup-cancel').click(function() {
+    popupMask.hide();
+    popupDialog.hide();
+    popupDialog.empty();
+    popupDialog = [];
+  });
+
+  $('button.api-popup-authbtn').unbind();
+  popupDialog.find('button.api-popup-authbtn').click(function() {
+    popupMask.hide();
+    popupDialog.hide();
+
+    var authSchemes = window.swaggerUi.api.authSchemes;
+    var host = window.location;
+    var pathname = location.pathname.substring(0, location.pathname.lastIndexOf("/"));
+    var redirectUrl = host.protocol + '//' + host.host + pathname + '/o2c.html';
+    var url = null;
+
+    for (var key in authSchemes) {
+      if (authSchemes.hasOwnProperty(key)) {
+        var flow = authSchemes[key].flow;
+        
+        if(authSchemes[key].type === 'oauth2' && flow && (flow === 'implicit' || flow === 'accessCode')) {
+          var dets = authSchemes[key];
+          url = dets.authorizationUrl + '?response_type=' + (flow === 'implicit' ? 'token' : 'code');
+          window.swaggerUi.tokenName = dets.tokenName || 'access_token';
+          window.swaggerUi.tokenUrl = (flow === 'accessCode' ? dets.tokenUrl : null);          
+        }
+        else if(authSchemes[key].grantTypes) {
+          // 1.2 support
+          var o = authSchemes[key].grantTypes;
+          for(var t in o) {
+            if(o.hasOwnProperty(t) && t === 'implicit') {
+              var dets = o[t];
+              var ep = dets.loginEndpoint.url;
+              url = dets.loginEndpoint.url + '?response_type=token';
+              window.swaggerUi.tokenName = dets.tokenName;
+            }
+            else if (o.hasOwnProperty(t) && t === 'accessCode') {
+              var dets = o[t];
+              var ep = dets.tokenRequestEndpoint.url;
+              url = dets.tokenRequestEndpoint.url + '?response_type=code';
+              window.swaggerUi.tokenName = dets.tokenName;
+            }
+          }
+        }
+      }
+    }
+    var scopes = []
+    var o = $('.api-popup-scopes').find('input:checked');
+
+    for(k =0; k < o.length; k++) {
+      var scope = $(o[k]).attr('scope');
+      
+      if (scopes.indexOf(scope) === -1)
+        scopes.push(scope);
+    }
+
+    window.enabledScopes=scopes;
+
+    redirect_uri = redirectUrl;
+
+    url += '&redirect_uri=' + encodeURIComponent(redirectUrl);
+    url += '&realm=' + encodeURIComponent(realm);
+    url += '&client_id=' + encodeURIComponent(clientId);
+    url += '&scope=' + encodeURIComponent(scopes);
+
+    window.open(url);
+  });
+
+  popupMask.show();
+  popupDialog.show();
+  return;
+}
+
+
+function handleLogout() {
+  for(key in window.authorizations.authz){
+    window.authorizations.remove(key)
+  }
+  window.enabledScopes = null;
+  $('.api-ic.ic-on').addClass('ic-off');
+  $('.api-ic.ic-on').removeClass('ic-on');
+
+  // set the info box
+  $('.api-ic.ic-warning').addClass('ic-error');
+  $('.api-ic.ic-warning').removeClass('ic-warning');
+}
+
+function initOAuth(opts) {
+  var o = (opts||{});
+  var errors = [];
+
+  appName = (o.appName||errors.push('missing appName'));
+  popupMask = (o.popupMask||$('#api-common-mask'));
+  popupDialog = (o.popupDialog||$('.api-popup-dialog'));
+  clientId = (o.clientId||errors.push('missing client id'));
+  realm = (o.realm||errors.push('missing realm'));
+
+  if(errors.length > 0){
+    log('auth unable initialize oauth: ' + errors);
+    return;
+  }
+
+  $('pre code').each(function(i, e) {hljs.highlightBlock(e)});
+  $('.api-ic').unbind();
+  $('.api-ic').click(function(s) {
+    if($(s.target).hasClass('ic-off'))
+      handleLogin();
+    else {
+      handleLogout();
+    }
+    false;
+  });
+}
+
+function processOAuthCode(data) {
+  var params = {
+    'client_id': clientId,
+    'code': data.code,
+    'grant_type': 'authorization_code',
+    'redirect_uri': redirect_uri
+  }
+  $.ajax(
+  {
+    url : window.swaggerUi.tokenUrl,
+    type: "POST",
+    data: params,
+    success:function(data, textStatus, jqXHR) 
+    {
+      onOAuthComplete(data);
+    },
+    error: function(jqXHR, textStatus, errorThrown) 
+    {
+      onOAuthComplete("");
+    }
+  });
+}
+
+function onOAuthComplete(token) {
+  if(token) {
+    if(token.error) {
+      var checkbox = $('input[type=checkbox],.secured')
+      checkbox.each(function(pos){
+        checkbox[pos].checked = false;
+      });
+      alert(token.error);
+    }
+    else {
+      var b = token[window.swaggerUi.tokenName];
+      if(b){
+        // if all roles are satisfied
+        var o = null;
+        $.each($('.auth #api_information_panel'), function(k, v) {
+          var children = v;
+          if(children && children.childNodes) {
+            var requiredScopes = [];
+            $.each((children.childNodes), function (k1, v1){
+              var inner = v1.innerHTML;
+              if(inner)
+                requiredScopes.push(inner);
+            });
+            var diff = [];
+            for(var i=0; i < requiredScopes.length; i++) {
+              var s = requiredScopes[i];
+              if(window.enabledScopes && window.enabledScopes.indexOf(s) == -1) {
+                diff.push(s);
+              }
+            }
+            if(diff.length > 0){
+              o = v.parentNode;
+              $(o.parentNode).find('.api-ic.ic-on').addClass('ic-off');
+              $(o.parentNode).find('.api-ic.ic-on').removeClass('ic-on');
+
+              // sorry, not all scopes are satisfied
+              $(o).find('.api-ic').addClass('ic-warning');
+              $(o).find('.api-ic').removeClass('ic-error');
+            }
+            else {
+              o = v.parentNode;
+              $(o.parentNode).find('.api-ic.ic-off').addClass('ic-on');
+              $(o.parentNode).find('.api-ic.ic-off').removeClass('ic-off');
+
+              // all scopes are satisfied
+              $(o).find('.api-ic').addClass('ic-info');
+              $(o).find('.api-ic').removeClass('ic-warning');
+              $(o).find('.api-ic').removeClass('ic-error');          
+            }
+          }
+        });
+        window.authorizations.add(oauth2KeyName, new ApiKeyAuthorization('Authorization', 'Bearer ' + b, 'header'));
+      }
+    }
+  }
 }
\ No newline at end of file
@@ -1,21 +1,21 @@
-/*\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-//     Underscore.js 1.7.0\r
-//     http://underscorejs.org\r
-//     (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\r
-//     Underscore may be freely distributed under the MIT license.\r
-(function(){var n=this,t=n._,r=Array.prototype,e=Object.prototype,u=Function.prototype,i=r.push,a=r.slice,o=r.concat,l=e.toString,c=e.hasOwnProperty,f=Array.isArray,s=Object.keys,p=u.bind,h=function(n){return n instanceof h?n:this instanceof h?void(this._wrapped=n):new h(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=h),exports._=h):n._=h,h.VERSION="1.7.0";var g=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}};h.iteratee=function(n,t,r){return null==n?h.identity:h.isFunction(n)?g(n,t,r):h.isObject(n)?h.matches(n):h.property(n)},h.each=h.forEach=function(n,t,r){if(null==n)return n;t=g(t,r);var e,u=n.length;if(u===+u)for(e=0;u>e;e++)t(n[e],e,n);else{var i=h.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},h.map=h.collect=function(n,t,r){if(null==n)return[];t=h.iteratee(t,r);for(var e,u=n.length!==+n.length&&h.keys(n),i=(u||n).length,a=Array(i),o=0;i>o;o++)e=u?u[o]:o,a[o]=t(n[e],e,n);return a};var v="Reduce of empty array with no initial value";h.reduce=h.foldl=h.inject=function(n,t,r,e){null==n&&(n=[]),t=g(t,e,4);var u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length,o=0;if(arguments.length<3){if(!a)throw new TypeError(v);r=n[i?i[o++]:o++]}for(;a>o;o++)u=i?i[o]:o,r=t(r,n[u],u,n);return r},h.reduceRight=h.foldr=function(n,t,r,e){null==n&&(n=[]),t=g(t,e,4);var u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length;if(arguments.length<3){if(!a)throw new TypeError(v);r=n[i?i[--a]:--a]}for(;a--;)u=i?i[a]:a,r=t(r,n[u],u,n);return r},h.find=h.detect=function(n,t,r){var e;return t=h.iteratee(t,r),h.some(n,function(n,r,u){return t(n,r,u)?(e=n,!0):void 0}),e},h.filter=h.select=function(n,t,r){var e=[];return null==n?e:(t=h.iteratee(t,r),h.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e)},h.reject=function(n,t,r){return h.filter(n,h.negate(h.iteratee(t)),r)},h.every=h.all=function(n,t,r){if(null==n)return!0;t=h.iteratee(t,r);var e,u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length;for(e=0;a>e;e++)if(u=i?i[e]:e,!t(n[u],u,n))return!1;return!0},h.some=h.any=function(n,t,r){if(null==n)return!1;t=h.iteratee(t,r);var e,u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length;for(e=0;a>e;e++)if(u=i?i[e]:e,t(n[u],u,n))return!0;return!1},h.contains=h.include=function(n,t){return null==n?!1:(n.length!==+n.length&&(n=h.values(n)),h.indexOf(n,t)>=0)},h.invoke=function(n,t){var r=a.call(arguments,2),e=h.isFunction(t);return h.map(n,function(n){return(e?t:n[t]).apply(n,r)})},h.pluck=function(n,t){return h.map(n,h.property(t))},h.where=function(n,t){return h.filter(n,h.matches(t))},h.findWhere=function(n,t){return h.find(n,h.matches(t))},h.max=function(n,t,r){var e,u,i=-1/0,a=-1/0;if(null==t&&null!=n){n=n.length===+n.length?n:h.values(n);for(var o=0,l=n.length;l>o;o++)e=n[o],e>i&&(i=e)}else t=h.iteratee(t,r),h.each(n,function(n,r,e){u=t(n,r,e),(u>a||u===-1/0&&i===-1/0)&&(i=n,a=u)});return i},h.min=function(n,t,r){var e,u,i=1/0,a=1/0;if(null==t&&null!=n){n=n.length===+n.length?n:h.values(n);for(var o=0,l=n.length;l>o;o++)e=n[o],i>e&&(i=e)}else t=h.iteratee(t,r),h.each(n,function(n,r,e){u=t(n,r,e),(a>u||1/0===u&&1/0===i)&&(i=n,a=u)});return i},h.shuffle=function(n){for(var t,r=n&&n.length===+n.length?n:h.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=h.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];return u},h.sample=function(n,t,r){return null==t||r?(n.length!==+n.length&&(n=h.values(n)),n[h.random(n.length-1)]):h.shuffle(n).slice(0,Math.max(0,t))},h.sortBy=function(n,t,r){return t=h.iteratee(t,r),h.pluck(h.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var m=function(n){return function(t,r,e){var u={};return r=h.iteratee(r,e),h.each(t,function(e,i){var a=r(e,i,t);n(u,e,a)}),u}};h.groupBy=m(function(n,t,r){h.has(n,r)?n[r].push(t):n[r]=[t]}),h.indexBy=m(function(n,t,r){n[r]=t}),h.countBy=m(function(n,t,r){h.has(n,r)?n[r]++:n[r]=1}),h.sortedIndex=function(n,t,r,e){r=h.iteratee(r,e,1);for(var u=r(t),i=0,a=n.length;a>i;){var o=i+a>>>1;r(n[o])<u?i=o+1:a=o}return i},h.toArray=function(n){return n?h.isArray(n)?a.call(n):n.length===+n.length?h.map(n,h.identity):h.values(n):[]},h.size=function(n){return null==n?0:n.length===+n.length?n.length:h.keys(n).length},h.partition=function(n,t,r){t=h.iteratee(t,r);var e=[],u=[];return h.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},h.first=h.head=h.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:0>t?[]:a.call(n,0,t)},h.initial=function(n,t,r){return a.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},h.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:a.call(n,Math.max(n.length-t,0))},h.rest=h.tail=h.drop=function(n,t,r){return a.call(n,null==t||r?1:t)},h.compact=function(n){return h.filter(n,h.identity)};var y=function(n,t,r,e){if(t&&h.every(n,h.isArray))return o.apply(e,n);for(var u=0,a=n.length;a>u;u++){var l=n[u];h.isArray(l)||h.isArguments(l)?t?i.apply(e,l):y(l,t,r,e):r||e.push(l)}return e};h.flatten=function(n,t){return y(n,t,!1,[])},h.without=function(n){return h.difference(n,a.call(arguments,1))},h.uniq=h.unique=function(n,t,r,e){if(null==n)return[];h.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=h.iteratee(r,e));for(var u=[],i=[],a=0,o=n.length;o>a;a++){var l=n[a];if(t)a&&i===l||u.push(l),i=l;else if(r){var c=r(l,a,n);h.indexOf(i,c)<0&&(i.push(c),u.push(l))}else h.indexOf(u,l)<0&&u.push(l)}return u},h.union=function(){return h.uniq(y(arguments,!0,!0,[]))},h.intersection=function(n){if(null==n)return[];for(var t=[],r=arguments.length,e=0,u=n.length;u>e;e++){var i=n[e];if(!h.contains(t,i)){for(var a=1;r>a&&h.contains(arguments[a],i);a++);a===r&&t.push(i)}}return t},h.difference=function(n){var t=y(a.call(arguments,1),!0,!0,[]);return h.filter(n,function(n){return!h.contains(t,n)})},h.zip=function(n){if(null==n)return[];for(var t=h.max(arguments,"length").length,r=Array(t),e=0;t>e;e++)r[e]=h.pluck(arguments,e);return r},h.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},h.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=h.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}for(;u>e;e++)if(n[e]===t)return e;return-1},h.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=n.length;for("number"==typeof r&&(e=0>r?e+r+1:Math.min(e,r+1));--e>=0;)if(n[e]===t)return e;return-1},h.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=r||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=Array(e),i=0;e>i;i++,n+=r)u[i]=n;return u};var d=function(){};h.bind=function(n,t){var r,e;if(p&&n.bind===p)return p.apply(n,a.call(arguments,1));if(!h.isFunction(n))throw new TypeError("Bind must be called on a function");return r=a.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(a.call(arguments)));d.prototype=n.prototype;var u=new d;d.prototype=null;var i=n.apply(u,r.concat(a.call(arguments)));return h.isObject(i)?i:u}},h.partial=function(n){var t=a.call(arguments,1);return function(){for(var r=0,e=t.slice(),u=0,i=e.length;i>u;u++)e[u]===h&&(e[u]=arguments[r++]);for(;r<arguments.length;)e.push(arguments[r++]);return n.apply(this,e)}},h.bindAll=function(n){var t,r,e=arguments.length;if(1>=e)throw new Error("bindAll must be passed function names");for(t=1;e>t;t++)r=arguments[t],n[r]=h.bind(n[r],n);return n},h.memoize=function(n,t){var r=function(e){var u=r.cache,i=t?t.apply(this,arguments):e;return h.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};return r.cache={},r},h.delay=function(n,t){var r=a.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},h.defer=function(n){return h.delay.apply(h,[n,1].concat(a.call(arguments,1)))},h.throttle=function(n,t,r){var e,u,i,a=null,o=0;r||(r={});var l=function(){o=r.leading===!1?0:h.now(),a=null,i=n.apply(e,u),a||(e=u=null)};return function(){var c=h.now();o||r.leading!==!1||(o=c);var f=t-(c-o);return e=this,u=arguments,0>=f||f>t?(clearTimeout(a),a=null,o=c,i=n.apply(e,u),a||(e=u=null)):a||r.trailing===!1||(a=setTimeout(l,f)),i}},h.debounce=function(n,t,r){var e,u,i,a,o,l=function(){var c=h.now()-a;t>c&&c>0?e=setTimeout(l,t-c):(e=null,r||(o=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,a=h.now();var c=r&&!e;return e||(e=setTimeout(l,t)),c&&(o=n.apply(i,u),i=u=null),o}},h.wrap=function(n,t){return h.partial(t,n)},h.negate=function(n){return function(){return!n.apply(this,arguments)}},h.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},h.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},h.before=function(n,t){var r;return function(){return--n>0?r=t.apply(this,arguments):t=null,r}},h.once=h.partial(h.before,2),h.keys=function(n){if(!h.isObject(n))return[];if(s)return s(n);var t=[];for(var r in n)h.has(n,r)&&t.push(r);return t},h.values=function(n){for(var t=h.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},h.pairs=function(n){for(var t=h.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},h.invert=function(n){for(var t={},r=h.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},h.functions=h.methods=function(n){var t=[];for(var r in n)h.isFunction(n[r])&&t.push(r);return t.sort()},h.extend=function(n){if(!h.isObject(n))return n;for(var t,r,e=1,u=arguments.length;u>e;e++){t=arguments[e];for(r in t)c.call(t,r)&&(n[r]=t[r])}return n},h.pick=function(n,t,r){var e,u={};if(null==n)return u;if(h.isFunction(t)){t=g(t,r);for(e in n){var i=n[e];t(i,e,n)&&(u[e]=i)}}else{var l=o.apply([],a.call(arguments,1));n=new Object(n);for(var c=0,f=l.length;f>c;c++)e=l[c],e in n&&(u[e]=n[e])}return u},h.omit=function(n,t,r){if(h.isFunction(t))t=h.negate(t);else{var e=h.map(o.apply([],a.call(arguments,1)),String);t=function(n,t){return!h.contains(e,t)}}return h.pick(n,t,r)},h.defaults=function(n){if(!h.isObject(n))return n;for(var t=1,r=arguments.length;r>t;t++){var e=arguments[t];for(var u in e)n[u]===void 0&&(n[u]=e[u])}return n},h.clone=function(n){return h.isObject(n)?h.isArray(n)?n.slice():h.extend({},n):n},h.tap=function(n,t){return t(n),n};var b=function(n,t,r,e){if(n===t)return 0!==n||1/n===1/t;if(null==n||null==t)return n===t;n instanceof h&&(n=n._wrapped),t instanceof h&&(t=t._wrapped);var u=l.call(n);if(u!==l.call(t))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case"[object Date]":case"[object Boolean]":return+n===+t}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]===n)return e[i]===t;var a=n.constructor,o=t.constructor;if(a!==o&&"constructor"in n&&"constructor"in t&&!(h.isFunction(a)&&a instanceof a&&h.isFunction(o)&&o instanceof o))return!1;r.push(n),e.push(t);var c,f;if("[object Array]"===u){if(c=n.length,f=c===t.length)for(;c--&&(f=b(n[c],t[c],r,e)););}else{var s,p=h.keys(n);if(c=p.length,f=h.keys(t).length===c)for(;c--&&(s=p[c],f=h.has(t,s)&&b(n[s],t[s],r,e)););}return r.pop(),e.pop(),f};h.isEqual=function(n,t){return b(n,t,[],[])},h.isEmpty=function(n){if(null==n)return!0;if(h.isArray(n)||h.isString(n)||h.isArguments(n))return 0===n.length;for(var t in n)if(h.has(n,t))return!1;return!0},h.isElement=function(n){return!(!n||1!==n.nodeType)},h.isArray=f||function(n){return"[object Array]"===l.call(n)},h.isObject=function(n){var t=typeof n;return"function"===t||"object"===t&&!!n},h.each(["Arguments","Function","String","Number","Date","RegExp"],function(n){h["is"+n]=function(t){return l.call(t)==="[object "+n+"]"}}),h.isArguments(arguments)||(h.isArguments=function(n){return h.has(n,"callee")}),"function"!=typeof/./&&(h.isFunction=function(n){return"function"==typeof n||!1}),h.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},h.isNaN=function(n){return h.isNumber(n)&&n!==+n},h.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"===l.call(n)},h.isNull=function(n){return null===n},h.isUndefined=function(n){return n===void 0},h.has=function(n,t){return null!=n&&c.call(n,t)},h.noConflict=function(){return n._=t,this},h.identity=function(n){return n},h.constant=function(n){return function(){return n}},h.noop=function(){},h.property=function(n){return function(t){return t[n]}},h.matches=function(n){var t=h.pairs(n),r=t.length;return function(n){if(null==n)return!r;n=new Object(n);for(var e=0;r>e;e++){var u=t[e],i=u[0];if(u[1]!==n[i]||!(i in n))return!1}return!0}},h.times=function(n,t,r){var e=Array(Math.max(0,n));t=g(t,r,1);for(var u=0;n>u;u++)e[u]=t(u);return e},h.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},h.now=Date.now||function(){return(new Date).getTime()};var _={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},w=h.invert(_),j=function(n){var t=function(t){return n[t]},r="(?:"+h.keys(n).join("|")+")",e=RegExp(r),u=RegExp(r,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};h.escape=j(_),h.unescape=j(w),h.result=function(n,t){if(null==n)return void 0;var r=n[t];return h.isFunction(r)?n[t]():r};var x=0;h.uniqueId=function(n){var t=++x+"";return n?n+t:t},h.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var A=/(.)^/,k={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},O=/\\|'|\r|\n|\u2028|\u2029/g,F=function(n){return"\\"+k[n]};h.template=function(n,t,r){!t&&r&&(t=r),t=h.defaults({},t,h.templateSettings);var e=RegExp([(t.escape||A).source,(t.interpolate||A).source,(t.evaluate||A).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,a,o){return i+=n.slice(u,o).replace(O,F),u=o+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":a&&(i+="';\n"+a+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var a=new Function(t.variable||"obj","_",i)}catch(o){throw o.source=i,o}var l=function(n){return a.call(this,n,h)},c=t.variable||"obj";return l.source="function("+c+"){\n"+i+"}",l},h.chain=function(n){var t=h(n);return t._chain=!0,t};var E=function(n){return this._chain?h(n).chain():n};h.mixin=function(n){h.each(h.functions(n),function(t){var r=h[t]=n[t];h.prototype[t]=function(){var n=[this._wrapped];return i.apply(n,arguments),E.call(this,r.apply(h,n))}})},h.mixin(h),h.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=r[n];h.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],E.call(this,r)}}),h.each(["concat","join","slice"],function(n){var t=r[n];h.prototype[n]=function(){return E.call(this,t.apply(this._wrapped,arguments))}}),h.prototype.value=function(){return this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return h})}).call(this);\r
+/*
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+//     Underscore.js 1.7.0
+//     http://underscorejs.org
+//     (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+//     Underscore may be freely distributed under the MIT license.
+(function(){var n=this,t=n._,r=Array.prototype,e=Object.prototype,u=Function.prototype,i=r.push,a=r.slice,o=r.concat,l=e.toString,c=e.hasOwnProperty,f=Array.isArray,s=Object.keys,p=u.bind,h=function(n){return n instanceof h?n:this instanceof h?void(this._wrapped=n):new h(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=h),exports._=h):n._=h,h.VERSION="1.7.0";var g=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}};h.iteratee=function(n,t,r){return null==n?h.identity:h.isFunction(n)?g(n,t,r):h.isObject(n)?h.matches(n):h.property(n)},h.each=h.forEach=function(n,t,r){if(null==n)return n;t=g(t,r);var e,u=n.length;if(u===+u)for(e=0;u>e;e++)t(n[e],e,n);else{var i=h.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},h.map=h.collect=function(n,t,r){if(null==n)return[];t=h.iteratee(t,r);for(var e,u=n.length!==+n.length&&h.keys(n),i=(u||n).length,a=Array(i),o=0;i>o;o++)e=u?u[o]:o,a[o]=t(n[e],e,n);return a};var v="Reduce of empty array with no initial value";h.reduce=h.foldl=h.inject=function(n,t,r,e){null==n&&(n=[]),t=g(t,e,4);var u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length,o=0;if(arguments.length<3){if(!a)throw new TypeError(v);r=n[i?i[o++]:o++]}for(;a>o;o++)u=i?i[o]:o,r=t(r,n[u],u,n);return r},h.reduceRight=h.foldr=function(n,t,r,e){null==n&&(n=[]),t=g(t,e,4);var u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length;if(arguments.length<3){if(!a)throw new TypeError(v);r=n[i?i[--a]:--a]}for(;a--;)u=i?i[a]:a,r=t(r,n[u],u,n);return r},h.find=h.detect=function(n,t,r){var e;return t=h.iteratee(t,r),h.some(n,function(n,r,u){return t(n,r,u)?(e=n,!0):void 0}),e},h.filter=h.select=function(n,t,r){var e=[];return null==n?e:(t=h.iteratee(t,r),h.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e)},h.reject=function(n,t,r){return h.filter(n,h.negate(h.iteratee(t)),r)},h.every=h.all=function(n,t,r){if(null==n)return!0;t=h.iteratee(t,r);var e,u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length;for(e=0;a>e;e++)if(u=i?i[e]:e,!t(n[u],u,n))return!1;return!0},h.some=h.any=function(n,t,r){if(null==n)return!1;t=h.iteratee(t,r);var e,u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length;for(e=0;a>e;e++)if(u=i?i[e]:e,t(n[u],u,n))return!0;return!1},h.contains=h.include=function(n,t){return null==n?!1:(n.length!==+n.length&&(n=h.values(n)),h.indexOf(n,t)>=0)},h.invoke=function(n,t){var r=a.call(arguments,2),e=h.isFunction(t);return h.map(n,function(n){return(e?t:n[t]).apply(n,r)})},h.pluck=function(n,t){return h.map(n,h.property(t))},h.where=function(n,t){return h.filter(n,h.matches(t))},h.findWhere=function(n,t){return h.find(n,h.matches(t))},h.max=function(n,t,r){var e,u,i=-1/0,a=-1/0;if(null==t&&null!=n){n=n.length===+n.length?n:h.values(n);for(var o=0,l=n.length;l>o;o++)e=n[o],e>i&&(i=e)}else t=h.iteratee(t,r),h.each(n,function(n,r,e){u=t(n,r,e),(u>a||u===-1/0&&i===-1/0)&&(i=n,a=u)});return i},h.min=function(n,t,r){var e,u,i=1/0,a=1/0;if(null==t&&null!=n){n=n.length===+n.length?n:h.values(n);for(var o=0,l=n.length;l>o;o++)e=n[o],i>e&&(i=e)}else t=h.iteratee(t,r),h.each(n,function(n,r,e){u=t(n,r,e),(a>u||1/0===u&&1/0===i)&&(i=n,a=u)});return i},h.shuffle=function(n){for(var t,r=n&&n.length===+n.length?n:h.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=h.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];return u},h.sample=function(n,t,r){return null==t||r?(n.length!==+n.length&&(n=h.values(n)),n[h.random(n.length-1)]):h.shuffle(n).slice(0,Math.max(0,t))},h.sortBy=function(n,t,r){return t=h.iteratee(t,r),h.pluck(h.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var m=function(n){return function(t,r,e){var u={};return r=h.iteratee(r,e),h.each(t,function(e,i){var a=r(e,i,t);n(u,e,a)}),u}};h.groupBy=m(function(n,t,r){h.has(n,r)?n[r].push(t):n[r]=[t]}),h.indexBy=m(function(n,t,r){n[r]=t}),h.countBy=m(function(n,t,r){h.has(n,r)?n[r]++:n[r]=1}),h.sortedIndex=function(n,t,r,e){r=h.iteratee(r,e,1);for(var u=r(t),i=0,a=n.length;a>i;){var o=i+a>>>1;r(n[o])<u?i=o+1:a=o}return i},h.toArray=function(n){return n?h.isArray(n)?a.call(n):n.length===+n.length?h.map(n,h.identity):h.values(n):[]},h.size=function(n){return null==n?0:n.length===+n.length?n.length:h.keys(n).length},h.partition=function(n,t,r){t=h.iteratee(t,r);var e=[],u=[];return h.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},h.first=h.head=h.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:0>t?[]:a.call(n,0,t)},h.initial=function(n,t,r){return a.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},h.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:a.call(n,Math.max(n.length-t,0))},h.rest=h.tail=h.drop=function(n,t,r){return a.call(n,null==t||r?1:t)},h.compact=function(n){return h.filter(n,h.identity)};var y=function(n,t,r,e){if(t&&h.every(n,h.isArray))return o.apply(e,n);for(var u=0,a=n.length;a>u;u++){var l=n[u];h.isArray(l)||h.isArguments(l)?t?i.apply(e,l):y(l,t,r,e):r||e.push(l)}return e};h.flatten=function(n,t){return y(n,t,!1,[])},h.without=function(n){return h.difference(n,a.call(arguments,1))},h.uniq=h.unique=function(n,t,r,e){if(null==n)return[];h.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=h.iteratee(r,e));for(var u=[],i=[],a=0,o=n.length;o>a;a++){var l=n[a];if(t)a&&i===l||u.push(l),i=l;else if(r){var c=r(l,a,n);h.indexOf(i,c)<0&&(i.push(c),u.push(l))}else h.indexOf(u,l)<0&&u.push(l)}return u},h.union=function(){return h.uniq(y(arguments,!0,!0,[]))},h.intersection=function(n){if(null==n)return[];for(var t=[],r=arguments.length,e=0,u=n.length;u>e;e++){var i=n[e];if(!h.contains(t,i)){for(var a=1;r>a&&h.contains(arguments[a],i);a++);a===r&&t.push(i)}}return t},h.difference=function(n){var t=y(a.call(arguments,1),!0,!0,[]);return h.filter(n,function(n){return!h.contains(t,n)})},h.zip=function(n){if(null==n)return[];for(var t=h.max(arguments,"length").length,r=Array(t),e=0;t>e;e++)r[e]=h.pluck(arguments,e);return r},h.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},h.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=h.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}for(;u>e;e++)if(n[e]===t)return e;return-1},h.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=n.length;for("number"==typeof r&&(e=0>r?e+r+1:Math.min(e,r+1));--e>=0;)if(n[e]===t)return e;return-1},h.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=r||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=Array(e),i=0;e>i;i++,n+=r)u[i]=n;return u};var d=function(){};h.bind=function(n,t){var r,e;if(p&&n.bind===p)return p.apply(n,a.call(arguments,1));if(!h.isFunction(n))throw new TypeError("Bind must be called on a function");return r=a.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(a.call(arguments)));d.prototype=n.prototype;var u=new d;d.prototype=null;var i=n.apply(u,r.concat(a.call(arguments)));return h.isObject(i)?i:u}},h.partial=function(n){var t=a.call(arguments,1);return function(){for(var r=0,e=t.slice(),u=0,i=e.length;i>u;u++)e[u]===h&&(e[u]=arguments[r++]);for(;r<arguments.length;)e.push(arguments[r++]);return n.apply(this,e)}},h.bindAll=function(n){var t,r,e=arguments.length;if(1>=e)throw new Error("bindAll must be passed function names");for(t=1;e>t;t++)r=arguments[t],n[r]=h.bind(n[r],n);return n},h.memoize=function(n,t){var r=function(e){var u=r.cache,i=t?t.apply(this,arguments):e;return h.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};return r.cache={},r},h.delay=function(n,t){var r=a.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},h.defer=function(n){return h.delay.apply(h,[n,1].concat(a.call(arguments,1)))},h.throttle=function(n,t,r){var e,u,i,a=null,o=0;r||(r={});var l=function(){o=r.leading===!1?0:h.now(),a=null,i=n.apply(e,u),a||(e=u=null)};return function(){var c=h.now();o||r.leading!==!1||(o=c);var f=t-(c-o);return e=this,u=arguments,0>=f||f>t?(clearTimeout(a),a=null,o=c,i=n.apply(e,u),a||(e=u=null)):a||r.trailing===!1||(a=setTimeout(l,f)),i}},h.debounce=function(n,t,r){var e,u,i,a,o,l=function(){var c=h.now()-a;t>c&&c>0?e=setTimeout(l,t-c):(e=null,r||(o=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,a=h.now();var c=r&&!e;return e||(e=setTimeout(l,t)),c&&(o=n.apply(i,u),i=u=null),o}},h.wrap=function(n,t){return h.partial(t,n)},h.negate=function(n){return function(){return!n.apply(this,arguments)}},h.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},h.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},h.before=function(n,t){var r;return function(){return--n>0?r=t.apply(this,arguments):t=null,r}},h.once=h.partial(h.before,2),h.keys=function(n){if(!h.isObject(n))return[];if(s)return s(n);var t=[];for(var r in n)h.has(n,r)&&t.push(r);return t},h.values=function(n){for(var t=h.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},h.pairs=function(n){for(var t=h.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},h.invert=function(n){for(var t={},r=h.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},h.functions=h.methods=function(n){var t=[];for(var r in n)h.isFunction(n[r])&&t.push(r);return t.sort()},h.extend=function(n){if(!h.isObject(n))return n;for(var t,r,e=1,u=arguments.length;u>e;e++){t=arguments[e];for(r in t)c.call(t,r)&&(n[r]=t[r])}return n},h.pick=function(n,t,r){var e,u={};if(null==n)return u;if(h.isFunction(t)){t=g(t,r);for(e in n){var i=n[e];t(i,e,n)&&(u[e]=i)}}else{var l=o.apply([],a.call(arguments,1));n=new Object(n);for(var c=0,f=l.length;f>c;c++)e=l[c],e in n&&(u[e]=n[e])}return u},h.omit=function(n,t,r){if(h.isFunction(t))t=h.negate(t);else{var e=h.map(o.apply([],a.call(arguments,1)),String);t=function(n,t){return!h.contains(e,t)}}return h.pick(n,t,r)},h.defaults=function(n){if(!h.isObject(n))return n;for(var t=1,r=arguments.length;r>t;t++){var e=arguments[t];for(var u in e)n[u]===void 0&&(n[u]=e[u])}return n},h.clone=function(n){return h.isObject(n)?h.isArray(n)?n.slice():h.extend({},n):n},h.tap=function(n,t){return t(n),n};var b=function(n,t,r,e){if(n===t)return 0!==n||1/n===1/t;if(null==n||null==t)return n===t;n instanceof h&&(n=n._wrapped),t instanceof h&&(t=t._wrapped);var u=l.call(n);if(u!==l.call(t))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case"[object Date]":case"[object Boolean]":return+n===+t}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]===n)return e[i]===t;var a=n.constructor,o=t.constructor;if(a!==o&&"constructor"in n&&"constructor"in t&&!(h.isFunction(a)&&a instanceof a&&h.isFunction(o)&&o instanceof o))return!1;r.push(n),e.push(t);var c,f;if("[object Array]"===u){if(c=n.length,f=c===t.length)for(;c--&&(f=b(n[c],t[c],r,e)););}else{var s,p=h.keys(n);if(c=p.length,f=h.keys(t).length===c)for(;c--&&(s=p[c],f=h.has(t,s)&&b(n[s],t[s],r,e)););}return r.pop(),e.pop(),f};h.isEqual=function(n,t){return b(n,t,[],[])},h.isEmpty=function(n){if(null==n)return!0;if(h.isArray(n)||h.isString(n)||h.isArguments(n))return 0===n.length;for(var t in n)if(h.has(n,t))return!1;return!0},h.isElement=function(n){return!(!n||1!==n.nodeType)},h.isArray=f||function(n){return"[object Array]"===l.call(n)},h.isObject=function(n){var t=typeof n;return"function"===t||"object"===t&&!!n},h.each(["Arguments","Function","String","Number","Date","RegExp"],function(n){h["is"+n]=function(t){return l.call(t)==="[object "+n+"]"}}),h.isArguments(arguments)||(h.isArguments=function(n){return h.has(n,"callee")}),"function"!=typeof/./&&(h.isFunction=function(n){return"function"==typeof n||!1}),h.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},h.isNaN=function(n){return h.isNumber(n)&&n!==+n},h.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"===l.call(n)},h.isNull=function(n){return null===n},h.isUndefined=function(n){return n===void 0},h.has=function(n,t){return null!=n&&c.call(n,t)},h.noConflict=function(){return n._=t,this},h.identity=function(n){return n},h.constant=function(n){return function(){return n}},h.noop=function(){},h.property=function(n){return function(t){return t[n]}},h.matches=function(n){var t=h.pairs(n),r=t.length;return function(n){if(null==n)return!r;n=new Object(n);for(var e=0;r>e;e++){var u=t[e],i=u[0];if(u[1]!==n[i]||!(i in n))return!1}return!0}},h.times=function(n,t,r){var e=Array(Math.max(0,n));t=g(t,r,1);for(var u=0;n>u;u++)e[u]=t(u);return e},h.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},h.now=Date.now||function(){return(new Date).getTime()};var _={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},w=h.invert(_),j=function(n){var t=function(t){return n[t]},r="(?:"+h.keys(n).join("|")+")",e=RegExp(r),u=RegExp(r,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};h.escape=j(_),h.unescape=j(w),h.result=function(n,t){if(null==n)return void 0;var r=n[t];return h.isFunction(r)?n[t]():r};var x=0;h.uniqueId=function(n){var t=++x+"";return n?n+t:t},h.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var A=/(.)^/,k={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},O=/\\|'|\r|\n|\u2028|\u2029/g,F=function(n){return"\\"+k[n]};h.template=function(n,t,r){!t&&r&&(t=r),t=h.defaults({},t,h.templateSettings);var e=RegExp([(t.escape||A).source,(t.interpolate||A).source,(t.evaluate||A).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,a,o){return i+=n.slice(u,o).replace(O,F),u=o+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":a&&(i+="';\n"+a+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var a=new Function(t.variable||"obj","_",i)}catch(o){throw o.source=i,o}var l=function(n){return a.call(this,n,h)},c=t.variable||"obj";return l.source="function("+c+"){\n"+i+"}",l},h.chain=function(n){var t=h(n);return t._chain=!0,t};var E=function(n){return this._chain?h(n).chain():n};h.mixin=function(n){h.each(h.functions(n),function(t){var r=h[t]=n[t];h.prototype[t]=function(){var n=[this._wrapped];return i.apply(n,arguments),E.call(this,r.apply(h,n))}})},h.mixin(h),h.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=r[n];h.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],E.call(this,r)}}),h.each(["concat","join","slice"],function(n){var t=r[n];h.prototype[n]=function(){return E.call(this,t.apply(this._wrapped,arguments))}}),h.prototype.value=function(){return this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return h})}).call(this);
 //# sourceMappingURL=underscore-min.map
\ No newline at end of file
@@ -1,37 +1,37 @@
-<!--\r
-\r
-    Copyright 2016 ZTE Corporation.\r
-\r
-    Licensed under the Apache License, Version 2.0 (the "License");\r
-    you may not use this file except in compliance with the License.\r
-    You may obtain a copy of the License at\r
-\r
-        http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-    Unless required by applicable law or agreed to in writing, software\r
-    distributed under the License is distributed on an "AS IS" BASIS,\r
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-    See the License for the specific language governing permissions and\r
-    limitations under the License.\r
-\r
--->\r
-<script>\r
-var qp = null;\r
-if(window.location.hash) {\r
-  qp = location.hash.substring(1);\r
-}\r
-else {\r
-  qp = location.search.substring(1);\r
-}\r
-qp = qp ? JSON.parse('{"' + qp.replace(/&/g, '","').replace(/=/g,'":"') + '"}',\r
-  function(key, value) {\r
-    return key===""?value:decodeURIComponent(value) }\r
-  ):{}\r
-\r
-if (window.opener.swaggerUi.tokenUrl)\r
-    window.opener.processOAuthCode(qp);\r
-else\r
-    window.opener.onOAuthComplete(qp);\r
-\r
-window.close();\r
+<!--
+
+    Copyright 2016 ZTE Corporation.
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<script>
+var qp = null;
+if(window.location.hash) {
+  qp = location.hash.substring(1);
+}
+else {
+  qp = location.search.substring(1);
+}
+qp = qp ? JSON.parse('{"' + qp.replace(/&/g, '","').replace(/=/g,'":"') + '"}',
+  function(key, value) {
+    return key===""?value:decodeURIComponent(value) }
+  ):{}
+
+if (window.opener.swaggerUi.tokenUrl)
+    window.opener.processOAuthCode(qp);
+else
+    window.opener.onOAuthComplete(qp);
+
+window.close();
 </script>
\ No newline at end of file
-/*\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
+/*
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 /**
  * swagger-ui - Swagger UI is a dependency-free collection of HTML, Javascript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API
  * @version v2.1.8-M1
  * @link http://swagger.io
  * @license Apache 2.0
  */
-$(function() {\r
-\r
-       // Helper function for vertically aligning DOM elements\r
-       // http://www.seodenver.com/simple-vertical-align-plugin-for-jquery/\r
-       $.fn.vAlign = function() {\r
-               return this.each(function(i){\r
-               var ah = $(this).height();\r
-               var ph = $(this).parent().height();\r
-               var mh = (ph - ah) / 2;\r
-               $(this).css('margin-top', mh);\r
-               });\r
-       };\r
-\r
-       $.fn.stretchFormtasticInputWidthToParent = function() {\r
-               return this.each(function(i){\r
-               var p_width = $(this).closest("form").innerWidth();\r
-               var p_padding = parseInt($(this).closest("form").css('padding-left') ,10) + parseInt($(this).closest("form").css('padding-right'), 10);\r
-               var this_padding = parseInt($(this).css('padding-left'), 10) + parseInt($(this).css('padding-right'), 10);\r
-               $(this).css('width', p_width - p_padding - this_padding);\r
-               });\r
-       };\r
-\r
-       $('form.formtastic li.string input, form.formtastic textarea').stretchFormtasticInputWidthToParent();\r
-\r
-       // Vertically center these paragraphs\r
-       // Parent may need a min-height for this to work..\r
-       $('ul.downplayed li div.content p').vAlign();\r
-\r
-       // When a sandbox form is submitted..\r
-       $("form.sandbox").submit(function(){\r
-\r
-               var error_free = true;\r
-\r
-               // Cycle through the forms required inputs\r
-               $(this).find("input.required").each(function() {\r
-\r
-                       // Remove any existing error styles from the input\r
-                       $(this).removeClass('error');\r
-\r
-                       // Tack the error style on if the input is empty..\r
-                       if ($(this).val() == '') {\r
-                               $(this).addClass('error');\r
-                               $(this).wiggle();\r
-                               error_free = false;\r
-                       }\r
-\r
-               });\r
-\r
-               return error_free;\r
-       });\r
-\r
-});\r
-\r
-function clippyCopiedCallback(a) {\r
-  $('#api_key_copied').fadeIn().delay(1000).fadeOut();\r
-\r
-  // var b = $("#clippy_tooltip_" + a);\r
-  // b.length != 0 && (b.attr("title", "copied!").trigger("tipsy.reload"), setTimeout(function() {\r
-  //   b.attr("title", "copy to clipboard")\r
-  // },\r
-  // 500))\r
-}\r
-\r
-// Logging function that accounts for browsers that don't have window.console\r
-log = function(){\r
-  log.history = log.history || [];\r
-  log.history.push(arguments);\r
-  if(this.console){\r
-    console.log( Array.prototype.slice.call(arguments)[0] );\r
-  }\r
-};\r
-\r
-// Handle browsers that do console incorrectly (IE9 and below, see http://stackoverflow.com/a/5539378/7913)\r
-if (Function.prototype.bind && console && typeof console.log == "object") {\r
-    [\r
-      "log","info","warn","error","assert","dir","clear","profile","profileEnd"\r
-    ].forEach(function (method) {\r
-        console[method] = this.bind(console[method], console);\r
-    }, Function.prototype.call);\r
-}\r
-\r
-var Docs = {\r
-\r
-       shebang: function() {\r
-\r
-               // If shebang has an operation nickname in it..\r
-               // e.g. /docs/#!/words/get_search\r
-               var fragments = $.param.fragment().split('/');\r
-               fragments.shift(); // get rid of the bang\r
-\r
-               switch (fragments.length) {\r
-                       case 1:\r
-                               // Expand all operations for the resource and scroll to it\r
-                               var dom_id = 'resource_' + fragments[0];\r
-\r
-                               Docs.expandEndpointListForResource(fragments[0]);\r
-                               $("#"+dom_id).slideto({highlight: false});\r
-                               break;\r
-                       case 2:\r
-                               // Refer to the endpoint DOM element, e.g. #words_get_search\r
-\r
-        // Expand Resource\r
-        Docs.expandEndpointListForResource(fragments[0]);\r
-        $("#"+dom_id).slideto({highlight: false});\r
-\r
-        // Expand operation\r
-                               var li_dom_id = fragments.join('_');\r
-                               var li_content_dom_id = li_dom_id + "_content";\r
-\r
-\r
-                               Docs.expandOperation($('#'+li_content_dom_id));\r
-                               $('#'+li_dom_id).slideto({highlight: false});\r
-                               break;\r
-               }\r
-\r
-       },\r
-\r
-       toggleEndpointListForResource: function(resource) {\r
-               var elem = $('li#resource_' + Docs.escapeResourceName(resource) + ' ul.endpoints');\r
-               if (elem.is(':visible')) {\r
-                       Docs.collapseEndpointListForResource(resource);\r
-               } else {\r
-                       Docs.expandEndpointListForResource(resource);\r
-               }\r
-       },\r
-\r
-       // Expand resource\r
-       expandEndpointListForResource: function(resource) {\r
-               var resource = Docs.escapeResourceName(resource);\r
-               if (resource == '') {\r
-                       $('.resource ul.endpoints').slideDown();\r
-                       return;\r
-               }\r
-               \r
-               $('li#resource_' + resource).addClass('active');\r
-\r
-               var elem = $('li#resource_' + resource + ' ul.endpoints');\r
-               elem.slideDown();\r
-       },\r
-\r
-       // Collapse resource and mark as explicitly closed\r
-       collapseEndpointListForResource: function(resource) {\r
-               var resource = Docs.escapeResourceName(resource);\r
-               if (resource == '') {\r
-                       $('.resource ul.endpoints').slideUp();\r
-                       return;\r
-               }\r
-\r
-               $('li#resource_' + resource).removeClass('active');\r
-\r
-               var elem = $('li#resource_' + resource + ' ul.endpoints');\r
-               elem.slideUp();\r
-       },\r
-\r
-       expandOperationsForResource: function(resource) {\r
-               // Make sure the resource container is open..\r
-               Docs.expandEndpointListForResource(resource);\r
-               \r
-               if (resource == '') {\r
-                       $('.resource ul.endpoints li.operation div.content').slideDown();\r
-                       return;\r
-               }\r
-\r
-               $('li#resource_' + Docs.escapeResourceName(resource) + ' li.operation div.content').each(function() {\r
-                       Docs.expandOperation($(this));\r
-               });\r
-       },\r
-\r
-       collapseOperationsForResource: function(resource) {\r
-               // Make sure the resource container is open..\r
-               Docs.expandEndpointListForResource(resource);\r
-\r
-               if (resource == '') {\r
-                       $('.resource ul.endpoints li.operation div.content').slideUp();\r
-                       return;\r
-               }\r
-\r
-               $('li#resource_' + Docs.escapeResourceName(resource) + ' li.operation div.content').each(function() {\r
-                       Docs.collapseOperation($(this));\r
-               });\r
-       },\r
-\r
-       escapeResourceName: function(resource) {\r
-               return resource.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]\^`{|}~]/g, "\\$&");\r
-       },\r
-\r
-       expandOperation: function(elem) {\r
-               elem.slideDown();\r
-       },\r
-\r
-       collapseOperation: function(elem) {\r
-               elem.slideUp();\r
-       }\r
-};\r
+$(function() {
+
+       // Helper function for vertically aligning DOM elements
+       // http://www.seodenver.com/simple-vertical-align-plugin-for-jquery/
+       $.fn.vAlign = function() {
+               return this.each(function(i){
+               var ah = $(this).height();
+               var ph = $(this).parent().height();
+               var mh = (ph - ah) / 2;
+               $(this).css('margin-top', mh);
+               });
+       };
+
+       $.fn.stretchFormtasticInputWidthToParent = function() {
+               return this.each(function(i){
+               var p_width = $(this).closest("form").innerWidth();
+               var p_padding = parseInt($(this).closest("form").css('padding-left') ,10) + parseInt($(this).closest("form").css('padding-right'), 10);
+               var this_padding = parseInt($(this).css('padding-left'), 10) + parseInt($(this).css('padding-right'), 10);
+               $(this).css('width', p_width - p_padding - this_padding);
+               });
+       };
+
+       $('form.formtastic li.string input, form.formtastic textarea').stretchFormtasticInputWidthToParent();
+
+       // Vertically center these paragraphs
+       // Parent may need a min-height for this to work..
+       $('ul.downplayed li div.content p').vAlign();
+
+       // When a sandbox form is submitted..
+       $("form.sandbox").submit(function(){
+
+               var error_free = true;
+
+               // Cycle through the forms required inputs
+               $(this).find("input.required").each(function() {
+
+                       // Remove any existing error styles from the input
+                       $(this).removeClass('error');
+
+                       // Tack the error style on if the input is empty..
+                       if ($(this).val() == '') {
+                               $(this).addClass('error');
+                               $(this).wiggle();
+                               error_free = false;
+                       }
+
+               });
+
+               return error_free;
+       });
+
+});
+
+function clippyCopiedCallback(a) {
+  $('#api_key_copied').fadeIn().delay(1000).fadeOut();
+
+  // var b = $("#clippy_tooltip_" + a);
+  // b.length != 0 && (b.attr("title", "copied!").trigger("tipsy.reload"), setTimeout(function() {
+  //   b.attr("title", "copy to clipboard")
+  // },
+  // 500))
+}
+
+// Logging function that accounts for browsers that don't have window.console
+log = function(){
+  log.history = log.history || [];
+  log.history.push(arguments);
+  if(this.console){
+    console.log( Array.prototype.slice.call(arguments)[0] );
+  }
+};
+
+// Handle browsers that do console incorrectly (IE9 and below, see http://stackoverflow.com/a/5539378/7913)
+if (Function.prototype.bind && console && typeof console.log == "object") {
+    [
+      "log","info","warn","error","assert","dir","clear","profile","profileEnd"
+    ].forEach(function (method) {
+        console[method] = this.bind(console[method], console);
+    }, Function.prototype.call);
+}
+
+var Docs = {
+
+       shebang: function() {
+
+               // If shebang has an operation nickname in it..
+               // e.g. /docs/#!/words/get_search
+               var fragments = $.param.fragment().split('/');
+               fragments.shift(); // get rid of the bang
+
+               switch (fragments.length) {
+                       case 1:
+                               // Expand all operations for the resource and scroll to it
+                               var dom_id = 'resource_' + fragments[0];
+
+                               Docs.expandEndpointListForResource(fragments[0]);
+                               $("#"+dom_id).slideto({highlight: false});
+                               break;
+                       case 2:
+                               // Refer to the endpoint DOM element, e.g. #words_get_search
+
+        // Expand Resource
+        Docs.expandEndpointListForResource(fragments[0]);
+        $("#"+dom_id).slideto({highlight: false});
+
+        // Expand operation
+                               var li_dom_id = fragments.join('_');
+                               var li_content_dom_id = li_dom_id + "_content";
+
+
+                               Docs.expandOperation($('#'+li_content_dom_id));
+                               $('#'+li_dom_id).slideto({highlight: false});
+                               break;
+               }
+
+       },
+
+       toggleEndpointListForResource: function(resource) {
+               var elem = $('li#resource_' + Docs.escapeResourceName(resource) + ' ul.endpoints');
+               if (elem.is(':visible')) {
+                       Docs.collapseEndpointListForResource(resource);
+               } else {
+                       Docs.expandEndpointListForResource(resource);
+               }
+       },
+
+       // Expand resource
+       expandEndpointListForResource: function(resource) {
+               var resource = Docs.escapeResourceName(resource);
+               if (resource == '') {
+                       $('.resource ul.endpoints').slideDown();
+                       return;
+               }
+               
+               $('li#resource_' + resource).addClass('active');
+
+               var elem = $('li#resource_' + resource + ' ul.endpoints');
+               elem.slideDown();
+       },
+
+       // Collapse resource and mark as explicitly closed
+       collapseEndpointListForResource: function(resource) {
+               var resource = Docs.escapeResourceName(resource);
+               if (resource == '') {
+                       $('.resource ul.endpoints').slideUp();
+                       return;
+               }
+
+               $('li#resource_' + resource).removeClass('active');
+
+               var elem = $('li#resource_' + resource + ' ul.endpoints');
+               elem.slideUp();
+       },
+
+       expandOperationsForResource: function(resource) {
+               // Make sure the resource container is open..
+               Docs.expandEndpointListForResource(resource);
+               
+               if (resource == '') {
+                       $('.resource ul.endpoints li.operation div.content').slideDown();
+                       return;
+               }
+
+               $('li#resource_' + Docs.escapeResourceName(resource) + ' li.operation div.content').each(function() {
+                       Docs.expandOperation($(this));
+               });
+       },
+
+       collapseOperationsForResource: function(resource) {
+               // Make sure the resource container is open..
+               Docs.expandEndpointListForResource(resource);
+
+               if (resource == '') {
+                       $('.resource ul.endpoints li.operation div.content').slideUp();
+                       return;
+               }
+
+               $('li#resource_' + Docs.escapeResourceName(resource) + ' li.operation div.content').each(function() {
+                       Docs.collapseOperation($(this));
+               });
+       },
+
+       escapeResourceName: function(resource) {
+               return resource.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]\^`{|}~]/g, "\\$&");
+       },
+
+       expandOperation: function(elem) {
+               elem.slideDown();
+       },
+
+       collapseOperation: function(elem) {
+               elem.slideUp();
+       }
+};
 
 this["Handlebars"] = this["Handlebars"] || {};
 this["Handlebars"]["templates"] = this["Handlebars"]["templates"] || {};
@@ -1,17 +1,17 @@
-/*\r
- * Copyright 2016 ZTE Corporation.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-function clippyCopiedCallback(){$("#api_key_copied").fadeIn().delay(1e3).fadeOut()}$(function(){$.fn.vAlign=function(){return this.each(function(){var e=$(this).height(),t=$(this).parent().height(),n=(t-e)/2;$(this).css("margin-top",n)})},$.fn.stretchFormtasticInputWidthToParent=function(){return this.each(function(){var e=$(this).closest("form").innerWidth(),t=parseInt($(this).closest("form").css("padding-left"),10)+parseInt($(this).closest("form").css("padding-right"),10),n=parseInt($(this).css("padding-left"),10)+parseInt($(this).css("padding-right"),10);$(this).css("width",e-t-n)})},$("form.formtastic li.string input, form.formtastic textarea").stretchFormtasticInputWidthToParent(),$("ul.downplayed li div.content p").vAlign(),$("form.sandbox").submit(function(){var e=!0;return $(this).find("input.required").each(function(){$(this).removeClass("error"),""==$(this).val()&&($(this).addClass("error"),$(this).wiggle(),e=!1)}),e})}),log=function(){log.history=log.history||[],log.history.push(arguments),this.console&&console.log(Array.prototype.slice.call(arguments)[0])},Function.prototype.bind&&console&&"object"==typeof console.log&&["log","info","warn","error","assert","dir","clear","profile","profileEnd"].forEach(function(e){console[e]=this.bind(console[e],console)},Function.prototype.call);var Docs={shebang:function(){var e=$.param.fragment().split("/");switch(e.shift(),e.length){case 1:var t="resource_"+e[0];Docs.expandEndpointListForResource(e[0]),$("#"+t).slideto({highlight:!1});break;case 2:Docs.expandEndpointListForResource(e[0]),$("#"+t).slideto({highlight:!1});var n=e.join("_"),a=n+"_content";Docs.expandOperation($("#"+a)),$("#"+n).slideto({highlight:!1})}},toggleEndpointListForResource:function(e){var t=$("li#resource_"+Docs.escapeResourceName(e)+" ul.endpoints");t.is(":visible")?Docs.collapseEndpointListForResource(e):Docs.expandEndpointListForResource(e)},expandEndpointListForResource:function(e){var e=Docs.escapeResourceName(e);if(""==e)return void $(".resource ul.endpoints").slideDown();$("li#resource_"+e).addClass("active");var t=$("li#resource_"+e+" ul.endpoints");t.slideDown()},collapseEndpointListForResource:function(e){var e=Docs.escapeResourceName(e);if(""==e)return void $(".resource ul.endpoints").slideUp();$("li#resource_"+e).removeClass("active");var t=$("li#resource_"+e+" ul.endpoints");t.slideUp()},expandOperationsForResource:function(e){return Docs.expandEndpointListForResource(e),""==e?void $(".resource ul.endpoints li.operation div.content").slideDown():void $("li#resource_"+Docs.escapeResourceName(e)+" li.operation div.content").each(function(){Docs.expandOperation($(this))})},collapseOperationsForResource:function(e){return Docs.expandEndpointListForResource(e),""==e?void $(".resource ul.endpoints li.operation div.content").slideUp():void $("li#resource_"+Docs.escapeResourceName(e)+" li.operation div.content").each(function(){Docs.collapseOperation($(this))})},escapeResourceName:function(e){return e.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]\^`{|}~]/g,"\\$&")},expandOperation:function(e){e.slideDown()},collapseOperation:function(e){e.slideUp()}};this.Handlebars=this.Handlebars||{},this.Handlebars.templates=this.Handlebars.templates||{},this.Handlebars.templates.apikey_button_view=Handlebars.template({compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"<!--div class='auth_button' id='apikey_button'><img class='auth_icon' alt='apply api key' src='images/apikey.jpeg'></div-->\n<div class='auth_container' id='apikey_container'>\n  <div class='key_input_container'>\n    <div class='auth_label'>"+l((s=null!=(s=t.keyName||(null!=e?e.keyName:e))?s:r,typeof s===i?s.call(e,{name:"keyName",hash:{},data:a}):s))+'</div>\n    <input placeholder="api_key" class="auth_input" id="input_apiKey_entry" name="apiKey" type="text"/>\n    <div class=\'auth_submit\'><a class=\'auth_submit_button\' id="apply_api_key" href="#">apply</a></div>\n  </div>\n</div>\n\n'},useData:!0});var SwaggerUi,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;SwaggerUi=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.dom_id="swagger_ui",t.prototype.options=null,t.prototype.api=null,t.prototype.headerView=null,t.prototype.mainView=null,t.prototype.initialize=function(e){return null==e&&(e={}),null!=e.dom_id&&(this.dom_id=e.dom_id,delete e.dom_id),null==e.supportedSubmitMethods&&(e.supportedSubmitMethods=["get","put","post","delete","head","options","patch"]),null==$("#"+this.dom_id)&&$("body").append('<div id="'+this.dom_id+'"></div>'),this.options=e,this.options.success=function(e){return function(){return e.render()}}(this),this.options.progress=function(e){return function(t){return e.showMessage(t)}}(this),this.options.failure=function(e){return function(t){return e.onLoadFailure(t)}}(this),this.headerView=new HeaderView({el:$("#header")}),this.headerView.on("update-swagger-ui",function(e){return function(t){return e.updateSwaggerUi(t)}}(this))},t.prototype.setOption=function(e,t){return this.options[e]=t},t.prototype.getOption=function(e){return this.options[e]},t.prototype.updateSwaggerUi=function(e){return this.options.url=e.url,this.load()},t.prototype.load=function(){var e,t;return null!=(t=this.mainView)&&t.clear(),e=this.options.url,e&&0!==e.indexOf("http")&&(e=this.buildUrl(window.location.href.toString(),e)),this.options.url=e,this.headerView.update(e),this.api=new SwaggerClient(this.options)},t.prototype.collapseAll=function(){return Docs.collapseEndpointListForResource("")},t.prototype.listAll=function(){return Docs.collapseOperationsForResource("")},t.prototype.expandAll=function(){return Docs.expandOperationsForResource("")},t.prototype.render=function(){switch(this.showMessage("Finished Loading Resource Information. Rendering Swagger UI..."),this.mainView=new MainView({model:this.api,el:$("#"+this.dom_id),swaggerOptions:this.options}).render(),this.showMessage(),this.options.docExpansion){case"full":this.expandAll();break;case"list":this.listAll()}return this.renderGFM(),this.options.onComplete&&this.options.onComplete(this.api,this),setTimeout(function(){return function(){return Docs.shebang()}}(this),100)},t.prototype.buildUrl=function(e,t){var n,a;return 0===t.indexOf("/")?(a=e.split("/"),e=a[0]+"//"+a[2],e+t):(n=e.length,e.indexOf("?")>-1&&(n=Math.min(n,e.indexOf("?"))),e.indexOf("#")>-1&&(n=Math.min(n,e.indexOf("#"))),e=e.substring(0,n),-1!==e.indexOf("/",e.length-1)?e+t:e+"/"+t)},t.prototype.showMessage=function(e){return null==e&&(e=""),$("#message-bar").removeClass("message-fail"),$("#message-bar").addClass("message-success"),$("#message-bar").html(e)},t.prototype.onLoadFailure=function(e){var t;return null==e&&(e=""),$("#message-bar").removeClass("message-success"),$("#message-bar").addClass("message-fail"),t=$("#message-bar").html(e),null!=this.options.onFailure&&this.options.onFailure(e),t},t.prototype.renderGFM=function(e){return null==e&&(e=""),$(".markdown").each(function(){return $(this).html(marked($(this).html()))})},t}(Backbone.Router),window.SwaggerUi=SwaggerUi,this.Handlebars.templates.basic_auth_button_view=Handlebars.template({compiler:[6,">= 2.0.0-beta.1"],main:function(){return'<div class=\'auth_button\' id=\'basic_auth_button\'><img class=\'auth_icon\' src=\'images/password.jpeg\'></div>\n<div class=\'auth_container\' id=\'basic_auth_container\'>\n  <div class=\'key_input_container\'>\n    <div class="auth_label">Username</div>\n    <input placeholder="username" class="auth_input" id="input_username" name="username" type="text"/>\n    <div class="auth_label">Password</div>\n    <input placeholder="password" class="auth_input" id="input_password" name="password" type="password"/>\n    <div class=\'auth_submit\'><a class=\'auth_submit_button\' id="apply_basic_auth" href="#">apply</a></div>\n  </div>\n</div>\n\n'},useData:!0}),Handlebars.registerHelper("sanitize",function(e){return e=e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,""),new Handlebars.SafeString(e)}),this.Handlebars.templates.content_type=Handlebars.template({1:function(e,t,n,a){var s,i="";return s=t.each.call(e,null!=e?e.produces:e,{name:"each",hash:{},fn:this.program(2,a),inverse:this.noop,data:a}),null!=s&&(i+=s),i},2:function(e){var t,n=this.lambda,a='  <option value="';return t=n(e,e),null!=t&&(a+=t),a+='">',t=n(e,e),null!=t&&(a+=t),a+"</option>\n"},4:function(){return'  <option value="application/json">application/json</option>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i='<label for="contentType"></label>\n<select name="contentType">\n';return s=t["if"].call(e,null!=e?e.produces:e,{name:"if",hash:{},fn:this.program(1,a),inverse:this.program(4,a),data:a}),null!=s&&(i+=s),i+"</select>\n"},useData:!0});var ApiKeyButton,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;ApiKeyButton=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.initialize=function(){},t.prototype.render=function(){var e;return e=this.template(),$(this.el).html(e(this.model)),this},t.prototype.events={"click #apikey_button":"toggleApiKeyContainer","click #apply_api_key":"applyApiKey"},t.prototype.applyApiKey=function(){var e;return window.authorizations.add(this.model.name,new ApiKeyAuthorization(this.model.name,$("#input_apiKey_entry").val(),this.model["in"])),window.swaggerUi.load(),e=$("#apikey_container").show()},t.prototype.toggleApiKeyContainer=function(){var e;return $("#apikey_container").length>0?(e=$("#apikey_container").first(),e.is(":visible")?e.hide():($(".auth_container").hide(),e.show())):void 0},t.prototype.template=function(){return Handlebars.templates.apikey_button_view},t}(Backbone.View),this.Handlebars.templates.main=Handlebars.template({1:function(e,t,n,a){var s,i=this.lambda,r=this.escapeExpression,l='  <div class="info_title">'+r(i(null!=(s=null!=e?e.info:e)?s.title:s,e))+'</div>\n  <div class="info_description markdown">';return s=i(null!=(s=null!=e?e.info:e)?s.description:s,e),null!=s&&(l+=s),l+="</div>\n  ",s=t["if"].call(e,null!=(s=null!=e?e.info:e)?s.termsOfServiceUrl:s,{name:"if",hash:{},fn:this.program(2,a),inverse:this.noop,data:a}),null!=s&&(l+=s),l+="\n  ",s=t["if"].call(e,null!=(s=null!=(s=null!=e?e.info:e)?s.contact:s)?s.name:s,{name:"if",hash:{},fn:this.program(4,a),inverse:this.noop,data:a}),null!=s&&(l+=s),l+="\n  ",s=t["if"].call(e,null!=(s=null!=(s=null!=e?e.info:e)?s.contact:s)?s.url:s,{name:"if",hash:{},fn:this.program(6,a),inverse:this.noop,data:a}),null!=s&&(l+=s),l+="\n  ",s=t["if"].call(e,null!=(s=null!=(s=null!=e?e.info:e)?s.contact:s)?s.email:s,{name:"if",hash:{},fn:this.program(8,a),inverse:this.noop,data:a}),null!=s&&(l+=s),l+="\n  ",s=t["if"].call(e,null!=(s=null!=e?e.info:e)?s.license:s,{name:"if",hash:{},fn:this.program(10,a),inverse:this.noop,data:a}),null!=s&&(l+=s),l+"\n"},2:function(e){var t,n=this.lambda,a=this.escapeExpression;return'<div class="info_tos"><a href="'+a(n(null!=(t=null!=e?e.info:e)?t.termsOfServiceUrl:t,e))+'">Terms of service</a></div>'},4:function(e){var t,n=this.lambda,a=this.escapeExpression;return"<div class='info_name'>Created by "+a(n(null!=(t=null!=(t=null!=e?e.info:e)?t.contact:t)?t.name:t,e))+"</div>"},6:function(e){var t,n=this.lambda,a=this.escapeExpression;return"<div class='info_url'>See more at <a href=\""+a(n(null!=(t=null!=(t=null!=e?e.info:e)?t.contact:t)?t.url:t,e))+'">'+a(n(null!=(t=null!=(t=null!=e?e.info:e)?t.contact:t)?t.url:t,e))+"</a></div>"},8:function(e){var t,n=this.lambda,a=this.escapeExpression;return"<div class='info_email'><a href=\"mailto:"+a(n(null!=(t=null!=(t=null!=e?e.info:e)?t.contact:t)?t.email:t,e))+"?subject="+a(n(null!=(t=null!=e?e.info:e)?t.title:t,e))+'">Contact the developer</a></div>'},10:function(e){var t,n=this.lambda,a=this.escapeExpression;return"<div class='info_license'><a href='"+a(n(null!=(t=null!=(t=null!=e?e.info:e)?t.license:t)?t.url:t,e))+"'>"+a(n(null!=(t=null!=(t=null!=e?e.info:e)?t.license:t)?t.name:t,e))+"</a></div>"},12:function(e){var t,n=this.lambda,a=this.escapeExpression;return'    , <span style="font-variant: small-caps">api version</span>: '+a(n(null!=(t=null!=e?e.info:e)?t.version:t,e))+"\n    "},14:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return'    <span style="float:right"><a href="'+l((s=null!=(s=t.validatorUrl||(null!=e?e.validatorUrl:e))?s:r,typeof s===i?s.call(e,{name:"validatorUrl",hash:{},data:a}):s))+"/debug?url="+l((s=null!=(s=t.url||(null!=e?e.url:e))?s:r,typeof s===i?s.call(e,{name:"url",hash:{},data:a}):s))+'"><img id="validator" src="'+l((s=null!=(s=t.validatorUrl||(null!=e?e.validatorUrl:e))?s:r,typeof s===i?s.call(e,{name:"validatorUrl",hash:{},data:a}):s))+"?url="+l((s=null!=(s=t.url||(null!=e?e.url:e))?s:r,typeof s===i?s.call(e,{name:"url",hash:{},data:a}):s))+'"></a>\n    </span>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i,r="function",l=t.helperMissing,o=this.escapeExpression,p="<div class='info' id='api_info'>\n";return s=t["if"].call(e,null!=e?e.info:e,{name:"if",hash:{},fn:this.program(1,a),inverse:this.noop,data:a}),null!=s&&(p+=s),p+="</div>\n<div class='container' id='resources_container'>\n  <ul id='resources'></ul>\n\n  <div class=\"footer\">\n    <br>\n    <br>\n    <h4 style=\"color: #999\">[ <span style=\"font-variant: small-caps\">base url</span>: "+o((i=null!=(i=t.basePath||(null!=e?e.basePath:e))?i:l,typeof i===r?i.call(e,{name:"basePath",hash:{},data:a}):i))+"\n",s=t["if"].call(e,null!=(s=null!=e?e.info:e)?s.version:s,{name:"if",hash:{},fn:this.program(12,a),inverse:this.noop,data:a}),null!=s&&(p+=s),p+="]\n",s=t["if"].call(e,null!=e?e.validatorUrl:e,{name:"if",hash:{},fn:this.program(14,a),inverse:this.noop,data:a}),null!=s&&(p+=s),p+"    </h4>\n    </div>\n</div>\n"},useData:!0});var BasicAuthButton,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;BasicAuthButton=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.initialize=function(){},t.prototype.render=function(){var e;return e=this.template(),$(this.el).html(e(this.model)),this},t.prototype.events={"click #basic_auth_button":"togglePasswordContainer","click #apply_basic_auth":"applyPassword"},t.prototype.applyPassword=function(){var e,t,n;return n=$(".input_username").val(),t=$(".input_password").val(),window.authorizations.add(this.model.type,new PasswordAuthorization("basic",n,t)),window.swaggerUi.load(),e=$("#basic_auth_container").hide()},t.prototype.togglePasswordContainer=function(){var e;return $("#basic_auth_container").length>0?(e=$("#basic_auth_container").show(),e.is(":visible")?e.slideUp():($(".auth_container").hide(),e.show())):void 0},t.prototype.template=function(){return Handlebars.templates.basic_auth_button_view},t}(Backbone.View),this.Handlebars.templates.operation=Handlebars.template({1:function(){return"deprecated"},3:function(){return"            <h4>Warning: Deprecated</h4>\n"},5:function(e,t,n,a){var s,i,r="function",l=t.helperMissing,o='        <h4>Implementation Notes</h4>\n        <p class="markdown">';return i=null!=(i=t.description||(null!=e?e.description:e))?i:l,s=typeof i===r?i.call(e,{name:"description",hash:{},data:a}):i,null!=s&&(o+=s),o+"</p>\n"},7:function(){return'        <div class="auth">\n        <span class="api-ic ic-error"></span>'},9:function(e,t,n,a){var s,i='          <div id="api_information_panel" style="top: 526px; left: 776px; display: none;">\n';return s=t.each.call(e,e,{name:"each",hash:{},fn:this.program(10,a),inverse:this.noop,data:a}),null!=s&&(i+=s),i+"          </div>\n"},10:function(e){var t,n=this.lambda,a=this.escapeExpression,s="            <div title='";return t=n(null!=e?e.description:e,e),null!=t&&(s+=t),s+"'>"+a(n(null!=e?e.scope:e,e))+"</div>\n"},12:function(){return"</div>"},14:function(){return'        <div class=\'access\'>\n          <span class="api-ic ic-off" title="click to authenticate"></span>\n        </div>\n'},16:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"          <h4>Response Class (Status "+l((s=null!=(s=t.successCode||(null!=e?e.successCode:e))?s:r,typeof s===i?s.call(e,{name:"successCode",hash:{},data:a}):s))+')</h4>\n          <p><span class="model-signature" /></p>\n          <br/>\n          <div class="response-content-type" />\n'},18:function(){return'          <h4>Parameters</h4>\n          <table class=\'fullwidth\'>\n          <thead>\n            <tr>\n            <th style="width: 100px; max-width: 100px">Parameter</th>\n            <th style="width: 310px; max-width: 310px">Value</th>\n            <th style="width: 200px; max-width: 200px">Description</th>\n            <th style="width: 100px; max-width: 100px">Parameter Type</th>\n            <th style="width: 220px; max-width: 230px">Data Type</th>\n            </tr>\n          </thead>\n          <tbody class="operation-params">\n\n          </tbody>\n          </table>\n'},20:function(){return"          <div style='margin:0;padding:0;display:inline'></div>\n          <h4>Response Messages</h4>\n          <table class='fullwidth'>\n            <thead>\n            <tr>\n              <th>HTTP Status Code</th>\n              <th>Reason</th>\n              <th>Response Model</th>\n            </tr>\n            </thead>\n            <tbody class=\"operation-status\">\n            \n            </tbody>\n          </table>\n"},22:function(){return""},24:function(){return"          <div class='sandbox_header'>\n            <input class='submit' name='commit' type='button' value='Try it out!' />\n            <a href='#' class='response_hider' style='display:none'>Hide Response</a>\n            <span class='response_throbber' style='display:none'></span>\n          </div>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i,r,l="function",o=t.helperMissing,p=this.escapeExpression,u=t.blockHelperMissing,h="\n  <ul class='operations' >\n    <li class='"+p((i=null!=(i=t.method||(null!=e?e.method:e))?i:o,typeof i===l?i.call(e,{name:"method",hash:{},data:a}):i))+" operation' id='"+p((i=null!=(i=t.parentId||(null!=e?e.parentId:e))?i:o,typeof i===l?i.call(e,{name:"parentId",hash:{},data:a}):i))+"_"+p((i=null!=(i=t.nickname||(null!=e?e.nickname:e))?i:o,typeof i===l?i.call(e,{name:"nickname",hash:{},data:a}):i))+"'>\n      <div class='heading'>\n        <h3>\n          <span class='http_method'>\n          <a href='#!/"+p((i=null!=(i=t.parentId||(null!=e?e.parentId:e))?i:o,typeof i===l?i.call(e,{name:"parentId",hash:{},data:a}):i))+"/"+p((i=null!=(i=t.nickname||(null!=e?e.nickname:e))?i:o,typeof i===l?i.call(e,{name:"nickname",hash:{},data:a}):i))+'\' class="toggleOperation">'+p((i=null!=(i=t.method||(null!=e?e.method:e))?i:o,typeof i===l?i.call(e,{name:"method",hash:{},data:a}):i))+"</a>\n          </span>\n          <span class='path'>\n          <a href='#!/"+p((i=null!=(i=t.parentId||(null!=e?e.parentId:e))?i:o,typeof i===l?i.call(e,{name:"parentId",hash:{},data:a}):i))+"/"+p((i=null!=(i=t.nickname||(null!=e?e.nickname:e))?i:o,typeof i===l?i.call(e,{name:"nickname",hash:{},data:a}):i))+"' class=\"toggleOperation ";return s=t["if"].call(e,null!=e?e.deprecated:e,{name:"if",hash:{},fn:this.program(1,a),inverse:this.noop,data:a}),null!=s&&(h+=s),h+='">'+p((i=null!=(i=t.path||(null!=e?e.path:e))?i:o,typeof i===l?i.call(e,{name:"path",hash:{},data:a}):i))+"</a>\n          </span>\n        </h3>\n        <ul class='options'>\n          <li>\n          <a href='#!/"+p((i=null!=(i=t.parentId||(null!=e?e.parentId:e))?i:o,typeof i===l?i.call(e,{name:"parentId",hash:{},data:a}):i))+"/"+p((i=null!=(i=t.nickname||(null!=e?e.nickname:e))?i:o,typeof i===l?i.call(e,{name:"nickname",hash:{},data:a}):i))+'\' class="toggleOperation">',i=null!=(i=t.summary||(null!=e?e.summary:e))?i:o,s=typeof i===l?i.call(e,{name:"summary",hash:{},data:a}):i,null!=s&&(h+=s),h+="</a>\n          </li>\n        </ul>\n      </div>\n      <div class='content' id='"+p((i=null!=(i=t.parentId||(null!=e?e.parentId:e))?i:o,typeof i===l?i.call(e,{name:"parentId",hash:{},data:a}):i))+"_"+p((i=null!=(i=t.nickname||(null!=e?e.nickname:e))?i:o,typeof i===l?i.call(e,{name:"nickname",hash:{},data:a}):i))+"_content' style='display:none'>\n",s=t["if"].call(e,null!=e?e.deprecated:e,{name:"if",hash:{},fn:this.program(3,a),inverse:this.noop,data:a}),null!=s&&(h+=s),s=t["if"].call(e,null!=e?e.description:e,{name:"if",hash:{},fn:this.program(5,a),inverse:this.noop,data:a}),null!=s&&(h+=s),i=null!=(i=t.oauth||(null!=e?e.oauth:e))?i:o,r={name:"oauth",hash:{},fn:this.program(7,a),inverse:this.noop,data:a},s=typeof i===l?i.call(e,r):i,t.oauth||(s=u.call(e,s,r)),null!=s&&(h+=s),h+="\n",s=t.each.call(e,null!=e?e.oauth:e,{name:"each",hash:{},fn:this.program(9,a),inverse:this.noop,data:a}),null!=s&&(h+=s),h+="        ",i=null!=(i=t.oauth||(null!=e?e.oauth:e))?i:o,r={name:"oauth",hash:{},fn:this.program(12,a),inverse:this.noop,data:a},s=typeof i===l?i.call(e,r):i,t.oauth||(s=u.call(e,s,r)),null!=s&&(h+=s),h+="\n",i=null!=(i=t.oauth||(null!=e?e.oauth:e))?i:o,r={name:"oauth",hash:{},fn:this.program(14,a),inverse:this.noop,data:a},s=typeof i===l?i.call(e,r):i,t.oauth||(s=u.call(e,s,r)),null!=s&&(h+=s),s=t["if"].call(e,null!=e?e.type:e,{name:"if",hash:{},fn:this.program(16,a),inverse:this.noop,data:a}),null!=s&&(h+=s),h+="        <form accept-charset='UTF-8' class='sandbox'>\n          <div style='margin:0;padding:0;display:inline'></div>\n",s=t["if"].call(e,null!=e?e.parameters:e,{name:"if",hash:{},fn:this.program(18,a),inverse:this.noop,data:a}),null!=s&&(h+=s),s=t["if"].call(e,null!=e?e.responseMessages:e,{name:"if",hash:{},fn:this.program(20,a),inverse:this.noop,data:a}),null!=s&&(h+=s),s=t["if"].call(e,null!=e?e.isReadOnly:e,{name:"if",hash:{},fn:this.program(22,a),inverse:this.program(24,a),data:a}),null!=s&&(h+=s),h+"        </form>\n        <div class='response' style='display:none'>\n          <h4>Request URL</h4>\n          <div class='block request_url'></div>\n          <h4>Response Body</h4>\n          <div class='block response_body'></div>\n          <h4>Response Code</h4>\n          <div class='block response_code'></div>\n          <h4>Response Headers</h4>\n          <div class='block response_headers'></div>\n        </div>\n      </div>\n    </li>\n  </ul>\n"},useData:!0});var ContentTypeView,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;ContentTypeView=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.initialize=function(){},t.prototype.render=function(){var e;return e=this.template(),$(this.el).html(e(this.model)),$("label[for=contentType]",$(this.el)).text("Response Content Type"),this},t.prototype.template=function(){return Handlebars.templates.content_type},t}(Backbone.View),this.Handlebars.templates.param=Handlebars.template({1:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e.isFile:e,{name:"if",hash:{},fn:this.program(2,a),inverse:this.program(4,a),data:a}),null!=s&&(i+=s),i},2:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return'                       <input type="file" name=\''+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+'\'/>\n                       <div class="parameter-content-type" />\n'},4:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e["default"]:e,{name:"if",hash:{},fn:this.program(5,a),inverse:this.program(7,a),data:a}),null!=s&&(i+=s),i},5:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"                         <textarea class='body-textarea' name='"+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+"'>"+l((s=null!=(s=t["default"]||(null!=e?e["default"]:e))?s:r,typeof s===i?s.call(e,{name:"default",hash:{},data:a}):s))+'</textarea>\n        <br />\n        <div class="parameter-content-type" />\n'},7:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"                               <textarea class='body-textarea' name='"+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+'\'></textarea>\n                         <br />\n                                <div class="parameter-content-type" />\n'},9:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e.isFile:e,{name:"if",hash:{},fn:this.program(2,a),inverse:this.program(10,a),data:a}),null!=s&&(i+=s),i},10:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e["default"]:e,{name:"if",hash:{},fn:this.program(11,a),inverse:this.program(13,a),data:a}),null!=s&&(i+=s),i},11:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"                            <input class='parameter' minlength='0' name='"+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+"' placeholder='' type='text' value='"+l((s=null!=(s=t["default"]||(null!=e?e["default"]:e))?s:r,typeof s===i?s.call(e,{name:"default",hash:{},data:a}):s))+"'/>\n"},13:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"                             <input class='parameter' minlength='0' name='"+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+"' placeholder='' type='text' value=''/>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i,r="function",l=t.helperMissing,o=this.escapeExpression,p="<td class='code'>"+o((i=null!=(i=t.name||(null!=e?e.name:e))?i:l,typeof i===r?i.call(e,{name:"name",hash:{},data:a}):i))+"</td>\n<td>\n\n";return s=t["if"].call(e,null!=e?e.isBody:e,{name:"if",hash:{},fn:this.program(1,a),inverse:this.program(9,a),data:a}),null!=s&&(p+=s),p+='\n</td>\n<td class="markdown">',i=null!=(i=t.description||(null!=e?e.description:e))?i:l,s=typeof i===r?i.call(e,{name:"description",hash:{},data:a}):i,null!=s&&(p+=s),p+="</td>\n<td>",i=null!=(i=t.paramType||(null!=e?e.paramType:e))?i:l,s=typeof i===r?i.call(e,{name:"paramType",hash:{},data:a}):i,null!=s&&(p+=s),p+'</td>\n<td>\n      <span class="model-signature"></span>\n</td>\n'},useData:!0});var HeaderView,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;HeaderView=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.events={"click #show-pet-store-icon":"showPetStore","click #show-wordnik-dev-icon":"showWordnikDev","click #explore":"showCustom","keyup #input_baseUrl":"showCustomOnKeyup","keyup #input_apiKey":"showCustomOnKeyup"},t.prototype.initialize=function(){},t.prototype.showPetStore=function(){return this.trigger("update-swagger-ui",{url:"http://petstore.swagger.wordnik.com/api/api-docs"})},t.prototype.showWordnikDev=function(){return this.trigger("update-swagger-ui",{url:"http://api.wordnik.com/v4/resources.json"})},t.prototype.showCustomOnKeyup=function(e){return 13===e.keyCode?this.showCustom():void 0},t.prototype.showCustom=function(e){return null!=e&&e.preventDefault(),this.trigger("update-swagger-ui",{url:$("#input_baseUrl").val(),apiKey:$("#input_apiKey").val()})},t.prototype.update=function(e,t,n){return null==n&&(n=!1),$("#input_baseUrl").val(e),n?this.trigger("update-swagger-ui",{url:e}):void 0},t}(Backbone.View),this.Handlebars.templates.param_list=Handlebars.template({1:function(){return" multiple='multiple'"},3:function(){return""},5:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e["default"]:e,{name:"if",hash:{},fn:this.program(3,a),inverse:this.program(6,a),data:a}),null!=s&&(i+=s),i},6:function(e,t,n,a){var s,i=t.helperMissing,r="";return s=(t.isArray||e&&e.isArray||i).call(e,e,{name:"isArray",hash:{},fn:this.program(3,a),inverse:this.program(7,a),data:a}),null!=s&&(r+=s),r},7:function(){return"          <option selected=\"\" value=''></option>\n"},9:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e.isDefault:e,{name:"if",hash:{},fn:this.program(10,a),inverse:this.program(12,a),data:a}),null!=s&&(i+=s),i},10:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return'        <option selected="" value=\''+l((s=null!=(s=t.value||(null!=e?e.value:e))?s:r,typeof s===i?s.call(e,{name:"value",hash:{},data:a}):s))+"'>"+l((s=null!=(s=t.value||(null!=e?e.value:e))?s:r,typeof s===i?s.call(e,{name:"value",hash:{},data:a}):s))+" (default)</option>\n"},12:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"        <option value='"+l((s=null!=(s=t.value||(null!=e?e.value:e))?s:r,typeof s===i?s.call(e,{name:"value",hash:{},data:a}):s))+"'>"+l((s=null!=(s=t.value||(null!=e?e.value:e))?s:r,typeof s===i?s.call(e,{name:"value",hash:{},data:a}):s))+"</option>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i,r="function",l=t.helperMissing,o=this.escapeExpression,p="<td class='code'>"+o((i=null!=(i=t.name||(null!=e?e.name:e))?i:l,typeof i===r?i.call(e,{name:"name",hash:{},data:a}):i))+"</td>\n<td>\n  <select ";return s=(t.isArray||e&&e.isArray||l).call(e,e,{name:"isArray",hash:{},fn:this.program(1,a),inverse:this.noop,data:a}),null!=s&&(p+=s),p+=" class='parameter' name='"+o((i=null!=(i=t.name||(null!=e?e.name:e))?i:l,typeof i===r?i.call(e,{name:"name",hash:{},data:a}):i))+"'>\n",s=t["if"].call(e,null!=e?e.required:e,{name:"if",hash:{},fn:this.program(3,a),inverse:this.program(5,a),data:a}),null!=s&&(p+=s),s=t.each.call(e,null!=(s=null!=e?e.allowableValues:e)?s.descriptiveValues:s,{name:"each",hash:{},fn:this.program(9,a),inverse:this.noop,data:a}),null!=s&&(p+=s),p+='  </select>\n</td>\n<td class="markdown">',i=null!=(i=t.description||(null!=e?e.description:e))?i:l,s=typeof i===r?i.call(e,{name:"description",hash:{},data:a}):i,null!=s&&(p+=s),p+="</td>\n<td>",i=null!=(i=t.paramType||(null!=e?e.paramType:e))?i:l,s=typeof i===r?i.call(e,{name:"paramType",hash:{},data:a}):i,null!=s&&(p+=s),p+'</td>\n<td><span class="model-signature"></span></td>'},useData:!0});var MainView,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;MainView=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}var n;return __extends(t,e),n={alpha:function(e,t){return e.path.localeCompare(t.path)},method:function(e,t){return e.method.localeCompare(t.method)}},t.prototype.initialize=function(e){var t,n,a,s;null==e&&(e={}),this.model.auths=[],s=this.model.securityDefinitions;for(n in s)a=s[n],t={name:n,type:a.type,value:a},this.model.auths.push(t);return"2.0"===this.model.swaggerVersion?this.model.validatorUrl="validatorUrl"in e.swaggerOptions?e.swaggerOptions.validatorUrl:this.model.url.indexOf("localhost")>0?null:"http://online.swagger.io/validator":void 0},t.prototype.render=function(){var e,t,n,a,s,i,r,l,o,p;if(this.model.securityDefinitions)for(s in this.model.securityDefinitions)e=this.model.securityDefinitions[s],"apiKey"===e.type&&0===$("#apikey_button").length&&(t=new ApiKeyButton({model:e}).render().el,$(".auth_main_container").append(t)),"basicAuth"===e.type&&0===$("#basic_auth_button").length&&(t=new BasicAuthButton({model:e}).render().el,$(".auth_main_container").append(t));for($(this.el).html(Handlebars.templates.main(this.model)),r={},n=0,p=this.model.apisArray,l=0,o=p.length;o>l;l++){for(i=p[l],a=i.name;"undefined"!=typeof r[a];)a=a+"_"+n,n+=1;\r
+/*
+ * Copyright 2016 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+function clippyCopiedCallback(){$("#api_key_copied").fadeIn().delay(1e3).fadeOut()}$(function(){$.fn.vAlign=function(){return this.each(function(){var e=$(this).height(),t=$(this).parent().height(),n=(t-e)/2;$(this).css("margin-top",n)})},$.fn.stretchFormtasticInputWidthToParent=function(){return this.each(function(){var e=$(this).closest("form").innerWidth(),t=parseInt($(this).closest("form").css("padding-left"),10)+parseInt($(this).closest("form").css("padding-right"),10),n=parseInt($(this).css("padding-left"),10)+parseInt($(this).css("padding-right"),10);$(this).css("width",e-t-n)})},$("form.formtastic li.string input, form.formtastic textarea").stretchFormtasticInputWidthToParent(),$("ul.downplayed li div.content p").vAlign(),$("form.sandbox").submit(function(){var e=!0;return $(this).find("input.required").each(function(){$(this).removeClass("error"),""==$(this).val()&&($(this).addClass("error"),$(this).wiggle(),e=!1)}),e})}),log=function(){log.history=log.history||[],log.history.push(arguments),this.console&&console.log(Array.prototype.slice.call(arguments)[0])},Function.prototype.bind&&console&&"object"==typeof console.log&&["log","info","warn","error","assert","dir","clear","profile","profileEnd"].forEach(function(e){console[e]=this.bind(console[e],console)},Function.prototype.call);var Docs={shebang:function(){var e=$.param.fragment().split("/");switch(e.shift(),e.length){case 1:var t="resource_"+e[0];Docs.expandEndpointListForResource(e[0]),$("#"+t).slideto({highlight:!1});break;case 2:Docs.expandEndpointListForResource(e[0]),$("#"+t).slideto({highlight:!1});var n=e.join("_"),a=n+"_content";Docs.expandOperation($("#"+a)),$("#"+n).slideto({highlight:!1})}},toggleEndpointListForResource:function(e){var t=$("li#resource_"+Docs.escapeResourceName(e)+" ul.endpoints");t.is(":visible")?Docs.collapseEndpointListForResource(e):Docs.expandEndpointListForResource(e)},expandEndpointListForResource:function(e){var e=Docs.escapeResourceName(e);if(""==e)return void $(".resource ul.endpoints").slideDown();$("li#resource_"+e).addClass("active");var t=$("li#resource_"+e+" ul.endpoints");t.slideDown()},collapseEndpointListForResource:function(e){var e=Docs.escapeResourceName(e);if(""==e)return void $(".resource ul.endpoints").slideUp();$("li#resource_"+e).removeClass("active");var t=$("li#resource_"+e+" ul.endpoints");t.slideUp()},expandOperationsForResource:function(e){return Docs.expandEndpointListForResource(e),""==e?void $(".resource ul.endpoints li.operation div.content").slideDown():void $("li#resource_"+Docs.escapeResourceName(e)+" li.operation div.content").each(function(){Docs.expandOperation($(this))})},collapseOperationsForResource:function(e){return Docs.expandEndpointListForResource(e),""==e?void $(".resource ul.endpoints li.operation div.content").slideUp():void $("li#resource_"+Docs.escapeResourceName(e)+" li.operation div.content").each(function(){Docs.collapseOperation($(this))})},escapeResourceName:function(e){return e.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]\^`{|}~]/g,"\\$&")},expandOperation:function(e){e.slideDown()},collapseOperation:function(e){e.slideUp()}};this.Handlebars=this.Handlebars||{},this.Handlebars.templates=this.Handlebars.templates||{},this.Handlebars.templates.apikey_button_view=Handlebars.template({compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"<!--div class='auth_button' id='apikey_button'><img class='auth_icon' alt='apply api key' src='images/apikey.jpeg'></div-->\n<div class='auth_container' id='apikey_container'>\n  <div class='key_input_container'>\n    <div class='auth_label'>"+l((s=null!=(s=t.keyName||(null!=e?e.keyName:e))?s:r,typeof s===i?s.call(e,{name:"keyName",hash:{},data:a}):s))+'</div>\n    <input placeholder="api_key" class="auth_input" id="input_apiKey_entry" name="apiKey" type="text"/>\n    <div class=\'auth_submit\'><a class=\'auth_submit_button\' id="apply_api_key" href="#">apply</a></div>\n  </div>\n</div>\n\n'},useData:!0});var SwaggerUi,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;SwaggerUi=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.dom_id="swagger_ui",t.prototype.options=null,t.prototype.api=null,t.prototype.headerView=null,t.prototype.mainView=null,t.prototype.initialize=function(e){return null==e&&(e={}),null!=e.dom_id&&(this.dom_id=e.dom_id,delete e.dom_id),null==e.supportedSubmitMethods&&(e.supportedSubmitMethods=["get","put","post","delete","head","options","patch"]),null==$("#"+this.dom_id)&&$("body").append('<div id="'+this.dom_id+'"></div>'),this.options=e,this.options.success=function(e){return function(){return e.render()}}(this),this.options.progress=function(e){return function(t){return e.showMessage(t)}}(this),this.options.failure=function(e){return function(t){return e.onLoadFailure(t)}}(this),this.headerView=new HeaderView({el:$("#header")}),this.headerView.on("update-swagger-ui",function(e){return function(t){return e.updateSwaggerUi(t)}}(this))},t.prototype.setOption=function(e,t){return this.options[e]=t},t.prototype.getOption=function(e){return this.options[e]},t.prototype.updateSwaggerUi=function(e){return this.options.url=e.url,this.load()},t.prototype.load=function(){var e,t;return null!=(t=this.mainView)&&t.clear(),e=this.options.url,e&&0!==e.indexOf("http")&&(e=this.buildUrl(window.location.href.toString(),e)),this.options.url=e,this.headerView.update(e),this.api=new SwaggerClient(this.options)},t.prototype.collapseAll=function(){return Docs.collapseEndpointListForResource("")},t.prototype.listAll=function(){return Docs.collapseOperationsForResource("")},t.prototype.expandAll=function(){return Docs.expandOperationsForResource("")},t.prototype.render=function(){switch(this.showMessage("Finished Loading Resource Information. Rendering Swagger UI..."),this.mainView=new MainView({model:this.api,el:$("#"+this.dom_id),swaggerOptions:this.options}).render(),this.showMessage(),this.options.docExpansion){case"full":this.expandAll();break;case"list":this.listAll()}return this.renderGFM(),this.options.onComplete&&this.options.onComplete(this.api,this),setTimeout(function(){return function(){return Docs.shebang()}}(this),100)},t.prototype.buildUrl=function(e,t){var n,a;return 0===t.indexOf("/")?(a=e.split("/"),e=a[0]+"//"+a[2],e+t):(n=e.length,e.indexOf("?")>-1&&(n=Math.min(n,e.indexOf("?"))),e.indexOf("#")>-1&&(n=Math.min(n,e.indexOf("#"))),e=e.substring(0,n),-1!==e.indexOf("/",e.length-1)?e+t:e+"/"+t)},t.prototype.showMessage=function(e){return null==e&&(e=""),$("#message-bar").removeClass("message-fail"),$("#message-bar").addClass("message-success"),$("#message-bar").html(e)},t.prototype.onLoadFailure=function(e){var t;return null==e&&(e=""),$("#message-bar").removeClass("message-success"),$("#message-bar").addClass("message-fail"),t=$("#message-bar").html(e),null!=this.options.onFailure&&this.options.onFailure(e),t},t.prototype.renderGFM=function(e){return null==e&&(e=""),$(".markdown").each(function(){return $(this).html(marked($(this).html()))})},t}(Backbone.Router),window.SwaggerUi=SwaggerUi,this.Handlebars.templates.basic_auth_button_view=Handlebars.template({compiler:[6,">= 2.0.0-beta.1"],main:function(){return'<div class=\'auth_button\' id=\'basic_auth_button\'><img class=\'auth_icon\' src=\'images/password.jpeg\'></div>\n<div class=\'auth_container\' id=\'basic_auth_container\'>\n  <div class=\'key_input_container\'>\n    <div class="auth_label">Username</div>\n    <input placeholder="username" class="auth_input" id="input_username" name="username" type="text"/>\n    <div class="auth_label">Password</div>\n    <input placeholder="password" class="auth_input" id="input_password" name="password" type="password"/>\n    <div class=\'auth_submit\'><a class=\'auth_submit_button\' id="apply_basic_auth" href="#">apply</a></div>\n  </div>\n</div>\n\n'},useData:!0}),Handlebars.registerHelper("sanitize",function(e){return e=e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,""),new Handlebars.SafeString(e)}),this.Handlebars.templates.content_type=Handlebars.template({1:function(e,t,n,a){var s,i="";return s=t.each.call(e,null!=e?e.produces:e,{name:"each",hash:{},fn:this.program(2,a),inverse:this.noop,data:a}),null!=s&&(i+=s),i},2:function(e){var t,n=this.lambda,a='  <option value="';return t=n(e,e),null!=t&&(a+=t),a+='">',t=n(e,e),null!=t&&(a+=t),a+"</option>\n"},4:function(){return'  <option value="application/json">application/json</option>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i='<label for="contentType"></label>\n<select name="contentType">\n';return s=t["if"].call(e,null!=e?e.produces:e,{name:"if",hash:{},fn:this.program(1,a),inverse:this.program(4,a),data:a}),null!=s&&(i+=s),i+"</select>\n"},useData:!0});var ApiKeyButton,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;ApiKeyButton=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.initialize=function(){},t.prototype.render=function(){var e;return e=this.template(),$(this.el).html(e(this.model)),this},t.prototype.events={"click #apikey_button":"toggleApiKeyContainer","click #apply_api_key":"applyApiKey"},t.prototype.applyApiKey=function(){var e;return window.authorizations.add(this.model.name,new ApiKeyAuthorization(this.model.name,$("#input_apiKey_entry").val(),this.model["in"])),window.swaggerUi.load(),e=$("#apikey_container").show()},t.prototype.toggleApiKeyContainer=function(){var e;return $("#apikey_container").length>0?(e=$("#apikey_container").first(),e.is(":visible")?e.hide():($(".auth_container").hide(),e.show())):void 0},t.prototype.template=function(){return Handlebars.templates.apikey_button_view},t}(Backbone.View),this.Handlebars.templates.main=Handlebars.template({1:function(e,t,n,a){var s,i=this.lambda,r=this.escapeExpression,l='  <div class="info_title">'+r(i(null!=(s=null!=e?e.info:e)?s.title:s,e))+'</div>\n  <div class="info_description markdown">';return s=i(null!=(s=null!=e?e.info:e)?s.description:s,e),null!=s&&(l+=s),l+="</div>\n  ",s=t["if"].call(e,null!=(s=null!=e?e.info:e)?s.termsOfServiceUrl:s,{name:"if",hash:{},fn:this.program(2,a),inverse:this.noop,data:a}),null!=s&&(l+=s),l+="\n  ",s=t["if"].call(e,null!=(s=null!=(s=null!=e?e.info:e)?s.contact:s)?s.name:s,{name:"if",hash:{},fn:this.program(4,a),inverse:this.noop,data:a}),null!=s&&(l+=s),l+="\n  ",s=t["if"].call(e,null!=(s=null!=(s=null!=e?e.info:e)?s.contact:s)?s.url:s,{name:"if",hash:{},fn:this.program(6,a),inverse:this.noop,data:a}),null!=s&&(l+=s),l+="\n  ",s=t["if"].call(e,null!=(s=null!=(s=null!=e?e.info:e)?s.contact:s)?s.email:s,{name:"if",hash:{},fn:this.program(8,a),inverse:this.noop,data:a}),null!=s&&(l+=s),l+="\n  ",s=t["if"].call(e,null!=(s=null!=e?e.info:e)?s.license:s,{name:"if",hash:{},fn:this.program(10,a),inverse:this.noop,data:a}),null!=s&&(l+=s),l+"\n"},2:function(e){var t,n=this.lambda,a=this.escapeExpression;return'<div class="info_tos"><a href="'+a(n(null!=(t=null!=e?e.info:e)?t.termsOfServiceUrl:t,e))+'">Terms of service</a></div>'},4:function(e){var t,n=this.lambda,a=this.escapeExpression;return"<div class='info_name'>Created by "+a(n(null!=(t=null!=(t=null!=e?e.info:e)?t.contact:t)?t.name:t,e))+"</div>"},6:function(e){var t,n=this.lambda,a=this.escapeExpression;return"<div class='info_url'>See more at <a href=\""+a(n(null!=(t=null!=(t=null!=e?e.info:e)?t.contact:t)?t.url:t,e))+'">'+a(n(null!=(t=null!=(t=null!=e?e.info:e)?t.contact:t)?t.url:t,e))+"</a></div>"},8:function(e){var t,n=this.lambda,a=this.escapeExpression;return"<div class='info_email'><a href=\"mailto:"+a(n(null!=(t=null!=(t=null!=e?e.info:e)?t.contact:t)?t.email:t,e))+"?subject="+a(n(null!=(t=null!=e?e.info:e)?t.title:t,e))+'">Contact the developer</a></div>'},10:function(e){var t,n=this.lambda,a=this.escapeExpression;return"<div class='info_license'><a href='"+a(n(null!=(t=null!=(t=null!=e?e.info:e)?t.license:t)?t.url:t,e))+"'>"+a(n(null!=(t=null!=(t=null!=e?e.info:e)?t.license:t)?t.name:t,e))+"</a></div>"},12:function(e){var t,n=this.lambda,a=this.escapeExpression;return'    , <span style="font-variant: small-caps">api version</span>: '+a(n(null!=(t=null!=e?e.info:e)?t.version:t,e))+"\n    "},14:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return'    <span style="float:right"><a href="'+l((s=null!=(s=t.validatorUrl||(null!=e?e.validatorUrl:e))?s:r,typeof s===i?s.call(e,{name:"validatorUrl",hash:{},data:a}):s))+"/debug?url="+l((s=null!=(s=t.url||(null!=e?e.url:e))?s:r,typeof s===i?s.call(e,{name:"url",hash:{},data:a}):s))+'"><img id="validator" src="'+l((s=null!=(s=t.validatorUrl||(null!=e?e.validatorUrl:e))?s:r,typeof s===i?s.call(e,{name:"validatorUrl",hash:{},data:a}):s))+"?url="+l((s=null!=(s=t.url||(null!=e?e.url:e))?s:r,typeof s===i?s.call(e,{name:"url",hash:{},data:a}):s))+'"></a>\n    </span>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i,r="function",l=t.helperMissing,o=this.escapeExpression,p="<div class='info' id='api_info'>\n";return s=t["if"].call(e,null!=e?e.info:e,{name:"if",hash:{},fn:this.program(1,a),inverse:this.noop,data:a}),null!=s&&(p+=s),p+="</div>\n<div class='container' id='resources_container'>\n  <ul id='resources'></ul>\n\n  <div class=\"footer\">\n    <br>\n    <br>\n    <h4 style=\"color: #999\">[ <span style=\"font-variant: small-caps\">base url</span>: "+o((i=null!=(i=t.basePath||(null!=e?e.basePath:e))?i:l,typeof i===r?i.call(e,{name:"basePath",hash:{},data:a}):i))+"\n",s=t["if"].call(e,null!=(s=null!=e?e.info:e)?s.version:s,{name:"if",hash:{},fn:this.program(12,a),inverse:this.noop,data:a}),null!=s&&(p+=s),p+="]\n",s=t["if"].call(e,null!=e?e.validatorUrl:e,{name:"if",hash:{},fn:this.program(14,a),inverse:this.noop,data:a}),null!=s&&(p+=s),p+"    </h4>\n    </div>\n</div>\n"},useData:!0});var BasicAuthButton,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;BasicAuthButton=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.initialize=function(){},t.prototype.render=function(){var e;return e=this.template(),$(this.el).html(e(this.model)),this},t.prototype.events={"click #basic_auth_button":"togglePasswordContainer","click #apply_basic_auth":"applyPassword"},t.prototype.applyPassword=function(){var e,t,n;return n=$(".input_username").val(),t=$(".input_password").val(),window.authorizations.add(this.model.type,new PasswordAuthorization("basic",n,t)),window.swaggerUi.load(),e=$("#basic_auth_container").hide()},t.prototype.togglePasswordContainer=function(){var e;return $("#basic_auth_container").length>0?(e=$("#basic_auth_container").show(),e.is(":visible")?e.slideUp():($(".auth_container").hide(),e.show())):void 0},t.prototype.template=function(){return Handlebars.templates.basic_auth_button_view},t}(Backbone.View),this.Handlebars.templates.operation=Handlebars.template({1:function(){return"deprecated"},3:function(){return"            <h4>Warning: Deprecated</h4>\n"},5:function(e,t,n,a){var s,i,r="function",l=t.helperMissing,o='        <h4>Implementation Notes</h4>\n        <p class="markdown">';return i=null!=(i=t.description||(null!=e?e.description:e))?i:l,s=typeof i===r?i.call(e,{name:"description",hash:{},data:a}):i,null!=s&&(o+=s),o+"</p>\n"},7:function(){return'        <div class="auth">\n        <span class="api-ic ic-error"></span>'},9:function(e,t,n,a){var s,i='          <div id="api_information_panel" style="top: 526px; left: 776px; display: none;">\n';return s=t.each.call(e,e,{name:"each",hash:{},fn:this.program(10,a),inverse:this.noop,data:a}),null!=s&&(i+=s),i+"          </div>\n"},10:function(e){var t,n=this.lambda,a=this.escapeExpression,s="            <div title='";return t=n(null!=e?e.description:e,e),null!=t&&(s+=t),s+"'>"+a(n(null!=e?e.scope:e,e))+"</div>\n"},12:function(){return"</div>"},14:function(){return'        <div class=\'access\'>\n          <span class="api-ic ic-off" title="click to authenticate"></span>\n        </div>\n'},16:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"          <h4>Response Class (Status "+l((s=null!=(s=t.successCode||(null!=e?e.successCode:e))?s:r,typeof s===i?s.call(e,{name:"successCode",hash:{},data:a}):s))+')</h4>\n          <p><span class="model-signature" /></p>\n          <br/>\n          <div class="response-content-type" />\n'},18:function(){return'          <h4>Parameters</h4>\n          <table class=\'fullwidth\'>\n          <thead>\n            <tr>\n            <th style="width: 100px; max-width: 100px">Parameter</th>\n            <th style="width: 310px; max-width: 310px">Value</th>\n            <th style="width: 200px; max-width: 200px">Description</th>\n            <th style="width: 100px; max-width: 100px">Parameter Type</th>\n            <th style="width: 220px; max-width: 230px">Data Type</th>\n            </tr>\n          </thead>\n          <tbody class="operation-params">\n\n          </tbody>\n          </table>\n'},20:function(){return"          <div style='margin:0;padding:0;display:inline'></div>\n          <h4>Response Messages</h4>\n          <table class='fullwidth'>\n            <thead>\n            <tr>\n              <th>HTTP Status Code</th>\n              <th>Reason</th>\n              <th>Response Model</th>\n            </tr>\n            </thead>\n            <tbody class=\"operation-status\">\n            \n            </tbody>\n          </table>\n"},22:function(){return""},24:function(){return"          <div class='sandbox_header'>\n            <input class='submit' name='commit' type='button' value='Try it out!' />\n            <a href='#' class='response_hider' style='display:none'>Hide Response</a>\n            <span class='response_throbber' style='display:none'></span>\n          </div>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i,r,l="function",o=t.helperMissing,p=this.escapeExpression,u=t.blockHelperMissing,h="\n  <ul class='operations' >\n    <li class='"+p((i=null!=(i=t.method||(null!=e?e.method:e))?i:o,typeof i===l?i.call(e,{name:"method",hash:{},data:a}):i))+" operation' id='"+p((i=null!=(i=t.parentId||(null!=e?e.parentId:e))?i:o,typeof i===l?i.call(e,{name:"parentId",hash:{},data:a}):i))+"_"+p((i=null!=(i=t.nickname||(null!=e?e.nickname:e))?i:o,typeof i===l?i.call(e,{name:"nickname",hash:{},data:a}):i))+"'>\n      <div class='heading'>\n        <h3>\n          <span class='http_method'>\n          <a href='#!/"+p((i=null!=(i=t.parentId||(null!=e?e.parentId:e))?i:o,typeof i===l?i.call(e,{name:"parentId",hash:{},data:a}):i))+"/"+p((i=null!=(i=t.nickname||(null!=e?e.nickname:e))?i:o,typeof i===l?i.call(e,{name:"nickname",hash:{},data:a}):i))+'\' class="toggleOperation">'+p((i=null!=(i=t.method||(null!=e?e.method:e))?i:o,typeof i===l?i.call(e,{name:"method",hash:{},data:a}):i))+"</a>\n          </span>\n          <span class='path'>\n          <a href='#!/"+p((i=null!=(i=t.parentId||(null!=e?e.parentId:e))?i:o,typeof i===l?i.call(e,{name:"parentId",hash:{},data:a}):i))+"/"+p((i=null!=(i=t.nickname||(null!=e?e.nickname:e))?i:o,typeof i===l?i.call(e,{name:"nickname",hash:{},data:a}):i))+"' class=\"toggleOperation ";return s=t["if"].call(e,null!=e?e.deprecated:e,{name:"if",hash:{},fn:this.program(1,a),inverse:this.noop,data:a}),null!=s&&(h+=s),h+='">'+p((i=null!=(i=t.path||(null!=e?e.path:e))?i:o,typeof i===l?i.call(e,{name:"path",hash:{},data:a}):i))+"</a>\n          </span>\n        </h3>\n        <ul class='options'>\n          <li>\n          <a href='#!/"+p((i=null!=(i=t.parentId||(null!=e?e.parentId:e))?i:o,typeof i===l?i.call(e,{name:"parentId",hash:{},data:a}):i))+"/"+p((i=null!=(i=t.nickname||(null!=e?e.nickname:e))?i:o,typeof i===l?i.call(e,{name:"nickname",hash:{},data:a}):i))+'\' class="toggleOperation">',i=null!=(i=t.summary||(null!=e?e.summary:e))?i:o,s=typeof i===l?i.call(e,{name:"summary",hash:{},data:a}):i,null!=s&&(h+=s),h+="</a>\n          </li>\n        </ul>\n      </div>\n      <div class='content' id='"+p((i=null!=(i=t.parentId||(null!=e?e.parentId:e))?i:o,typeof i===l?i.call(e,{name:"parentId",hash:{},data:a}):i))+"_"+p((i=null!=(i=t.nickname||(null!=e?e.nickname:e))?i:o,typeof i===l?i.call(e,{name:"nickname",hash:{},data:a}):i))+"_content' style='display:none'>\n",s=t["if"].call(e,null!=e?e.deprecated:e,{name:"if",hash:{},fn:this.program(3,a),inverse:this.noop,data:a}),null!=s&&(h+=s),s=t["if"].call(e,null!=e?e.description:e,{name:"if",hash:{},fn:this.program(5,a),inverse:this.noop,data:a}),null!=s&&(h+=s),i=null!=(i=t.oauth||(null!=e?e.oauth:e))?i:o,r={name:"oauth",hash:{},fn:this.program(7,a),inverse:this.noop,data:a},s=typeof i===l?i.call(e,r):i,t.oauth||(s=u.call(e,s,r)),null!=s&&(h+=s),h+="\n",s=t.each.call(e,null!=e?e.oauth:e,{name:"each",hash:{},fn:this.program(9,a),inverse:this.noop,data:a}),null!=s&&(h+=s),h+="        ",i=null!=(i=t.oauth||(null!=e?e.oauth:e))?i:o,r={name:"oauth",hash:{},fn:this.program(12,a),inverse:this.noop,data:a},s=typeof i===l?i.call(e,r):i,t.oauth||(s=u.call(e,s,r)),null!=s&&(h+=s),h+="\n",i=null!=(i=t.oauth||(null!=e?e.oauth:e))?i:o,r={name:"oauth",hash:{},fn:this.program(14,a),inverse:this.noop,data:a},s=typeof i===l?i.call(e,r):i,t.oauth||(s=u.call(e,s,r)),null!=s&&(h+=s),s=t["if"].call(e,null!=e?e.type:e,{name:"if",hash:{},fn:this.program(16,a),inverse:this.noop,data:a}),null!=s&&(h+=s),h+="        <form accept-charset='UTF-8' class='sandbox'>\n          <div style='margin:0;padding:0;display:inline'></div>\n",s=t["if"].call(e,null!=e?e.parameters:e,{name:"if",hash:{},fn:this.program(18,a),inverse:this.noop,data:a}),null!=s&&(h+=s),s=t["if"].call(e,null!=e?e.responseMessages:e,{name:"if",hash:{},fn:this.program(20,a),inverse:this.noop,data:a}),null!=s&&(h+=s),s=t["if"].call(e,null!=e?e.isReadOnly:e,{name:"if",hash:{},fn:this.program(22,a),inverse:this.program(24,a),data:a}),null!=s&&(h+=s),h+"        </form>\n        <div class='response' style='display:none'>\n          <h4>Request URL</h4>\n          <div class='block request_url'></div>\n          <h4>Response Body</h4>\n          <div class='block response_body'></div>\n          <h4>Response Code</h4>\n          <div class='block response_code'></div>\n          <h4>Response Headers</h4>\n          <div class='block response_headers'></div>\n        </div>\n      </div>\n    </li>\n  </ul>\n"},useData:!0});var ContentTypeView,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;ContentTypeView=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.initialize=function(){},t.prototype.render=function(){var e;return e=this.template(),$(this.el).html(e(this.model)),$("label[for=contentType]",$(this.el)).text("Response Content Type"),this},t.prototype.template=function(){return Handlebars.templates.content_type},t}(Backbone.View),this.Handlebars.templates.param=Handlebars.template({1:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e.isFile:e,{name:"if",hash:{},fn:this.program(2,a),inverse:this.program(4,a),data:a}),null!=s&&(i+=s),i},2:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return'                       <input type="file" name=\''+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+'\'/>\n                       <div class="parameter-content-type" />\n'},4:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e["default"]:e,{name:"if",hash:{},fn:this.program(5,a),inverse:this.program(7,a),data:a}),null!=s&&(i+=s),i},5:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"                         <textarea class='body-textarea' name='"+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+"'>"+l((s=null!=(s=t["default"]||(null!=e?e["default"]:e))?s:r,typeof s===i?s.call(e,{name:"default",hash:{},data:a}):s))+'</textarea>\n        <br />\n        <div class="parameter-content-type" />\n'},7:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"                               <textarea class='body-textarea' name='"+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+'\'></textarea>\n                         <br />\n                                <div class="parameter-content-type" />\n'},9:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e.isFile:e,{name:"if",hash:{},fn:this.program(2,a),inverse:this.program(10,a),data:a}),null!=s&&(i+=s),i},10:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e["default"]:e,{name:"if",hash:{},fn:this.program(11,a),inverse:this.program(13,a),data:a}),null!=s&&(i+=s),i},11:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"                            <input class='parameter' minlength='0' name='"+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+"' placeholder='' type='text' value='"+l((s=null!=(s=t["default"]||(null!=e?e["default"]:e))?s:r,typeof s===i?s.call(e,{name:"default",hash:{},data:a}):s))+"'/>\n"},13:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"                             <input class='parameter' minlength='0' name='"+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+"' placeholder='' type='text' value=''/>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i,r="function",l=t.helperMissing,o=this.escapeExpression,p="<td class='code'>"+o((i=null!=(i=t.name||(null!=e?e.name:e))?i:l,typeof i===r?i.call(e,{name:"name",hash:{},data:a}):i))+"</td>\n<td>\n\n";return s=t["if"].call(e,null!=e?e.isBody:e,{name:"if",hash:{},fn:this.program(1,a),inverse:this.program(9,a),data:a}),null!=s&&(p+=s),p+='\n</td>\n<td class="markdown">',i=null!=(i=t.description||(null!=e?e.description:e))?i:l,s=typeof i===r?i.call(e,{name:"description",hash:{},data:a}):i,null!=s&&(p+=s),p+="</td>\n<td>",i=null!=(i=t.paramType||(null!=e?e.paramType:e))?i:l,s=typeof i===r?i.call(e,{name:"paramType",hash:{},data:a}):i,null!=s&&(p+=s),p+'</td>\n<td>\n      <span class="model-signature"></span>\n</td>\n'},useData:!0});var HeaderView,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;HeaderView=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.events={"click #show-pet-store-icon":"showPetStore","click #show-wordnik-dev-icon":"showWordnikDev","click #explore":"showCustom","keyup #input_baseUrl":"showCustomOnKeyup","keyup #input_apiKey":"showCustomOnKeyup"},t.prototype.initialize=function(){},t.prototype.showPetStore=function(){return this.trigger("update-swagger-ui",{url:"http://petstore.swagger.wordnik.com/api/api-docs"})},t.prototype.showWordnikDev=function(){return this.trigger("update-swagger-ui",{url:"http://api.wordnik.com/v4/resources.json"})},t.prototype.showCustomOnKeyup=function(e){return 13===e.keyCode?this.showCustom():void 0},t.prototype.showCustom=function(e){return null!=e&&e.preventDefault(),this.trigger("update-swagger-ui",{url:$("#input_baseUrl").val(),apiKey:$("#input_apiKey").val()})},t.prototype.update=function(e,t,n){return null==n&&(n=!1),$("#input_baseUrl").val(e),n?this.trigger("update-swagger-ui",{url:e}):void 0},t}(Backbone.View),this.Handlebars.templates.param_list=Handlebars.template({1:function(){return" multiple='multiple'"},3:function(){return""},5:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e["default"]:e,{name:"if",hash:{},fn:this.program(3,a),inverse:this.program(6,a),data:a}),null!=s&&(i+=s),i},6:function(e,t,n,a){var s,i=t.helperMissing,r="";return s=(t.isArray||e&&e.isArray||i).call(e,e,{name:"isArray",hash:{},fn:this.program(3,a),inverse:this.program(7,a),data:a}),null!=s&&(r+=s),r},7:function(){return"          <option selected=\"\" value=''></option>\n"},9:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e.isDefault:e,{name:"if",hash:{},fn:this.program(10,a),inverse:this.program(12,a),data:a}),null!=s&&(i+=s),i},10:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return'        <option selected="" value=\''+l((s=null!=(s=t.value||(null!=e?e.value:e))?s:r,typeof s===i?s.call(e,{name:"value",hash:{},data:a}):s))+"'>"+l((s=null!=(s=t.value||(null!=e?e.value:e))?s:r,typeof s===i?s.call(e,{name:"value",hash:{},data:a}):s))+" (default)</option>\n"},12:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"        <option value='"+l((s=null!=(s=t.value||(null!=e?e.value:e))?s:r,typeof s===i?s.call(e,{name:"value",hash:{},data:a}):s))+"'>"+l((s=null!=(s=t.value||(null!=e?e.value:e))?s:r,typeof s===i?s.call(e,{name:"value",hash:{},data:a}):s))+"</option>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i,r="function",l=t.helperMissing,o=this.escapeExpression,p="<td class='code'>"+o((i=null!=(i=t.name||(null!=e?e.name:e))?i:l,typeof i===r?i.call(e,{name:"name",hash:{},data:a}):i))+"</td>\n<td>\n  <select ";return s=(t.isArray||e&&e.isArray||l).call(e,e,{name:"isArray",hash:{},fn:this.program(1,a),inverse:this.noop,data:a}),null!=s&&(p+=s),p+=" class='parameter' name='"+o((i=null!=(i=t.name||(null!=e?e.name:e))?i:l,typeof i===r?i.call(e,{name:"name",hash:{},data:a}):i))+"'>\n",s=t["if"].call(e,null!=e?e.required:e,{name:"if",hash:{},fn:this.program(3,a),inverse:this.program(5,a),data:a}),null!=s&&(p+=s),s=t.each.call(e,null!=(s=null!=e?e.allowableValues:e)?s.descriptiveValues:s,{name:"each",hash:{},fn:this.program(9,a),inverse:this.noop,data:a}),null!=s&&(p+=s),p+='  </select>\n</td>\n<td class="markdown">',i=null!=(i=t.description||(null!=e?e.description:e))?i:l,s=typeof i===r?i.call(e,{name:"description",hash:{},data:a}):i,null!=s&&(p+=s),p+="</td>\n<td>",i=null!=(i=t.paramType||(null!=e?e.paramType:e))?i:l,s=typeof i===r?i.call(e,{name:"paramType",hash:{},data:a}):i,null!=s&&(p+=s),p+'</td>\n<td><span class="model-signature"></span></td>'},useData:!0});var MainView,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;MainView=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}var n;return __extends(t,e),n={alpha:function(e,t){return e.path.localeCompare(t.path)},method:function(e,t){return e.method.localeCompare(t.method)}},t.prototype.initialize=function(e){var t,n,a,s;null==e&&(e={}),this.model.auths=[],s=this.model.securityDefinitions;for(n in s)a=s[n],t={name:n,type:a.type,value:a},this.model.auths.push(t);return"2.0"===this.model.swaggerVersion?this.model.validatorUrl="validatorUrl"in e.swaggerOptions?e.swaggerOptions.validatorUrl:this.model.url.indexOf("localhost")>0?null:"http://online.swagger.io/validator":void 0},t.prototype.render=function(){var e,t,n,a,s,i,r,l,o,p;if(this.model.securityDefinitions)for(s in this.model.securityDefinitions)e=this.model.securityDefinitions[s],"apiKey"===e.type&&0===$("#apikey_button").length&&(t=new ApiKeyButton({model:e}).render().el,$(".auth_main_container").append(t)),"basicAuth"===e.type&&0===$("#basic_auth_button").length&&(t=new BasicAuthButton({model:e}).render().el,$(".auth_main_container").append(t));for($(this.el).html(Handlebars.templates.main(this.model)),r={},n=0,p=this.model.apisArray,l=0,o=p.length;o>l;l++){for(i=p[l],a=i.name;"undefined"!=typeof r[a];)a=a+"_"+n,n+=1;
 i.id=a,r[a]=i,this.addResource(i,this.model.auths)}return $(".propWrap").hover(function(){return $(".optionsWrapper",$(this)).show()},function(){return $(".optionsWrapper",$(this)).hide()}),this},t.prototype.addResource=function(e,t){var n;return e.id=e.id.replace(/\s/g,"_"),n=new ResourceView({model:e,tagName:"li",id:"resource_"+e.id,className:"resource",auths:t,swaggerOptions:this.options.swaggerOptions}),$("#resources").append(n.render().el)},t.prototype.clear=function(){return $(this.el).html("")},t}(Backbone.View),this.Handlebars.templates.param_readonly=Handlebars.template({1:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"        <textarea class='body-textarea' readonly='readonly' name='"+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+"'>"+l((s=null!=(s=t["default"]||(null!=e?e["default"]:e))?s:r,typeof s===i?s.call(e,{name:"default",hash:{},data:a}):s))+"</textarea>\n"},3:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e["default"]:e,{name:"if",hash:{},fn:this.program(4,a),inverse:this.program(6,a),data:a}),null!=s&&(i+=s),i},4:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"            "+l((s=null!=(s=t["default"]||(null!=e?e["default"]:e))?s:r,typeof s===i?s.call(e,{name:"default",hash:{},data:a}):s))+"\n"},6:function(){return"            (empty)\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i,r="function",l=t.helperMissing,o=this.escapeExpression,p="<td class='code'>"+o((i=null!=(i=t.name||(null!=e?e.name:e))?i:l,typeof i===r?i.call(e,{name:"name",hash:{},data:a}):i))+"</td>\n<td>\n";return s=t["if"].call(e,null!=e?e.isBody:e,{name:"if",hash:{},fn:this.program(1,a),inverse:this.program(3,a),data:a}),null!=s&&(p+=s),p+='</td>\n<td class="markdown">',i=null!=(i=t.description||(null!=e?e.description:e))?i:l,s=typeof i===r?i.call(e,{name:"description",hash:{},data:a}):i,null!=s&&(p+=s),p+="</td>\n<td>",i=null!=(i=t.paramType||(null!=e?e.paramType:e))?i:l,s=typeof i===r?i.call(e,{name:"paramType",hash:{},data:a}):i,null!=s&&(p+=s),p+'</td>\n<td><span class="model-signature"></span></td>\n'},useData:!0}),this.Handlebars.templates.param_readonly_required=Handlebars.template({1:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"        <textarea class='body-textarea'  readonly='readonly' placeholder='(required)' name='"+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+"'>"+l((s=null!=(s=t["default"]||(null!=e?e["default"]:e))?s:r,typeof s===i?s.call(e,{name:"default",hash:{},data:a}):s))+"</textarea>\n"},3:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e["default"]:e,{name:"if",hash:{},fn:this.program(4,a),inverse:this.program(6,a),data:a}),null!=s&&(i+=s),i},4:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"            "+l((s=null!=(s=t["default"]||(null!=e?e["default"]:e))?s:r,typeof s===i?s.call(e,{name:"default",hash:{},data:a}):s))+"\n"},6:function(){return"            (empty)\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i,r="function",l=t.helperMissing,o=this.escapeExpression,p="<td class='code required'>"+o((i=null!=(i=t.name||(null!=e?e.name:e))?i:l,typeof i===r?i.call(e,{name:"name",hash:{},data:a}):i))+"</td>\n<td>\n";return s=t["if"].call(e,null!=e?e.isBody:e,{name:"if",hash:{},fn:this.program(1,a),inverse:this.program(3,a),data:a}),null!=s&&(p+=s),p+='</td>\n<td class="markdown">',i=null!=(i=t.description||(null!=e?e.description:e))?i:l,s=typeof i===r?i.call(e,{name:"description",hash:{},data:a}):i,null!=s&&(p+=s),p+="</td>\n<td>",i=null!=(i=t.paramType||(null!=e?e.paramType:e))?i:l,s=typeof i===r?i.call(e,{name:"paramType",hash:{},data:a}):i,null!=s&&(p+=s),p+'</td>\n<td><span class="model-signature"></span></td>\n'},useData:!0});var OperationView,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;OperationView=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.invocationUrl=null,t.prototype.events={"submit .sandbox":"submitOperation","click .submit":"submitOperation","click .response_hider":"hideResponse","click .toggleOperation":"toggleOperationContent","mouseenter .api-ic":"mouseEnter","mouseout .api-ic":"mouseExit"},t.prototype.initialize=function(e){return null==e&&(e={}),this.auths=e.auths,this.parentId=this.model.parentId,this.nickname=this.model.nickname,this},t.prototype.mouseEnter=function(e){var t,n,a,s,i,r,l,o,p,u;return t=$(this.el).find(".content"),p=e.pageX,u=e.pageY,r=$(window).scrollLeft(),l=$(window).scrollTop(),s=r+$(window).width(),i=l+$(window).height(),o=t.width(),n=t.height(),p+o>s&&(p=s-o),r>p&&(p=r),u+n>i&&(u=i-n),l>u&&(u=l),a={},a.top=u,a.left=p,t.css(a),$(e.currentTarget.parentNode).find("#api_information_panel").show()},t.prototype.mouseExit=function(e){return $(e.currentTarget.parentNode).find("#api_information_panel").hide()},t.prototype.render=function(){var e,t,n,a,s,i,r,l,o,p,u,h,c,d,m,f,y,g,v,_,w,b,x,k,O,C,S,P,T,D,H,M,E,R,V,N,U,A;if(i=jQuery.inArray(this.model.method,this.model.supportedSubmitMethods())>=0,i||(this.model.isReadOnly=!0),this.model.description=this.model.description||this.model.notes,this.model.description&&(this.model.description=this.model.description.replace(/(?:\r\n|\r|\n)/g,"<br />")),this.model.oauth=null,o=this.model.authorizations||this.model.security)if(Array.isArray(o))for(k=0,P=o.length;P>k;k++){n=o[k];for(l in n){t=n[l];for(e in this.auths)if(t=this.auths[e],"oauth2"===t.type){this.model.oauth={},this.model.oauth.scopes=[],R=t.value.scopes;for(r in R)b=R[r],y=n[l].indexOf(r),y>=0&&(p={scope:r,description:b},this.model.oauth.scopes.push(p))}}}else for(r in o)if(b=o[r],"oauth2"===r)for(null===this.model.oauth&&(this.model.oauth={}),void 0===this.model.oauth.scopes&&(this.model.oauth.scopes=[]),O=0,T=b.length;T>O;O++)p=b[O],this.model.oauth.scopes.push(p);if("undefined"!=typeof this.model.responses){this.model.responseMessages=[],V=this.model.responses;for(a in V)x=V[a],m=null,f=this.model.responses[a].schema,f&&f.$ref&&(m=f.$ref,0===m.indexOf("#/definitions/")&&(m=m.substring("#/definitions/".length))),this.model.responseMessages.push({code:a,message:x.description,responseModel:m})}if("undefined"==typeof this.model.responseMessages&&(this.model.responseMessages=[]),g=null,this.model.successResponse){_=this.model.successResponse;for(l in _)x=_[l],this.model.successCode=l,"object"==typeof x&&"function"==typeof x.createJSONSample&&(g={sampleJSON:JSON.stringify(x.createJSONSample(),void 0,2),isParam:!1,signature:x.getMockSignature()})}else this.model.responseClassSignature&&"string"!==this.model.responseClassSignature&&(g={sampleJSON:this.model.responseSampleJSON,isParam:!1,signature:this.model.responseClassSignature});for($(this.el).html(Handlebars.templates.operation(this.model)),g?(d=new SignatureView({model:g,tagName:"div"}),$(".model-signature",$(this.el)).append(d.render().el)):(this.model.responseClassSignature="string",$(".model-signature",$(this.el)).html(this.model.type)),s={isParam:!1},s.consumes=this.model.consumes,s.produces=this.model.produces,N=this.model.parameters,C=0,D=N.length;D>C;C++)u=N[C],w=u.type||u.dataType||"","undefined"==typeof w&&(m=u.schema,m&&m.$ref&&(h=m.$ref,w=0===h.indexOf("#/definitions/")?h.substring("#/definitions/".length):h)),w&&"file"===w.toLowerCase()&&(s.consumes||(s.consumes="multipart/form-data")),u.type=w;for(c=new ResponseContentTypeView({model:s}),$(".response-content-type",$(this.el)).append(c.render().el),U=this.model.parameters,S=0,H=U.length;H>S;S++)u=U[S],this.addParameter(u,s.consumes);for(A=this.model.responseMessages,E=0,M=A.length;M>E;E++)v=A[E],this.addStatusCode(v);return this},t.prototype.addParameter=function(e,t){var n;return e.consumes=t,n=new ParameterView({model:e,tagName:"tr",readOnly:this.model.isReadOnly}),$(".operation-params",$(this.el)).append(n.render().el)},t.prototype.addStatusCode=function(e){var t;return t=new StatusCodeView({model:e,tagName:"tr"}),$(".operation-status",$(this.el)).append(t.render().el)},t.prototype.submitOperation=function(e){var t,n,a,s,i,r,l,o,p,u,h,c,d,m,f,y;if(null!=e&&e.preventDefault(),n=$(".sandbox",$(this.el)),t=!0,n.find("input.required").each(function(){return $(this).removeClass("error"),""===jQuery.trim($(this).val())?($(this).addClass("error"),$(this).wiggle({callback:function(e){return function(){return $(e).focus()}}(this)}),t=!1):void 0}),n.find("textarea.required").each(function(){return $(this).removeClass("error"),""===jQuery.trim($(this).val())?($(this).addClass("error"),$(this).wiggle({callback:function(e){return function(){return $(e).focus()}}(this)}),t=!1):void 0}),t){for(s={},r={parent:this},a=!1,m=n.find("input"),o=0,h=m.length;h>o;o++)i=m[o],null!=i.value&&jQuery.trim(i.value).length>0&&(s[i.name]=i.value),"file"===i.type&&(s[i.name]=i.files[0],a=!0);for(f=n.find("textarea"),p=0,c=f.length;c>p;p++)i=f[p],null!=i.value&&jQuery.trim(i.value).length>0&&(s[i.name]=i.value);for(y=n.find("select"),u=0,d=y.length;d>u;u++)i=y[u],l=this.getSelectedValue(i),null!=l&&jQuery.trim(l).length>0&&(s[i.name]=l);return r.responseContentType=$("div select[name=responseContentType]",$(this.el)).val(),r.requestContentType=$("div select[name=parameterContentType]",$(this.el)).val(),$(".response_throbber",$(this.el)).show(),a?this.handleFileUpload(s,n):this.model["do"](s,r,this.showCompleteStatus,this.showErrorStatus,this)}},t.prototype.success=function(e,t){return t.showCompleteStatus(e)},t.prototype.handleFileUpload=function(e,t){var n,a,s,i,r,l,o,p,u,h,c,d,m,f,y,g,v,_,w;for(g=t.serializeArray(),p=0,d=g.length;d>p;p++)i=g[p],null!=i.value&&jQuery.trim(i.value).length>0&&(e[i.name]=i.value);for(n=new FormData,o=0,v=this.model.parameters,u=0,m=v.length;m>u;u++)l=v[u],("form"===l.paramType||"formData"===l["in"])&&"file"!==l.type.toLowerCase()&&void 0!==e[l.name]&&n.append(l.name,e[l.name]);for(s={},_=this.model.parameters,h=0,f=_.length;f>h;h++)l=_[h],"header"===l.paramType&&(s[l.name]=e[l.name]);for(w=t.find('input[type~="file"]'),c=0,y=w.length;y>c;c++)a=w[c],"undefined"!=typeof a.files[0]&&(n.append($(a).attr("name"),a.files[0]),o+=1);return this.invocationUrl=this.model.supportHeaderParams()?(s=this.model.getHeaderParams(e),delete s["Content-Type"],this.model.urlify(e,!1)):this.model.urlify(e,!0),$(".request_url",$(this.el)).html("<pre></pre>"),$(".request_url pre",$(this.el)).text(this.invocationUrl),r={type:this.model.method,url:this.invocationUrl,headers:s,data:n,dataType:"json",contentType:!1,processData:!1,error:function(e){return function(t){return e.showErrorStatus(e.wrap(t),e)}}(this),success:function(e){return function(t){return e.showResponse(t,e)}}(this),complete:function(e){return function(t){return e.showCompleteStatus(e.wrap(t),e)}}(this)},window.authorizations&&window.authorizations.apply(r),0===o&&r.data.append("fake","true"),jQuery.ajax(r),!1},t.prototype.wrap=function(e){var t,n,a,s,i,r,l;for(a={},n=e.getAllResponseHeaders().split("\r"),r=0,l=n.length;l>r;r++)s=n[r],t=s.match(/^([^:]*?):(.*)$/),t||(t=[]),t.shift(),void 0!==t[0]&&void 0!==t[1]&&(a[t[0].trim()]=t[1].trim());return i={},i.content={},i.content.data=e.responseText,i.headers=a,i.request={},i.request.url=this.invocationUrl,i.status=e.status,i},t.prototype.getSelectedValue=function(e){var t,n,a,s,i;if(e.multiple){for(n=[],i=e.options,a=0,s=i.length;s>a;a++)t=i[a],t.selected&&n.push(t.value);return n.length>0?n:null}return e.value},t.prototype.hideResponse=function(e){return null!=e&&e.preventDefault(),$(".response",$(this.el)).slideUp(),$(".response_hider",$(this.el)).fadeOut()},t.prototype.showResponse=function(e){var t;return t=JSON.stringify(e,null,"     ").replace(/\n/g,"<br>"),$(".response_body",$(this.el)).html(escape(t))},t.prototype.showErrorStatus=function(e,t){return t.showStatus(e)},t.prototype.showCompleteStatus=function(e,t){return t.showStatus(e)},t.prototype.formatXml=function(e){var t,n,a,s,i,r,l,o,p,u,h,c,d;for(o=/(>)(<)(\/*)/g,u=/[ ]*(.*)[ ]+\n/g,t=/(<.+>)(.+\n)/g,e=e.replace(o,"$1\n$2$3").replace(u,"$1\n").replace(t,"$1\n$2"),l=0,n="",i=e.split("\n"),a=0,s="other",p={"single->single":0,"single->closing":-1,"single->opening":0,"single->other":0,"closing->single":0,"closing->closing":-1,"closing->opening":0,"closing->other":0,"opening->single":1,"opening->closing":0,"opening->opening":1,"opening->other":1,"other->single":0,"other->closing":-1,"other->opening":0,"other->other":0},h=function(e){var t,i,r,l,o,u,h;return u={single:Boolean(e.match(/<.+\/>/)),closing:Boolean(e.match(/<\/.+>/)),opening:Boolean(e.match(/<[^!?].*>/))},o=function(){var e;e=[];for(r in u)h=u[r],h&&e.push(r);return e}()[0],o=void 0===o?"other":o,t=s+"->"+o,s=o,l="",a+=p[t],l=function(){var e,t,n;for(n=[],i=e=0,t=a;t>=0?t>e:e>t;i=t>=0?++e:--e)n.push("  ");return n}().join(""),"opening->closing"===t?n=n.substr(0,n.length-1)+e+"\n":n+=l+e+"\n"},c=0,d=i.length;d>c;c++)r=i[c],h(r);return n},t.prototype.showStatus=function(e){var t,n,a,s,i,r,l,o,p,u,h;if(void 0===e.content?(n=e.data,h=e.url):(n=e.content.data,h=e.request.url),i=e.headers,a=null,i&&(a=i["Content-Type"]||i["content-type"],a&&(a=a.split(";")[0].trim())),$(".response_body",$(this.el)).removeClass("json"),$(".response_body",$(this.el)).removeClass("xml"),n)if("application/json"===a||/\+json$/.test(a)){r=null;try{r=JSON.stringify(JSON.parse(n),null,"  ")}catch(c){s=c,r="can't parse JSON.  Raw result:\n\n"+n}t=$("<code />").text(r),o=$('<pre class="json" />').append(t)}else"application/xml"===a||/\+xml$/.test(a)?(t=$("<code />").text(this.formatXml(n)),o=$('<pre class="xml" />').append(t)):"text/html"===a?(t=$("<code />").html(_.escape(n)),o=$('<pre class="xml" />').append(t)):/^image\//.test(a)?o=$("<img>").attr("src",h):(t=$("<code />").text(n),o=$('<pre class="json" />').append(t));else t=$("<code />").text("no content"),o=$('<pre class="json" />').append(t);return p=o,$(".request_url",$(this.el)).html("<pre></pre>"),$(".request_url pre",$(this.el)).text(h),$(".response_code",$(this.el)).html("<pre>"+e.status+"</pre>"),$(".response_body",$(this.el)).html(p),$(".response_headers",$(this.el)).html("<pre>"+_.escape(JSON.stringify(e.headers,null,"  ")).replace(/\n/g,"<br>")+"</pre>"),$(".response",$(this.el)).slideDown(),$(".response_hider",$(this.el)).show(),$(".response_throbber",$(this.el)).hide(),u=$(".response_body",$(this.el))[0],l=this.options.swaggerOptions,l.highlightSizeThreshold&&e.data.length>l.highlightSizeThreshold?u:hljs.highlightBlock(u)},t.prototype.toggleOperationContent=function(){var e;return e=$("#"+Docs.escapeResourceName(this.parentId+"_"+this.nickname+"_content")),e.is(":visible")?Docs.collapseOperation(e):Docs.expandOperation(e)},t}(Backbone.View);var ParameterContentTypeView,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;ParameterContentTypeView=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.initialize=function(){},t.prototype.render=function(){var e;return e=this.template(),$(this.el).html(e(this.model)),$("label[for=parameterContentType]",$(this.el)).text("Parameter content type:"),this},t.prototype.template=function(){return Handlebars.templates.parameter_content_type},t}(Backbone.View),this.Handlebars.templates.param_required=Handlebars.template({1:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e.isFile:e,{name:"if",hash:{},fn:this.program(2,a),inverse:this.program(4,a),data:a}),null!=s&&(i+=s),i},2:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return'                     <input type="file" name=\''+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+"'/>\n"},4:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e["default"]:e,{name:"if",hash:{},fn:this.program(5,a),inverse:this.program(7,a),data:a}),null!=s&&(i+=s),i},5:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"                         <textarea class='body-textarea required' placeholder='(required)' name='"+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+"'>"+l((s=null!=(s=t["default"]||(null!=e?e["default"]:e))?s:r,typeof s===i?s.call(e,{name:"default",hash:{},data:a}):s))+'</textarea>\n        <br />\n        <div class="parameter-content-type" />\n'},7:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"                             <textarea class='body-textarea required' placeholder='(required)' name='"+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+'\'></textarea>\n                               <br />\n                                <div class="parameter-content-type" />\n'},9:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e.isFile:e,{name:"if",hash:{},fn:this.program(10,a),inverse:this.program(12,a),data:a}),null!=s&&(i+=s),i},10:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"                  <input class='parameter' class='required' type='file' name='"+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+"'/>\n"},12:function(e,t,n,a){var s,i="";return s=t["if"].call(e,null!=e?e["default"]:e,{name:"if",hash:{},fn:this.program(13,a),inverse:this.program(15,a),data:a}),null!=s&&(i+=s),i},13:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"                           <input class='parameter required' minlength='1' name='"+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+"' placeholder='(required)' type='text' value='"+l((s=null!=(s=t["default"]||(null!=e?e["default"]:e))?s:r,typeof s===i?s.call(e,{name:"default",hash:{},data:a}):s))+"'/>\n"},15:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"                          <input class='parameter required' minlength='1' name='"+l((s=null!=(s=t.name||(null!=e?e.name:e))?s:r,typeof s===i?s.call(e,{name:"name",hash:{},data:a}):s))+"' placeholder='(required)' type='text' value=''/>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i,r="function",l=t.helperMissing,o=this.escapeExpression,p="<td class='code required'>"+o((i=null!=(i=t.name||(null!=e?e.name:e))?i:l,typeof i===r?i.call(e,{name:"name",hash:{},data:a}):i))+"</td>\n<td>\n";return s=t["if"].call(e,null!=e?e.isBody:e,{name:"if",hash:{},fn:this.program(1,a),inverse:this.program(9,a),data:a}),null!=s&&(p+=s),p+='</td>\n<td>\n  <strong><span class="markdown">',i=null!=(i=t.description||(null!=e?e.description:e))?i:l,s=typeof i===r?i.call(e,{name:"description",hash:{},data:a}):i,null!=s&&(p+=s),p+="</span></strong>\n</td>\n<td>",i=null!=(i=t.paramType||(null!=e?e.paramType:e))?i:l,s=typeof i===r?i.call(e,{name:"paramType",hash:{},data:a}):i,null!=s&&(p+=s),p+'</td>\n<td><span class="model-signature"></span></td>\n'},useData:!0}),this.Handlebars.templates.parameter_content_type=Handlebars.template({1:function(e,t,n,a){var s,i="";return s=t.each.call(e,null!=e?e.consumes:e,{name:"each",hash:{},fn:this.program(2,a),inverse:this.noop,data:a}),null!=s&&(i+=s),i},2:function(e){var t,n=this.lambda,a='  <option value="';return t=n(e,e),null!=t&&(a+=t),a+='">',t=n(e,e),null!=t&&(a+=t),a+"</option>\n"},4:function(){return'  <option value="application/json">application/json</option>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i='<label for="parameterContentType"></label>\n<select name="parameterContentType">\n';return s=t["if"].call(e,null!=e?e.consumes:e,{name:"if",hash:{},fn:this.program(1,a),inverse:this.program(4,a),data:a}),null!=s&&(i+=s),i+"</select>\n"},useData:!0});var ParameterView,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;ParameterView=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.initialize=function(){return Handlebars.registerHelper("isArray",function(e,t){return"array"===e.type.toLowerCase()||e.allowMultiple?t.fn(this):t.inverse(this)})},t.prototype.render=function(){var e,t,n,a,s,i,r,l,o,p;return p=this.model.type||this.model.dataType,"undefined"==typeof p&&(i=this.model.schema,i&&i.$ref&&(a=i.$ref,p=0===a.indexOf("#/definitions/")?a.substring("#/definitions/".length):a)),this.model.type=p,this.model.paramType=this.model["in"]||this.model.paramType,("body"===this.model.paramType||"body"===this.model["in"])&&(this.model.isBody=!0),p&&"file"===p.toLowerCase()&&(this.model.isFile=!0),this.model["default"]=this.model["default"]||this.model.defaultValue,this.model.allowableValues&&(this.model.isList=!0),o=this.template(),$(this.el).html(o(this.model)),r={sampleJSON:this.model.sampleJSON,isParam:!0,signature:this.model.signature},this.model.sampleJSON?(l=new SignatureView({model:r,tagName:"div"}),$(".model-signature",$(this.el)).append(l.render().el)):$(".model-signature",$(this.el)).html(this.model.signature),t=!1,this.model.isBody&&(t=!0),e={isParam:t},e.consumes=this.model.consumes,t?(n=new ParameterContentTypeView({model:e}),$(".parameter-content-type",$(this.el)).append(n.render().el)):(s=new ResponseContentTypeView({model:e}),$(".response-content-type",$(this.el)).append(s.render().el)),this},t.prototype.template=function(){return this.model.isList?Handlebars.templates.param_list:this.options.readOnly?this.model.required?Handlebars.templates.param_readonly_required:Handlebars.templates.param_readonly:this.model.required?Handlebars.templates.param_required:Handlebars.templates.param},t}(Backbone.View);var ResourceView,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;ResourceView=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.initialize=function(e){return null==e&&(e={}),this.auths=e.auths,""===this.model.description&&(this.model.description=null),null!=this.model.description?this.model.summary=this.model.description:void 0},t.prototype.render=function(){var e,t,n,a,s,i,r;for(n={},$(this.el).html(Handlebars.templates.resource(this.model)),r=this.model.operationsArray,s=0,i=r.length;i>s;s++){for(a=r[s],e=0,t=a.nickname;"undefined"!=typeof n[t];)t=t+"_"+e,e+=1;n[t]=a,a.nickname=t,a.parentId=this.model.id,this.addOperation(a)}return $(".toggleEndpointList",this.el).click(this.callDocs.bind(this,"toggleEndpointListForResource")),$(".collapseResource",this.el).click(this.callDocs.bind(this,"collapseOperationsForResource")),$(".expandResource",this.el).click(this.callDocs.bind(this,"expandOperationsForResource")),this},t.prototype.addOperation=function(e){var t;return e.number=this.number,t=new OperationView({model:e,tagName:"li",className:"endpoint",swaggerOptions:this.options.swaggerOptions,auths:this.auths}),$(".endpoints",$(this.el)).append(t.render().el),this.number++},t.prototype.callDocs=function(e,t){return t.preventDefault(),Docs[e](t.currentTarget.getAttribute("data-id"))},t}(Backbone.View),this.Handlebars.templates.resource=Handlebars.template({1:function(){return" : "},3:function(e,t,n,a){var s,i="function",r=t.helperMissing,l=this.escapeExpression;return"<li>\n      <a href='"+l((s=null!=(s=t.url||(null!=e?e.url:e))?s:r,typeof s===i?s.call(e,{name:"url",hash:{},data:a}):s))+"'>Raw</a>\n    </li>"},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i,r,l="function",o=t.helperMissing,p=this.escapeExpression,u=t.blockHelperMissing,h="<div class='heading'>\n  <h2>\n    <a href='#!/"+p((i=null!=(i=t.id||(null!=e?e.id:e))?i:o,typeof i===l?i.call(e,{name:"id",hash:{},data:a}):i))+'\' class="toggleEndpointList" data-id="'+p((i=null!=(i=t.id||(null!=e?e.id:e))?i:o,typeof i===l?i.call(e,{name:"id",hash:{},data:a}):i))+'">'+p((i=null!=(i=t.name||(null!=e?e.name:e))?i:o,typeof i===l?i.call(e,{name:"name",hash:{},data:a}):i))+"</a> ";return i=null!=(i=t.summary||(null!=e?e.summary:e))?i:o,r={name:"summary",hash:{},fn:this.program(1,a),inverse:this.noop,data:a},s=typeof i===l?i.call(e,r):i,t.summary||(s=u.call(e,s,r)),null!=s&&(h+=s),i=null!=(i=t.summary||(null!=e?e.summary:e))?i:o,s=typeof i===l?i.call(e,{name:"summary",hash:{},data:a}):i,null!=s&&(h+=s),h+="\n  </h2>\n  <ul class='options'>\n    <li>\n      <a href='#!/"+p((i=null!=(i=t.id||(null!=e?e.id:e))?i:o,typeof i===l?i.call(e,{name:"id",hash:{},data:a}):i))+"' id='endpointListTogger_"+p((i=null!=(i=t.id||(null!=e?e.id:e))?i:o,typeof i===l?i.call(e,{name:"id",hash:{},data:a}):i))+'\' class="toggleEndpointList" data-id="'+p((i=null!=(i=t.id||(null!=e?e.id:e))?i:o,typeof i===l?i.call(e,{name:"id",hash:{},data:a}):i))+'">Show/Hide</a>\n    </li>\n    <li>\n      <a href=\'#\' class="collapseResource" data-id="'+p((i=null!=(i=t.id||(null!=e?e.id:e))?i:o,typeof i===l?i.call(e,{name:"id",hash:{},data:a}):i))+'">\n        List Operations\n      </a>\n    </li>\n    <li>\n      <a href=\'#\' class="expandResource" data-id="'+p((i=null!=(i=t.id||(null!=e?e.id:e))?i:o,typeof i===l?i.call(e,{name:"id",hash:{},data:a}):i))+'">\n        Expand Operations\n      </a>\n    </li>\n    ',i=null!=(i=t.url||(null!=e?e.url:e))?i:o,r={name:"url",hash:{},fn:this.program(3,a),inverse:this.noop,data:a},s=typeof i===l?i.call(e,r):i,t.url||(s=u.call(e,s,r)),null!=s&&(h+=s),h+"\n  </ul>\n</div>\n<ul class='endpoints' id='"+p((i=null!=(i=t.id||(null!=e?e.id:e))?i:o,typeof i===l?i.call(e,{name:"id",hash:{},data:a}):i))+"_endpoint_list' style='display:none'>\n\n</ul>\n"},useData:!0});var ResponseContentTypeView,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;ResponseContentTypeView=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.initialize=function(){},t.prototype.render=function(){var e;return e=this.template(),$(this.el).html(e(this.model)),$("label[for=responseContentType]",$(this.el)).text("Response Content Type"),this},t.prototype.template=function(){return Handlebars.templates.response_content_type},t}(Backbone.View),this.Handlebars.templates.response_content_type=Handlebars.template({1:function(e,t,n,a){var s,i="";return s=t.each.call(e,null!=e?e.produces:e,{name:"each",hash:{},fn:this.program(2,a),inverse:this.noop,data:a}),null!=s&&(i+=s),i},2:function(e){var t,n=this.lambda,a='  <option value="';return t=n(e,e),null!=t&&(a+=t),a+='">',t=n(e,e),null!=t&&(a+=t),a+"</option>\n"},4:function(){return'  <option value="application/json">application/json</option>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i='<label for="responseContentType"></label>\n<select name="responseContentType">\n';return s=t["if"].call(e,null!=e?e.produces:e,{name:"if",hash:{},fn:this.program(1,a),inverse:this.program(4,a),data:a}),null!=s&&(i+=s),i+"</select>\n"},useData:!0});var SignatureView,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;SignatureView=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.events={"click a.description-link":"switchToDescription","click a.snippet-link":"switchToSnippet","mousedown .snippet":"snippetToTextArea"},t.prototype.initialize=function(){},t.prototype.render=function(){var e;return e=this.template(),$(this.el).html(e(this.model)),this.switchToSnippet(),this.isParam=this.model.isParam,this.isParam&&$(".notice",$(this.el)).text("Click to set as parameter value"),this},t.prototype.template=function(){return Handlebars.templates.signature},t.prototype.switchToDescription=function(e){return null!=e&&e.preventDefault(),$(".snippet",$(this.el)).hide(),$(".description",$(this.el)).show(),$(".description-link",$(this.el)).addClass("selected"),$(".snippet-link",$(this.el)).removeClass("selected")},t.prototype.switchToSnippet=function(e){return null!=e&&e.preventDefault(),$(".description",$(this.el)).hide(),$(".snippet",$(this.el)).show(),$(".snippet-link",$(this.el)).addClass("selected"),$(".description-link",$(this.el)).removeClass("selected")},t.prototype.snippetToTextArea=function(e){var t;return this.isParam&&(null!=e&&e.preventDefault(),t=$("textarea",$(this.el.parentNode.parentNode.parentNode)),""===$.trim(t.val()))?t.val(this.model.sampleJSON):void 0},t}(Backbone.View),this.Handlebars.templates.signature=Handlebars.template({compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i,r="function",l=t.helperMissing,o=this.escapeExpression,p='<div>\n<ul class="signature-nav">\n  <li><a class="description-link" href="#">Model</a></li>\n  <li><a class="snippet-link" href="#">Model Schema</a></li>\n</ul>\n<div>\n\n<div class="signature-container">\n  <div class="description">\n    ';return i=null!=(i=t.signature||(null!=e?e.signature:e))?i:l,s=typeof i===r?i.call(e,{name:"signature",hash:{},data:a}):i,null!=s&&(p+=s),p+'\n  </div>\n\n  <div class="snippet">\n    <pre><code>'+o((i=null!=(i=t.sampleJSON||(null!=e?e.sampleJSON:e))?i:l,typeof i===r?i.call(e,{name:"sampleJSON",hash:{},data:a}):i))+'</code></pre>\n    <small class="notice"></small>\n  </div>\n</div>\n\n'},useData:!0});var StatusCodeView,__extends=function(e,t){function n(){this.constructor=e}for(var a in t)__hasProp.call(t,a)&&(e[a]=t[a]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},__hasProp={}.hasOwnProperty;StatusCodeView=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return __extends(t,e),t.prototype.initialize=function(){},t.prototype.render=function(){var e,t,n;return n=this.template(),$(this.el).html(n(this.model)),swaggerUi.api.models.hasOwnProperty(this.model.responseModel)?(e={sampleJSON:JSON.stringify(swaggerUi.api.models[this.model.responseModel].createJSONSample(),null,2),isParam:!1,signature:swaggerUi.api.models[this.model.responseModel].getMockSignature()},t=new SignatureView({model:e,tagName:"div"}),$(".model-signature",this.$el).append(t.render().el)):$(".model-signature",this.$el).html(""),this},t.prototype.template=function(){return Handlebars.templates.status_code},t}(Backbone.View),this.Handlebars.templates.status_code=Handlebars.template({compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,a){var s,i,r="function",l=t.helperMissing,o=this.escapeExpression,p="<td width='15%' class='code'>"+o((i=null!=(i=t.code||(null!=e?e.code:e))?i:l,typeof i===r?i.call(e,{name:"code",hash:{},data:a}):i))+"</td>\n<td>";return i=null!=(i=t.message||(null!=e?e.message:e))?i:l,s=typeof i===r?i.call(e,{name:"message",hash:{},data:a}):i,null!=s&&(p+=s),p+"</td>\n<td width='50%'><span class=\"model-signature\" /></td>"},useData:!0});
\ No newline at end of file
@@ -1,5 +1,5 @@
-               <dataObject id="${dataObject.id}" name="${dataObject.name}">\r
-                       <extensionElements>\r
-                               <activiti:value><![CDATA[${dataObject.value}]]></activiti:value>\r
-                       </extensionElements>\r
+               <dataObject id="${dataObject.id}" name="${dataObject.name}">
+                       <extensionElements>
+                               <activiti:value><![CDATA[${dataObject.value}]]></activiti:value>
+                       </extensionElements>
                </dataObject>
\ No newline at end of file
@@ -1,13 +1,13 @@
-               <intermediateCatchEvent id="${element.id}" name="${element.name}">\r
-                       <timerEventDefinition>\r
-#if (${element.timerEventDefinition.timeDuration})\r
-                               <timeDuration><![CDATA[${element.timerEventDefinition.timeDuration}]]></timeDuration>\r
-#end\r
-#if (${element.timerEventDefinition.timeDate})\r
-                               <timeDate><![CDATA[${element.timerEventDefinition.timeDate}]]></timeDate>\r
-#end\r
-#if (${element.timerEventDefinition.timeCycle})\r
-                               <timeCycle><![CDATA[${element.timerEventDefinition.timeCycle}]]></timeCycle>\r
-#end\r
-                       </timerEventDefinition>\r
+               <intermediateCatchEvent id="${element.id}" name="${element.name}">
+                       <timerEventDefinition>
+#if (${element.timerEventDefinition.timeDuration})
+                               <timeDuration><![CDATA[${element.timerEventDefinition.timeDuration}]]></timeDuration>
+#end
+#if (${element.timerEventDefinition.timeDate})
+                               <timeDate><![CDATA[${element.timerEventDefinition.timeDate}]]></timeDate>
+#end
+#if (${element.timerEventDefinition.timeCycle})
+                               <timeCycle><![CDATA[${element.timerEventDefinition.timeCycle}]]></timeCycle>
+#end
+                       </timerEventDefinition>
                </intermediateCatchEvent>
\ No newline at end of file
@@ -1,33 +1,33 @@
-               <serviceTask id="${element.id}" name="${element.name}"\r
-                       activiti:class="${element.handler}">\r
-                       <extensionElements>\r
-                               <activiti:field name="url">\r
-                                       <activiti:string><![CDATA[$!{element.baseUrl}]]></activiti:string>\r
-                               </activiti:field>\r
-                               <activiti:field name="name">\r
-                                       <activiti:string><![CDATA[$!{element.serviceName}]]></activiti:string>\r
-                               </activiti:field>\r
-                               <activiti:field name="version">\r
-                                       <activiti:string><![CDATA[$!{element.serviceVersion}]]></activiti:string>\r
-                               </activiti:field>\r
-                               <activiti:field name="path">\r
-                                       <activiti:string><![CDATA[$!{element.path}]]></activiti:string>\r
-                               </activiti:field>\r
-                               <activiti:field name="method">\r
-                                       <activiti:string><![CDATA[$!{element.method}]]></activiti:string>\r
-                               </activiti:field>\r
-#if (${element.produces})\r
-                               <activiti:field name="accept">\r
-                                       <activiti:string><![CDATA[${element.produces}]]></activiti:string>\r
-                               </activiti:field>\r
-#end\r
-#if (${element.consumes})\r
-                               <activiti:field name="contentType">\r
-                                       <activiti:string><![CDATA[${element.consumes}]]></activiti:string>\r
-                               </activiti:field>\r
-#end\r
-                               <activiti:field name="parameters">\r
-                                       <activiti:string><![CDATA[${element.parameters}]]></activiti:string>\r
-                               </activiti:field>\r
-                       </extensionElements>\r
+               <serviceTask id="${element.id}" name="${element.name}"
+                       activiti:class="${element.handler}">
+                       <extensionElements>
+                               <activiti:field name="url">
+                                       <activiti:string><![CDATA[$!{element.baseUrl}]]></activiti:string>
+                               </activiti:field>
+                               <activiti:field name="name">
+                                       <activiti:string><![CDATA[$!{element.serviceName}]]></activiti:string>
+                               </activiti:field>
+                               <activiti:field name="version">
+                                       <activiti:string><![CDATA[$!{element.serviceVersion}]]></activiti:string>
+                               </activiti:field>
+                               <activiti:field name="path">
+                                       <activiti:string><![CDATA[$!{element.path}]]></activiti:string>
+                               </activiti:field>
+                               <activiti:field name="method">
+                                       <activiti:string><![CDATA[$!{element.method}]]></activiti:string>
+                               </activiti:field>
+#if (${element.produces})
+                               <activiti:field name="accept">
+                                       <activiti:string><![CDATA[${element.produces}]]></activiti:string>
+                               </activiti:field>
+#end
+#if (${element.consumes})
+                               <activiti:field name="contentType">
+                                       <activiti:string><![CDATA[${element.consumes}]]></activiti:string>
+                               </activiti:field>
+#end
+                               <activiti:field name="parameters">
+                                       <activiti:string><![CDATA[${element.parameters}]]></activiti:string>
+                               </activiti:field>
+                       </extensionElements>
                </serviceTask>
\ No newline at end of file
@@ -1,3 +1,3 @@
-               <scriptTask id="${element.id}" name="${element.name}" scriptFormat="${element.scriptFormat}" activiti:autoStoreVariables="false">\r
-                     <script><![CDATA[${element.script}]]></script>\r
+               <scriptTask id="${element.id}" name="${element.name}" scriptFormat="${element.scriptFormat}" activiti:autoStoreVariables="false">
+                     <script><![CDATA[${element.script}]]></script>
                </scriptTask>
\ No newline at end of file
@@ -1,14 +1,14 @@
-               <serviceTask id="${element.id}" name="${element.name}" activiti:class="${element.className}">\r
-                       <extensionElements>\r
-#foreach( $input in ${element.inputs} )\r
-                               <activiti:field name="${input.name}">\r
-                                       <activiti:string><![CDATA[${input.value}]]></activiti:string>\r
-                               </activiti:field>\r
-#end\r
-#foreach( $output in ${element.outputs} )\r
-                               <activiti:field name="${output.name}">\r
-                                       <activiti:string><![CDATA[${output.value}]]></activiti:string>\r
-                               </activiti:field>\r
-#end\r
-                       </extensionElements>\r
+               <serviceTask id="${element.id}" name="${element.name}" activiti:class="${element.className}">
+                       <extensionElements>
+#foreach( $input in ${element.inputs} )
+                               <activiti:field name="${input.name}">
+                                       <activiti:string><![CDATA[${input.value}]]></activiti:string>
+                               </activiti:field>
+#end
+#foreach( $output in ${element.outputs} )
+                               <activiti:field name="${output.name}">
+                                       <activiti:string><![CDATA[${output.value}]]></activiti:string>
+                               </activiti:field>
+#end
+                       </extensionElements>
                </serviceTask>
\ No newline at end of file
@@ -1,7 +1,7 @@
-               <startEvent id="${element.id}" name="${element.name}">\r
-                       <extensionElements>\r
-#foreach( $param in ${element.parameters} )\r
-                               <activiti:formProperty id="${param.name}" name="${param.name}" default="${param.value}" type="string"></activiti:formProperty>\r
-#end\r
-                       </extensionElements>\r
+               <startEvent id="${element.id}" name="${element.name}">
+                       <extensionElements>
+#foreach( $param in ${element.parameters} )
+                               <activiti:formProperty id="${param.name}" name="${param.name}" default="${param.value}" type="string"></activiti:formProperty>
+#end
+                       </extensionElements>
                </startEvent>
\ No newline at end of file
@@ -1,5 +1,5 @@
-               <sequenceFlow id="${sequenceFlow.id}" sourceRef="${sequenceFlow.sourceRef}" targetRef="${sequenceFlow.targetRef}">\r
-#if(${sequenceFlow.condition} && ${sequenceFlow.condition} != '')\r
-                       <conditionExpression xsi:type="tFormalExpression"><![CDATA[${sequenceFlow.condition}]]></conditionExpression>\r
-#end\r
+               <sequenceFlow id="${sequenceFlow.id}" sourceRef="${sequenceFlow.sourceRef}" targetRef="${sequenceFlow.targetRef}">
+#if(${sequenceFlow.condition} && ${sequenceFlow.condition} != '')
+                       <conditionExpression xsi:type="tFormalExpression"><![CDATA[${sequenceFlow.condition}]]></conditionExpression>
+#end
                </sequenceFlow>
\ No newline at end of file
@@ -1,28 +1,28 @@
-#set( $bpelvar = "$bpelvar" )\r
-<?xml version="1.0" encoding="UTF-8"?>\r
-<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"\r
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn"\r
-       xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"\r
-       xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema"\r
-       expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">\r
-       <process id="${process.id}" isExecutable="true">\r
-               <!-- dataObjects -->\r
-#foreach( $dataObject in $process.dataObjectList)\r
-#parse("${templatePath}bpmn_dataObject_template.xml")\r
-\r
-#end\r
-               \r
-               <!-- Perform bpmn elements -->\r
-#foreach( $element in $process.elementList)\r
-#parse("${templatePath}bpmn_element_${element.type}_template.xml")\r
-\r
-#end\r
-\r
-               <!-- Perform bpmn sequence flow -->\r
-#foreach( $sequenceFlow in $process.sequenceFlowList)\r
-#parse("${templatePath}bpmn_sequenceFlow_template.xml")\r
-\r
-#end\r
-\r
-       </process>\r
-</definitions>\r
+#set( $bpelvar = "$bpelvar" )
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn"
+       xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"
+       xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema"
+       expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
+       <process id="${process.id}" isExecutable="true">
+               <!-- dataObjects -->
+#foreach( $dataObject in $process.dataObjectList)
+#parse("${templatePath}bpmn_dataObject_template.xml")
+
+#end
+               
+               <!-- Perform bpmn elements -->
+#foreach( $element in $process.elementList)
+#parse("${templatePath}bpmn_element_${element.type}_template.xml")
+
+#end
+
+               <!-- Perform bpmn sequence flow -->
+#foreach( $sequenceFlow in $process.sequenceFlowList)
+#parse("${templatePath}bpmn_sequenceFlow_template.xml")
+
+#end
+
+       </process>
+</definitions>
@@ -1,53 +1,53 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner;\r
-\r
-import static org.junit.Assert.assertEquals;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class SDCServiceProxyInfoTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String serviceAddr = "serviceAddr";\r
-    String xEcompInstanceId = "xEcompInstanceId";\r
-    String authorization = "authorization";\r
-    \r
-    SDCServiceProxyInfo spi = new SDCServiceProxyInfo();\r
-    spi.setAuthorization(authorization);\r
-    spi.setServiceAddr(serviceAddr);\r
-    spi.setxEcompInstanceId(xEcompInstanceId);\r
-    \r
-    assertEquals(authorization, spi.getAuthorization());\r
-    assertEquals(serviceAddr, spi.getServiceAddr());\r
-    assertEquals(xEcompInstanceId, spi.getxEcompInstanceId());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class SDCServiceProxyInfoTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String serviceAddr = "serviceAddr";
+    String xEcompInstanceId = "xEcompInstanceId";
+    String authorization = "authorization";
+    
+    SDCServiceProxyInfo spi = new SDCServiceProxyInfo();
+    spi.setAuthorization(authorization);
+    spi.setServiceAddr(serviceAddr);
+    spi.setxEcompInstanceId(xEcompInstanceId);
+    
+    assertEquals(authorization, spi.getAuthorization());
+    assertEquals(serviceAddr, spi.getServiceAddr());
+    assertEquals(xEcompInstanceId, spi.getxEcompInstanceId());
+  }
+
+}
@@ -1,54 +1,54 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner;\r
-\r
-import static org.junit.Assert.assertEquals;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class WorkflowDesignerConfigurationTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String template = "template";\r
-    String defaultName = "Workflow Designer";\r
-    SDCServiceProxyInfo sdcServiceProxy = new SDCServiceProxyInfo();\r
-    \r
-    \r
-    WorkflowDesignerConfiguration wdc = new WorkflowDesignerConfiguration();\r
-    wdc.setDefaultName(defaultName);\r
-    wdc.setSdcServiceProxy(sdcServiceProxy);\r
-    wdc.setTemplate(template);\r
-    \r
-    assertEquals(defaultName, wdc.getDefaultName());\r
-    assertEquals(sdcServiceProxy, wdc.getSdcServiceProxy());\r
-    assertEquals(template, wdc.getTemplate());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class WorkflowDesignerConfigurationTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String template = "template";
+    String defaultName = "Workflow Designer";
+    SDCServiceProxyInfo sdcServiceProxy = new SDCServiceProxyInfo();
+    
+    
+    WorkflowDesignerConfiguration wdc = new WorkflowDesignerConfiguration();
+    wdc.setDefaultName(defaultName);
+    wdc.setSdcServiceProxy(sdcServiceProxy);
+    wdc.setTemplate(template);
+    
+    assertEquals(defaultName, wdc.getDefaultName());
+    assertEquals(sdcServiceProxy, wdc.getSdcServiceProxy());
+    assertEquals(template, wdc.getTemplate());
+  }
+
+}
@@ -1,45 +1,45 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.config;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class AdapterTypeTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    AdapterType at = AdapterType.valueOf("SDC");\r
-    assertEquals(AdapterType.SDC, at);\r
-    AdapterType at1 = AdapterType.valueOf("DEFAULT");\r
-    assertEquals(AdapterType.DEFAULT, at1);\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.config;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class AdapterTypeTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    AdapterType at = AdapterType.valueOf("SDC");
+    assertEquals(AdapterType.SDC, at);
+    AdapterType at1 = AdapterType.valueOf("DEFAULT");
+    assertEquals(AdapterType.DEFAULT, at1);
+  }
+
+}
@@ -1,26 +1,26 @@
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.config;\r
-\r
-import static org.junit.Assert.assertEquals;\r
-\r
-import org.apache.velocity.exception.ParseErrorException;\r
-import org.apache.velocity.exception.ResourceNotFoundException;\r
-import org.junit.Test;\r
-\r
-public class ConfigTest {\r
-    @Test\r
-    public void testLoad() throws ResourceNotFoundException, ParseErrorException, Exception {\r
-        assertEquals(Config.PROPERTIES.get(Config.HANDLER_ClASS),\r
-                "org.onap.workflow.activitiext.restservicetask.HttpUtil");\r
-    }\r
-}\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.config;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.junit.Test;
+
+public class ConfigTest {
+    @Test
+    public void testLoad() throws ResourceNotFoundException, ParseErrorException, Exception {
+        assertEquals(Config.PROPERTIES.get(Config.HANDLER_ClASS),
+                "org.onap.workflow.activitiext.restservicetask.HttpUtil");
+    }
+}
@@ -1,56 +1,56 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.externalservice.sdc.entity;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class ActivityContentTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  /**\r
-   * Test method for {@link java.lang.Object#toString()}.\r
-   */\r
-  @Test\r
-  public void testToString() {\r
-//    String clazz = "clazz";\r
-    String script = "script";\r
-    String scriptFormat = "scriptFormat";\r
-    \r
-    ActivityContent ac = new ActivityContent();\r
-//    ac.setClass(clazz);\r
-    ac.setScript(script);\r
-    ac.setScriptFormat(scriptFormat );\r
-    \r
-//    assertEquals(clazz, ac.getClazz());\r
-    assertEquals(script, ac.getScript());\r
-    assertEquals(scriptFormat, ac.getScriptFormat());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.externalservice.sdc.entity;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class ActivityContentTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  /**
+   * Test method for {@link java.lang.Object#toString()}.
+   */
+  @Test
+  public void testToString() {
+//    String clazz = "clazz";
+    String script = "script";
+    String scriptFormat = "scriptFormat";
+    
+    ActivityContent ac = new ActivityContent();
+//    ac.setClass(clazz);
+    ac.setScript(script);
+    ac.setScriptFormat(scriptFormat );
+    
+//    assertEquals(clazz, ac.getClazz());
+    assertEquals(script, ac.getScript());
+    assertEquals(scriptFormat, ac.getScriptFormat());
+  }
+
+}
@@ -1,74 +1,74 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.externalservice.sdc.entity;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class ActivitySpecTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String id = "";\r
-    String versionId = "";\r
-    String name = "";\r
-    String description = "";\r
-    String type = "";\r
-    String content = "";\r
-    String[] categoryList = new String[]{"aaa"};\r
-    Parameter[] inputs = new Parameter[0];\r
-    Parameter[] outputs = new Parameter[0];\r
-    String status = "status";\r
-    \r
-    ActivitySpec as = new ActivitySpec();\r
-    as.setId(id);\r
-    as.setVersionId(versionId);\r
-    as.setName(name);\r
-    as.setDescription(description);\r
-    as.setType(type);\r
-    as.setContent(content);\r
-    as.setCategoryList(categoryList);\r
-    as.setInputs(inputs);\r
-    as.setOutputs(outputs);\r
-    as.setStatus(status);\r
-    \r
-    assertEquals(id, as.getId());\r
-    assertEquals(versionId, as.getVersionId());\r
-    assertEquals(name, as.getName());\r
-    assertEquals(description, as.getDescription());\r
-    assertEquals(type, as.getType());\r
-    assertEquals(content, as.getContent());\r
-    assertEquals(categoryList, as.getCategoryList());\r
-    assertEquals(inputs, as.getInputs());\r
-    assertEquals(outputs, as.getOutputs());\r
-    assertEquals(status, as.getStatus());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.externalservice.sdc.entity;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class ActivitySpecTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String id = "";
+    String versionId = "";
+    String name = "";
+    String description = "";
+    String type = "";
+    String content = "";
+    String[] categoryList = new String[]{"aaa"};
+    Parameter[] inputs = new Parameter[0];
+    Parameter[] outputs = new Parameter[0];
+    String status = "status";
+    
+    ActivitySpec as = new ActivitySpec();
+    as.setId(id);
+    as.setVersionId(versionId);
+    as.setName(name);
+    as.setDescription(description);
+    as.setType(type);
+    as.setContent(content);
+    as.setCategoryList(categoryList);
+    as.setInputs(inputs);
+    as.setOutputs(outputs);
+    as.setStatus(status);
+    
+    assertEquals(id, as.getId());
+    assertEquals(versionId, as.getVersionId());
+    assertEquals(name, as.getName());
+    assertEquals(description, as.getDescription());
+    assertEquals(type, as.getType());
+    assertEquals(content, as.getContent());
+    assertEquals(categoryList, as.getCategoryList());
+    assertEquals(inputs, as.getInputs());
+    assertEquals(outputs, as.getOutputs());
+    assertEquals(status, as.getStatus());
+  }
+
+}
@@ -1,59 +1,59 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.externalservice.sdc.entity;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-import com.google.gson.annotations.SerializedName;\r
-\r
-/**\r
- *\r
- */\r
-public class ParameterTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String name = "name";\r
-    String type = "type";\r
-    String defaultValue = "defaultValue";\r
-    String value = "value";\r
-    \r
-    Parameter p = new Parameter();\r
-    p.setDefault(defaultValue);\r
-    p.setName(name);\r
-    p.setType(type);\r
-    p.setValue(value);\r
-    \r
-    assertEquals(name, p.getName());\r
-    assertEquals(type, p.getType());\r
-    assertEquals(defaultValue, p.getDefault());\r
-    assertEquals(value, p.getValue());\r
-\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.externalservice.sdc.entity;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.gson.annotations.SerializedName;
+
+/**
+ *
+ */
+public class ParameterTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String name = "name";
+    String type = "type";
+    String defaultValue = "defaultValue";
+    String value = "value";
+    
+    Parameter p = new Parameter();
+    p.setDefault(defaultValue);
+    p.setName(name);
+    p.setType(type);
+    p.setValue(value);
+    
+    assertEquals(name, p.getName());
+    assertEquals(type, p.getType());
+    assertEquals(defaultValue, p.getDefault());
+    assertEquals(value, p.getValue());
+
+  }
+
+}
@@ -1,57 +1,57 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.externalservice.sdc.entity;\r
-\r
-import static org.junit.Assert.assertEquals;\r
-import static org.junit.Assert.fail;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class WorkflowArtifactInfoTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String artifactName = "artifactName";\r
-    String description = "description";\r
-    String artifactType = "WORKFLOW";\r
-    String payloadData = "payloadData";\r
-    \r
-    WorkflowArtifactInfo wai = new WorkflowArtifactInfo(artifactName, description, payloadData);\r
-    wai.setArtifactName(artifactName);\r
-    wai.setArtifactType(artifactType);\r
-    wai.setDescription(description);\r
-    wai.setPayloadData(payloadData);\r
-    \r
-    assertEquals(artifactName, wai.getArtifactName());\r
-    assertEquals(description, wai.getDescription());\r
-    assertEquals(artifactType, wai.getArtifactType());\r
-    assertEquals(payloadData, wai.getPayloadData());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.externalservice.sdc.entity;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class WorkflowArtifactInfoTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String artifactName = "artifactName";
+    String description = "description";
+    String artifactType = "WORKFLOW";
+    String payloadData = "payloadData";
+    
+    WorkflowArtifactInfo wai = new WorkflowArtifactInfo(artifactName, description, payloadData);
+    wai.setArtifactName(artifactName);
+    wai.setArtifactType(artifactType);
+    wai.setDescription(description);
+    wai.setPayloadData(payloadData);
+    
+    assertEquals(artifactName, wai.getArtifactName());
+    assertEquals(description, wai.getDescription());
+    assertEquals(artifactType, wai.getArtifactType());
+    assertEquals(payloadData, wai.getPayloadData());
+  }
+
+}
@@ -1,53 +1,53 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class DataObjectTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String id = "id";\r
-    String name = "name";\r
-    String value = "value";\r
-\r
-    DataObject d = new DataObject();\r
-    d.setId(id);\r
-    d.setName(name);\r
-    d.setValue(value);\r
-    \r
-    assertEquals(id, d.getId());\r
-    assertEquals(name, d.getName());\r
-    assertEquals(value, d.getValue());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class DataObjectTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String id = "id";
+    String name = "name";
+    String value = "value";
+
+    DataObject d = new DataObject();
+    d.setId(id);
+    d.setName(name);
+    d.setValue(value);
+    
+    assertEquals(id, d.getId());
+    assertEquals(name, d.getName());
+    assertEquals(value, d.getValue());
+  }
+
+}
@@ -1,47 +1,47 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class ErrorEndEventTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    Parameter parameter = new Parameter();\r
-\r
-    ErrorEndEvent eee = new ErrorEndEvent();\r
-    eee.setParameter(parameter);\r
-\r
-    assertEquals(parameter, eee.getParameter());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class ErrorEndEventTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    Parameter parameter = new Parameter();
+
+    ErrorEndEvent eee = new ErrorEndEvent();
+    eee.setParameter(parameter);
+
+    assertEquals(parameter, eee.getParameter());
+  }
+
+}
@@ -1,69 +1,69 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-import com.fasterxml.jackson.annotation.JsonInclude;\r
-import com.fasterxml.jackson.annotation.JsonInclude.Include;\r
-\r
-/**\r
- *\r
- */\r
-public class ParameterTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String description = "description";\r
-    String name = "name";\r
-    String position = "position";\r
-    boolean required = false;\r
-    String type = "type";\r
-    Object value = "value";\r
-    String valueSource = "valueSource";\r
-    \r
-    Parameter p = new Parameter();\r
-    p.setDescription(description);\r
-    p.setName(name);\r
-    p.setPosition(position);\r
-    p.setRequired(required);\r
-    p.setType(type);\r
-    p.setValueSource(valueSource);\r
-    p.setValue(value);\r
-    \r
-    assertEquals(description, p.getDescription());\r
-    assertEquals(name, p.getName());\r
-    assertEquals(position, p.getPosition());\r
-    assertEquals(required, p.isRequired());\r
-    assertEquals(type, p.getType());\r
-    assertEquals(valueSource, p.getValueSource());\r
-    assertEquals(value, p.getValue());\r
-    \r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+/**
+ *
+ */
+public class ParameterTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String description = "description";
+    String name = "name";
+    String position = "position";
+    boolean required = false;
+    String type = "type";
+    Object value = "value";
+    String valueSource = "valueSource";
+    
+    Parameter p = new Parameter();
+    p.setDescription(description);
+    p.setName(name);
+    p.setPosition(position);
+    p.setRequired(required);
+    p.setType(type);
+    p.setValueSource(valueSource);
+    p.setValue(value);
+    
+    assertEquals(description, p.getDescription());
+    assertEquals(name, p.getName());
+    assertEquals(position, p.getPosition());
+    assertEquals(required, p.isRequired());
+    assertEquals(type, p.getType());
+    assertEquals(valueSource, p.getValueSource());
+    assertEquals(value, p.getValue());
+    
+  }
+
+}
@@ -1,50 +1,50 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class PositionTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    int left = 100;\r
-    int top = 100;\r
-    \r
-    Position p = new Position();\r
-    p.setLeft(left);\r
-    p.setTop(top);\r
-    \r
-    assertEquals(left, p.getLeft());\r
-    assertEquals(top, p.getTop());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class PositionTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    int left = 100;
+    int top = 100;
+    
+    Position p = new Position();
+    p.setLeft(left);
+    p.setTop(top);
+    
+    assertEquals(left, p.getLeft());
+    assertEquals(top, p.getTop());
+  }
+
+}
@@ -1,62 +1,62 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class ProcessTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String id = "id";\r
-    boolean isExecutable = false;\r
-    List<Element> elementList = new ArrayList<Element>();\r
-    List<SequenceFlow> sequenceFlowList = new ArrayList<SequenceFlow>();\r
-    List<DataObject> dataObjectList = new ArrayList<DataObject>();\r
-    \r
-    Process p = new Process(id);\r
-    p.setDataObjectList(dataObjectList);\r
-    p.setElementList(elementList);\r
-    p.setExecutable(isExecutable);\r
-    p.setId(id);\r
-    p.setSequenceFlowList(sequenceFlowList);\r
-\r
-    assertEquals(dataObjectList, p.getDataObjectList());\r
-    assertEquals(elementList, p.getElementList());\r
-    assertEquals(isExecutable, p.isExecutable());\r
-    assertEquals(id, p.getId());\r
-    assertEquals(sequenceFlowList, p.getSequenceFlowList());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class ProcessTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String id = "id";
+    boolean isExecutable = false;
+    List<Element> elementList = new ArrayList<Element>();
+    List<SequenceFlow> sequenceFlowList = new ArrayList<SequenceFlow>();
+    List<DataObject> dataObjectList = new ArrayList<DataObject>();
+    
+    Process p = new Process(id);
+    p.setDataObjectList(dataObjectList);
+    p.setElementList(elementList);
+    p.setExecutable(isExecutable);
+    p.setId(id);
+    p.setSequenceFlowList(sequenceFlowList);
+
+    assertEquals(dataObjectList, p.getDataObjectList());
+    assertEquals(elementList, p.getElementList());
+    assertEquals(isExecutable, p.isExecutable());
+    assertEquals(id, p.getId());
+    assertEquals(sequenceFlowList, p.getSequenceFlowList());
+  }
+
+}
@@ -1,71 +1,71 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class RestServiceTaskTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    List<String> produces = new ArrayList<>();\r
-    List<String> consumes = new ArrayList<>();\r
-    List<Parameter> parameters = new ArrayList<>();\r
-    String baseUrl = "";\r
-    String serviceName = "";\r
-    String serviceVersion = "";\r
-    String path = "";\r
-    String method = "";\r
-    \r
-    RestServiceTask rst = new RestServiceTask();\r
-    rst.setProduces(produces);\r
-    rst.setConsumes(consumes);\r
-    rst.setParameters(parameters);\r
-    rst.setBaseUrl(baseUrl);\r
-    rst.setServiceName(serviceName);\r
-    rst.setServiceVersion(serviceVersion);\r
-    rst.setPath(path);\r
-    rst.setMethod(method);\r
-    \r
-    assertEquals(produces, rst.getProduces());\r
-    assertEquals(consumes, rst.getConsumes());\r
-    assertEquals(parameters, rst.getParameters());\r
-    assertEquals(baseUrl, rst.getBaseUrl());\r
-    assertEquals(serviceName, rst.getServiceName());\r
-    assertEquals(serviceVersion, rst.getServiceVersion());\r
-    assertEquals(path, rst.getPath());\r
-    assertEquals(method, rst.getMethod());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class RestServiceTaskTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    List<String> produces = new ArrayList<>();
+    List<String> consumes = new ArrayList<>();
+    List<Parameter> parameters = new ArrayList<>();
+    String baseUrl = "";
+    String serviceName = "";
+    String serviceVersion = "";
+    String path = "";
+    String method = "";
+    
+    RestServiceTask rst = new RestServiceTask();
+    rst.setProduces(produces);
+    rst.setConsumes(consumes);
+    rst.setParameters(parameters);
+    rst.setBaseUrl(baseUrl);
+    rst.setServiceName(serviceName);
+    rst.setServiceVersion(serviceVersion);
+    rst.setPath(path);
+    rst.setMethod(method);
+    
+    assertEquals(produces, rst.getProduces());
+    assertEquals(consumes, rst.getConsumes());
+    assertEquals(parameters, rst.getParameters());
+    assertEquals(baseUrl, rst.getBaseUrl());
+    assertEquals(serviceName, rst.getServiceName());
+    assertEquals(serviceVersion, rst.getServiceVersion());
+    assertEquals(path, rst.getPath());
+    assertEquals(method, rst.getMethod());
+  }
+
+}
@@ -1,50 +1,50 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class ScriptTaskTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String scriptFormat = "scriptFormat";\r
-    String script = "script";\r
-    \r
-    ScriptTask st = new ScriptTask();\r
-    st.setScript(script);\r
-    st.setScriptFormat(scriptFormat);\r
-    \r
-    assertEquals(scriptFormat, st.getScriptFormat());\r
-    assertEquals(script, st.getScript());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class ScriptTaskTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String scriptFormat = "scriptFormat";
+    String script = "script";
+    
+    ScriptTask st = new ScriptTask();
+    st.setScript(script);
+    st.setScriptFormat(scriptFormat);
+    
+    assertEquals(scriptFormat, st.getScriptFormat());
+    assertEquals(script, st.getScript());
+  }
+
+}
@@ -1,62 +1,62 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class SequenceFlowTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String id = "id";\r
-    String name = "name";\r
-    String sourceRef = "sourceRef";\r
-    String targetRef = "targetRef";\r
-    String documentation = "documentation";\r
-    String condition = "condition";\r
-    \r
-    SequenceFlow sf = new SequenceFlow();\r
-    sf.setCondition(condition);\r
-    sf.setDocumentation(documentation);\r
-    sf.setId(id);\r
-    sf.setName(name);\r
-    sf.setSourceRef(sourceRef);\r
-    sf.setTargetRef(targetRef);\r
-    \r
-    assertEquals(condition, sf.getCondition());\r
-    assertEquals(documentation, sf.getDocumentation());\r
-    assertEquals(id, sf.getId());\r
-    assertEquals(name, sf.getName());\r
-    assertEquals(sourceRef, sf.getSourceRef());\r
-    assertEquals(targetRef, sf.getTargetRef());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class SequenceFlowTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String id = "id";
+    String name = "name";
+    String sourceRef = "sourceRef";
+    String targetRef = "targetRef";
+    String documentation = "documentation";
+    String condition = "condition";
+    
+    SequenceFlow sf = new SequenceFlow();
+    sf.setCondition(condition);
+    sf.setDocumentation(documentation);
+    sf.setId(id);
+    sf.setName(name);
+    sf.setSourceRef(sourceRef);
+    sf.setTargetRef(targetRef);
+    
+    assertEquals(condition, sf.getCondition());
+    assertEquals(documentation, sf.getDocumentation());
+    assertEquals(id, sf.getId());
+    assertEquals(name, sf.getName());
+    assertEquals(sourceRef, sf.getSourceRef());
+    assertEquals(targetRef, sf.getTargetRef());
+  }
+
+}
@@ -1,56 +1,56 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class ServiceTaskTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String className = "className";\r
-    List<Parameter> inputs = new ArrayList<>();\r
-    List<Parameter> outputs = new ArrayList<>();\r
-    \r
-    ServiceTask st = new ServiceTask();\r
-    st.setClassName(className);\r
-    st.setInputs(inputs);\r
-    st.setOutputs(outputs);\r
-    \r
-    assertEquals(className, st.getClassName());\r
-    assertEquals(inputs, st.getInputs());\r
-    assertEquals(outputs, st.getOutputs());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class ServiceTaskTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String className = "className";
+    List<Parameter> inputs = new ArrayList<>();
+    List<Parameter> outputs = new ArrayList<>();
+    
+    ServiceTask st = new ServiceTask();
+    st.setClassName(className);
+    st.setInputs(inputs);
+    st.setOutputs(outputs);
+    
+    assertEquals(className, st.getClassName());
+    assertEquals(inputs, st.getInputs());
+    assertEquals(outputs, st.getOutputs());
+  }
+
+}
@@ -1,56 +1,56 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.model;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class TimerEventDefinitionTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String type = "type";\r
-    String timeDuration = "timeDuration";\r
-    String timeDate = "timeDate";\r
-    String timeCycle = "timeCycle";\r
-    \r
-    TimerEventDefinition ted = new TimerEventDefinition();\r
-    ted.setType(type);\r
-    ted.setTimeDate(timeDate);\r
-    ted.setTimeDuration(timeDuration);\r
-    ted.setTimeCycle(timeCycle);\r
-    \r
-    assertEquals(type, ted.getType());\r
-    assertEquals(timeDate, ted.getTimeDate());\r
-    assertEquals(timeDuration, ted.getTimeDuration());\r
-    assertEquals(timeCycle, ted.getTimeCycle());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.model;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class TimerEventDefinitionTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String type = "type";
+    String timeDuration = "timeDuration";
+    String timeDate = "timeDate";
+    String timeCycle = "timeCycle";
+    
+    TimerEventDefinition ted = new TimerEventDefinition();
+    ted.setType(type);
+    ted.setTimeDate(timeDate);
+    ted.setTimeDuration(timeDuration);
+    ted.setTimeCycle(timeCycle);
+    
+    assertEquals(type, ted.getType());
+    assertEquals(timeDate, ted.getTimeDate());
+    assertEquals(timeDuration, ted.getTimeDuration());
+    assertEquals(timeCycle, ted.getTimeCycle());
+  }
+
+}
-/**\r
- * Copyright (c) 2017-2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.parser;\r
-\r
-import static org.junit.Assert.assertEquals;\r
-import static org.junit.Assert.fail;\r
-\r
-import java.io.IOException;\r
-import java.net.MalformedURLException;\r
-import java.net.URI;\r
-import java.nio.file.Paths;\r
-import java.util.Iterator;\r
-import java.util.List;\r
-\r
-import org.junit.Test;\r
-import org.onap.sdc.workflowdesigner.model.Element;\r
-import org.onap.sdc.workflowdesigner.model.Position;\r
-import org.onap.sdc.workflowdesigner.model.Process;\r
-import org.onap.sdc.workflowdesigner.model.ScriptTask;\r
-import org.onap.sdc.workflowdesigner.model.SequenceFlow;\r
-\r
-import com.fasterxml.jackson.core.JsonParseException;\r
-import com.fasterxml.jackson.databind.JsonMappingException;\r
-\r
-public class Bpmn4ToscaJsonParserTest {\r
-\r
-    private static String RESOURCES_DIR = "src/test/resources/workflow";\r
-    protected static String PROCESS_NAME = "test1";\r
-\r
-    @Test\r
-    public void parseTest() throws JsonParseException, JsonMappingException, MalformedURLException, IOException {\r
-        Bpmn4ToscaJsonParser parser = new Bpmn4ToscaJsonParser();\r
-        URI srcUri = Paths.get(RESOURCES_DIR, "workflow.json").toUri();\r
-        Process actualProcess = parser.parse(PROCESS_NAME, srcUri);\r
-        Process expectedProcess = createReferenceProcess();\r
-\r
-        assertElements(expectedProcess.getElementList(), actualProcess.getElementList());\r
-        assertSequenceFlows(expectedProcess.getSequenceFlowList(), actualProcess.getSequenceFlowList());\r
-    }\r
-\r
-    private static void assertElements(List<Element> expectedElementList, List<Element> actualElementList) {\r
-        assertEquals(expectedElementList.size(), actualElementList.size());\r
-\r
-        for (Iterator<Element> iterator = expectedElementList.iterator(); iterator.hasNext();) {\r
-            Element expectedElement = (Element) iterator.next();\r
-            Element actualElement = getElementById(expectedElement.getId(), actualElementList);\r
-            if (actualElement != null) {\r
-                assertElement(expectedElement, actualElement);\r
-            } else {\r
-                fail("Element with id " + expectedElement.getId() + " could not be found");\r
-            }\r
-        }\r
-    }\r
-\r
-    private static Element getElementById(String id, List<Element> actualElementList) {\r
-        Iterator<Element> iter = actualElementList.iterator();\r
-        while (iter.hasNext()) {\r
-            Element element = (Element) iter.next();\r
-            if (element.getId().equals(id)) {\r
-                return element;\r
-            }\r
-        }\r
-        return null;\r
-    }\r
-\r
-    public static void assertElement(Element expected, Element actual) {\r
-        assertEquals("element: id ", expected.getId(), actual.getId());\r
-        assertEquals("element: name ", expected.getName(), actual.getName());\r
-    }\r
-\r
-    public static void assertSequenceFlows(List<SequenceFlow> expectedSequenceList,\r
-            List<SequenceFlow> actualSequenceFlowList) {\r
-        assertEquals(expectedSequenceList.size(), actualSequenceFlowList.size());\r
-\r
-        for (Iterator<SequenceFlow> iterator = expectedSequenceList.iterator(); iterator.hasNext();) {\r
-            SequenceFlow expectedElement = (SequenceFlow) iterator.next();\r
-            SequenceFlow actualElement = getSequenceById(expectedElement.getSourceRef(), expectedElement.getTargetRef(),\r
-                    actualSequenceFlowList);\r
-            if (actualElement != null) {\r
-                assertLink(expectedElement, actualElement);\r
-            } else {\r
-                fail("Element with id " + expectedElement.getId() + " could not be found");\r
-            }\r
-        }\r
-    }\r
-\r
-    private static SequenceFlow getSequenceById(String sourceRef, String targetRef,\r
-            List<SequenceFlow> actualSequenceFlowList) {\r
-        Iterator<SequenceFlow> iter = actualSequenceFlowList.iterator();\r
-        while (iter.hasNext()) {\r
-            SequenceFlow element = (SequenceFlow) iter.next();\r
-            if (element.getSourceRef().equals(sourceRef) && element.getTargetRef().equals(targetRef)) {\r
-                return element;\r
-            }\r
-        }\r
-        return null;\r
-    }\r
-\r
-    public static void assertLink(SequenceFlow expectedLink, SequenceFlow actualLink) {\r
-        assertEquals("Link source: id", expectedLink.getSourceRef(), actualLink.getSourceRef());\r
-        assertEquals("Link target :id", expectedLink.getTargetRef(), actualLink.getTargetRef());\r
-    }\r
-\r
-    private static Process createReferenceProcess() {\r
-        Process process = new Process(PROCESS_NAME);\r
-        \r
-        ScriptTask scriptTask = new ScriptTask();\r
-        scriptTask.setId("scriptTask");\r
-        scriptTask.setName("Script Task");\r
-        Position position = new Position();\r
-        position.setLeft(328);\r
-        position.setTop(134);\r
-        scriptTask.setPosition(position);\r
-        scriptTask.setScript("");\r
-        scriptTask.setScriptFormat("JavaScript");\r
-        process.getElementList().add(scriptTask);\r
-\r
-        return process;\r
-    }\r
-\r
-}\r
+/**
+ * Copyright (c) 2017-2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.parser;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.nio.file.Paths;
+import java.util.Iterator;
+import java.util.List;
+
+import org.junit.Test;
+import org.onap.sdc.workflowdesigner.model.Element;
+import org.onap.sdc.workflowdesigner.model.Position;
+import org.onap.sdc.workflowdesigner.model.Process;
+import org.onap.sdc.workflowdesigner.model.ScriptTask;
+import org.onap.sdc.workflowdesigner.model.SequenceFlow;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+
+public class Bpmn4ToscaJsonParserTest {
+
+    private static String RESOURCES_DIR = "src/test/resources/workflow";
+    protected static String PROCESS_NAME = "test1";
+
+    @Test
+    public void parseTest() throws JsonParseException, JsonMappingException, MalformedURLException, IOException {
+        Bpmn4ToscaJsonParser parser = new Bpmn4ToscaJsonParser();
+        URI srcUri = Paths.get(RESOURCES_DIR, "workflow.json").toUri();
+        Process actualProcess = parser.parse(PROCESS_NAME, srcUri);
+        Process expectedProcess = createReferenceProcess();
+
+        assertElements(expectedProcess.getElementList(), actualProcess.getElementList());
+        assertSequenceFlows(expectedProcess.getSequenceFlowList(), actualProcess.getSequenceFlowList());
+    }
+
+    private static void assertElements(List<Element> expectedElementList, List<Element> actualElementList) {
+        assertEquals(expectedElementList.size(), actualElementList.size());
+
+        for (Iterator<Element> iterator = expectedElementList.iterator(); iterator.hasNext();) {
+            Element expectedElement = (Element) iterator.next();
+            Element actualElement = getElementById(expectedElement.getId(), actualElementList);
+            if (actualElement != null) {
+                assertElement(expectedElement, actualElement);
+            } else {
+                fail("Element with id " + expectedElement.getId() + " could not be found");
+            }
+        }
+    }
+
+    private static Element getElementById(String id, List<Element> actualElementList) {
+        Iterator<Element> iter = actualElementList.iterator();
+        while (iter.hasNext()) {
+            Element element = (Element) iter.next();
+            if (element.getId().equals(id)) {
+                return element;
+            }
+        }
+        return null;
+    }
+
+    public static void assertElement(Element expected, Element actual) {
+        assertEquals("element: id ", expected.getId(), actual.getId());
+        assertEquals("element: name ", expected.getName(), actual.getName());
+    }
+
+    public static void assertSequenceFlows(List<SequenceFlow> expectedSequenceList,
+            List<SequenceFlow> actualSequenceFlowList) {
+        assertEquals(expectedSequenceList.size(), actualSequenceFlowList.size());
+
+        for (Iterator<SequenceFlow> iterator = expectedSequenceList.iterator(); iterator.hasNext();) {
+            SequenceFlow expectedElement = (SequenceFlow) iterator.next();
+            SequenceFlow actualElement = getSequenceById(expectedElement.getSourceRef(), expectedElement.getTargetRef(),
+                    actualSequenceFlowList);
+            if (actualElement != null) {
+                assertLink(expectedElement, actualElement);
+            } else {
+                fail("Element with id " + expectedElement.getId() + " could not be found");
+            }
+        }
+    }
+
+    private static SequenceFlow getSequenceById(String sourceRef, String targetRef,
+            List<SequenceFlow> actualSequenceFlowList) {
+        Iterator<SequenceFlow> iter = actualSequenceFlowList.iterator();
+        while (iter.hasNext()) {
+            SequenceFlow element = (SequenceFlow) iter.next();
+            if (element.getSourceRef().equals(sourceRef) && element.getTargetRef().equals(targetRef)) {
+                return element;
+            }
+        }
+        return null;
+    }
+
+    public static void assertLink(SequenceFlow expectedLink, SequenceFlow actualLink) {
+        assertEquals("Link source: id", expectedLink.getSourceRef(), actualLink.getSourceRef());
+        assertEquals("Link target :id", expectedLink.getTargetRef(), actualLink.getTargetRef());
+    }
+
+    private static Process createReferenceProcess() {
+        Process process = new Process(PROCESS_NAME);
+        
+        ScriptTask scriptTask = new ScriptTask();
+        scriptTask.setId("scriptTask");
+        scriptTask.setName("Script Task");
+        Position position = new Position();
+        position.setLeft(328);
+        position.setTop(134);
+        scriptTask.setPosition(position);
+        scriptTask.setScript("");
+        scriptTask.setScriptFormat("JavaScript");
+        process.getElementList().add(scriptTask);
+
+        return process;
+    }
+
+}
@@ -1,58 +1,58 @@
-/**\r
- * Copyright (c) 2017-2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.planwriter;\r
-\r
-import static org.junit.Assert.assertEquals;\r
-\r
-import java.io.BufferedReader;\r
-import java.io.File;\r
-import java.io.FileReader;\r
-import java.io.IOException;\r
-\r
-import org.junit.Test;\r
-import org.onap.sdc.workflowdesigner.model.Process;\r
-import org.onap.sdc.workflowdesigner.writer.BpmnPlanArtefactWriter;\r
-\r
-public class BpmnPlanArtefactWriterTest {\r
-\r
-    @Test\r
-    public void testWritePlan() throws Exception {\r
-        BpmnPlanArtefactWriter writer = new BpmnPlanArtefactWriter(mockProcss());\r
-        String result = writer.completePlanTemplate();\r
-        assertEquals(result, getResult());\r
-    }\r
-\r
-    private Process mockProcss() {\r
-        Process process = new Process("templateTest");\r
-\r
-        return process;\r
-    }\r
-\r
-    public String getResult() throws IOException {\r
-        StringBuffer buffer = new StringBuffer();\r
-\r
-        String path = "src/test/resources/workflow/template-test.bpmn20.xml";\r
-        BufferedReader reader = new BufferedReader(new FileReader(new File(path)));\r
-\r
-        String line = null;\r
-        while ((line = reader.readLine()) != null) {\r
-            buffer.append(line).append("\r\n");\r
-        }\r
-\r
-        if (reader != null) {\r
-            reader.close();\r
-        }\r
-\r
-        return buffer.toString();\r
-    }\r
-\r
-}\r
+/**
+ * Copyright (c) 2017-2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.planwriter;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+import org.junit.Test;
+import org.onap.sdc.workflowdesigner.model.Process;
+import org.onap.sdc.workflowdesigner.writer.BpmnPlanArtefactWriter;
+
+public class BpmnPlanArtefactWriterTest {
+
+    @Test
+    public void testWritePlan() throws Exception {
+        BpmnPlanArtefactWriter writer = new BpmnPlanArtefactWriter(mockProcss());
+        String result = writer.completePlanTemplate();
+        assertEquals(result, getResult());
+    }
+
+    private Process mockProcss() {
+        Process process = new Process("templateTest");
+
+        return process;
+    }
+
+    public String getResult() throws IOException {
+        StringBuffer buffer = new StringBuffer();
+
+        String path = "src/test/resources/workflow/template-test.bpmn20.xml";
+        BufferedReader reader = new BufferedReader(new FileReader(new File(path)));
+
+        String line = null;
+        while ((line = reader.readLine()) != null) {
+            buffer.append(line).append("\r\n");
+        }
+
+        if (reader != null) {
+            reader.close();
+        }
+
+        return buffer.toString();
+    }
+
+}
@@ -1,66 +1,66 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources;\r
-\r
-import static org.junit.Assert.assertEquals;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import org.onap.sdc.workflowdesigner.resources.entity.ExtActivity;\r
-import org.onap.sdc.workflowdesigner.utils.FileCommonUtils;\r
-import org.onap.sdc.workflowdesigner.utils.JsonUtils;\r
-\r
-/**\r
- *\r
- */\r
-public class ExtendActivityResourceTest {\r
-  private static final String EXT_ACTIVITIES_FILE_NAME = "src/main/assembly/ext-activities.json";\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  /**\r
-   * \r
-   */\r
-  @Test\r
-  public void testRetriveExtActivites() {\r
-    try {\r
-      String json = FileCommonUtils.readString(EXT_ACTIVITIES_FILE_NAME);\r
-      ExtActivity[] extActivities = JsonUtils.fromJson(json, ExtActivity[].class);\r
-      \r
-      FileCommonUtils.write("test.json", JsonUtils.toJson(extActivities));\r
-      assertEquals(extActivities.length == 0, false);\r
-    } catch (Exception e) {\r
-      e.printStackTrace();\r
-    }\r
-\r
-  }\r
-\r
-  /**\r
-   * Test method for {@link org.onap.sdc.workflowdesigner.resources.ExtendActivityResource#getDisplayInfo(java.lang.String)}.\r
-   */\r
-  @Test\r
-  public void testGetDisplayInfo() {\r
-\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.sdc.workflowdesigner.resources.entity.ExtActivity;
+import org.onap.sdc.workflowdesigner.utils.FileCommonUtils;
+import org.onap.sdc.workflowdesigner.utils.JsonUtils;
+
+/**
+ *
+ */
+public class ExtendActivityResourceTest {
+  private static final String EXT_ACTIVITIES_FILE_NAME = "src/main/assembly/ext-activities.json";
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  /**
+   * 
+   */
+  @Test
+  public void testRetriveExtActivites() {
+    try {
+      String json = FileCommonUtils.readString(EXT_ACTIVITIES_FILE_NAME);
+      ExtActivity[] extActivities = JsonUtils.fromJson(json, ExtActivity[].class);
+      
+      FileCommonUtils.write("test.json", JsonUtils.toJson(extActivities));
+      assertEquals(extActivities.length == 0, false);
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+
+  }
+
+  /**
+   * Test method for {@link org.onap.sdc.workflowdesigner.resources.ExtendActivityResource#getDisplayInfo(java.lang.String)}.
+   */
+  @Test
+  public void testGetDisplayInfo() {
+
+  }
+
+}
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources;\r
-\r
-import static org.junit.Assert.assertEquals;\r
-\r
-import java.io.IOException;\r
-import java.net.URI;\r
-import java.nio.file.Paths;\r
-import java.util.UUID;\r
-\r
-import org.dom4j.DocumentException;\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import org.onap.sdc.workflowdesigner.resources.entity.WorkflowInfo;\r
-import org.onap.sdc.workflowdesigner.utils.FileCommonUtils;\r
-import org.onap.sdc.workflowdesigner.utils.JsonUtils;\r
-\r
-/**\r
- *\r
- */\r
-public class WorkflowModelerResourceTest {\r
-  private static final String WORKFLOW_JSON_TEMP_FILE_NAME = "temp_workflow.json";\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  /**\r
-   * Test method for\r
-   * {@link org.onap.sdc.workflowdesigner.resources.WorkflowModelerResource#buildBPMN(java.net.URI, java.lang.String)}.\r
-   */\r
-  @Test\r
-  public void testBuildBPMN() {\r
-    String bpmn = parseBpmnfromJsonFile();\r
-    assertEquals(false, bpmn.isEmpty());\r
-  }\r
-\r
-  /**\r
-   * @return\r
-   */\r
-  private String parseBpmnfromJsonFile() {\r
-    try {\r
-      URI srcUri = Paths.get("src/main/assembly", WORKFLOW_JSON_TEMP_FILE_NAME).toUri();\r
-      WorkflowModelerResource resource = new WorkflowModelerResource();\r
-      String processName = "plan_" + UUID.randomUUID().toString();\r
-      return resource.buildBPMN(srcUri, processName);\r
-    } catch (IOException e) {\r
-    } catch (Exception e) {\r
-    }\r
-\r
-    return null;\r
-  }\r
-\r
-  /**\r
-   * Test method for\r
-   * {@link org.onap.sdc.workflowdesigner.resources.WorkflowModelerResource#insertJson2Bpmn(java.lang.String, java.lang.String)}.\r
-   */\r
-  @Test\r
-  public void testInsertJson2Bpmn() {\r
-    String bpmn = parseBpmnfromJsonFile();\r
-\r
-    try {\r
-      String json = FileCommonUtils.readString("src/main/assembly/" + WORKFLOW_JSON_TEMP_FILE_NAME);\r
-      WorkflowModelerResource resource = new WorkflowModelerResource();\r
-      String combineBpmn = resource.insertJson2Bpmn(json, bpmn);\r
-\r
-      String json1 = resource.readJsonfromBPMN(combineBpmn);\r
-\r
-      assertEqualsJson(json, json1);\r
-    } catch (IOException e) {\r
-    } catch (DocumentException e) {\r
-    }\r
-  }\r
-\r
-  /**\r
-   * @param json\r
-   * @param json1\r
-   */\r
-  private void assertEqualsJson(String json, String json1) {\r
-    WorkflowInfo wi = JsonUtils.fromJson(json, WorkflowInfo.class);\r
-    WorkflowInfo wi1 = JsonUtils.fromJson(json1, WorkflowInfo.class);\r
-\r
-    String newJson = JsonUtils.toJson(wi);\r
-    String newJson1 = JsonUtils.toJson(wi1);\r
-\r
-    assertEquals(newJson1, newJson);\r
-\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.net.URI;
+import java.nio.file.Paths;
+import java.util.UUID;
+
+import org.dom4j.DocumentException;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.sdc.workflowdesigner.resources.entity.WorkflowInfo;
+import org.onap.sdc.workflowdesigner.utils.FileCommonUtils;
+import org.onap.sdc.workflowdesigner.utils.JsonUtils;
+
+/**
+ *
+ */
+public class WorkflowModelerResourceTest {
+  private static final String WORKFLOW_JSON_TEMP_FILE_NAME = "temp_workflow.json";
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  /**
+   * Test method for
+   * {@link org.onap.sdc.workflowdesigner.resources.WorkflowModelerResource#buildBPMN(java.net.URI, java.lang.String)}.
+   */
+  @Test
+  public void testBuildBPMN() {
+    String bpmn = parseBpmnfromJsonFile();
+    assertEquals(false, bpmn.isEmpty());
+  }
+
+  /**
+   * @return
+   */
+  private String parseBpmnfromJsonFile() {
+    try {
+      URI srcUri = Paths.get("src/main/assembly", WORKFLOW_JSON_TEMP_FILE_NAME).toUri();
+      WorkflowModelerResource resource = new WorkflowModelerResource();
+      String processName = "plan_" + UUID.randomUUID().toString();
+      return resource.buildBPMN(srcUri, processName);
+    } catch (IOException e) {
+    } catch (Exception e) {
+    }
+
+    return null;
+  }
+
+  /**
+   * Test method for
+   * {@link org.onap.sdc.workflowdesigner.resources.WorkflowModelerResource#insertJson2Bpmn(java.lang.String, java.lang.String)}.
+   */
+  @Test
+  public void testInsertJson2Bpmn() {
+    String bpmn = parseBpmnfromJsonFile();
+
+    try {
+      String json = FileCommonUtils.readString("src/main/assembly/" + WORKFLOW_JSON_TEMP_FILE_NAME);
+      WorkflowModelerResource resource = new WorkflowModelerResource();
+      String combineBpmn = resource.insertJson2Bpmn(json, bpmn);
+
+      String json1 = resource.readJsonfromBPMN(combineBpmn);
+
+      assertEqualsJson(json, json1);
+    } catch (IOException e) {
+    } catch (DocumentException e) {
+    }
+  }
+
+  /**
+   * @param json
+   * @param json1
+   */
+  private void assertEqualsJson(String json, String json1) {
+    WorkflowInfo wi = JsonUtils.fromJson(json, WorkflowInfo.class);
+    WorkflowInfo wi1 = JsonUtils.fromJson(json1, WorkflowInfo.class);
+
+    String newJson = JsonUtils.toJson(wi);
+    String newJson1 = JsonUtils.toJson(wi1);
+
+    assertEquals(newJson1, newJson);
+
+  }
+
+}
@@ -1,50 +1,50 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class CategoryDataTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    I18nString displayName = new I18nString();\r
-    boolean collapse = false;\r
-    \r
-    CategoryData cd = new CategoryData();\r
-    cd.setDisplayName(displayName);\r
-    cd.setCollapse(collapse);\r
-\r
-    assertEquals(false, cd.isCollapse());\r
-    assertEquals(displayName, cd.getDisplayName());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class CategoryDataTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    I18nString displayName = new I18nString();
+    boolean collapse = false;
+    
+    CategoryData cd = new CategoryData();
+    cd.setDisplayName(displayName);
+    cd.setCollapse(collapse);
+
+    assertEquals(false, cd.isCollapse());
+    assertEquals(displayName, cd.getDisplayName());
+  }
+
+}
@@ -1,73 +1,73 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import org.onap.sdc.workflowdesigner.utils.JsonUtils;\r
-\r
-/**\r
- *\r
- */\r
-public class ContentTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-//    String clazz = "clazz";\r
-    String script = "script";\r
-    String scriptFormat = "scriptFormat";\r
-    Map<String, InputOutput> inputs = new HashMap<String, InputOutput>();\r
-    Map<String, InputOutput> outputs = new HashMap<String, InputOutput>();\r
-    \r
-    Content c = new Content();\r
-//    c.setClass(clazz);\r
-    c.setInputs(inputs);\r
-    c.setOutputs(outputs);\r
-    c.setScript(script);\r
-    c.setScriptFormat(scriptFormat);\r
-    \r
-//    assertEquals(clazz, c.getClazz());\r
-    assertEquals(inputs, c.getInputs());\r
-    assertEquals(outputs, c.getOutputs());\r
-    assertEquals(script, c.getScript());\r
-    assertEquals(scriptFormat, c.getScriptFormat());\r
-  }\r
-  \r
-  @Test\r
-  public void testGson() {\r
-    String json = "{\r\n" + \r
-        "      \"class\": \"aaaa\",\r\n" + \r
-        "      \"inputs\": {}\r\n" + \r
-        "    }";\r
-    Content content = JsonUtils.fromJson(json, Content.class);\r
-    assertNotNull(content);\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+import static org.junit.Assert.*;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.sdc.workflowdesigner.utils.JsonUtils;
+
+/**
+ *
+ */
+public class ContentTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+//    String clazz = "clazz";
+    String script = "script";
+    String scriptFormat = "scriptFormat";
+    Map<String, InputOutput> inputs = new HashMap<String, InputOutput>();
+    Map<String, InputOutput> outputs = new HashMap<String, InputOutput>();
+    
+    Content c = new Content();
+//    c.setClass(clazz);
+    c.setInputs(inputs);
+    c.setOutputs(outputs);
+    c.setScript(script);
+    c.setScriptFormat(scriptFormat);
+    
+//    assertEquals(clazz, c.getClazz());
+    assertEquals(inputs, c.getInputs());
+    assertEquals(outputs, c.getOutputs());
+    assertEquals(script, c.getScript());
+    assertEquals(scriptFormat, c.getScriptFormat());
+  }
+  
+  @Test
+  public void testGson() {
+    String json = "{\r\n" + 
+        "      \"class\": \"aaaa\",\r\n" + 
+        "      \"inputs\": {}\r\n" + 
+        "    }";
+    Content content = JsonUtils.fromJson(json, Content.class);
+    assertNotNull(content);
+  }
+
+}
@@ -1,53 +1,53 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class ExtActivityDisplayInfoTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    Map<String, NodeCategory> nodes = new HashMap<>();\r
-    Map<String, CategoryData> categoryData = new HashMap<>();\r
-    \r
-    ExtActivityDisplayInfo ed = new ExtActivityDisplayInfo();\r
-    ed.setCategoryData(categoryData);\r
-    ed.setNodes(nodes);\r
-    \r
-    assertEquals(categoryData, ed.getCategoryData());\r
-    assertEquals(nodes, ed.getNodes());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+import static org.junit.Assert.*;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class ExtActivityDisplayInfoTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    Map<String, NodeCategory> nodes = new HashMap<>();
+    Map<String, CategoryData> categoryData = new HashMap<>();
+    
+    ExtActivityDisplayInfo ed = new ExtActivityDisplayInfo();
+    ed.setCategoryData(categoryData);
+    ed.setNodes(nodes);
+    
+    assertEquals(categoryData, ed.getCategoryData());
+    assertEquals(nodes, ed.getNodes());
+  }
+
+}
@@ -1,63 +1,63 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class ExtendActivityTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String id = "";\r
-    I18nString displayName = new I18nString();\r
-    I18nString description = new I18nString();\r
-    String type = "";\r
-    IconData icon = new IconData();\r
-    Content content = new Content();\r
-\r
-    ExtActivity ea = new ExtActivity();\r
-    ea.setContent(content);\r
-    ea.setDescription(description);\r
-    ea.setDisplayName(displayName);\r
-    ea.setIcon(icon);\r
-    ea.setId(id);\r
-    ea.setType(type);\r
-    \r
-    assertEquals(content, ea.getContent());\r
-    assertEquals(description, ea.getDescription());\r
-    assertEquals(displayName, ea.getDisplayName());\r
-    assertEquals(icon, ea.getIcon());\r
-    assertEquals(id, ea.getId());\r
-    assertEquals(type, ea.getType());\r
-\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class ExtendActivityTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String id = "";
+    I18nString displayName = new I18nString();
+    I18nString description = new I18nString();
+    String type = "";
+    IconData icon = new IconData();
+    Content content = new Content();
+
+    ExtActivity ea = new ExtActivity();
+    ea.setContent(content);
+    ea.setDescription(description);
+    ea.setDisplayName(displayName);
+    ea.setIcon(icon);
+    ea.setId(id);
+    ea.setType(type);
+    
+    assertEquals(content, ea.getContent());
+    assertEquals(description, ea.getDescription());
+    assertEquals(displayName, ea.getDisplayName());
+    assertEquals(icon, ea.getIcon());
+    assertEquals(id, ea.getId());
+    assertEquals(type, ea.getType());
+
+  }
+
+}
@@ -1,49 +1,49 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class I18nStringTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String en_US = "en_US";\r
-    String zh_CN = "zh_CN";\r
-    I18nString i18n = new I18nString(en_US, zh_CN);\r
-    i18n.setEn_US(en_US);\r
-    i18n.setZh_CN(zh_CN);\r
-    \r
-    assertEquals(en_US, i18n.getEn_US());\r
-    assertEquals(zh_CN, i18n.getZh_CN());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class I18nStringTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String en_US = "en_US";
+    String zh_CN = "zh_CN";
+    I18nString i18n = new I18nString(en_US, zh_CN);
+    i18n.setEn_US(en_US);
+    i18n.setZh_CN(zh_CN);
+    
+    assertEquals(en_US, i18n.getEn_US());
+    assertEquals(zh_CN, i18n.getZh_CN());
+  }
+
+}
@@ -1,53 +1,53 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class IconDataTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String name = "name";\r
-    int width = 100;\r
-    int height= 10;\r
-    \r
-    IconData id = new IconData();\r
-    id.setHeight(height);\r
-    id.setName(name);\r
-    id.setWidth(width);\r
-    \r
-    assertEquals(height, id.getHeight());\r
-    assertEquals(name, id.getName());\r
-    assertEquals(width, id.getWidth());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class IconDataTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String name = "name";
+    int width = 100;
+    int height= 10;
+    
+    IconData id = new IconData();
+    id.setHeight(height);
+    id.setName(name);
+    id.setWidth(width);
+    
+    assertEquals(height, id.getHeight());
+    assertEquals(name, id.getName());
+    assertEquals(width, id.getWidth());
+  }
+
+}
@@ -1,67 +1,67 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-import com.google.gson.annotations.SerializedName;\r
-\r
-/**\r
- *\r
- */\r
-public class InputOutputTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String type = "";\r
-    String defaultValue = "";\r
-    boolean required = false;\r
-    I18nString displayName = new I18nString();\r
-    boolean show = true;\r
-    boolean editable = true;\r
-    String value = "";\r
-\r
-    InputOutput io = new InputOutput();\r
-    io.setDefault(defaultValue);\r
-    io.setDisplayName(displayName);\r
-    io.setEditable(editable);\r
-    io.setRequired(required);\r
-    io.setShow(show);\r
-    io.setType(type);\r
-    io.setValue(value);\r
-    \r
-    assertEquals(defaultValue, io.getDefault());\r
-    assertEquals(displayName, io.getDisplayName());\r
-    assertEquals(editable, io.isEditable());\r
-    assertEquals(required, io.isRequired());\r
-    assertEquals(show, io.isShow());\r
-    assertEquals(type, io.getType());\r
-    assertEquals(value, io.getValue());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.gson.annotations.SerializedName;
+
+/**
+ *
+ */
+public class InputOutputTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String type = "";
+    String defaultValue = "";
+    boolean required = false;
+    I18nString displayName = new I18nString();
+    boolean show = true;
+    boolean editable = true;
+    String value = "";
+
+    InputOutput io = new InputOutput();
+    io.setDefault(defaultValue);
+    io.setDisplayName(displayName);
+    io.setEditable(editable);
+    io.setRequired(required);
+    io.setShow(show);
+    io.setType(type);
+    io.setValue(value);
+    
+    assertEquals(defaultValue, io.getDefault());
+    assertEquals(displayName, io.getDisplayName());
+    assertEquals(editable, io.isEditable());
+    assertEquals(required, io.isRequired());
+    assertEquals(show, io.isShow());
+    assertEquals(type, io.getType());
+    assertEquals(value, io.getValue());
+  }
+
+}
@@ -1,47 +1,47 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class NodeCategoryTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String category = "category";\r
-    \r
-    NodeCategory nc = new NodeCategory();\r
-    nc.setCategory(category);\r
-    \r
-    assertEquals(category, nc.getCategory());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class NodeCategoryTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String category = "category";
+    
+    NodeCategory nc = new NodeCategory();
+    nc.setCategory(category);
+    
+    assertEquals(category, nc.getCategory());
+  }
+
+}
@@ -1,67 +1,67 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.resources.entity;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-import com.google.gson.JsonObject;\r
-\r
-/**\r
- *\r
- */\r
-public class WorkflowInfoTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  @Test\r
-  public void test() {\r
-    String uuid = "";\r
-    String operationId = "";\r
-    String id = "";\r
-    String name = "";\r
-    String description = "";\r
-    String scene = "";\r
-    JsonObject data =new JsonObject();\r
-    \r
-    WorkflowInfo wi = new WorkflowInfo();\r
-    wi.setData(data);\r
-    wi.setDescription(description);\r
-    wi.setId(id);\r
-    wi.setName(name);\r
-    wi.setOperationId(operationId);\r
-    wi.setScene(scene);\r
-    wi.setUuid(uuid);\r
-    \r
-    assertEquals(data, wi.getData());\r
-    assertEquals(description, wi.getDescription());\r
-    assertEquals(id, wi.getId());\r
-    assertEquals(name, wi.getName());\r
-    assertEquals(operationId, wi.getOperationId());\r
-    assertEquals(scene, wi.getScene());\r
-    assertEquals(uuid, wi.getUuid());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.resources.entity;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.gson.JsonObject;
+
+/**
+ *
+ */
+public class WorkflowInfoTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  @Test
+  public void test() {
+    String uuid = "";
+    String operationId = "";
+    String id = "";
+    String name = "";
+    String description = "";
+    String scene = "";
+    JsonObject data =new JsonObject();
+    
+    WorkflowInfo wi = new WorkflowInfo();
+    wi.setData(data);
+    wi.setDescription(description);
+    wi.setId(id);
+    wi.setName(name);
+    wi.setOperationId(operationId);
+    wi.setScene(scene);
+    wi.setUuid(uuid);
+    
+    assertEquals(data, wi.getData());
+    assertEquals(description, wi.getDescription());
+    assertEquals(id, wi.getId());
+    assertEquals(name, wi.getName());
+    assertEquals(operationId, wi.getOperationId());
+    assertEquals(scene, wi.getScene());
+    assertEquals(uuid, wi.getUuid());
+  }
+
+}
-/**\r
- * Copyright (c) 2017-2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.utils;\r
-\r
-import static org.junit.Assert.assertEquals;\r
-\r
-import java.io.File;\r
-import java.io.FileInputStream;\r
-import java.io.FileNotFoundException;\r
-import java.io.IOException;\r
-import java.io.StringBufferInputStream;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class FileCommonUtilsTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  /**\r
-   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#readLines(java.io.InputStream)}.\r
-   */\r
-  @Test\r
-  public void testReadLines() {\r
-    String fileName = "src/test/resources/workflow/template-test.bpmn20.xml";\r
-    File file = new File(fileName);\r
-    FileInputStream ins = null;\r
-    try {\r
-      ins = new FileInputStream(file);\r
-      String[] ss = FileCommonUtils.readLines(ins);\r
-      assertEquals(false, ss.length == 0);\r
-      \r
-      FileCommonUtils.write("template-test.bpmn20.xml", ss);\r
-    } catch (FileNotFoundException e) {\r
-      e.printStackTrace();\r
-    } catch (IOException e) {\r
-      e.printStackTrace();\r
-    } finally {\r
-      FileCommonUtils.closeInputStream(ins);\r
-    }\r
-\r
-  }\r
-\r
-  /**\r
-   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#readString(java.io.InputStream)}.\r
-   */\r
-  @Test\r
-  public void testReadStringInputStream() {\r
-  }\r
-\r
-  /**\r
-   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#readString(java.lang.String)}.\r
-   */\r
-  @Test\r
-  public void testReadStringString() {\r
-    String fileName = "src/test/resources/workflow/template-test.bpmn20.xml";\r
-    File file = new File(fileName);\r
-    if (file.exists()) {\r
-      try {\r
-        String s = FileCommonUtils.readString(fileName);\r
-        FileCommonUtils.write("test.xml", s);\r
-        assertEquals(s.isEmpty(), false);\r
-      } catch (IOException e) {\r
-      }\r
-    }\r
-  }\r
-\r
-  /**\r
-   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#saveFile(java.io.InputStream, java.lang.String, java.lang.String)}.\r
-   */\r
-  @Test\r
-  public void testSaveFile() {\r
-    String fileName = "test3.json";\r
-    String content = "{\"aaa\": \"节点\"}";\r
-    StringBufferInputStream ins = null;\r
-    try {\r
-      ins = new StringBufferInputStream(content);\r
-      FileCommonUtils.saveFile(ins, ".", fileName);\r
-    } catch (IOException e) {\r
-      e.printStackTrace();\r
-      FileCommonUtils.closeInputStream(ins);\r
-    }\r
-  }\r
-\r
-  /**\r
-   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#writetoAbsoluteFile(java.lang.String, java.lang.String, java.lang.String)}.\r
-   */\r
-  @Test\r
-  public void testWritetoAbsoluteFileStringStringString() {\r
-    String fileName = "test1.json";\r
-    String content = "{\"aaa\": \"节点\"}";\r
-\r
-    try {\r
-      FileCommonUtils.writetoAbsoluteFile(".", fileName, content);\r
-      String s = FileCommonUtils.readString(fileName);\r
-      assertEquals(s, content);\r
-    } catch (IOException e) {\r
-    }\r
-  }\r
-\r
-  /**\r
-   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#writetoAbsoluteFile(java.lang.String, java.lang.String, java.lang.String, java.lang.String)}.\r
-   */\r
-  @Test\r
-  public void testWritetoAbsoluteFileStringStringStringString() {\r
-  }\r
-\r
-  /**\r
-   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#write(java.lang.String, java.lang.String)}.\r
-   */\r
-  @Test\r
-  public void testWriteStringString() {\r
-    String fileName = "test.json";\r
-    String content = "{\"aaa\": \"节点\"}";\r
-\r
-    try {\r
-      FileCommonUtils.write(fileName, content);\r
-      String s = FileCommonUtils.readString(fileName);\r
-      assertEquals(s, content);\r
-    } catch (IOException e) {\r
-    }\r
-  }\r
-\r
-  /**\r
-   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#write(java.lang.String, java.lang.String, java.lang.String, java.lang.String)}.\r
-   */\r
-  @Test\r
-  public void testWriteStringStringStringString() {\r
-  }\r
-\r
-  /**\r
-   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#write(java.lang.String, java.lang.String, java.lang.String)}.\r
-   */\r
-  @Test\r
-  public void testWriteStringStringString() {\r
-  }\r
-\r
-  /**\r
-   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#write(java.lang.String, java.lang.String[])}.\r
-   */\r
-  @Test\r
-  public void testWriteStringStringArray() {\r
-  }\r
-\r
-  /**\r
-   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#write(java.lang.String, java.lang.String[], java.lang.String)}.\r
-   */\r
-  @Test\r
-  public void testWriteStringStringArrayString() {\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2017-2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.utils;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.StringBufferInputStream;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class FileCommonUtilsTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  /**
+   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#readLines(java.io.InputStream)}.
+   */
+  @Test
+  public void testReadLines() {
+    String fileName = "src/test/resources/workflow/template-test.bpmn20.xml";
+    File file = new File(fileName);
+    FileInputStream ins = null;
+    try {
+      ins = new FileInputStream(file);
+      String[] ss = FileCommonUtils.readLines(ins);
+      assertEquals(false, ss.length == 0);
+      
+      FileCommonUtils.write("template-test.bpmn20.xml", ss);
+    } catch (FileNotFoundException e) {
+      e.printStackTrace();
+    } catch (IOException e) {
+      e.printStackTrace();
+    } finally {
+      FileCommonUtils.closeInputStream(ins);
+    }
+
+  }
+
+  /**
+   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#readString(java.io.InputStream)}.
+   */
+  @Test
+  public void testReadStringInputStream() {
+  }
+
+  /**
+   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#readString(java.lang.String)}.
+   */
+  @Test
+  public void testReadStringString() {
+    String fileName = "src/test/resources/workflow/template-test.bpmn20.xml";
+    File file = new File(fileName);
+    if (file.exists()) {
+      try {
+        String s = FileCommonUtils.readString(fileName);
+        FileCommonUtils.write("test.xml", s);
+        assertEquals(s.isEmpty(), false);
+      } catch (IOException e) {
+      }
+    }
+  }
+
+  /**
+   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#saveFile(java.io.InputStream, java.lang.String, java.lang.String)}.
+   */
+  @Test
+  public void testSaveFile() {
+    String fileName = "test3.json";
+    String content = "{\"aaa\": \"节点\"}";
+    StringBufferInputStream ins = null;
+    try {
+      ins = new StringBufferInputStream(content);
+      FileCommonUtils.saveFile(ins, ".", fileName);
+    } catch (IOException e) {
+      e.printStackTrace();
+      FileCommonUtils.closeInputStream(ins);
+    }
+  }
+
+  /**
+   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#writetoAbsoluteFile(java.lang.String, java.lang.String, java.lang.String)}.
+   */
+  @Test
+  public void testWritetoAbsoluteFileStringStringString() {
+    String fileName = "test1.json";
+    String content = "{\"aaa\": \"节点\"}";
+
+    try {
+      FileCommonUtils.writetoAbsoluteFile(".", fileName, content);
+      String s = FileCommonUtils.readString(fileName);
+      assertEquals(s, content);
+    } catch (IOException e) {
+    }
+  }
+
+  /**
+   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#writetoAbsoluteFile(java.lang.String, java.lang.String, java.lang.String, java.lang.String)}.
+   */
+  @Test
+  public void testWritetoAbsoluteFileStringStringStringString() {
+  }
+
+  /**
+   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#write(java.lang.String, java.lang.String)}.
+   */
+  @Test
+  public void testWriteStringString() {
+    String fileName = "test.json";
+    String content = "{\"aaa\": \"节点\"}";
+
+    try {
+      FileCommonUtils.write(fileName, content);
+      String s = FileCommonUtils.readString(fileName);
+      assertEquals(s, content);
+    } catch (IOException e) {
+    }
+  }
+
+  /**
+   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#write(java.lang.String, java.lang.String, java.lang.String, java.lang.String)}.
+   */
+  @Test
+  public void testWriteStringStringStringString() {
+  }
+
+  /**
+   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#write(java.lang.String, java.lang.String, java.lang.String)}.
+   */
+  @Test
+  public void testWriteStringStringString() {
+  }
+
+  /**
+   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#write(java.lang.String, java.lang.String[])}.
+   */
+  @Test
+  public void testWriteStringStringArray() {
+  }
+
+  /**
+   * Test method for {@link org.onap.sdc.workflowdesigner.utils.FileCommonUtils#write(java.lang.String, java.lang.String[], java.lang.String)}.
+   */
+  @Test
+  public void testWriteStringStringArrayString() {
+  }
+
+}
@@ -1,59 +1,59 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.utils;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import org.onap.sdc.workflowdesigner.resources.entity.I18nString;\r
-\r
-/**\r
- *\r
- */\r
-public class JsonUtilsTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  /**\r
-   * Test method for {@link org.onap.sdc.workflowdesigner.utils.JsonUtils#fromJson(java.lang.String, java.lang.Class)}.\r
-   */\r
-  @Test\r
-  public void testFromJson() {\r
-    String i18n = "{\"en_US\":\"Service Task\",\"zh_CN\":\"Service Task\"}";\r
-    I18nString i18nString = JsonUtils.fromJson(i18n, I18nString.class);\r
-    assertNotNull(i18nString);\r
-  }\r
-\r
-  /**\r
-   * Test method for {@link org.onap.sdc.workflowdesigner.utils.JsonUtils#toJson(java.lang.Object)}.\r
-   */\r
-  @Test\r
-  public void testToJson() {\r
-    I18nString  i18nString = new I18nString("Service Task", "Service Task");\r
-    String i18n = JsonUtils.toJson(i18nString);\r
-    String expect = "{\"en_US\":\"Service Task\",\"zh_CN\":\"Service Task\"}";\r
-    assertEquals(expect, i18n);\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.utils;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.sdc.workflowdesigner.resources.entity.I18nString;
+
+/**
+ *
+ */
+public class JsonUtilsTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  /**
+   * Test method for {@link org.onap.sdc.workflowdesigner.utils.JsonUtils#fromJson(java.lang.String, java.lang.Class)}.
+   */
+  @Test
+  public void testFromJson() {
+    String i18n = "{\"en_US\":\"Service Task\",\"zh_CN\":\"Service Task\"}";
+    I18nString i18nString = JsonUtils.fromJson(i18n, I18nString.class);
+    assertNotNull(i18nString);
+  }
+
+  /**
+   * Test method for {@link org.onap.sdc.workflowdesigner.utils.JsonUtils#toJson(java.lang.Object)}.
+   */
+  @Test
+  public void testToJson() {
+    I18nString  i18nString = new I18nString("Service Task", "Service Task");
+    String i18n = JsonUtils.toJson(i18nString);
+    String expect = "{\"en_US\":\"Service Task\",\"zh_CN\":\"Service Task\"}";
+    assertEquals(expect, i18n);
+  }
+
+}
@@ -1,51 +1,51 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the Apache License, Version 2.0\r
- * and the Eclipse Public License v1.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-package org.onap.sdc.workflowdesigner.utils.entity;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import org.junit.After;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-/**\r
- *\r
- */\r
-public class CommonErrorResponseTest {\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @Before\r
-  public void setUp() throws Exception {}\r
-\r
-  /**\r
-   * @throws java.lang.Exception\r
-   */\r
-  @After\r
-  public void tearDown() throws Exception {}\r
-\r
-  /**\r
-   * Test method for {@link org.onap.sdc.workflowdesigner.utils.entity.CommonErrorResponse#failure(java.lang.String)}.\r
-   */\r
-  @Test\r
-  public void testFailure() {\r
-    String code = "code";\r
-    String message = "message";\r
-    CommonErrorResponse errorResponse = new CommonErrorResponse(code);\r
-    errorResponse.setCode(code);\r
-    errorResponse.setMessage(message);\r
-    assertEquals(code, errorResponse.getCode());\r
-    assertEquals(message, errorResponse.getMessage());\r
-  }\r
-\r
-}\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+package org.onap.sdc.workflowdesigner.utils.entity;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class CommonErrorResponseTest {
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @Before
+  public void setUp() throws Exception {}
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @After
+  public void tearDown() throws Exception {}
+
+  /**
+   * Test method for {@link org.onap.sdc.workflowdesigner.utils.entity.CommonErrorResponse#failure(java.lang.String)}.
+   */
+  @Test
+  public void testFailure() {
+    String code = "code";
+    String message = "message";
+    CommonErrorResponse errorResponse = new CommonErrorResponse(code);
+    errorResponse.setCode(code);
+    errorResponse.setMessage(message);
+    assertEquals(code, errorResponse.getCode());
+    assertEquals(message, errorResponse.getMessage());
+  }
+
+}
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"\r
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn"\r
-       xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"\r
-       xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema"\r
-       expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">\r
-       <process id="templateTest" isExecutable="true">\r
-               <!-- dataObjects -->\r
-               \r
-               <!-- Perform bpmn elements -->\r
-\r
-               <!-- Perform bpmn sequence flow -->\r
-\r
-       </process>\r
-</definitions>\r
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn"
+       xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"
+       xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema"
+       expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
+       <process id="templateTest" isExecutable="true">
+               <!-- dataObjects -->
+               
+               <!-- Perform bpmn elements -->
+
+               <!-- Perform bpmn sequence flow -->
+
+       </process>
+</definitions>
@@ -1,28 +1,28 @@
-{\r
-    "id":"id12345",\r
-    "name":"test",\r
-    "scene":"abcd",\r
-    "data":{\r
-        "nodes":[\r
-            {\r
-                "id":"scriptTask",\r
-                "type":"scriptTask",\r
-                "typeId":"apds_script",\r
-                "icon":"apds_script",\r
-                "name":"Script Task",\r
-                "parentId":"root",\r
-                "position":{\r
-                    "left":328,\r
-                    "top":134,\r
-                    "width":56,\r
-                    "height":56\r
-                },\r
-                "connection":[\r
-\r
-                ],\r
-                "scriptFormat":"JavaScript",\r
-                "script":""\r
-            }\r
-        ]\r
-    }\r
+{
+    "id":"id12345",
+    "name":"test",
+    "scene":"abcd",
+    "data":{
+        "nodes":[
+            {
+                "id":"scriptTask",
+                "type":"scriptTask",
+                "typeId":"apds_script",
+                "icon":"apds_script",
+                "name":"Script Task",
+                "parentId":"root",
+                "position":{
+                    "left":328,
+                    "top":134,
+                    "width":56,
+                    "height":56
+                },
+                "connection":[
+
+                ],
+                "scriptFormat":"JavaScript",
+                "script":""
+            }
+        ]
+    }
 }
\ No newline at end of file
     <parent>
         <groupId>org.onap.sdc.sdc-workflow-designer</groupId>
         <artifactId>sdc-workflow-designer</artifactId>
-        <version>1.1.0-SNAPSHOT</version>
+        <version>1.2.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
-    <groupId>org.onap.sdc.sdc-workflow-designer</groupId>
     <artifactId>sdc-workflow-designer-ui</artifactId>
     <name>sdc-workflow-designer-ui</name>
     <packaging>jar</packaging>
-@import "../default/theme.less";\r
-\r
-@padding-normal: 0px 16px;\r
-@padding-sm: 0px 14px;\r
-@padding-xs: 0px 12px;\r
-@min-width-normal: 80px;\r
-@min-width-sm: 60px;\r
-@min-width-xs: 60px;\r
-@btn-margin-right: 10px;\r
-@btn-margin-right-sm: 5px;\r
-@btn-margin-right-xs: 5px;\r
-@btn-border-height: 1px;\r
-\r
-.border-min-width(@min-width, 14px) {\r
-       min-width: @min-width + 8px;\r
-}\r
-\r
-.border-min-width(@min-width, 12px) {\r
-       min-width: @min-width;\r
-}\r
-\r
-.background-color-white-color-disabled (@color) when (@color = #fff) {\r
-       color: @disabled-text-color;\r
-  background-color: @common-color;\r
-       border-color: #e9e9e9;\r
-}\r
-\r
-.background-color-white-color-disabled (@color) when not (@color = #fff) {\r
-       border-color: @color;\r
-       background-color: @color;\r
-       opacity: @opacity-disable;\r
-}\r
-\r
-.plx-btn {\r
-       font-family: @font-family;\r
-       color: @common-textcolor;\r
-       .border-min-width(@min-width-normal, @font-size);\r
-       letter-spacing: 1px;\r
-       padding: @padding-normal;\r
-       height: @btn-height;\r
-       font-size: @font-size;\r
-       cursor: pointer;\r
-       text-align: center;\r
-       white-space: nowrap;\r
-       margin-right: @btn-margin-right;\r
-       vertical-align: middle;\r
-       border: @btn-border-height solid @border-color-base;\r
-       background-color: @common-color;\r
-       border-radius: @radius;\r
-       line-height: @btn-height - @btn-border-height * 2;\r
-       &:hover,\r
-       &:disabled,\r
-       &[disabled],\r
-       &:focus,\r
-       &:active {\r
-               outline: none;\r
-               background-image: none;\r
-               filter: none;\r
-               -webkit-box-shadow: none;\r
-               -moz-box-shadow: none;\r
-               box-shadow: none;\r
-               text-shadow: none;\r
-       }\r
-       &:hover,\r
-       &:focus {\r
-    color: @btn-common-color-text-hover;\r
-    border-color: @btn-common-color-border-hover;\r
-               background-color: @common-color-hover;\r
-       }\r
-       &:active {\r
-    color: @btn-common-color-text-click;\r
-    border-color: @btn-common-color-border-click;\r
-               background-color: @common-color-click;\r
-       }\r
-       &:disabled,\r
-       &[disabled] {\r
-               .background-color-white-color-disabled(@common-color);\r
-       }\r
-       &:disabled:hover,\r
-       &[disabled]:hover,\r
-       &:disabled:focus,\r
-       &[disabled]:focus {\r
-               .background-color-white-color-disabled(@common-color);\r
-               cursor: not-allowed;\r
-       }\r
-       & .plx-btn-icon {\r
-                       font-size: 16px;\r
-                       vertical-align: text-top;\r
-                       margin-right: 3px;\r
-       }\r
-}\r
-\r
-.plx-btn-primary {\r
-       background-color: @primary-color;\r
-       color: @scene-textcolor;\r
-       border-color: @primary-color;\r
-       &:hover,\r
-       &:focus {\r
-    color: @scene-textcolor;\r
-               background-color: @primary-color-hover;\r
-               border-color: @primary-color-hover;\r
-       }\r
-       &:active {\r
-    color: @scene-textcolor;\r
-               background-color: @primary-color-click;\r
-               border-color: @primary-color-click;\r
-       }\r
-       &:disabled,\r
-       &[disabled],\r
-       &:disabled:hover,\r
-       &[disabled]:hover,\r
-       &:disabled:focus,\r
-       &[disabled]:focus {\r
-               color: @scene-textcolor;\r
-               .background-color-white-color-disabled(@primary-color);\r
-       }\r
-}\r
-\r
-.plx-btn-guide {\r
-       background-color: @guide-color;\r
-       color: @scene-textcolor;\r
-       border-color: @guide-color;\r
-       &:hover,\r
-       &:focus {\r
-    color: @scene-textcolor;\r
-               background-color: @primary-color-guide-hover;\r
-               border-color: @primary-color-guide-hover;\r
-       }\r
-       &:active {\r
-    color: @scene-textcolor;\r
-               background-color: @primary-color-guide-click;\r
-               border-color: @primary-color-guide-click;\r
-       }\r
-       &:disabled,\r
-       &[disabled],\r
-       &:disabled:hover,\r
-       &[disabled]:hover,\r
-       &:disabled:focus,\r
-       &[disabled]:focus {\r
-               color: @scene-textcolor;\r
-               .background-color-white-color-disabled(@guide-color);\r
-       }\r
-}\r
-\r
-.plx-btn-table {\r
-       color: @text-color;\r
-}\r
-\r
-.plx-btn-error {\r
-       background-color: @error-color;\r
-       color: @scene-textcolor;\r
-       border-color: @error-color;\r
-       &:hover,\r
-       &:focus {\r
-    color: @scene-textcolor;\r
-               background-color: @error-color-hover;\r
-               border-color: @error-color-hover;\r
-       }\r
-       &:active {\r
-    color: @scene-textcolor;\r
-               background-color: @error-color-click;\r
-               border-color: @error-color-click;\r
-       }\r
-       &:disabled,\r
-       &[disabled],\r
-       &:disabled:hover,\r
-       &[disabled]:hover,\r
-       &:disabled:focus,\r
-       &[disabled]:focus {\r
-               color: @scene-textcolor;\r
-               .background-color-white-color-disabled(@error-color);\r
-       }\r
-}\r
-\r
-.plx-btn-sm {\r
-       height: @btn-height-sm;\r
-       padding: @padding-sm;\r
-       .border-min-width(@min-width-sm, @font-size);\r
-       margin-right: @btn-margin-right-sm;\r
-       line-height: @btn-height-sm - @btn-border-height * 2;\r
-}\r
-\r
-.plx-btn-xs{\r
-       height: @btn-height-xs;\r
-       padding: @padding-xs;\r
-       .border-min-width(@min-width-xs, @font-size);\r
-       margin-right: @btn-margin-right-xs;\r
-       line-height: @btn-height-xs - @btn-border-height * 2;\r
-}\r
-\r
-.plx-btn.dropdown-toggle {\r
-       margin-right: 0;\r
-       outline: none !important;\r
-       background-image: none !important;\r
-       filter: none;\r
-       -webkit-box-shadow: none;\r
-       -moz-box-shadow: none;\r
-       box-shadow: none;\r
-       text-shadow: none;\r
-}\r
-\r
-.plx-btn.dropdown-toggle::after {\r
-       margin-left: 16px;\r
-       border-top: 4px solid;\r
-       border-right: 4px solid transparent;\r
-       border-left: 4px solid transparent;\r
-       color: darken(@border-color-base, 10%);\r
-       margin-bottom: 1px;\r
-}\r
-\r
-.plx-btn-sm.dropdown-toggle::after {\r
-       margin-left: 14px;\r
-}\r
-\r
-.plx-btn-xs.dropdown-toggle::after {\r
-       margin-left: 12px;\r
-}\r
-\r
-.plx-btn+.dropdown-menu {\r
-       margin: 0;\r
-       padding: 0;\r
-       border: 0;\r
-       min-width: 100%;\r
-       font-size: @font-size;\r
-       border-radius: @radius;\r
-       .shadow;\r
-       & .dropdown-item {\r
-               background-color: @component-bg;\r
-               color: @text-color;\r
-               font-size: @font-size;\r
-               padding: @padding-normal;\r
-               height: 30px;\r
-               cursor: pointer;\r
-               &:hover,\r
-               &:focus,\r
-               &:active{\r
-                       outline: none;\r
-                       background-color: @hover-bg-color;\r
-               }\r
-               &:disabled,\r
-               &[disabled] {\r
-                       color: @disabled-text-color;\r
-               }\r
-               &:disabled:hover,\r
-               &[disabled]:hover,\r
-               &:disabled:focus,\r
-               &[disabled]:focus {\r
-                       cursor: not-allowed;\r
-                       background-color: @component-bg;\r
-               }\r
-       }\r
-}\r
-\r
-.plx-btn-sm+.dropdown-menu .dropdown-item {\r
-       padding: @padding-sm;\r
-}\r
-.plx-btn-xs+.dropdown-menu .dropdown-item {\r
-       padding: @padding-xs;\r
-}\r
-\r
-.plx-btn-more {\r
-       display: inline-block;\r
-       margin-right: @btn-margin-right;\r
-}\r
-\r
-.plx-btn-more-sm {\r
-       margin-right: @btn-margin-right-sm;\r
-}\r
-\r
-.plx-btn-more-xs {\r
-       margin-right: @btn-margin-right-xs;\r
+@import "../default/theme.less";
+
+@padding-normal: 0px 16px;
+@padding-sm: 0px 14px;
+@padding-xs: 0px 12px;
+@min-width-normal: 80px;
+@min-width-sm: 60px;
+@min-width-xs: 60px;
+@btn-margin-right: 10px;
+@btn-margin-right-sm: 5px;
+@btn-margin-right-xs: 5px;
+@btn-border-height: 1px;
+
+.border-min-width(@min-width, 14px) {
+       min-width: @min-width + 8px;
+}
+
+.border-min-width(@min-width, 12px) {
+       min-width: @min-width;
+}
+
+.background-color-white-color-disabled (@color) when (@color = #fff) {
+       color: @disabled-text-color;
+  background-color: @common-color;
+       border-color: #e9e9e9;
+}
+
+.background-color-white-color-disabled (@color) when not (@color = #fff) {
+       border-color: @color;
+       background-color: @color;
+       opacity: @opacity-disable;
+}
+
+.plx-btn {
+       font-family: @font-family;
+       color: @common-textcolor;
+       .border-min-width(@min-width-normal, @font-size);
+       letter-spacing: 1px;
+       padding: @padding-normal;
+       height: @btn-height;
+       font-size: @font-size;
+       cursor: pointer;
+       text-align: center;
+       white-space: nowrap;
+       margin-right: @btn-margin-right;
+       vertical-align: middle;
+       border: @btn-border-height solid @border-color-base;
+       background-color: @common-color;
+       border-radius: @radius;
+       line-height: @btn-height - @btn-border-height * 2;
+       &:hover,
+       &:disabled,
+       &[disabled],
+       &:focus,
+       &:active {
+               outline: none;
+               background-image: none;
+               filter: none;
+               -webkit-box-shadow: none;
+               -moz-box-shadow: none;
+               box-shadow: none;
+               text-shadow: none;
+       }
+       &:hover,
+       &:focus {
+    color: @btn-common-color-text-hover;
+    border-color: @btn-common-color-border-hover;
+               background-color: @common-color-hover;
+       }
+       &:active {
+    color: @btn-common-color-text-click;
+    border-color: @btn-common-color-border-click;
+               background-color: @common-color-click;
+       }
+       &:disabled,
+       &[disabled] {
+               .background-color-white-color-disabled(@common-color);
+       }
+       &:disabled:hover,
+       &[disabled]:hover,
+       &:disabled:focus,
+       &[disabled]:focus {
+               .background-color-white-color-disabled(@common-color);
+               cursor: not-allowed;
+       }
+       & .plx-btn-icon {
+                       font-size: 16px;
+                       vertical-align: text-top;
+                       margin-right: 3px;
+       }
+}
+
+.plx-btn-primary {
+       background-color: @primary-color;
+       color: @scene-textcolor;
+       border-color: @primary-color;
+       &:hover,
+       &:focus {
+    color: @scene-textcolor;
+               background-color: @primary-color-hover;
+               border-color: @primary-color-hover;
+       }
+       &:active {
+    color: @scene-textcolor;
+               background-color: @primary-color-click;
+               border-color: @primary-color-click;
+       }
+       &:disabled,
+       &[disabled],
+       &:disabled:hover,
+       &[disabled]:hover,
+       &:disabled:focus,
+       &[disabled]:focus {
+               color: @scene-textcolor;
+               .background-color-white-color-disabled(@primary-color);
+       }
+}
+
+.plx-btn-guide {
+       background-color: @guide-color;
+       color: @scene-textcolor;
+       border-color: @guide-color;
+       &:hover,
+       &:focus {
+    color: @scene-textcolor;
+               background-color: @primary-color-guide-hover;
+               border-color: @primary-color-guide-hover;
+       }
+       &:active {
+    color: @scene-textcolor;
+               background-color: @primary-color-guide-click;
+               border-color: @primary-color-guide-click;
+       }
+       &:disabled,
+       &[disabled],
+       &:disabled:hover,
+       &[disabled]:hover,
+       &:disabled:focus,
+       &[disabled]:focus {
+               color: @scene-textcolor;
+               .background-color-white-color-disabled(@guide-color);
+       }
+}
+
+.plx-btn-table {
+       color: @text-color;
+}
+
+.plx-btn-error {
+       background-color: @error-color;
+       color: @scene-textcolor;
+       border-color: @error-color;
+       &:hover,
+       &:focus {
+    color: @scene-textcolor;
+               background-color: @error-color-hover;
+               border-color: @error-color-hover;
+       }
+       &:active {
+    color: @scene-textcolor;
+               background-color: @error-color-click;
+               border-color: @error-color-click;
+       }
+       &:disabled,
+       &[disabled],
+       &:disabled:hover,
+       &[disabled]:hover,
+       &:disabled:focus,
+       &[disabled]:focus {
+               color: @scene-textcolor;
+               .background-color-white-color-disabled(@error-color);
+       }
+}
+
+.plx-btn-sm {
+       height: @btn-height-sm;
+       padding: @padding-sm;
+       .border-min-width(@min-width-sm, @font-size);
+       margin-right: @btn-margin-right-sm;
+       line-height: @btn-height-sm - @btn-border-height * 2;
+}
+
+.plx-btn-xs{
+       height: @btn-height-xs;
+       padding: @padding-xs;
+       .border-min-width(@min-width-xs, @font-size);
+       margin-right: @btn-margin-right-xs;
+       line-height: @btn-height-xs - @btn-border-height * 2;
+}
+
+.plx-btn.dropdown-toggle {
+       margin-right: 0;
+       outline: none !important;
+       background-image: none !important;
+       filter: none;
+       -webkit-box-shadow: none;
+       -moz-box-shadow: none;
+       box-shadow: none;
+       text-shadow: none;
+}
+
+.plx-btn.dropdown-toggle::after {
+       margin-left: 16px;
+       border-top: 4px solid;
+       border-right: 4px solid transparent;
+       border-left: 4px solid transparent;
+       color: darken(@border-color-base, 10%);
+       margin-bottom: 1px;
+}
+
+.plx-btn-sm.dropdown-toggle::after {
+       margin-left: 14px;
+}
+
+.plx-btn-xs.dropdown-toggle::after {
+       margin-left: 12px;
+}
+
+.plx-btn+.dropdown-menu {
+       margin: 0;
+       padding: 0;
+       border: 0;
+       min-width: 100%;
+       font-size: @font-size;
+       border-radius: @radius;
+       .shadow;
+       & .dropdown-item {
+               background-color: @component-bg;
+               color: @text-color;
+               font-size: @font-size;
+               padding: @padding-normal;
+               height: 30px;
+               cursor: pointer;
+               &:hover,
+               &:focus,
+               &:active{
+                       outline: none;
+                       background-color: @hover-bg-color;
+               }
+               &:disabled,
+               &[disabled] {
+                       color: @disabled-text-color;
+               }
+               &:disabled:hover,
+               &[disabled]:hover,
+               &:disabled:focus,
+               &[disabled]:focus {
+                       cursor: not-allowed;
+                       background-color: @component-bg;
+               }
+       }
+}
+
+.plx-btn-sm+.dropdown-menu .dropdown-item {
+       padding: @padding-sm;
+}
+.plx-btn-xs+.dropdown-menu .dropdown-item {
+       padding: @padding-xs;
+}
+
+.plx-btn-more {
+       display: inline-block;
+       margin-right: @btn-margin-right;
+}
+
+.plx-btn-more-sm {
+       margin-right: @btn-margin-right-sm;
+}
+
+.plx-btn-more-xs {
+       margin-right: @btn-margin-right-xs;
 }
\ No newline at end of file
-@import "../default/theme.less";\r
-\r
-@checkbox-border-size: 1px;\r
-\r
-.plx-checkbox-container {\r
-       font-size: 0;\r
-       position: relative;\r
-}\r
-\r
-.plx-checkbox {\r
-       position: absolute;\r
-       z-index: -1;\r
-       opacity: 0;\r
-       & + .checkbox-substitute {\r
-               position: relative;\r
-               display: inline-block;\r
-               cursor: pointer;\r
-               height: @checkbox-size;\r
-               width: @checkbox-size;\r
-               border: @checkbox-border-size solid @border-color-base;\r
-               border-radius: @radius-sm;\r
-               vertical-align: middle;\r
-       }\r
-       & + .checkbox-substitute + span {\r
-               font-weight: normal;\r
-               font-size: @font-size;\r
-               cursor: pointer;\r
-               vertical-align: middle;\r
-               .font-padding(@font-size);\r
-       }\r
-       &:hover + .checkbox-substitute {\r
-               border-color: @primary-color;\r
-               outline: none;\r
-               background-image: none;\r
-               -webkit-box-shadow: none;\r
-               -moz-box-shadow: none;\r
-               box-shadow: none;\r
-               text-shadow: none;\r
-       }\r
-       &:checked + .checkbox-substitute {\r
-               border-color: @primary-color;\r
-               background-color: @primary-color;\r
-               &::after {\r
-                       .checkbox-check(@component-bg);\r
-               }\r
-       }\r
-       &.portion + .checkbox-substitute {\r
-               background-color: @primary-color;\r
-               border-color: @primary-color;\r
-               opacity: 0.5;\r
-               &::after {\r
-                       .checkbox-check(@component-bg);\r
-               }\r
-       }\r
-       &:disabled + .checkbox-substitute,\r
-       &[disabled] + .checkbox-substitute {\r
-               border-color: @border-color-base;\r
-               background-color: @input-bg-color-disabled;\r
-               cursor: not-allowed;\r
-       }\r
-       &:disabled + .checkbox-substitute + span,\r
-       &[disabled] + .checkbox-substitute + span {\r
-               cursor: not-allowed;\r
-       }\r
-       &.portion[disabled] + .checkbox-substitute {\r
-               background-color: @border-color-base;\r
-               border-color: @border-color-base;\r
-               &::after {\r
-                       .checkbox-check(@fonticon-color);\r
-               }\r
-       }\r
-       &:checked[disabled] + .checkbox-substitute {\r
-               border-color: @border-color-base;\r
-               background-color: @border-color-base;\r
-       }\r
-}\r
-\r
-.checkbox-check(@color) {\r
-       content: '';\r
-       position: absolute;\r
-       display: block;\r
-       width: 6px;\r
-       height: 10px;\r
-       border: solid @color;\r
-       border-width: 0 2px 2px 0;\r
-       transform: rotate(45deg);\r
-       .checkbox-check-left(@font-size);\r
-       top: 0;\r
-}\r
-\r
-.checkbox-check-left(12px) {\r
-       left: 3px;\r
-}\r
-\r
-.checkbox-check-left(14px) {\r
-       left: 4px;\r
-}\r
-\r
-.font-padding(12px) {\r
-       padding-left: 6px;\r
-}\r
-\r
-.font-padding(14px) {\r
-       padding-left: 10px;\r
-}\r
+@import "../default/theme.less";
+
+@checkbox-border-size: 1px;
+
+.plx-checkbox-container {
+       font-size: 0;
+       position: relative;
+}
+
+.plx-checkbox {
+       position: absolute;
+       z-index: -1;
+       opacity: 0;
+       & + .checkbox-substitute {
+               position: relative;
+               display: inline-block;
+               cursor: pointer;
+               height: @checkbox-size;
+               width: @checkbox-size;
+               border: @checkbox-border-size solid @border-color-base;
+               border-radius: @radius-sm;
+               vertical-align: middle;
+       }
+       & + .checkbox-substitute + span {
+               font-weight: normal;
+               font-size: @font-size;
+               cursor: pointer;
+               vertical-align: middle;
+               .font-padding(@font-size);
+       }
+       &:hover + .checkbox-substitute {
+               border-color: @primary-color;
+               outline: none;
+               background-image: none;
+               -webkit-box-shadow: none;
+               -moz-box-shadow: none;
+               box-shadow: none;
+               text-shadow: none;
+       }
+       &:checked + .checkbox-substitute {
+               border-color: @primary-color;
+               background-color: @primary-color;
+               &::after {
+                       .checkbox-check(@component-bg);
+               }
+       }
+       &.portion + .checkbox-substitute {
+               background-color: @primary-color;
+               border-color: @primary-color;
+               opacity: 0.5;
+               &::after {
+                       .checkbox-check(@component-bg);
+               }
+       }
+       &:disabled + .checkbox-substitute,
+       &[disabled] + .checkbox-substitute {
+               border-color: @border-color-base;
+               background-color: @input-bg-color-disabled;
+               cursor: not-allowed;
+       }
+       &:disabled + .checkbox-substitute + span,
+       &[disabled] + .checkbox-substitute + span {
+               cursor: not-allowed;
+       }
+       &.portion[disabled] + .checkbox-substitute {
+               background-color: @border-color-base;
+               border-color: @border-color-base;
+               &::after {
+                       .checkbox-check(@fonticon-color);
+               }
+       }
+       &:checked[disabled] + .checkbox-substitute {
+               border-color: @border-color-base;
+               background-color: @border-color-base;
+       }
+}
+
+.checkbox-check(@color) {
+       content: '';
+       position: absolute;
+       display: block;
+       width: 6px;
+       height: 10px;
+       border: solid @color;
+       border-width: 0 2px 2px 0;
+       transform: rotate(45deg);
+       .checkbox-check-left(@font-size);
+       top: 0;
+}
+
+.checkbox-check-left(12px) {
+       left: 3px;
+}
+
+.checkbox-check-left(14px) {
+       left: 4px;
+}
+
+.font-padding(12px) {
+       padding-left: 6px;
+}
+
+.font-padding(14px) {
+       padding-left: 10px;
+}
@@ -1,29 +1,29 @@
-@import "../default/theme.less";\r
-\r
-.plx-input {\r
-       font-size: @font-size;\r
-       height: @input-height;\r
-       padding-left: 10px;\r
-       padding-right: 10px;\r
-       outline: 0;\r
-       border: 1px solid @border-color-base;\r
-       border-radius: @radius;\r
-       vertical-align: middle;\r
-       &:focus {\r
-               border: 1px solid @primary-color;\r
-       }\r
-       &:disabled,\r
-       &[disabled] {\r
-               cursor: not-allowed;\r
-               background-color: @input-bg-color-disabled;\r
-       }\r
-}\r
-\r
-.plx-input-sm {\r
-       height: @input-height-sm;\r
-}\r
-\r
-.plx-input-right-no-radius {\r
-       border-bottom-right-radius: 0;\r
-       border-top-right-radius: 0;\r
+@import "../default/theme.less";
+
+.plx-input {
+       font-size: @font-size;
+       height: @input-height;
+       padding-left: 10px;
+       padding-right: 10px;
+       outline: 0;
+       border: 1px solid @border-color-base;
+       border-radius: @radius;
+       vertical-align: middle;
+       &:focus {
+               border: 1px solid @primary-color;
+       }
+       &:disabled,
+       &[disabled] {
+               cursor: not-allowed;
+               background-color: @input-bg-color-disabled;
+       }
+}
+
+.plx-input-sm {
+       height: @input-height-sm;
+}
+
+.plx-input-right-no-radius {
+       border-bottom-right-radius: 0;
+       border-top-right-radius: 0;
 }
\ No newline at end of file
-@import "../default/theme.less";\r
-\r
-.plx-radio-container {\r
-       font-size: 0;\r
-       position: relative;\r
-}\r
-\r
-.plx-radio {\r
-       position: absolute;\r
-       z-index: -1;\r
-       opacity: 0;\r
-       & + .radio-substitute {\r
-               position: relative;\r
-               display: inline-block;\r
-               cursor: pointer;\r
-               height: @checkbox-size;\r
-               width: @checkbox-size;\r
-               border: 1px solid @border-color-base;\r
-               border-radius: @checkbox-size;\r
-               vertical-align: middle;\r
-       }\r
-       &:hover + .radio-substitute,\r
-       &:focus + .radio-substitute {\r
-               border-color: @primary-color;\r
-               outline: none;\r
-               background-image: none;\r
-               -webkit-box-shadow: none;\r
-               -moz-box-shadow: none;\r
-               box-shadow: none;\r
-               text-shadow: none;\r
-       }\r
-       &:checked + .radio-substitute {\r
-               .radio-boder-checked-width(@font-size);\r
-       }\r
-       &:disabled + .radio-substitute,\r
-       &[disabled] + .radio-substitute {\r
-               border-color: @border-color-base;\r
-               background-color: @input-bg-color-disabled;\r
-               cursor: not-allowed;\r
-       }\r
-       &:checked [disabled] + .radio-substitute {\r
-               border-color: @border-color-split;\r
-               background-color: @border-color-split;\r
-               cursor: not-allowed;\r
-       }\r
-       & + .radio-substitute + span {\r
-               font-weight: normal;\r
-               font-size: @font-size;\r
-               cursor: pointer;\r
-               vertical-align: middle;\r
-               .font-padding(@font-size);\r
-       }\r
-       &:disabled + .radio-substitute + span,\r
-       &[disabled] + .radio-substitute + span {\r
-               cursor: not-allowed;\r
-       }\r
-}\r
-\r
-.radio-boder-checked-width(12px) {\r
-       border: 4px solid @primary-color;\r
-}\r
-\r
-.radio-boder-checked-width(14px) {\r
-       border: 5px solid @primary-color;\r
-}\r
-\r
-.font-padding(12px) {\r
-       padding-left: 6px;\r
-}\r
-\r
-.font-padding(14px) {\r
-       padding-left: 10px;\r
-}\r
-\r
-/*radio-group*/\r
-\r
-@radio-group-border-height: 1px;\r
-@padding-normal: 0px 16px;\r
-@padding-sm: 0px 14px;\r
-@min-width-normal: 80px;\r
-@min-width-sm: 60px;\r
-\r
-.border-min-width(@min-width, 14px) {\r
-       min-width: @min-width + 8px;\r
-}\r
-\r
-.border-min-width(@min-width, 12px) {\r
-       min-width: @min-width;\r
-}\r
-\r
-.btn.dropdown-toggle,\r
-.btn-group .btn.dropdown-toggle,\r
-.btn:hover,\r
-.btn:disabled,\r
-.btn[disabled],\r
-.btn:focus,\r
-.btn:active,\r
-.btn.active {\r
-       outline: none !important;\r
-       background-image: none !important;\r
-       filter: none;\r
-       -webkit-box-shadow: none;\r
-       -moz-box-shadow: none;\r
-       box-shadow: none;\r
-       text-shadow: none;\r
-}\r
-\r
-.plx-radio-group {\r
-       cursor: pointer;\r
-       font-size: @font-size;\r
-       height: @btn-height;\r
-       background-color: @common-color;\r
-       border: @radio-group-border-height solid @border-color-base;\r
-       color: @text-color;\r
-       border-radius: @radius;\r
-       padding: @padding-normal;\r
-       .border-min-width(@min-width-normal, @font-size);\r
-       transition: none;\r
-       &:hover,\r
-       &:focus,\r
-       &:active {\r
-               outline: none;\r
-               background-image: none;\r
-               filter: none;\r
-               -webkit-box-shadow: none;\r
-               -moz-box-shadow: none;\r
-               box-shadow: none;\r
-               text-shadow: none;\r
-       }\r
-\r
-  &:hover,\r
-  &:focus {\r
-    color: @btn-common-color-text-hover;\r
-    border-color: @btn-common-color-border-hover;\r
-    background-color: @common-color-hover;\r
-  }\r
-  &:active {\r
-    color: @btn-common-color-text-click;\r
-    border-color: @btn-common-color-border-click;\r
-    background-color: @common-color-click;\r
-  }\r
-       &.active {\r
-               background-color: @primary-color;\r
-               color: @scene-textcolor;\r
-               border-color: @primary-color;\r
-       }\r
-       & > span {\r
-               line-height: @btn-height - @radio-group-border-height * 2;\r
-       }\r
-}\r
-\r
-.plx-radio-group-sm {\r
-       height: @btn-height-sm;\r
-       padding: @padding-sm;\r
-       .border-min-width(@min-width-sm, @font-size);\r
-       & > span {\r
-               line-height: @btn-height-sm - @radio-group-border-height * 2;\r
-       }\r
-}\r
+@import "../default/theme.less";
+
+.plx-radio-container {
+       font-size: 0;
+       position: relative;
+}
+
+.plx-radio {
+       position: absolute;
+       z-index: -1;
+       opacity: 0;
+       & + .radio-substitute {
+               position: relative;
+               display: inline-block;
+               cursor: pointer;
+               height: @checkbox-size;
+               width: @checkbox-size;
+               border: 1px solid @border-color-base;
+               border-radius: @checkbox-size;
+               vertical-align: middle;
+       }
+       &:hover + .radio-substitute,
+       &:focus + .radio-substitute {
+               border-color: @primary-color;
+               outline: none;
+               background-image: none;
+               -webkit-box-shadow: none;
+               -moz-box-shadow: none;
+               box-shadow: none;
+               text-shadow: none;
+       }
+       &:checked + .radio-substitute {
+               .radio-boder-checked-width(@font-size);
+       }
+       &:disabled + .radio-substitute,
+       &[disabled] + .radio-substitute {
+               border-color: @border-color-base;
+               background-color: @input-bg-color-disabled;
+               cursor: not-allowed;
+       }
+       &:checked [disabled] + .radio-substitute {
+               border-color: @border-color-split;
+               background-color: @border-color-split;
+               cursor: not-allowed;
+       }
+       & + .radio-substitute + span {
+               font-weight: normal;
+               font-size: @font-size;
+               cursor: pointer;
+               vertical-align: middle;
+               .font-padding(@font-size);
+       }
+       &:disabled + .radio-substitute + span,
+       &[disabled] + .radio-substitute + span {
+               cursor: not-allowed;
+       }
+}
+
+.radio-boder-checked-width(12px) {
+       border: 4px solid @primary-color;
+}
+
+.radio-boder-checked-width(14px) {
+       border: 5px solid @primary-color;
+}
+
+.font-padding(12px) {
+       padding-left: 6px;
+}
+
+.font-padding(14px) {
+       padding-left: 10px;
+}
+
+/*radio-group*/
+
+@radio-group-border-height: 1px;
+@padding-normal: 0px 16px;
+@padding-sm: 0px 14px;
+@min-width-normal: 80px;
+@min-width-sm: 60px;
+
+.border-min-width(@min-width, 14px) {
+       min-width: @min-width + 8px;
+}
+
+.border-min-width(@min-width, 12px) {
+       min-width: @min-width;
+}
+
+.btn.dropdown-toggle,
+.btn-group .btn.dropdown-toggle,
+.btn:hover,
+.btn:disabled,
+.btn[disabled],
+.btn:focus,
+.btn:active,
+.btn.active {
+       outline: none !important;
+       background-image: none !important;
+       filter: none;
+       -webkit-box-shadow: none;
+       -moz-box-shadow: none;
+       box-shadow: none;
+       text-shadow: none;
+}
+
+.plx-radio-group {
+       cursor: pointer;
+       font-size: @font-size;
+       height: @btn-height;
+       background-color: @common-color;
+       border: @radio-group-border-height solid @border-color-base;
+       color: @text-color;
+       border-radius: @radius;
+       padding: @padding-normal;
+       .border-min-width(@min-width-normal, @font-size);
+       transition: none;
+       &:hover,
+       &:focus,
+       &:active {
+               outline: none;
+               background-image: none;
+               filter: none;
+               -webkit-box-shadow: none;
+               -moz-box-shadow: none;
+               box-shadow: none;
+               text-shadow: none;
+       }
+
+  &:hover,
+  &:focus {
+    color: @btn-common-color-text-hover;
+    border-color: @btn-common-color-border-hover;
+    background-color: @common-color-hover;
+  }
+  &:active {
+    color: @btn-common-color-text-click;
+    border-color: @btn-common-color-border-click;
+    background-color: @common-color-click;
+  }
+       &.active {
+               background-color: @primary-color;
+               color: @scene-textcolor;
+               border-color: @primary-color;
+       }
+       & > span {
+               line-height: @btn-height - @radio-group-border-height * 2;
+       }
+}
+
+.plx-radio-group-sm {
+       height: @btn-height-sm;
+       padding: @padding-sm;
+       .border-min-width(@min-width-sm, @font-size);
+       & > span {
+               line-height: @btn-height-sm - @radio-group-border-height * 2;
+       }
+}
@@ -1,28 +1,28 @@
-<!--\r
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * and the Apache License 2.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
- -->\r
-<accordion-group *ngFor="let category of nodeCategories" [isOpen]="category.collapse" #group>\r
-    <div accordion-heading class="toolbar-head">\r
-        <i class="fa fold-icon" [ngClass]="{'fa-chevron-down': group?.isOpen, 'fa-chevron-right': !group?.isOpen}"></i>\r
-        <i class="fa fa-th-list"></i>\r
-        <span>{{ getDisplayName(category) }}</span>\r
-    </div>\r
-    <div *ngFor="let nodeType of category.nodes">\r
-        <div *ngIf="(nodeType.type === nodeTypeEnum[nodeTypeEnum.restTask] && supportRest) || (nodeType.type !== nodeTypeEnum[nodeTypeEnum.restTask])"\r
-             [attr.name]="getDisplayName(nodeType)" [attr.nodeTypeId]="nodeType.id" [attr.nodeType]="nodeType.type"\r
-             class="item ui-draggable">\r
-            <img [src]="getImageUrl(nodeType)"/>\r
-            <span>{{ getDisplayName(nodeType) }}</span>\r
-        </div>\r
-    </div>\r
+<!--
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+ -->
+<accordion-group *ngFor="let category of nodeCategories" [isOpen]="category.collapse" #group>
+    <div accordion-heading class="toolbar-head">
+        <i class="fa fold-icon" [ngClass]="{'fa-chevron-down': group?.isOpen, 'fa-chevron-right': !group?.isOpen}"></i>
+        <i class="fa fa-th-list"></i>
+        <span>{{ getDisplayName(category) }}</span>
+    </div>
+    <div *ngFor="let nodeType of category.nodes">
+        <div *ngIf="(nodeType.type === nodeTypeEnum[nodeTypeEnum.restTask] && supportRest) || (nodeType.type !== nodeTypeEnum[nodeTypeEnum.restTask])"
+             [attr.name]="getDisplayName(nodeType)" [attr.nodeTypeId]="nodeType.id" [attr.nodeType]="nodeType.type"
+             class="item ui-draggable">
+            <img [src]="getImageUrl(nodeType)"/>
+            <span>{{ getDisplayName(nodeType) }}</span>
+        </div>
+    </div>
 </accordion-group>
\ No newline at end of file
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * and the Apache License 2.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-import { Component, OnInit } from "@angular/core";\r
-import { TranslateService } from "@ngx-translate/core";\r
-import { NodeTypeService } from "../../../services/node-type.service";\r
-import { DisplayInfoService } from "../../../services/display-info.service";\r
-import { NodeDataType } from "../../../model/node-data-type/node-data-type";\r
-import { NodeType } from "../../../model/workflow/node-type.enum";\r
-import { JsPlumbService } from "../../../services/jsplumb.service";\r
-import { SettingService } from "../../../services/setting.service";\r
-import { WorkflowUtil } from "../../../util/workflow-util";\r
-\r
-@Component({\r
-    selector: 'wfm-toolbar-node',\r
-    templateUrl: 'toolbar-node.component.html',\r
-    styleUrls: ['../toolbar.component.css']\r
-})\r
-export class ToolbarNodeComponent implements OnInit {\r
-    public nodeCategories: any[] = [];\r
-    public nodeTypeEnum = NodeType;\r
-    public supportRest: boolean;\r
-\r
-    private needInitButton = false;\r
-\r
-    constructor(private nodeTypeService: NodeTypeService,\r
-        private displayInfoService: DisplayInfoService,\r
-        private jsPlumbService: JsPlumbService,\r
-        private settingService: SettingService,\r
-        public translate: TranslateService) {\r
-\r
-    }\r
-\r
-    public ngOnInit(): void {\r
-        this.settingService.getSetting().subscribe(setting => {\r
-            this.initSetting(setting);\r
-            this.displayInfoService.getDisplayInfo().subscribe(resp => {\r
-                this.initNodeCategories(resp);\r
-                this.needInitButton = true;\r
-            });\r
-        });\r
-    }\r
-\r
-    public ngAfterViewChecked(): void {\r
-        if (this.needInitButton) {\r
-            console.log('initJsPlumb');\r
-            this.initJsPlumb();\r
-            this.needInitButton = false;\r
-        }\r
-    }\r
-\r
-    private initSetting(setting: any): void {\r
-        this.supportRest = setting.supportRestNode;\r
-    }\r
-\r
-    private initJsPlumb(): void {\r
-        this.jsPlumbService.buttonDraggable();\r
-        this.jsPlumbService.buttonDroppable();\r
-    }\r
-\r
-    private initNodeCategories(displayInfo: any): void {\r
-        const defaultCategory = this.insertDefaultCategory();\r
-\r
-        const categoryData = displayInfo['categoryData'] || {};\r
-        for (let key in categoryData) {\r
-            const group = {\r
-                id: key,\r
-                displayName: categoryData[key].displayName,\r
-                collapse: categoryData[key].collapse || false,\r
-                nodes: []\r
-            };\r
-            this.nodeCategories.push(group);\r
-        }\r
-\r
-        const defaultNodes = displayInfo['nodes'] || {};\r
-        for (let nodeId in defaultNodes) {\r
-            const nodeType = this.nodeTypeService.getNodeDataTypeById(nodeId);\r
-            const node = defaultNodes[nodeId];\r
-            if (node && node.category) {\r
-                const nodeCategory = this.nodeCategories.find(category => category.id === node.category);\r
-                if (nodeCategory) {\r
-                    nodeCategory.nodes.push(nodeType);\r
-                } else {\r
-                    defaultCategory.nodes.push(nodeType);\r
-                }\r
-            } else {\r
-                defaultCategory.nodes.push(nodeType);\r
-            }\r
-        }\r
-    }\r
-\r
-    private insertDefaultCategory(): any {\r
-        this.nodeCategories = [];\r
-        const defaultCategory = {\r
-            id: 'default',\r
-            displayName: {\r
-                zh_CN: '任务',\r
-                en_US: 'Task'\r
-            },\r
-            collapse: true,\r
-            nodes: []\r
-        };\r
-        this.nodeCategories.push(defaultCategory);\r
-\r
-        return defaultCategory;\r
-    }\r
-\r
-    public getDisplayName(data: any): string {\r
-        let language = 'zh_CN';\r
-        if (this.translate.currentLang.indexOf('en') > -1) {\r
-            language = 'en_US';\r
-        }\r
-        return data.displayName ? data.displayName[language] : data.id;\r
-    }\r
-\r
-    public getImageUrl(nodeType: NodeDataType): string {\r
-        const name = nodeType && nodeType.icon ? nodeType.icon.name : '';\r
-        return WorkflowUtil.GetIconFullPath(name);\r
-    }\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+import { Component, OnInit } from "@angular/core";
+import { TranslateService } from "@ngx-translate/core";
+import { NodeTypeService } from "../../../services/node-type.service";
+import { DisplayInfoService } from "../../../services/display-info.service";
+import { NodeDataType } from "../../../model/node-data-type/node-data-type";
+import { NodeType } from "../../../model/workflow/node-type.enum";
+import { JsPlumbService } from "../../../services/jsplumb.service";
+import { SettingService } from "../../../services/setting.service";
+import { WorkflowUtil } from "../../../util/workflow-util";
+
+@Component({
+    selector: 'wfm-toolbar-node',
+    templateUrl: 'toolbar-node.component.html',
+    styleUrls: ['../toolbar.component.css']
+})
+export class ToolbarNodeComponent implements OnInit {
+    public nodeCategories: any[] = [];
+    public nodeTypeEnum = NodeType;
+    public supportRest: boolean;
+
+    private needInitButton = false;
+
+    constructor(private nodeTypeService: NodeTypeService,
+        private displayInfoService: DisplayInfoService,
+        private jsPlumbService: JsPlumbService,
+        private settingService: SettingService,
+        public translate: TranslateService) {
+
+    }
+
+    public ngOnInit(): void {
+        this.settingService.getSetting().subscribe(setting => {
+            this.initSetting(setting);
+            this.displayInfoService.getDisplayInfo().subscribe(resp => {
+                this.initNodeCategories(resp);
+                this.needInitButton = true;
+            });
+        });
+    }
+
+    public ngAfterViewChecked(): void {
+        if (this.needInitButton) {
+            console.log('initJsPlumb');
+            this.initJsPlumb();
+            this.needInitButton = false;
+        }
+    }
+
+    private initSetting(setting: any): void {
+        this.supportRest = setting.supportRestNode;
+    }
+
+    private initJsPlumb(): void {
+        this.jsPlumbService.buttonDraggable();
+        this.jsPlumbService.buttonDroppable();
+    }
+
+    private initNodeCategories(displayInfo: any): void {
+        const defaultCategory = this.insertDefaultCategory();
+
+        const categoryData = displayInfo['categoryData'] || {};
+        for (let key in categoryData) {
+            const group = {
+                id: key,
+                displayName: categoryData[key].displayName,
+                collapse: categoryData[key].collapse || false,
+                nodes: []
+            };
+            this.nodeCategories.push(group);
+        }
+
+        const defaultNodes = displayInfo['nodes'] || {};
+        for (let nodeId in defaultNodes) {
+            const nodeType = this.nodeTypeService.getNodeDataTypeById(nodeId);
+            const node = defaultNodes[nodeId];
+            if (node && node.category) {
+                const nodeCategory = this.nodeCategories.find(category => category.id === node.category);
+                if (nodeCategory) {
+                    nodeCategory.nodes.push(nodeType);
+                } else {
+                    defaultCategory.nodes.push(nodeType);
+                }
+            } else {
+                defaultCategory.nodes.push(nodeType);
+            }
+        }
+    }
+
+    private insertDefaultCategory(): any {
+        this.nodeCategories = [];
+        const defaultCategory = {
+            id: 'default',
+            displayName: {
+                zh_CN: '任务',
+                en_US: 'Task'
+            },
+            collapse: true,
+            nodes: []
+        };
+        this.nodeCategories.push(defaultCategory);
+
+        return defaultCategory;
+    }
+
+    public getDisplayName(data: any): string {
+        let language = 'zh_CN';
+        if (this.translate.currentLang.indexOf('en') > -1) {
+            language = 'en_US';
+        }
+        return data.displayName ? data.displayName[language] : data.id;
+    }
+
+    public getImageUrl(nodeType: NodeDataType): string {
+        const name = nodeType && nodeType.icon ? nodeType.icon.name : '';
+        return WorkflowUtil.GetIconFullPath(name);
+    }
 }
\ No newline at end of file
@@ -1,16 +1,16 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * and the Apache License 2.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-\r
-export class DisplayName {\r
-    public zh_CN: string;\r
-    public en_US: string;\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+
+export class DisplayName {
+    public zh_CN: string;
+    public en_US: string;
 }
\ No newline at end of file
@@ -1,17 +1,17 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * and the Apache License 2.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-\r
-export class Icon {\r
-    public name: string;\r
-    public width: number;\r
-    public height: number;\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+
+export class Icon {
+    public name: string;
+    public width: number;
+    public height: number;
 }
\ No newline at end of file
@@ -1,24 +1,24 @@
-/**\r
- * Copyright (c) 2018 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * and the Apache License 2.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-import { DisplayName } from "./display-name";\r
-import { Icon } from "./icon";\r
-import { SwaggerSchema } from "../workflow/swagger/swagger-schema";\r
-\r
-export interface NodeDataType {\r
-    id: string;\r
-    displayName?: DisplayName;\r
-    description?: DisplayName;\r
-    type: string;\r
-    icon: Icon;\r
-    content: any;\r
-    definitions: any;\r
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+import { DisplayName } from "./display-name";
+import { Icon } from "./icon";
+import { SwaggerSchema } from "../workflow/swagger/swagger-schema";
+
+export interface NodeDataType {
+    id: string;
+    displayName?: DisplayName;
+    description?: DisplayName;
+    type: string;
+    icon: Icon;
+    content: any;
+    definitions: any;
 }
\ No newline at end of file
@@ -1,43 +1,43 @@
-///////\r
-\r
-.plx-breadcrumb {\r
-  margin: 0;\r
-  padding: 5px 10px;\r
-  font-size: 12px;\r
-  li {\r
-    display: inline-block;\r
-  }\r
-  a {\r
-    color: @light-text-color;\r
-    text-decoration: none;\r
-    &:hover {\r
-      color: @primary-color;\r
-    }\r
-  }\r
-  .plx-breadcrumb-separator {\r
-    color: @unselected-text-color;\r
-    padding: 0 5px;\r
-    vertical-align: 1px;\r
-  }\r
-  .plx-breadcrumb-collapse {\r
-    padding-left: 6px;\r
-    padding-right: 6px;\r
-    cursor: pointer;\r
-    circle {\r
-      fill: @fonticon-color;\r
-    }\r
-    &:hover circle {\r
-      fill: @primary-color;\r
-    }\r
-  }\r
-  .plx-breadcrumb-active {\r
-    vertical-align: 1px;\r
-    a {\r
-      font-size: 20px;\r
-      color: @title-text-color;\r
-      cursor: text;\r
-    }\r
-  }\r
+///////
+
+.plx-breadcrumb {
+  margin: 0;
+  padding: 5px 10px;
+  font-size: 12px;
+  li {
+    display: inline-block;
+  }
+  a {
+    color: @light-text-color;
+    text-decoration: none;
+    &:hover {
+      color: @primary-color;
+    }
+  }
+  .plx-breadcrumb-separator {
+    color: @unselected-text-color;
+    padding: 0 5px;
+    vertical-align: 1px;
+  }
+  .plx-breadcrumb-collapse {
+    padding-left: 6px;
+    padding-right: 6px;
+    cursor: pointer;
+    circle {
+      fill: @fonticon-color;
+    }
+    &:hover circle {
+      fill: @primary-color;
+    }
+  }
+  .plx-breadcrumb-active {
+    vertical-align: 1px;
+    a {
+      font-size: 20px;
+      color: @title-text-color;
+      cursor: text;
+    }
+  }
 }
 ///////
 ///////
 
 
 
-\r
-///////\r
-\r
-.icon {\r
-       color: @fonticon-color;\r
-       vertical-align: text-bottom;\r
-       margin-left:5px;\r
-       font-size: 20px;\r
-}\r
-
-///////\r
-\r
-\r
-.plx-input-password {\r
-       display: inline-block;\r
-       line-height: @input-height - 2px;\r
-       width: 40px;\r
-       text-align: center;\r
-       vertical-align: middle;\r
-       margin-top: -2px;\r
-       background-color: @common-color;\r
-       border-top: 1px solid @border-color-base;\r
-       border-right: 1px solid @border-color-base;\r
-       border-bottom: 1px solid @border-color-base;\r
-       border-bottom-right-radius: @radius;\r
-       border-top-right-radius: @radius;\r
-       cursor: pointer;\r
-       &:focus,\r
-       &:hover {\r
-               background-color: @common-color-hover;\r
-       }\r
-       &:active {\r
-               background-color: @common-color-click;\r
-       }\r
-       &.ict-eye-closed, &.ict-eye {\r
-                color: @fonticon-color;\r
-       }\r
-}\r
-\r
-\r
-.plx-input-password-disabled {\r
-       cursor: not-allowed;\r
-       &:focus,\r
-       &:hover,\r
-       &:active{\r
-               background-color: @common-color;\r
-       }\r
-}\r
-\r
-.plx-input-password-sm {\r
-       line-height: @input-height-sm - 2px;\r
+
+///////
+
+.icon {
+       color: @fonticon-color;
+       vertical-align: text-bottom;
+       margin-left:5px;
+       font-size: 20px;
+}
+
+///////
+
+
+.plx-input-password {
+       display: inline-block;
+       line-height: @input-height - 2px;
+       width: 40px;
+       text-align: center;
+       vertical-align: middle;
+       margin-top: -2px;
+       background-color: @common-color;
+       border-top: 1px solid @border-color-base;
+       border-right: 1px solid @border-color-base;
+       border-bottom: 1px solid @border-color-base;
+       border-bottom-right-radius: @radius;
+       border-top-right-radius: @radius;
+       cursor: pointer;
+       &:focus,
+       &:hover {
+               background-color: @common-color-hover;
+       }
+       &:active {
+               background-color: @common-color-click;
+       }
+       &.ict-eye-closed, &.ict-eye {
+                color: @fonticon-color;
+       }
+}
+
+
+.plx-input-password-disabled {
+       cursor: not-allowed;
+       &:focus,
+       &:hover,
+       &:active{
+               background-color: @common-color;
+       }
+}
+
+.plx-input-password-sm {
+       line-height: @input-height-sm - 2px;
 }
 ///////
 
     bottom:16px;
     right:25px;
 }
-///////\r
-\r
-plx-modal-window {\r
-  .modal {\r
-    position: fixed;\r
-    top: 0;\r
-    right: 0;\r
-    bottom: 0;\r
-    left: 0;\r
-    display: none;\r
-    outline: 0;\r
-    z-index: 10000;\r
-  }\r
-  .modal-dialog {\r
-    position: relative;\r
-    max-width: 600px;\r
-    margin: 30px auto;\r
-    &.modal-sm {\r
-      max-width: 600px;\r
-    }\r
-    &.modal-lg {\r
-      max-width: 1000px;\r
-    }\r
-  }\r
-  .modal-content {\r
-    position: relative;\r
-    display: flex;\r
-    -webkit-box-orient: vertical;\r
-    -webkit-box-direction: normal;\r
-    -ms-flex-direction: column;\r
-    flex-direction: column;\r
-    background-color: @component-bg;\r
-    background-clip: padding-box;\r
-    border-radius: @radius;\r
-    box-shadow: 0 5px 15px @shadow-color;\r
-    outline: 0;\r
-    .modal-header {\r
-      border-bottom: 0;\r
-      display: flex;\r
-      -webkit-box-align: center;\r
-      -ms-flex-align: center;\r
-      align-items: center;\r
-      -webkit-box-pack: justify;\r
-      -ms-flex-pack: justify;\r
-      justify-content: space-between;\r
-      padding: 15px;\r
-    }\r
-    .modal-body {\r
-      .form-group:last-child, form:last-child {\r
-        margin-bottom: 0;\r
-      }\r
-    }\r
-    .modal-footer {\r
-      display: block;\r
-      border-top: 0;\r
-      margin-top: 0;\r
-      padding: 0 15px 15px 15px;\r
-    }\r
-    .modal-title {\r
-      font-size: @font-size-title-level1;\r
-      margin-bottom: 0;\r
-      line-height: 1.5;\r
-    }\r
-    .modal-btn {\r
-      text-align: center;\r
-      font-size: 0;\r
-    }\r
-  }\r
-  .close {\r
-    color: @fonticon-color;\r
-    font-size: @font-size-title-level2;\r
-    text-shadow: none;\r
-    width: 24px;\r
-    height: 24px;\r
-    background: @scene-textcolor;\r
-    border-radius: 20px;\r
-    padding-bottom: 2px;\r
-    outline: none;\r
-    &:hover {\r
-      color: @fonticon-color;\r
-      background: @fonticon-bg-color-hover;\r
-    }\r
-  }\r
-  .alert-modal {\r
-    &.row {\r
-      margin-left: 100px;\r
-      margin-bottom: 30px;\r
-      text-align: left;\r
-      .tip-img {\r
-        display: inline-block;\r
-        width: 52px;\r
-        height: 52px;\r
-        border-radius: 50px;\r
-        font-size: 45px;\r
-        text-align: center;\r
-        line-height: 1;\r
-        margin-top: -5px;\r
-        margin-right: 15px;\r
-        &::before {\r
-          content: "!";\r
-        }\r
-      }\r
-      .tip-info {\r
-        width: 300px;\r
-        .alert-title {\r
-          font-size: @font-size-title-level2;\r
-          color: @title-text-color;\r
-        }\r
-        .alert-result {\r
-          margin-top: 5px;\r
-          font-size: @font-size;\r
-          color: @unselected-text-color;\r
-        }\r
-      }\r
-      .warning {\r
-        border: 3px solid @warning-color;\r
-        color: @warning-color;\r
-      }\r
-      .error {\r
-        border: 3px solid @error-color;\r
-        color: @error-color;\r
-      }\r
-    }\r
-  }\r
-}
-///////\r
-\r
-\r
-@popover-arrow-border-width: 6px;\r
-@popover-arrow-border-width-before: 7px;\r
-@popover-arrow-border-height: @popover-arrow-border-width-before - @popover-arrow-border-width;\r
-@popover-arrow-away: 10px;\r
-@popover-arrow-background-color: #fff;\r
-@popover-arrow-border-color: #ccc;\r
-@popover-away-host: 3px;\r
-\r
-ngb-popover-window.plx-popover.show {\r
-    color: #333;\r
-    border: 1px solid @border-color-base;\r
-}\r
-\r
-.plx-popover {\r
-    position: absolute;\r
-    top: 0;\r
-    left: 0;\r
-    z-index: 10001;\r
-    display: block;\r
-    padding: 1px;\r
-    font-style: normal;\r
-    font-weight: normal;\r
-    letter-spacing: normal;\r
-    line-break: auto;\r
-    line-height: 1.5;\r
-    text-align: left;\r
-    text-decoration: none;\r
-    text-shadow: none;\r
-    text-transform: none;\r
-    white-space: normal;\r
-    word-break: normal;\r
-    word-spacing: normal;\r
-    word-wrap: break-word;\r
-    -webkit-background-clip: padding-box;\r
-    background-clip: padding-box;\r
-    max-width: 400px;\r
-    min-width: 200px;\r
-    background-color: @component-bg;\r
-    font-family: @font-family;\r
-    font-size: @font-size;\r
-    border: 1px solid @border-color-base;\r
-    border-radius: @radius;\r
-    .shadow;\r
-    &::before,\r
-    &::after {\r
-        content: "";\r
-        position: absolute;\r
-        display: block;\r
-        width: 0;\r
-        height: 0;\r
-        border: solid transparent;\r
-    }\r
-    &::before {\r
-        border-width: @popover-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        border-width: @popover-arrow-border-width;\r
-    }\r
-}\r
-\r
-.plx-popover-top-common {\r
-    margin-top: -(@popover-arrow-border-width + @popover-away-host);\r
-    &::before {\r
-        border-top-color: @popover-arrow-border-color;\r
-        border-bottom-width: 0;\r
-        bottom: -@popover-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        border-top-color: @popover-arrow-background-color;\r
-        border-bottom-width: 0;\r
-        bottom: -@popover-arrow-border-width;\r
-    }\r
-}\r
-.plx-popover-top {\r
-    .plx-popover-top-common;\r
-    &::before {\r
-        left: 50%;\r
-        margin-left: -@popover-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        left: 50%;\r
-        margin-left: -@popover-arrow-border-width;\r
-    }\r
-}\r
-.plx-popover.plx-popover-top-left {\r
-    .plx-popover-top-common;\r
-    &::before {\r
-        left: @popover-arrow-away;\r
-    }\r
-    &::after {\r
-        left: @popover-arrow-away + @popover-arrow-border-height;\r
-    }\r
-}\r
-.plx-popover.plx-popover-top-right {\r
-    .plx-popover-top-common;\r
-    &::before {\r
-        right: @popover-arrow-away;\r
-    }\r
-    &::after {\r
-        right: @popover-arrow-away + @popover-arrow-border-height;\r
-    }\r
-}\r
-\r
-.plx-popover-right-common {\r
-    margin-left: @popover-arrow-border-width + @popover-away-host;\r
-    &::before {\r
-        border-right-color: @popover-arrow-border-color;\r
-        border-left-width: 0;\r
-        left: -@popover-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        border-right-color: @popover-arrow-background-color;\r
-        border-left-width: 0;\r
-        left: -@popover-arrow-border-width;\r
-    }\r
-}\r
-.plx-popover.plx-popover-right {\r
-    .plx-popover-right-common;\r
-    &::before {\r
-        top: 50%;\r
-        margin-top: -@popover-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        top: 50%;\r
-        margin-top: -@popover-arrow-border-width;\r
-    }\r
-}\r
-.plx-popover.plx-popover-right-top {\r
-    .plx-popover-right-common;\r
-    &::before {\r
-        top: @popover-arrow-away;\r
-    }\r
-    &::after {\r
-        top: @popover-arrow-away + @popover-arrow-border-height;\r
-    }\r
-}\r
-.plx-popover.plx-popover-right-bottom {\r
-    .plx-popover-right-common;\r
-    &::before {\r
-        bottom: @popover-arrow-away;\r
-    }\r
-    &::after {\r
-        bottom: @popover-arrow-away + @popover-arrow-border-height;\r
-    }\r
-}\r
-\r
-.plx-popover-bottom-common {\r
-    margin-top: @popover-arrow-border-width + @popover-away-host;\r
-    &::before {\r
-        border-bottom-color: @popover-arrow-border-color;\r
-        border-top-width: 0;\r
-        top: -@popover-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        border-bottom-color: @popover-arrow-background-color;\r
-        border-top-width: 0;\r
-        top: -@popover-arrow-border-width;\r
-    }\r
-}\r
-.plx-popover.plx-popover-bottom {\r
-    .plx-popover-bottom-common;\r
-    &::before {\r
-        left: 50%;\r
-        margin-left: -@popover-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        left: 50%;\r
-        margin-left: -@popover-arrow-border-width;\r
-    }\r
-}\r
-.plx-popover.plx-popover-bottom-left {\r
-    .plx-popover-bottom-common;\r
-    &::before {\r
-        left: @popover-arrow-away;\r
-    }\r
-    &::after {\r
-        left: @popover-arrow-away + @popover-arrow-border-height;\r
-    }\r
-}\r
-.plx-popover.plx-popover-bottom-right {\r
-    .plx-popover-bottom-common;\r
-    &::before {\r
-        right: @popover-arrow-away;\r
-    }\r
-    &::after {\r
-        right: @popover-arrow-away + @popover-arrow-border-height;\r
-    }\r
-}\r
-\r
-.plx-popover-left-common {\r
-    margin-left: -(@popover-arrow-border-width + @popover-away-host);\r
-    &::before {\r
-        border-left-color: @popover-arrow-border-color;\r
-        border-right-width: 0;\r
-        right: -@popover-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        border-left-color: @popover-arrow-background-color;\r
-        border-right-width: 0;\r
-        right: -@popover-arrow-border-width;\r
-    }\r
-}\r
-\r
-.plx-popover.plx-popover-left {\r
-    .plx-popover-left-common;\r
-    &::before {\r
-        top: 50%;\r
-        margin-top: -@popover-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        top: 50%;\r
-        margin-top: -@popover-arrow-border-width;\r
-    }\r
-}\r
-\r
-.plx-popover.plx-popover-left-top {\r
-    .plx-popover-left-common;\r
-    &::before {\r
-        top: @popover-arrow-away;\r
-    }\r
-    &::after {\r
-        top: @popover-arrow-away + @popover-arrow-border-height;\r
-    }\r
-}\r
-.plx-popover.plx-popover-left-bottom {\r
-    .plx-popover-left-common;\r
-    &::before {\r
-        bottom: @popover-arrow-away;\r
-    }\r
-    &::after {\r
-        bottom: @popover-arrow-away + @popover-arrow-border-height;\r
-    }\r
-}\r
-\r
-.plx-popover .plx-popover-title {\r
-    padding: 8px 14px;\r
-    margin-bottom: 0;\r
-    font-size: @font-size-title-level2;\r
-    background-color: @component-bg;\r
-    border-bottom: 1px solid @border-color-base;\r
-    &:empty {\r
-        display: none;\r
-    }\r
-}\r
-\r
-.plx-popover .plx-popover-content {\r
-    padding: 9px 14px;\r
-    background-color: @component-bg;\r
-}\r
-\r
-.plx-popover .ict-warning {\r
-    color: @error-color;\r
-    font-size: 24px;\r
-    margin-right: 5px;\r
-}\r
-\r
-//.popover .popo {\r
-//    text-align: center;\r
-//}\r
-//\r
-//.popover .pop-btn {\r
-//    float: right;\r
-//    margin-top: 10px;\r
-//    margin-bottom: 10px;\r
-//    font-size: 0;\r
-//}\r
-//\r
-//.popover .pop-btn .btn-s {\r
-//    margin-left: 10px;\r
-//}\r
-//\r
-//.popover .tip-info span {\r
-//    vertical-align: middle;\r
-//}\r
-//\r
-//.popover .tip-info .content {\r
-//    font-size: 14px;\r
-//}\r
-\r
-.popover-template {\r
-    padding: 10px 0px;\r
-    min-width: 220px;\r
-    .popover-template-content {\r
-        padding: 10px 10px;\r
-    }\r
-    .popover-template-footer {\r
-        padding: 10px 10px 5px 10px;\r
-        text-align: center;\r
-    }\r
-    .popover-template-icon {\r
-        display: inline-block;\r
-        max-width: 30px;\r
-        float: left;\r
-    }\r
-    .popover-template-icon-area {\r
-        display: inline-block;\r
-        height: 100%;\r
-        vertical-align: middle;\r
-    }\r
-    .popover-template-msg {\r
-        display: inline-block;\r
-        max-width: 300px;\r
-        margin-left: 10px;\r
-        margin-top: 1px;\r
-    }\r
+///////
+
+plx-modal-window {
+  .modal {
+    position: fixed;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    display: none;
+    outline: 0;
+    z-index: 10000;
+  }
+  .modal-dialog {
+    position: relative;
+    max-width: 600px;
+    margin: 30px auto;
+    &.modal-sm {
+      max-width: 600px;
+    }
+    &.modal-lg {
+      max-width: 1000px;
+    }
+  }
+  .modal-content {
+    position: relative;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    background-color: @component-bg;
+    background-clip: padding-box;
+    border-radius: @radius;
+    box-shadow: 0 5px 15px @shadow-color;
+    outline: 0;
+    .modal-header {
+      border-bottom: 0;
+      display: flex;
+      -webkit-box-align: center;
+      -ms-flex-align: center;
+      align-items: center;
+      -webkit-box-pack: justify;
+      -ms-flex-pack: justify;
+      justify-content: space-between;
+      padding: 15px;
+    }
+    .modal-body {
+      .form-group:last-child, form:last-child {
+        margin-bottom: 0;
+      }
+    }
+    .modal-footer {
+      display: block;
+      border-top: 0;
+      margin-top: 0;
+      padding: 0 15px 15px 15px;
+    }
+    .modal-title {
+      font-size: @font-size-title-level1;
+      margin-bottom: 0;
+      line-height: 1.5;
+    }
+    .modal-btn {
+      text-align: center;
+      font-size: 0;
+    }
+  }
+  .close {
+    color: @fonticon-color;
+    font-size: @font-size-title-level2;
+    text-shadow: none;
+    width: 24px;
+    height: 24px;
+    background: @scene-textcolor;
+    border-radius: 20px;
+    padding-bottom: 2px;
+    outline: none;
+    &:hover {
+      color: @fonticon-color;
+      background: @fonticon-bg-color-hover;
+    }
+  }
+  .alert-modal {
+    &.row {
+      margin-left: 100px;
+      margin-bottom: 30px;
+      text-align: left;
+      .tip-img {
+        display: inline-block;
+        width: 52px;
+        height: 52px;
+        border-radius: 50px;
+        font-size: 45px;
+        text-align: center;
+        line-height: 1;
+        margin-top: -5px;
+        margin-right: 15px;
+        &::before {
+          content: "!";
+        }
+      }
+      .tip-info {
+        width: 300px;
+        .alert-title {
+          font-size: @font-size-title-level2;
+          color: @title-text-color;
+        }
+        .alert-result {
+          margin-top: 5px;
+          font-size: @font-size;
+          color: @unselected-text-color;
+        }
+      }
+      .warning {
+        border: 3px solid @warning-color;
+        color: @warning-color;
+      }
+      .error {
+        border: 3px solid @error-color;
+        color: @error-color;
+      }
+    }
+  }
+}
+///////
+
+
+@popover-arrow-border-width: 6px;
+@popover-arrow-border-width-before: 7px;
+@popover-arrow-border-height: @popover-arrow-border-width-before - @popover-arrow-border-width;
+@popover-arrow-away: 10px;
+@popover-arrow-background-color: #fff;
+@popover-arrow-border-color: #ccc;
+@popover-away-host: 3px;
+
+ngb-popover-window.plx-popover.show {
+    color: #333;
+    border: 1px solid @border-color-base;
+}
+
+.plx-popover {
+    position: absolute;
+    top: 0;
+    left: 0;
+    z-index: 10001;
+    display: block;
+    padding: 1px;
+    font-style: normal;
+    font-weight: normal;
+    letter-spacing: normal;
+    line-break: auto;
+    line-height: 1.5;
+    text-align: left;
+    text-decoration: none;
+    text-shadow: none;
+    text-transform: none;
+    white-space: normal;
+    word-break: normal;
+    word-spacing: normal;
+    word-wrap: break-word;
+    -webkit-background-clip: padding-box;
+    background-clip: padding-box;
+    max-width: 400px;
+    min-width: 200px;
+    background-color: @component-bg;
+    font-family: @font-family;
+    font-size: @font-size;
+    border: 1px solid @border-color-base;
+    border-radius: @radius;
+    .shadow;
+    &::before,
+    &::after {
+        content: "";
+        position: absolute;
+        display: block;
+        width: 0;
+        height: 0;
+        border: solid transparent;
+    }
+    &::before {
+        border-width: @popover-arrow-border-width-before;
+    }
+    &::after {
+        border-width: @popover-arrow-border-width;
+    }
+}
+
+.plx-popover-top-common {
+    margin-top: -(@popover-arrow-border-width + @popover-away-host);
+    &::before {
+        border-top-color: @popover-arrow-border-color;
+        border-bottom-width: 0;
+        bottom: -@popover-arrow-border-width-before;
+    }
+    &::after {
+        border-top-color: @popover-arrow-background-color;
+        border-bottom-width: 0;
+        bottom: -@popover-arrow-border-width;
+    }
+}
+.plx-popover-top {
+    .plx-popover-top-common;
+    &::before {
+        left: 50%;
+        margin-left: -@popover-arrow-border-width-before;
+    }
+    &::after {
+        left: 50%;
+        margin-left: -@popover-arrow-border-width;
+    }
+}
+.plx-popover.plx-popover-top-left {
+    .plx-popover-top-common;
+    &::before {
+        left: @popover-arrow-away;
+    }
+    &::after {
+        left: @popover-arrow-away + @popover-arrow-border-height;
+    }
+}
+.plx-popover.plx-popover-top-right {
+    .plx-popover-top-common;
+    &::before {
+        right: @popover-arrow-away;
+    }
+    &::after {
+        right: @popover-arrow-away + @popover-arrow-border-height;
+    }
+}
+
+.plx-popover-right-common {
+    margin-left: @popover-arrow-border-width + @popover-away-host;
+    &::before {
+        border-right-color: @popover-arrow-border-color;
+        border-left-width: 0;
+        left: -@popover-arrow-border-width-before;
+    }
+    &::after {
+        border-right-color: @popover-arrow-background-color;
+        border-left-width: 0;
+        left: -@popover-arrow-border-width;
+    }
+}
+.plx-popover.plx-popover-right {
+    .plx-popover-right-common;
+    &::before {
+        top: 50%;
+        margin-top: -@popover-arrow-border-width-before;
+    }
+    &::after {
+        top: 50%;
+        margin-top: -@popover-arrow-border-width;
+    }
+}
+.plx-popover.plx-popover-right-top {
+    .plx-popover-right-common;
+    &::before {
+        top: @popover-arrow-away;
+    }
+    &::after {
+        top: @popover-arrow-away + @popover-arrow-border-height;
+    }
+}
+.plx-popover.plx-popover-right-bottom {
+    .plx-popover-right-common;
+    &::before {
+        bottom: @popover-arrow-away;
+    }
+    &::after {
+        bottom: @popover-arrow-away + @popover-arrow-border-height;
+    }
+}
+
+.plx-popover-bottom-common {
+    margin-top: @popover-arrow-border-width + @popover-away-host;
+    &::before {
+        border-bottom-color: @popover-arrow-border-color;
+        border-top-width: 0;
+        top: -@popover-arrow-border-width-before;
+    }
+    &::after {
+        border-bottom-color: @popover-arrow-background-color;
+        border-top-width: 0;
+        top: -@popover-arrow-border-width;
+    }
+}
+.plx-popover.plx-popover-bottom {
+    .plx-popover-bottom-common;
+    &::before {
+        left: 50%;
+        margin-left: -@popover-arrow-border-width-before;
+    }
+    &::after {
+        left: 50%;
+        margin-left: -@popover-arrow-border-width;
+    }
+}
+.plx-popover.plx-popover-bottom-left {
+    .plx-popover-bottom-common;
+    &::before {
+        left: @popover-arrow-away;
+    }
+    &::after {
+        left: @popover-arrow-away + @popover-arrow-border-height;
+    }
+}
+.plx-popover.plx-popover-bottom-right {
+    .plx-popover-bottom-common;
+    &::before {
+        right: @popover-arrow-away;
+    }
+    &::after {
+        right: @popover-arrow-away + @popover-arrow-border-height;
+    }
+}
+
+.plx-popover-left-common {
+    margin-left: -(@popover-arrow-border-width + @popover-away-host);
+    &::before {
+        border-left-color: @popover-arrow-border-color;
+        border-right-width: 0;
+        right: -@popover-arrow-border-width-before;
+    }
+    &::after {
+        border-left-color: @popover-arrow-background-color;
+        border-right-width: 0;
+        right: -@popover-arrow-border-width;
+    }
+}
+
+.plx-popover.plx-popover-left {
+    .plx-popover-left-common;
+    &::before {
+        top: 50%;
+        margin-top: -@popover-arrow-border-width-before;
+    }
+    &::after {
+        top: 50%;
+        margin-top: -@popover-arrow-border-width;
+    }
+}
+
+.plx-popover.plx-popover-left-top {
+    .plx-popover-left-common;
+    &::before {
+        top: @popover-arrow-away;
+    }
+    &::after {
+        top: @popover-arrow-away + @popover-arrow-border-height;
+    }
+}
+.plx-popover.plx-popover-left-bottom {
+    .plx-popover-left-common;
+    &::before {
+        bottom: @popover-arrow-away;
+    }
+    &::after {
+        bottom: @popover-arrow-away + @popover-arrow-border-height;
+    }
+}
+
+.plx-popover .plx-popover-title {
+    padding: 8px 14px;
+    margin-bottom: 0;
+    font-size: @font-size-title-level2;
+    background-color: @component-bg;
+    border-bottom: 1px solid @border-color-base;
+    &:empty {
+        display: none;
+    }
+}
+
+.plx-popover .plx-popover-content {
+    padding: 9px 14px;
+    background-color: @component-bg;
+}
+
+.plx-popover .ict-warning {
+    color: @error-color;
+    font-size: 24px;
+    margin-right: 5px;
+}
+
+//.popover .popo {
+//    text-align: center;
+//}
+//
+//.popover .pop-btn {
+//    float: right;
+//    margin-top: 10px;
+//    margin-bottom: 10px;
+//    font-size: 0;
+//}
+//
+//.popover .pop-btn .btn-s {
+//    margin-left: 10px;
+//}
+//
+//.popover .tip-info span {
+//    vertical-align: middle;
+//}
+//
+//.popover .tip-info .content {
+//    font-size: 14px;
+//}
+
+.popover-template {
+    padding: 10px 0px;
+    min-width: 220px;
+    .popover-template-content {
+        padding: 10px 10px;
+    }
+    .popover-template-footer {
+        padding: 10px 10px 5px 10px;
+        text-align: center;
+    }
+    .popover-template-icon {
+        display: inline-block;
+        max-width: 30px;
+        float: left;
+    }
+    .popover-template-icon-area {
+        display: inline-block;
+        height: 100%;
+        vertical-align: middle;
+    }
+    .popover-template-msg {
+        display: inline-block;
+        max-width: 300px;
+        margin-left: 10px;
+        margin-top: 1px;
+    }
 }
 ///////
 
@@ -1519,289 +1519,289 @@ input:-ms-input-placeholder {
 input::-webkit-input-placeholder {
   color:@unselected-text-color !important;
 }
-///////\r
-\r
-select-dropdown {\r
-  box-sizing: border-box;\r
-  font-family: @font-family;\r
-  font-size: @font-size;\r
-  outline: none;\r
-  & > div {\r
-    background-color: @component-bg;\r
-    position: absolute;\r
-    z-index: 9999;\r
-    &.select-sm .filter {\r
-      input {\r
-        height: @input-height-sm + 2;\r
-      }\r
-      .toggle {\r
-        top: 13px;\r
-      }\r
-    }\r
-    .filter {\r
-      width: 100%;\r
-      input {\r
-        border: 1px solid @primary-color;\r
-        border-radius: @radius;\r
-        padding: 0 10px;\r
-        width: 100%;\r
-        height: @input-height + 2;\r
-      }\r
-      .toggle {\r
-        display: block;\r
-        position: absolute;\r
-        top: 15px;\r
-        right: 10px;\r
-        width: 0;\r
-        height: 0;\r
-        border-left: 4px solid transparent;\r
-        border-right: 4px solid transparent;\r
-        border-top: 4px solid lighten(@fonticon-color, 5%);\r
-      }\r
-    }\r
-    .options {\r
-      border: 1px solid @border-color-base;\r
-      border-top: none;\r
-      border-radius: @radius;\r
-      max-height: 160px;\r
-      overflow-y: auto;\r
-      ul {\r
-        list-style: none;\r
-        margin: 0;\r
-        padding: 0;\r
-        li {\r
-          color: @text-color;\r
-          height: 30px;\r
-          line-height: 18px;\r
-          padding: 6px 20px 6px 8px;\r
-          position: relative;\r
-          cursor: pointer;\r
-          user-select: none;\r
-          &.single-selected {\r
-            background-color: @selected-bg-color;\r
-          }\r
-          &.highlighted {\r
-            background-color: @hover-bg-color;\r
-            color: @text-color;\r
-          }\r
-          &.disabled {\r
-            background-color: @component-bg;\r
-            color: @disabled-text-color;\r
-            cursor: default;\r
-            pointer-events: none;\r
-          }\r
-          &.plx-select-message {\r
-            white-space: nowrap;\r
-            overflow: hidden;\r
-            text-overflow: ellipsis;\r
-          }\r
-          .option-label {\r
-            display: inline-block;\r
-            width: 100%;\r
-            white-space: nowrap;\r
-            overflow: hidden;\r
-            text-overflow: ellipsis;\r
-          }\r
-          .option-tick {\r
-            display: inline-block;\r
-            position: absolute;\r
-            right: 5px;\r
-            top: 5px;\r
-          }\r
-          .tick {\r
-            fill: none;\r
-            stroke: @success-color;\r
-            stroke-width: 2;\r
-            stroke-linecap: round;\r
-            stroke-linejoin: round;\r
-            stroke-miterlimit: 10;\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-}\r
-
-///////\r
-\r
-@option-bg-color: #f8f8f8;\r
-@option-border-color: #e6e6e6;\r
-@deselect-option-color-hover: #555;\r
-\r
-plx-select {\r
-  display: inline-block;\r
-  margin: 0;\r
-  position: relative;\r
-  vertical-align: middle;\r
-  width: 100%;\r
-  &.ng-untouched:not(form).ng-untouched:not(fieldset) {\r
-    border: 0;\r
-  }\r
-  & * {\r
-    box-sizing: border-box;\r
-    font-family: @font-family;\r
-    font-size: @font-size;\r
-    outline: none;\r
-  }\r
-  & > div {\r
-    border: 1px solid @border-color-base;\r
-    border-radius: @radius;\r
-    cursor: pointer;\r
-    user-select: none;\r
-    width: 100%;\r
-    &.disabled {\r
-      background-color: @input-bg-color-disabled;\r
-      color: @disabled-text-color;\r
-      cursor: not-allowed;\r
-      //pointer-events: none;\r
-    }\r
-    &.focus-border {\r
-      border: 1px solid @primary-color !important;\r
-    }\r
-    &.select-sm {\r
-      .value, .placeholder {\r
-        height: @input-height-sm !important;\r
-        line-height: @input-height-sm !important;\r
-      }\r
-      .toggle {\r
-        top: 13px;\r
-      }\r
-      div.option {\r
-        height: 20px !important;\r
-        line-height: 14px !important;\r
-      }\r
-      input {\r
-        height: @input-height-sm;\r
-        line-height: @input-height-sm;\r
-      }\r
-    }\r
-    input {\r
-      background-color: transparent;\r
-      border: none;\r
-      border-radius: @radius;\r
-      cursor: pointer;\r
-      height: @input-height;\r
-      line-height: @input-height;\r
-    }\r
-    .toggle {\r
-      display: block;\r
-      position: absolute;\r
-      top: 15px;\r
-      right: 10px;\r
-      width: 0;\r
-      height: 0;\r
-      border-left: 4px solid transparent;\r
-      border-right: 4px solid transparent;\r
-      border-top: 4px solid lighten(@fonticon-color, 5%);\r
-    }\r
-    .single {\r
-      display: flex;\r
-      width: 100%;\r
-      .value, .placeholder {\r
-        color: @text-color;\r
-        flex: 1;\r
-        height: @input-height;\r
-        line-height: @input-height;\r
-        overflow: hidden;\r
-        padding: 0 10px;\r
-        white-space: nowrap;\r
-        span {\r
-          display: inline-block;\r
-          white-space: nowrap;\r
-          overflow: hidden;\r
-          text-overflow: ellipsis;\r
-          max-width: 100%;\r
-        }\r
-      }\r
-      .placeholder {\r
-        color: @unselected-text-color;\r
-      }\r
-      input {\r
-        flex: 1;\r
-        padding: 1px 10px 0 10px;\r
-      }\r
-    }\r
-    .multiple {\r
-      display: flex;\r
-      flex-flow: row wrap;\r
-      //min-height: @input-height;\r
-      padding: 0 10px;\r
-      width: 100%;\r
-      .placeholder {\r
-        flex: 1;\r
-        color: @unselected-text-color;\r
-        height: @input-height;\r
-        line-height: @input-height;\r
-        overflow: hidden;\r
-        white-space: nowrap;\r
-      }\r
-      input {\r
-        padding: 0;\r
-        margin-right: 10px;\r
-      }\r
-      div.option {\r
-        background-color: @option-bg-color;\r
-        border: 1px solid @option-border-color;\r
-        border-radius: @radius-sm;\r
-        color: @text-color;\r
-        cursor: default;\r
-        display: inline-block;\r
-        flex-shrink: 0;\r
-        height: 24px;\r
-        line-height: 18px;\r
-        margin: 4px 10px 4px 0;\r
-        padding: 2px 30px 2px 10px;\r
-        max-width: 100%;\r
-        position: relative;\r
-        span {\r
-          display: inline-block;\r
-          white-space: nowrap;\r
-          overflow: hidden;\r
-          text-overflow: ellipsis;\r
-          max-width: 100%;\r
-        }\r
-        .deselect-option {\r
-          color: darken(@border-color-base, 10%);\r
-          cursor: pointer;\r
-          font-size: 8px;\r
-          position: absolute;\r
-          top: 2px;\r
-          right: 8px;\r
-          &:hover {\r
-            color: @deselect-option-color-hover;\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-}
 ///////
 
-@plx-steps-circle-width: 24px;
-@plx-steps-height: 40px;
-
-.plx-ui-steps {
-  height: @plx-steps-height;
-}
-
-.plx-ui-horizon-ul-horizon {
-  display:flex;
-  box-orient: horizontal;
-  padding: 0;
-  font-size: @font-size;
+select-dropdown {
+  box-sizing: border-box;
   font-family: @font-family;
-}
-
-.plx-ui-steps-li {
-  list-style: none;
-  position: relative;
-  height: 24px;
-  line-height: 24px;
-  float: left;
-  margin-right: 0;
-}
-
-.plx-ui-steps-number-active {
+  font-size: @font-size;
+  outline: none;
+  & > div {
+    background-color: @component-bg;
+    position: absolute;
+    z-index: 9999;
+    &.select-sm .filter {
+      input {
+        height: @input-height-sm + 2;
+      }
+      .toggle {
+        top: 13px;
+      }
+    }
+    .filter {
+      width: 100%;
+      input {
+        border: 1px solid @primary-color;
+        border-radius: @radius;
+        padding: 0 10px;
+        width: 100%;
+        height: @input-height + 2;
+      }
+      .toggle {
+        display: block;
+        position: absolute;
+        top: 15px;
+        right: 10px;
+        width: 0;
+        height: 0;
+        border-left: 4px solid transparent;
+        border-right: 4px solid transparent;
+        border-top: 4px solid lighten(@fonticon-color, 5%);
+      }
+    }
+    .options {
+      border: 1px solid @border-color-base;
+      border-top: none;
+      border-radius: @radius;
+      max-height: 160px;
+      overflow-y: auto;
+      ul {
+        list-style: none;
+        margin: 0;
+        padding: 0;
+        li {
+          color: @text-color;
+          height: 30px;
+          line-height: 18px;
+          padding: 6px 20px 6px 8px;
+          position: relative;
+          cursor: pointer;
+          user-select: none;
+          &.single-selected {
+            background-color: @selected-bg-color;
+          }
+          &.highlighted {
+            background-color: @hover-bg-color;
+            color: @text-color;
+          }
+          &.disabled {
+            background-color: @component-bg;
+            color: @disabled-text-color;
+            cursor: default;
+            pointer-events: none;
+          }
+          &.plx-select-message {
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+          }
+          .option-label {
+            display: inline-block;
+            width: 100%;
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+          }
+          .option-tick {
+            display: inline-block;
+            position: absolute;
+            right: 5px;
+            top: 5px;
+          }
+          .tick {
+            fill: none;
+            stroke: @success-color;
+            stroke-width: 2;
+            stroke-linecap: round;
+            stroke-linejoin: round;
+            stroke-miterlimit: 10;
+          }
+        }
+      }
+    }
+  }
+}
+
+///////
+
+@option-bg-color: #f8f8f8;
+@option-border-color: #e6e6e6;
+@deselect-option-color-hover: #555;
+
+plx-select {
+  display: inline-block;
+  margin: 0;
+  position: relative;
+  vertical-align: middle;
+  width: 100%;
+  &.ng-untouched:not(form).ng-untouched:not(fieldset) {
+    border: 0;
+  }
+  & * {
+    box-sizing: border-box;
+    font-family: @font-family;
+    font-size: @font-size;
+    outline: none;
+  }
+  & > div {
+    border: 1px solid @border-color-base;
+    border-radius: @radius;
+    cursor: pointer;
+    user-select: none;
+    width: 100%;
+    &.disabled {
+      background-color: @input-bg-color-disabled;
+      color: @disabled-text-color;
+      cursor: not-allowed;
+      //pointer-events: none;
+    }
+    &.focus-border {
+      border: 1px solid @primary-color !important;
+    }
+    &.select-sm {
+      .value, .placeholder {
+        height: @input-height-sm !important;
+        line-height: @input-height-sm !important;
+      }
+      .toggle {
+        top: 13px;
+      }
+      div.option {
+        height: 20px !important;
+        line-height: 14px !important;
+      }
+      input {
+        height: @input-height-sm;
+        line-height: @input-height-sm;
+      }
+    }
+    input {
+      background-color: transparent;
+      border: none;
+      border-radius: @radius;
+      cursor: pointer;
+      height: @input-height;
+      line-height: @input-height;
+    }
+    .toggle {
+      display: block;
+      position: absolute;
+      top: 15px;
+      right: 10px;
+      width: 0;
+      height: 0;
+      border-left: 4px solid transparent;
+      border-right: 4px solid transparent;
+      border-top: 4px solid lighten(@fonticon-color, 5%);
+    }
+    .single {
+      display: flex;
+      width: 100%;
+      .value, .placeholder {
+        color: @text-color;
+        flex: 1;
+        height: @input-height;
+        line-height: @input-height;
+        overflow: hidden;
+        padding: 0 10px;
+        white-space: nowrap;
+        span {
+          display: inline-block;
+          white-space: nowrap;
+          overflow: hidden;
+          text-overflow: ellipsis;
+          max-width: 100%;
+        }
+      }
+      .placeholder {
+        color: @unselected-text-color;
+      }
+      input {
+        flex: 1;
+        padding: 1px 10px 0 10px;
+      }
+    }
+    .multiple {
+      display: flex;
+      flex-flow: row wrap;
+      //min-height: @input-height;
+      padding: 0 10px;
+      width: 100%;
+      .placeholder {
+        flex: 1;
+        color: @unselected-text-color;
+        height: @input-height;
+        line-height: @input-height;
+        overflow: hidden;
+        white-space: nowrap;
+      }
+      input {
+        padding: 0;
+        margin-right: 10px;
+      }
+      div.option {
+        background-color: @option-bg-color;
+        border: 1px solid @option-border-color;
+        border-radius: @radius-sm;
+        color: @text-color;
+        cursor: default;
+        display: inline-block;
+        flex-shrink: 0;
+        height: 24px;
+        line-height: 18px;
+        margin: 4px 10px 4px 0;
+        padding: 2px 30px 2px 10px;
+        max-width: 100%;
+        position: relative;
+        span {
+          display: inline-block;
+          white-space: nowrap;
+          overflow: hidden;
+          text-overflow: ellipsis;
+          max-width: 100%;
+        }
+        .deselect-option {
+          color: darken(@border-color-base, 10%);
+          cursor: pointer;
+          font-size: 8px;
+          position: absolute;
+          top: 2px;
+          right: 8px;
+          &:hover {
+            color: @deselect-option-color-hover;
+          }
+        }
+      }
+    }
+  }
+}
+///////
+
+@plx-steps-circle-width: 24px;
+@plx-steps-height: 40px;
+
+.plx-ui-steps {
+  height: @plx-steps-height;
+}
+
+.plx-ui-horizon-ul-horizon {
+  display:flex;
+  box-orient: horizontal;
+  padding: 0;
+  font-size: @font-size;
+  font-family: @font-family;
+}
+
+.plx-ui-steps-li {
+  list-style: none;
+  position: relative;
+  height: 24px;
+  line-height: 24px;
+  float: left;
+  margin-right: 0;
+}
+
+.plx-ui-steps-number-active {
        color: @component-bg;
        background-color: @primary-color;
   width: 24px;
@@ -2031,128 +2031,128 @@ plx-select {
   line-height: @plx-steps-circle-width;
 }
 
-///////\r
-\r
-.plx-tabset {\r
-  display: flex;\r
-  padding-left: 0;\r
-  margin-bottom: 0;\r
-  list-style: none;\r
-\r
-  &.plx-nav-tabs {\r
-    border-bottom: 1px solid @border-color-base;\r
-    font-size: @font-size + 2px;\r
-    .plx-nav-item {\r
-      margin-bottom: -1px;\r
-    }\r
-    .plx-nav-link {\r
-      display: block;\r
-      border-radius: 0;\r
-      border: 1px solid transparent;\r
-      border-top: 2px solid transparent;\r
-      color: @unselected-text-color;\r
-      min-width: 100px;\r
-      text-align: center;\r
-      padding: 6px 16px;\r
-      &:hover, &:focus {\r
-        text-decoration: none;\r
-        background-color: @hover-bg-color;\r
-        border-bottom: 0;\r
-        border-left: 0;\r
-        border-right: 0;\r
-      }\r
-      &.active {\r
-        color: @text-color;\r
-        border-top: 2px solid @primary-color;\r
-        border-left: 1px solid @border-color-base;\r
-        border-right: 1px solid @border-color-base;\r
-        background-color: @component-bg;\r
-        &:hover, &:focus {\r
-          border-left: 1px solid @border-color-base;\r
-          border-right: 1px solid @border-color-base;\r
-          border-bottom: 1px solid transparent;\r
-        }\r
-      }\r
-    }\r
-    &.bottom {\r
-      .plx-nav-link {\r
-        border: 0;\r
-        border-bottom: 2px solid transparent;\r
-        &:hover {\r
-          border-bottom: 1px solid transparent;\r
-        }\r
-        &.active {\r
-          border: 0;\r
-          border-bottom: 2px solid @primary-color;\r
-        }\r
-      }\r
-    }\r
-  }\r
-\r
-  &.plx-nav-pills {\r
-    .plx-nav-link {\r
-      border: 1px solid @border-color-base;\r
-      border-radius: 0.25em;\r
-      color: @unselected-text-color;\r
-      display: block;\r
-      padding: 6px 10px;\r
-      min-width: 100px;\r
-      text-align: center;\r
-      &:hover, &:focus {\r
-        text-decoration: none;\r
-        color: @btn-common-color-text-hover;\r
-        border-color: @btn-common-color-border-hover;\r
-        background-color: @common-color-hover;\r
-      }\r
-      &:active {\r
-        color: @btn-common-color-text-click;\r
-        border-color: @btn-common-color-border-click;\r
-        background-color: @common-color-click;\r
-      }\r
-      &.active {\r
-        color: @scene-textcolor;\r
-        cursor: default;\r
-        background-color: @primary-color;\r
-        border-color: @primary-color;\r
-      }\r
-    }\r
-    .plx-nav-item {\r
-      &:hover, &:focus, &:active {\r
-        z-index: 2;\r
-      }\r
-      &:first-child:not(:last-child) {\r
-        .plx-nav-link {\r
-          border-top-right-radius: 0;\r
-          border-bottom-right-radius: 0;\r
-        }\r
-      }\r
-      &:not(:first-child):not(:last-child) {\r
-        .plx-nav-link {\r
-          border-radius: 0;\r
-        }\r
-      }\r
-      &:last-child:not(:first-child) {\r
-        .plx-nav-link {\r
-          border-top-left-radius: 0;\r
-          border-bottom-left-radius: 0;\r
-        }\r
-      }\r
-      & + .plx-nav-item {\r
-        .plx-nav-link {\r
-          margin-left: -1px;\r
-        }\r
-      }\r
-    }\r
-  }\r
-}\r
-\r
-.plx-tab-content {\r
-  .plx-tab-pane {\r
-    display: none;\r
-    &.active {\r
-      display: block;\r
-    }\r
-  }\r
+///////
+
+.plx-tabset {
+  display: flex;
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+
+  &.plx-nav-tabs {
+    border-bottom: 1px solid @border-color-base;
+    font-size: @font-size + 2px;
+    .plx-nav-item {
+      margin-bottom: -1px;
+    }
+    .plx-nav-link {
+      display: block;
+      border-radius: 0;
+      border: 1px solid transparent;
+      border-top: 2px solid transparent;
+      color: @unselected-text-color;
+      min-width: 100px;
+      text-align: center;
+      padding: 6px 16px;
+      &:hover, &:focus {
+        text-decoration: none;
+        background-color: @hover-bg-color;
+        border-bottom: 0;
+        border-left: 0;
+        border-right: 0;
+      }
+      &.active {
+        color: @text-color;
+        border-top: 2px solid @primary-color;
+        border-left: 1px solid @border-color-base;
+        border-right: 1px solid @border-color-base;
+        background-color: @component-bg;
+        &:hover, &:focus {
+          border-left: 1px solid @border-color-base;
+          border-right: 1px solid @border-color-base;
+          border-bottom: 1px solid transparent;
+        }
+      }
+    }
+    &.bottom {
+      .plx-nav-link {
+        border: 0;
+        border-bottom: 2px solid transparent;
+        &:hover {
+          border-bottom: 1px solid transparent;
+        }
+        &.active {
+          border: 0;
+          border-bottom: 2px solid @primary-color;
+        }
+      }
+    }
+  }
+
+  &.plx-nav-pills {
+    .plx-nav-link {
+      border: 1px solid @border-color-base;
+      border-radius: 0.25em;
+      color: @unselected-text-color;
+      display: block;
+      padding: 6px 10px;
+      min-width: 100px;
+      text-align: center;
+      &:hover, &:focus {
+        text-decoration: none;
+        color: @btn-common-color-text-hover;
+        border-color: @btn-common-color-border-hover;
+        background-color: @common-color-hover;
+      }
+      &:active {
+        color: @btn-common-color-text-click;
+        border-color: @btn-common-color-border-click;
+        background-color: @common-color-click;
+      }
+      &.active {
+        color: @scene-textcolor;
+        cursor: default;
+        background-color: @primary-color;
+        border-color: @primary-color;
+      }
+    }
+    .plx-nav-item {
+      &:hover, &:focus, &:active {
+        z-index: 2;
+      }
+      &:first-child:not(:last-child) {
+        .plx-nav-link {
+          border-top-right-radius: 0;
+          border-bottom-right-radius: 0;
+        }
+      }
+      &:not(:first-child):not(:last-child) {
+        .plx-nav-link {
+          border-radius: 0;
+        }
+      }
+      &:last-child:not(:first-child) {
+        .plx-nav-link {
+          border-top-left-radius: 0;
+          border-bottom-left-radius: 0;
+        }
+      }
+      & + .plx-nav-item {
+        .plx-nav-link {
+          margin-left: -1px;
+        }
+      }
+    }
+  }
+}
+
+.plx-tab-content {
+  .plx-tab-pane {
+    display: none;
+    &.active {
+      display: block;
+    }
+  }
 }
 ///////
 ///////
@@ -2919,876 +2919,876 @@ plx-select {
     .plx-toggle-sm-switch-common;
 }
 
-.plx-toggle-sm .plx-toggle-switch {
-    .plx-toggle-sm-switch-common;
+.plx-toggle-sm .plx-toggle-switch {
+    .plx-toggle-sm-switch-common;
+}
+
+.plx-toggle-sm-switch-common {
+    height: @toggle-sm-height;
+    width: @toggle-sm-width;
+    input[type='checkbox'] + label {
+        height: @toggle-sm-height;
+        &::before {
+            height: @toggle-sm-height;
+            width: @toggle-sm-width;
+            border-radius: @toggle-sm-height/2;
+        }
+        &::after {
+            height: @toggle-sm-circle-size;
+            width: @toggle-sm-circle-size;
+        }
+    }
+    input[type='checkbox']:checked + label {
+        &::after {
+            left: @toggle-sm-width - @toggle-sm-circle-size - 2px;
+            transition: left 0.15s ease-in;
+        }
+    }
+}
+
+///////
+.toolbar {
+
+       i.seperate-vertical {
+               margin-right: 10px;
+               margin-left: 0;
+               border-right: 1px solid @border-color-split;
+       }
+
+       span {
+               color: @text-color;
+               cursor: pointer;
+               margin-right: 10px;
+               font-size: 16px;
+               display: inline-block;
+               width: 28px;
+               height: 28px;
+               border: 1px solid transparent;
+               padding: 5px;
+
+               &:hover {
+                       background-color: @hover-bg-color;
+                       border-radius: @radius-sm;
+               }
+
+               &:last-child {
+                       margin-right: 0px;
+               }
+       }
+}
+
+///////
+
+@tooltip-arrow-border-width: 4px;
+@tooltip-arrow-border-width-before: 5px;
+@tooltip-arrow-border-height: @tooltip-arrow-border-width-before - @tooltip-arrow-border-width;
+@tooltip-arrow-away: 5px;
+@tooltip-arrow-background-color: #595959;
+@tooltip-arrow-border-color: #595959;
+@tooltip-away-host: 3px;
+
+.plx-tooltip {
+    font-family: @font-family;
+    font-size: @font-size;
+    opacity: 1;
+    position: absolute;
+    z-index: 10001;
+    display: block;
+    font-style: normal;
+    font-weight: normal;
+    letter-spacing: normal;
+    line-break: auto;
+    line-height: 1.5;
+    text-align: left;
+    text-decoration: none;
+    text-shadow: none;
+    text-transform: none;
+    white-space: normal;
+    word-break: normal;
+    word-spacing: normal;
+    word-wrap: break-word;
+    &::before,
+    &::after {
+        content: "";
+        position: absolute;
+        display: block;
+        width: 0;
+        height: 0;
+        border: solid transparent;
+    }
+    &::before {
+        border-width: @tooltip-arrow-border-width-before;
+    }
+    &::after {
+        border-width: @tooltip-arrow-border-width;
+    }
+}
+
+.plx-tooltip-inner {
+    min-width: 60px;
+    max-width: 200px;
+    padding: 3px 8px;
+    color: #fff;
+    text-align: center;
+    background-color: #000;
+}
+
+.plx-tooltip.show {
+       font-size: @font-size;
+       opacity: 1;
+}
+.plx-tooltip.show .plx-tooltip-inner {
+       background-color: #595959;
+       border-radius: @radius;
+       padding: 0px 12px;
+       height: 30px;
+       line-height: 30px;
+}
+
+.plx-tooltip-top-common {
+    margin-top: -(@tooltip-arrow-border-width + @tooltip-away-host);
+    &::before {
+        border-top-color: @tooltip-arrow-border-color;
+        border-bottom-width: 0;
+        bottom: -@tooltip-arrow-border-width-before;
+    }
+    &::after {
+        border-top-color: @tooltip-arrow-background-color;
+        border-bottom-width: 0;
+        bottom: -@tooltip-arrow-border-width;
+    }
+}
+.plx-tooltip-top {
+    .plx-tooltip-top-common;
+    &::before {
+        left: 50%;
+        margin-left: -@tooltip-arrow-border-width-before;
+    }
+    &::after {
+        left: 50%;
+        margin-left: -@tooltip-arrow-border-width;
+    }
+}
+.plx-tooltip.plx-tooltip-top-left {
+    .plx-tooltip-top-common;
+    &::before {
+        left: @tooltip-arrow-away;
+    }
+    &::after {
+        left: @tooltip-arrow-away + @tooltip-arrow-border-height;
+    }
+}
+.plx-tooltip.plx-tooltip-top-right {
+    .plx-tooltip-top-common;
+    &::before {
+        right: @tooltip-arrow-away;
+    }
+    &::after {
+        right: @tooltip-arrow-away + @tooltip-arrow-border-height;
+    }
+}
+
+.plx-tooltip-right-common {
+    margin-left: @tooltip-arrow-border-width + @tooltip-away-host;
+    &::before {
+        border-right-color: @tooltip-arrow-border-color;
+        border-left-width: 0;
+        left: -@tooltip-arrow-border-width-before;
+    }
+    &::after {
+        border-right-color: @tooltip-arrow-background-color;
+        border-left-width: 0;
+        left: -@tooltip-arrow-border-width;
+    }
+}
+.plx-tooltip.plx-tooltip-right {
+    .plx-tooltip-right-common;
+    &::before {
+        top: 50%;
+        margin-top: -@tooltip-arrow-border-width-before;
+    }
+    &::after {
+        top: 50%;
+        margin-top: -@tooltip-arrow-border-width;
+    }
+}
+.plx-tooltip.plx-tooltip-right-top {
+    .plx-tooltip-right-common;
+    &::before {
+        top: @tooltip-arrow-away;
+    }
+    &::after {
+        top: @tooltip-arrow-away + @tooltip-arrow-border-height;
+    }
+}
+.plx-tooltip.plx-tooltip-right-bottom {
+    .plx-tooltip-right-common;
+    &::before {
+        bottom: @tooltip-arrow-away;
+    }
+    &::after {
+        bottom: @tooltip-arrow-away + @tooltip-arrow-border-height;
+    }
+}
+
+.plx-tooltip-bottom-common {
+    margin-top: @tooltip-arrow-border-width + @tooltip-away-host;
+    &::before {
+        border-bottom-color: @tooltip-arrow-border-color;
+        border-top-width: 0;
+        top: -@tooltip-arrow-border-width-before;
+    }
+    &::after {
+        border-bottom-color: @tooltip-arrow-background-color;
+        border-top-width: 0;
+        top: -@tooltip-arrow-border-width;
+    }
+}
+.plx-tooltip.plx-tooltip-bottom {
+    .plx-tooltip-bottom-common;
+    &::before {
+        left: 50%;
+        margin-left: -@tooltip-arrow-border-width-before;
+    }
+    &::after {
+        left: 50%;
+        margin-left: -@tooltip-arrow-border-width;
+    }
+}
+.plx-tooltip.plx-tooltip-bottom-left {
+    .plx-tooltip-bottom-common;
+    &::before {
+        left: @tooltip-arrow-away;
+    }
+    &::after {
+        left: @tooltip-arrow-away + @tooltip-arrow-border-height;
+    }
+}
+.plx-tooltip.plx-tooltip-bottom-right {
+    .plx-tooltip-bottom-common;
+    &::before {
+        right: @tooltip-arrow-away;
+    }
+    &::after {
+        right: @tooltip-arrow-away + @tooltip-arrow-border-height;
+    }
+}
+
+.plx-tooltip-left-common {
+    margin-left: -(@tooltip-arrow-border-width + @tooltip-away-host);
+    &::before {
+        border-left-color: @tooltip-arrow-border-color;
+        border-right-width: 0;
+        right: -@tooltip-arrow-border-width-before;
+    }
+    &::after {
+        border-left-color: @tooltip-arrow-background-color;
+        border-right-width: 0;
+        right: -@tooltip-arrow-border-width;
+    }
+}
+
+.plx-tooltip.plx-tooltip-left {
+    .plx-tooltip-left-common;
+    &::before {
+        top: 50%;
+        margin-top: -@tooltip-arrow-border-width-before;
+    }
+    &::after {
+        top: 50%;
+        margin-top: -@tooltip-arrow-border-width;
+    }
+}
+
+.plx-tooltip.plx-tooltip-left-top {
+    .plx-tooltip-left-common;
+    &::before {
+        top: @tooltip-arrow-away;
+    }
+    &::after {
+        top: @tooltip-arrow-away + @tooltip-arrow-border-height;
+    }
+}
+.plx-tooltip.plx-tooltip-left-bottom {
+    .plx-tooltip-left-common;
+    &::before {
+        bottom: @tooltip-arrow-away;
+    }
+    &::after {
+        bottom: @tooltip-arrow-away + @tooltip-arrow-border-height;
+    }
+}
+@checkbox-border-size: 1px;
+
+.plx-checkbox-container {
+       font-size: 0;
+       position: relative;
+}
+
+.plx-checkbox {
+       position: absolute;
+       z-index: -1;
+       opacity: 0;
+       & + .checkbox-substitute {
+               position: relative;
+               display: inline-block;
+               cursor: pointer;
+               height: @checkbox-size;
+               width: @checkbox-size;
+               border: @checkbox-border-size solid @border-color-base;
+               border-radius: @radius-sm;
+               vertical-align: middle;
+       }
+       & + .checkbox-substitute + span {
+               font-weight: normal;
+               font-size: @font-size;
+               cursor: pointer;
+               vertical-align: middle;
+               .font-padding(@font-size);
+       }
+       &:hover + .checkbox-substitute {
+               border-color: @primary-color;
+               outline: none;
+               background-image: none;
+               -webkit-box-shadow: none;
+               -moz-box-shadow: none;
+               box-shadow: none;
+               text-shadow: none;
+       }
+       &:checked + .checkbox-substitute {
+               border-color: @primary-color;
+               background-color: @primary-color;
+               &::after {
+                       .checkbox-check(@component-bg);
+               }
+       }
+       &:checked.portion + .checkbox-substitute {
+               background-color: @primary-color;
+               border-color: @primary-color;
+               opacity: 0.5;
+       }
+       &:disabled + .checkbox-substitute,
+       &[disabled] + .checkbox-substitute {
+               border-color: @border-color-base;
+               background-color: @input-bg-color-disabled;
+               cursor: not-allowed;
+       }
+       &:disabled + .checkbox-substitute + span,
+       &[disabled] + .checkbox-substitute + span {
+               cursor: not-allowed;
+       }
+       &:checked.portion[disabled] + .checkbox-substitute {
+               background-color: @border-color-base;
+               border-color: @border-color-base;
+               &::after {
+                       .checkbox-check(@fonticon-color);
+               }
+       }
+       &:checked[disabled] + .checkbox-substitute {
+               border-color: @border-color-base;
+               background-color: @border-color-base;
+       }
+}
+
+.checkbox-check(@color) {
+       content: '';
+       position: absolute;
+       display: block;
+       width: 6px;
+       height: 10px;
+       border: solid @color;
+       border-width: 0 2px 2px 0;
+       transform: rotate(45deg);
+       .checkbox-check-left(@font-size);
+       top: 0;
+}
+
+.checkbox-check-left(12px) {
+       left: 3px;
+}
+
+.checkbox-check-left(14px) {
+       left: 4px;
+}
+
+.font-padding(12px) {
+       padding-left: 6px;
+}
+
+.font-padding(14px) {
+       padding-left: 10px;
+}
+
+///////
+///////
+
+@tree-node-ul-padding: 21px;
+@margin-right: 10px;
+
+.plx-treenode{
+       cursor: pointer;
+       background-attachment: scroll;
+       background-color: transparent;
+       background-image: none;
+       background-position: 0 0;
+       background-repeat: repeat-y;
+       list-style: none outside none;
+       margin: 0;
+       padding:0;
+       white-space: nowrap;
+       font-size: @font-size;
+
+       .plx-treenode-content{
+               margin-top:10px;
+
+               &.light{
+                       margin-top:15px;
+               }
+       }
+}
+
+.plx-treenode ul.plx-treenode-children {
+       display: block;
+       -webkit-padding-start: @tree-node-ul-padding;
+}
+
+.plx-treenode-toggler{
+       font-size: 16px;
+       color: @primary-color;
+       display: inline-block;
+       margin-right: 7px;
+       margin-top:2px;
+       vertical-align: bottom;
+       float: left;
+}
+
+// .plx-treenode-toggler{
+//     display: inline-block;
+//     margin-right: @margin-right;
+//     vertical-align: bottom;
+// }
+
+// .plx-treenode-toggler svg {
+//     .plx-treenode-vertical-bottom(@font-size);
+// }
+
+// .plx-treenode-toggler svg .st0 {
+//     fill: @primary-color;
+// }
+
+// .plx-treenode-toggler svg .st1 {
+//     stroke: @primary-color;
+// }
+
+.plx-treenode-ckbox{
+       float: left;
+       margin-right: @margin-right;
+       margin-top:2px;
+       // .plx-treenode-vertical-bottom(@font-size);
+
+}
+
+.plx-treenode-vertical-bottom(@font-size) when (@font-size = 12px) {
+       vertical-align: bottom;
+       margin-bottom: 3px;
+}
+
+.plx-treenode-vertical-bottom(@font-size) when (@font-size = 14px) {
+       vertical-align: bottom;
+       margin-bottom: 4px;
+}
+
+.plx-treenode-icon{
+       color:@fonticon-color;
+       margin-right: @margin-right;
+       float: left;
+       font-size: 16px;
+       vertical-align: bottom;
+       // .plx-treenode-icon-margin-bottom(@font-size);
+       margin-top: 2px;
+}
+
+.plx-treenode-icon-margin-bottom(@font-size) when (@font-size = 12px) {
+       margin-bottom: 1px;
+}
+
+.plx-treenode-icon-margin-bottom(@font-size) when (@font-size = 14px) {
+       margin-bottom: 2px;
+}
+
+.plx-treenode-label-container{
+       overflow: visible;
+}
+
+.plx-treenode-label-container.plx-treenode-label-ellipsis{
+       overflow:hidden;
+}
+
+.plx-treenode-label-container:hover {
+       background-color: @hover-bg-color;
+}
+
+.plx-treenode-active>div .plx-treenode-label-container {
+       background-color: darken(@hover-bg-color, 2%);
+}
+
+.plx-treenode-active>div .plx-treenode-label-container:hover {
+       background-color: @hover-bg-color;
+}
+
+.plx-treenode-label-container span:last-child{
+       margin-right:5px;
+}
+
+
+.plx-treenode-lable{
+       display: inline-block;
+       vertical-align:0;
+       font-family: @font-family;
+       color:@text-color;
+
+       span {
+               display: inline-block;
+               overflow: hidden;
+               max-width: 100%;
+               text-overflow: ellipsis;
+               white-space: nowrap;
+               vertical-align: bottom;
+       }
+}
+
+.plx-treenode-operations{
+       margin-left: 20px;
+       display: none;
+       vertical-align: bottom;
+       width: fit-content;
+       line-height: 1;
+       .plx-treenode-operations-margin-bottom(@font-size);
+}
+
+
+.plx-treenode-operations-margin-bottom(@font-size) when (@font-size = 12px) {
+       margin-bottom: 1px;
+}
+
+.plx-treenode-operations-margin-bottom(@font-size) when (@font-size = 14px) {
+       margin-bottom: 2px;
+}
+
+.plx-treenode-operation{
+       display: inline-block;
+       margin-right: 10px;
+       color:@fonticon-color;
+       font-size: 16px;
+       vertical-align: text-bottom;
+
+       &:hover{
+               color: @primary-color;
+       }
+}
+
+.plx-treenode-label-container:hover .plx-treenode-operations{
+       display:inline-block;
+}
+
+*:focus{
+       outline:none;
+       box-shadow:none !important;
+}
+input[type="checkbox"]:focus{
+       border:0 !important;
+}
+.plx-treenode-hide-tree-toggle{
+  visibility: hidden;
+}
+
+.plx-treenode-droppoint{
+  height: 4px;
+  list-style-type: none;
+}
+.plx-treenode-droppoint-active{
+  background-color: #186ba0;
+  border: 0 none;
+}
+
+
+///////
+
+@item-padding-left: 12px;
+
+.upload-wrapper {
+       font-size: @font-size;
+       position: relative;
+       display: inline-block;
+}
+
+.upload-wrapper .item-text {
+       max-width: 280px;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       white-space: nowrap;
+       display: inline-block;
+       margin-bottom: 2px;
+       font-size: @font-size;
+       &.no-progressbar {
+               vertical-align: middle;
+       }
+}
+
+.upload-wrapper .plx-upload-progressbar {
+       margin-top: -13px;
+}
+
+.upload-wrapper .list-group-item {
+       border: 0;
+       padding: 0;
+       & .item {
+               width: 335px;
+               padding: 0 0 5px 0px;
+               & .item-text-wrapper {
+                       position: relative;
+                       display: inline-block;
+                       width: 100%;
+                       box-sizing: border-box;
+                       height: 40px;
+                       padding: 2px 3px 2px 10px;
+                       border: 1px solid transparent;
+                       & .text-red {
+                               color: @error-color !important;
+                       }
+                       &:hover {
+                               background-color: @hover-bg-color;
+                               cursor: default;
+                       }
+                       &:hover .plx-ico-close-16{
+                               display: block;
+                               transform: scale(0.8);
+                       }
+                       &.no-progressbar {
+                               height: 28px;
+                       }
+               }
+               & .item-delete {
+                       height: 14px;
+                       width: 16px;
+                       text-align: center;
+                       line-height: 14px;
+                       position: absolute;
+                       right: 2%;
+                       color: #999999;
+                       display: none;
+                       top: 3px;
+                       &:hover {
+                               cursor: pointer;
+                               color: darken(#999999, 20%);
+                       }
+                       &.no-progressbar {
+                               top: 6px;
+                       }
+               }
+       }
+}
+
+.upload-wrapper .plx-ico-close-16 {
+  font-size: 16px;
+       float: right;
+       cursor: pointer;
+}
+
+.upload-wrapper ul.list-group {
+       margin-top: 15px;
+}
+
+.upload-wrapper .url-form-control {
+       display: inline-block;
+}
+
+.upload-wrapper .item-detail {
+       color: #aaa;
+       position: relative;
+       padding: 0 10px;
+       font-size: 12px;
+       & div {
+               margin: 0px 0px 15px 0;
+       }
+       & .detail {
+               margin: 5px 0 10px 0;
+       }
+}
+
+.upload-wrapper .item-detail-des {
+       display: inline-block;
+       width: 170px;
+       word-wrap: break-word;
+       margin-left: 15px;
+       vertical-align: top;
+}
+
+.upload-wrapper .item-detail-time {
+       display: inline-block;
+       width: 119px;
+       word-break: break-all;
+       vertical-align: top;
+}
+
+.upload-wrapper .selectFile {
+       display: inline-block;
+       min-width: 50px;
+       margin-right: 10px;
+       text-align: right;
+}
+
+.upload-wrapper label.raw-container{
+       margin: 0 10px;
+}
+
+.upload-wrapper .item-lists{
+       font-size: @font-size;
+}
+
+.upload-wrapper .list-container {
+       padding-right: 15px;
+
+       &.plx-upload-Manual-showdetail {
+               margin-left: -10px - @item-padding-left;
+       }
+
+       &.plx-upload-auto-showdetail {
+               margin-left: -10px;
+       }
+}
+
+.upload-wrapper .list-footer .upload-btn {
+       margin-top: 10px;
+}
+
+.upload-wrapper .upload-btn {
+       display: inline-block;
+}
+
+.upload-wrapper .loader-container {
+       position: absolute;
+       display: inline-block;
+       top: 8px;
+       left: 12px;
+}
+
+.upload-wrapper .list-group-item-pdleft-s{
+       padding: 0px 0px 0px @item-padding-left;
+}
+
+.upload-wrapper .list-group-item-pdleft {
+       padding: 0px 0px 0px @item-padding-left !important;
+}
+
+.upload-wrapper .upload-btn-wrapper {
+       display: inline-block;
+}
+.upload-wrapper .plx-red.left {
+       margin-left: 75px;
+}
+
+.upload-wrapper .expand-wrapper {
+       position: absolute;
+       left: 20px;
+       top: 4px;
+       display: inline-block;
+       font-size: @font-size;
+       &.open .ict-go {
+               display: none
+       }
+       &.open .ict-fold {
+               display: block;
+       }
+       & i {
+               height: 18px;
+               width: 20px;
+               text-align: left;
+               line-height: 19px;
+               cursor: pointer;
+       }
+}
+
+.upload-wrapper .ict-fold {
+       display: none;
+       color: @primary-color;
+       font-weight: bold;
+       transform: scale(0.7);
+}
+
+.upload-wrapper .ict-go {
+       display: block;
+       color: @primary-color;
+       font-weight: bold;
+       transform: scale(0.7);
+}
+
+.upload-wrapper .no-customparm-extend-wrapper {
+       left: -2px !important;
+}
+
+/* loding动画效果*/
+.upload-wrapper .loader {
+       font-size: @font-size;
+       width: @font-size;
+       height: @font-size;
+       display: inline-block;
+       border-radius: 50%;
+       background: @primary-color;
+       background: -moz-linear-gradient(left, @primary-color 10%, rgba(255, 255, 255, 0) 85%);
+       background: -webkit-linear-gradient(left, @primary-color 10%, rgba(255, 255, 255, 0) 85%);
+       background: -o-linear-gradient(left, @primary-color 10%, rgba(255, 255, 255, 0) 85%);
+       background: -ms-linear-gradient(left, @primary-color 10%, rgba(255, 255, 255, 0) 85%);
+       background: linear-gradient(to right, @primary-color 10%, rgba(255, 255, 255, 0) 85%);
+       position: relative;
+       -webkit-animation: load3 1.4s infinite linear;
+       animation: load3 1.4s infinite linear;
+       &:before {
+               width: 50%;
+               height: 50%;
+               background: @primary-color;
+               border-radius: 100% 0 0 0;
+               position: absolute;
+               top: 0;
+               left: 0;
+               content: '';
+       }
+       &:after {
+               background: @component-bg;
+               width: 75%;
+               height: 75%;
+               border-radius: 50%;
+               content: '';
+               margin: auto;
+               position: absolute;
+               top: 0;
+               left: 0;
+               bottom: 0;
+               right: 0;
+       }
+}
+
+@-webkit-keyframes load3 {
+       0% {
+               -webkit-transform: rotate(0deg);
+               transform: rotate(0deg);
+       }
+       100% {
+               -webkit-transform: rotate(360deg);
+               transform: rotate(360deg);
+       }
 }
-
-.plx-toggle-sm-switch-common {
-    height: @toggle-sm-height;
-    width: @toggle-sm-width;
-    input[type='checkbox'] + label {
-        height: @toggle-sm-height;
-        &::before {
-            height: @toggle-sm-height;
-            width: @toggle-sm-width;
-            border-radius: @toggle-sm-height/2;
-        }
-        &::after {
-            height: @toggle-sm-circle-size;
-            width: @toggle-sm-circle-size;
-        }
-    }
-    input[type='checkbox']:checked + label {
-        &::after {
-            left: @toggle-sm-width - @toggle-sm-circle-size - 2px;
-            transition: left 0.15s ease-in;
-        }
-    }
+@keyframes load3 {
+       0% {
+               -webkit-transform: rotate(0deg);
+               transform: rotate(0deg);
+       }
+       100% {
+               -webkit-transform: rotate(360deg);
+               transform: rotate(360deg);
+       }
 }
 
-///////\r
-.toolbar {\r
-\r
-       i.seperate-vertical {\r
-               margin-right: 10px;\r
-               margin-left: 0;\r
-               border-right: 1px solid @border-color-split;\r
-       }\r
-\r
-       span {\r
-               color: @text-color;\r
-               cursor: pointer;\r
-               margin-right: 10px;\r
-               font-size: 16px;\r
-               display: inline-block;\r
-               width: 28px;\r
-               height: 28px;\r
-               border: 1px solid transparent;\r
-               padding: 5px;\r
-\r
-               &:hover {\r
-                       background-color: @hover-bg-color;\r
-                       border-radius: @radius-sm;\r
-               }\r
-\r
-               &:last-child {\r
-                       margin-right: 0px;\r
-               }\r
-       }\r
-}\r
-
-///////\r
-\r
-@tooltip-arrow-border-width: 4px;\r
-@tooltip-arrow-border-width-before: 5px;\r
-@tooltip-arrow-border-height: @tooltip-arrow-border-width-before - @tooltip-arrow-border-width;\r
-@tooltip-arrow-away: 5px;\r
-@tooltip-arrow-background-color: #595959;\r
-@tooltip-arrow-border-color: #595959;\r
-@tooltip-away-host: 3px;\r
-\r
-.plx-tooltip {\r
-    font-family: @font-family;\r
-    font-size: @font-size;\r
-    opacity: 1;\r
-    position: absolute;\r
-    z-index: 10001;\r
-    display: block;\r
-    font-style: normal;\r
-    font-weight: normal;\r
-    letter-spacing: normal;\r
-    line-break: auto;\r
-    line-height: 1.5;\r
-    text-align: left;\r
-    text-decoration: none;\r
-    text-shadow: none;\r
-    text-transform: none;\r
-    white-space: normal;\r
-    word-break: normal;\r
-    word-spacing: normal;\r
-    word-wrap: break-word;\r
-    &::before,\r
-    &::after {\r
-        content: "";\r
-        position: absolute;\r
-        display: block;\r
-        width: 0;\r
-        height: 0;\r
-        border: solid transparent;\r
-    }\r
-    &::before {\r
-        border-width: @tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        border-width: @tooltip-arrow-border-width;\r
-    }\r
-}\r
-\r
-.plx-tooltip-inner {\r
-    min-width: 60px;\r
-    max-width: 200px;\r
-    padding: 3px 8px;\r
-    color: #fff;\r
-    text-align: center;\r
-    background-color: #000;\r
-}\r
-\r
-.plx-tooltip.show {\r
-       font-size: @font-size;\r
-       opacity: 1;\r
-}\r
-.plx-tooltip.show .plx-tooltip-inner {\r
-       background-color: #595959;\r
-       border-radius: @radius;\r
-       padding: 0px 12px;\r
-       height: 30px;\r
-       line-height: 30px;\r
-}\r
-\r
-.plx-tooltip-top-common {\r
-    margin-top: -(@tooltip-arrow-border-width + @tooltip-away-host);\r
-    &::before {\r
-        border-top-color: @tooltip-arrow-border-color;\r
-        border-bottom-width: 0;\r
-        bottom: -@tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        border-top-color: @tooltip-arrow-background-color;\r
-        border-bottom-width: 0;\r
-        bottom: -@tooltip-arrow-border-width;\r
-    }\r
-}\r
-.plx-tooltip-top {\r
-    .plx-tooltip-top-common;\r
-    &::before {\r
-        left: 50%;\r
-        margin-left: -@tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        left: 50%;\r
-        margin-left: -@tooltip-arrow-border-width;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-top-left {\r
-    .plx-tooltip-top-common;\r
-    &::before {\r
-        left: @tooltip-arrow-away;\r
-    }\r
-    &::after {\r
-        left: @tooltip-arrow-away + @tooltip-arrow-border-height;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-top-right {\r
-    .plx-tooltip-top-common;\r
-    &::before {\r
-        right: @tooltip-arrow-away;\r
-    }\r
-    &::after {\r
-        right: @tooltip-arrow-away + @tooltip-arrow-border-height;\r
-    }\r
-}\r
-\r
-.plx-tooltip-right-common {\r
-    margin-left: @tooltip-arrow-border-width + @tooltip-away-host;\r
-    &::before {\r
-        border-right-color: @tooltip-arrow-border-color;\r
-        border-left-width: 0;\r
-        left: -@tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        border-right-color: @tooltip-arrow-background-color;\r
-        border-left-width: 0;\r
-        left: -@tooltip-arrow-border-width;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-right {\r
-    .plx-tooltip-right-common;\r
-    &::before {\r
-        top: 50%;\r
-        margin-top: -@tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        top: 50%;\r
-        margin-top: -@tooltip-arrow-border-width;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-right-top {\r
-    .plx-tooltip-right-common;\r
-    &::before {\r
-        top: @tooltip-arrow-away;\r
-    }\r
-    &::after {\r
-        top: @tooltip-arrow-away + @tooltip-arrow-border-height;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-right-bottom {\r
-    .plx-tooltip-right-common;\r
-    &::before {\r
-        bottom: @tooltip-arrow-away;\r
-    }\r
-    &::after {\r
-        bottom: @tooltip-arrow-away + @tooltip-arrow-border-height;\r
-    }\r
-}\r
-\r
-.plx-tooltip-bottom-common {\r
-    margin-top: @tooltip-arrow-border-width + @tooltip-away-host;\r
-    &::before {\r
-        border-bottom-color: @tooltip-arrow-border-color;\r
-        border-top-width: 0;\r
-        top: -@tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        border-bottom-color: @tooltip-arrow-background-color;\r
-        border-top-width: 0;\r
-        top: -@tooltip-arrow-border-width;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-bottom {\r
-    .plx-tooltip-bottom-common;\r
-    &::before {\r
-        left: 50%;\r
-        margin-left: -@tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        left: 50%;\r
-        margin-left: -@tooltip-arrow-border-width;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-bottom-left {\r
-    .plx-tooltip-bottom-common;\r
-    &::before {\r
-        left: @tooltip-arrow-away;\r
-    }\r
-    &::after {\r
-        left: @tooltip-arrow-away + @tooltip-arrow-border-height;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-bottom-right {\r
-    .plx-tooltip-bottom-common;\r
-    &::before {\r
-        right: @tooltip-arrow-away;\r
-    }\r
-    &::after {\r
-        right: @tooltip-arrow-away + @tooltip-arrow-border-height;\r
-    }\r
-}\r
-\r
-.plx-tooltip-left-common {\r
-    margin-left: -(@tooltip-arrow-border-width + @tooltip-away-host);\r
-    &::before {\r
-        border-left-color: @tooltip-arrow-border-color;\r
-        border-right-width: 0;\r
-        right: -@tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        border-left-color: @tooltip-arrow-background-color;\r
-        border-right-width: 0;\r
-        right: -@tooltip-arrow-border-width;\r
-    }\r
-}\r
-\r
-.plx-tooltip.plx-tooltip-left {\r
-    .plx-tooltip-left-common;\r
-    &::before {\r
-        top: 50%;\r
-        margin-top: -@tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        top: 50%;\r
-        margin-top: -@tooltip-arrow-border-width;\r
-    }\r
-}\r
-\r
-.plx-tooltip.plx-tooltip-left-top {\r
-    .plx-tooltip-left-common;\r
-    &::before {\r
-        top: @tooltip-arrow-away;\r
-    }\r
-    &::after {\r
-        top: @tooltip-arrow-away + @tooltip-arrow-border-height;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-left-bottom {\r
-    .plx-tooltip-left-common;\r
-    &::before {\r
-        bottom: @tooltip-arrow-away;\r
-    }\r
-    &::after {\r
-        bottom: @tooltip-arrow-away + @tooltip-arrow-border-height;\r
-    }\r
-}
-@checkbox-border-size: 1px;\r
-\r
-.plx-checkbox-container {\r
-       font-size: 0;\r
-       position: relative;\r
-}\r
-\r
-.plx-checkbox {\r
-       position: absolute;\r
-       z-index: -1;\r
-       opacity: 0;\r
-       & + .checkbox-substitute {\r
-               position: relative;\r
-               display: inline-block;\r
-               cursor: pointer;\r
-               height: @checkbox-size;\r
-               width: @checkbox-size;\r
-               border: @checkbox-border-size solid @border-color-base;\r
-               border-radius: @radius-sm;\r
-               vertical-align: middle;\r
-       }\r
-       & + .checkbox-substitute + span {\r
-               font-weight: normal;\r
-               font-size: @font-size;\r
-               cursor: pointer;\r
-               vertical-align: middle;\r
-               .font-padding(@font-size);\r
-       }\r
-       &:hover + .checkbox-substitute {\r
-               border-color: @primary-color;\r
-               outline: none;\r
-               background-image: none;\r
-               -webkit-box-shadow: none;\r
-               -moz-box-shadow: none;\r
-               box-shadow: none;\r
-               text-shadow: none;\r
-       }\r
-       &:checked + .checkbox-substitute {\r
-               border-color: @primary-color;\r
-               background-color: @primary-color;\r
-               &::after {\r
-                       .checkbox-check(@component-bg);\r
-               }\r
-       }\r
-       &:checked.portion + .checkbox-substitute {\r
-               background-color: @primary-color;\r
-               border-color: @primary-color;\r
-               opacity: 0.5;\r
-       }\r
-       &:disabled + .checkbox-substitute,\r
-       &[disabled] + .checkbox-substitute {\r
-               border-color: @border-color-base;\r
-               background-color: @input-bg-color-disabled;\r
-               cursor: not-allowed;\r
-       }\r
-       &:disabled + .checkbox-substitute + span,\r
-       &[disabled] + .checkbox-substitute + span {\r
-               cursor: not-allowed;\r
-       }\r
-       &:checked.portion[disabled] + .checkbox-substitute {\r
-               background-color: @border-color-base;\r
-               border-color: @border-color-base;\r
-               &::after {\r
-                       .checkbox-check(@fonticon-color);\r
-               }\r
-       }\r
-       &:checked[disabled] + .checkbox-substitute {\r
-               border-color: @border-color-base;\r
-               background-color: @border-color-base;\r
-       }\r
-}\r
-\r
-.checkbox-check(@color) {\r
-       content: '';\r
-       position: absolute;\r
-       display: block;\r
-       width: 6px;\r
-       height: 10px;\r
-       border: solid @color;\r
-       border-width: 0 2px 2px 0;\r
-       transform: rotate(45deg);\r
-       .checkbox-check-left(@font-size);\r
-       top: 0;\r
-}\r
-\r
-.checkbox-check-left(12px) {\r
-       left: 3px;\r
-}\r
-\r
-.checkbox-check-left(14px) {\r
-       left: 4px;\r
-}\r
-\r
-.font-padding(12px) {\r
-       padding-left: 6px;\r
-}\r
-\r
-.font-padding(14px) {\r
-       padding-left: 10px;\r
-}\r
-
-///////\r
-///////\r
-\r
-@tree-node-ul-padding: 21px;\r
-@margin-right: 10px;\r
-\r
-.plx-treenode{\r
-       cursor: pointer;\r
-       background-attachment: scroll;\r
-       background-color: transparent;\r
-       background-image: none;\r
-       background-position: 0 0;\r
-       background-repeat: repeat-y;\r
-       list-style: none outside none;\r
-       margin: 0;\r
-       padding:0;\r
-       white-space: nowrap;\r
-       font-size: @font-size;\r
-\r
-       .plx-treenode-content{\r
-               margin-top:10px;\r
-\r
-               &.light{\r
-                       margin-top:15px;\r
-               }\r
-       }\r
-}\r
-\r
-.plx-treenode ul.plx-treenode-children {\r
-       display: block;\r
-       -webkit-padding-start: @tree-node-ul-padding;\r
-}\r
-\r
-.plx-treenode-toggler{\r
-       font-size: 16px;\r
-       color: @primary-color;\r
-       display: inline-block;\r
-       margin-right: 7px;\r
-       margin-top:2px;\r
-       vertical-align: bottom;\r
-       float: left;\r
-}\r
-\r
-// .plx-treenode-toggler{\r
-//     display: inline-block;\r
-//     margin-right: @margin-right;\r
-//     vertical-align: bottom;\r
-// }\r
-\r
-// .plx-treenode-toggler svg {\r
-//     .plx-treenode-vertical-bottom(@font-size);\r
-// }\r
-\r
-// .plx-treenode-toggler svg .st0 {\r
-//     fill: @primary-color;\r
-// }\r
-\r
-// .plx-treenode-toggler svg .st1 {\r
-//     stroke: @primary-color;\r
-// }\r
-\r
-.plx-treenode-ckbox{\r
-       float: left;\r
-       margin-right: @margin-right;\r
-       margin-top:2px;\r
-       // .plx-treenode-vertical-bottom(@font-size);\r
-\r
-}\r
-\r
-.plx-treenode-vertical-bottom(@font-size) when (@font-size = 12px) {\r
-       vertical-align: bottom;\r
-       margin-bottom: 3px;\r
-}\r
-\r
-.plx-treenode-vertical-bottom(@font-size) when (@font-size = 14px) {\r
-       vertical-align: bottom;\r
-       margin-bottom: 4px;\r
-}\r
-\r
-.plx-treenode-icon{\r
-       color:@fonticon-color;\r
-       margin-right: @margin-right;\r
-       float: left;\r
-       font-size: 16px;\r
-       vertical-align: bottom;\r
-       // .plx-treenode-icon-margin-bottom(@font-size);\r
-       margin-top: 2px;\r
-}\r
-\r
-.plx-treenode-icon-margin-bottom(@font-size) when (@font-size = 12px) {\r
-       margin-bottom: 1px;\r
-}\r
-\r
-.plx-treenode-icon-margin-bottom(@font-size) when (@font-size = 14px) {\r
-       margin-bottom: 2px;\r
-}\r
-\r
-.plx-treenode-label-container{\r
-       overflow: visible;\r
-}\r
-\r
-.plx-treenode-label-container.plx-treenode-label-ellipsis{\r
-       overflow:hidden;\r
-}\r
-\r
-.plx-treenode-label-container:hover {\r
-       background-color: @hover-bg-color;\r
-}\r
-\r
-.plx-treenode-active>div .plx-treenode-label-container {\r
-       background-color: darken(@hover-bg-color, 2%);\r
-}\r
-\r
-.plx-treenode-active>div .plx-treenode-label-container:hover {\r
-       background-color: @hover-bg-color;\r
-}\r
-\r
-.plx-treenode-label-container span:last-child{\r
-       margin-right:5px;\r
-}\r
-\r
-\r
-.plx-treenode-lable{\r
-       display: inline-block;\r
-       vertical-align:0;\r
-       font-family: @font-family;\r
-       color:@text-color;\r
-\r
-       span {\r
-               display: inline-block;\r
-               overflow: hidden;\r
-               max-width: 100%;\r
-               text-overflow: ellipsis;\r
-               white-space: nowrap;\r
-               vertical-align: bottom;\r
-       }\r
-}\r
-\r
-.plx-treenode-operations{\r
-       margin-left: 20px;\r
-       display: none;\r
-       vertical-align: bottom;\r
-       width: fit-content;\r
-       line-height: 1;\r
-       .plx-treenode-operations-margin-bottom(@font-size);\r
-}\r
-\r
-\r
-.plx-treenode-operations-margin-bottom(@font-size) when (@font-size = 12px) {\r
-       margin-bottom: 1px;\r
-}\r
-\r
-.plx-treenode-operations-margin-bottom(@font-size) when (@font-size = 14px) {\r
-       margin-bottom: 2px;\r
-}\r
-\r
-.plx-treenode-operation{\r
-       display: inline-block;\r
-       margin-right: 10px;\r
-       color:@fonticon-color;\r
-       font-size: 16px;\r
-       vertical-align: text-bottom;\r
-\r
-       &:hover{\r
-               color: @primary-color;\r
-       }\r
-}\r
-\r
-.plx-treenode-label-container:hover .plx-treenode-operations{\r
-       display:inline-block;\r
-}\r
-\r
-*:focus{\r
-       outline:none;\r
-       box-shadow:none !important;\r
-}\r
-input[type="checkbox"]:focus{\r
-       border:0 !important;\r
-}\r
-.plx-treenode-hide-tree-toggle{\r
-  visibility: hidden;\r
-}\r
-\r
-.plx-treenode-droppoint{\r
-  height: 4px;\r
-  list-style-type: none;\r
-}\r
-.plx-treenode-droppoint-active{\r
-  background-color: #186ba0;\r
-  border: 0 none;\r
-}\r
-\r
-
-///////\r
-\r
-@item-padding-left: 12px;\r
-\r
-.upload-wrapper {\r
-       font-size: @font-size;\r
-       position: relative;\r
-       display: inline-block;\r
-}\r
-\r
-.upload-wrapper .item-text {\r
-       max-width: 280px;\r
-       overflow: hidden;\r
-       text-overflow: ellipsis;\r
-       white-space: nowrap;\r
-       display: inline-block;\r
-       margin-bottom: 2px;\r
-       font-size: @font-size;\r
-       &.no-progressbar {\r
-               vertical-align: middle;\r
-       }\r
-}\r
-\r
-.upload-wrapper .plx-upload-progressbar {\r
-       margin-top: -13px;\r
-}\r
-\r
-.upload-wrapper .list-group-item {\r
-       border: 0;\r
-       padding: 0;\r
-       & .item {\r
-               width: 335px;\r
-               padding: 0 0 5px 0px;\r
-               & .item-text-wrapper {\r
-                       position: relative;\r
-                       display: inline-block;\r
-                       width: 100%;\r
-                       box-sizing: border-box;\r
-                       height: 40px;\r
-                       padding: 2px 3px 2px 10px;\r
-                       border: 1px solid transparent;\r
-                       & .text-red {\r
-                               color: @error-color !important;\r
-                       }\r
-                       &:hover {\r
-                               background-color: @hover-bg-color;\r
-                               cursor: default;\r
-                       }\r
-                       &:hover .plx-ico-close-16{\r
-                               display: block;\r
-                               transform: scale(0.8);\r
-                       }\r
-                       &.no-progressbar {\r
-                               height: 28px;\r
-                       }\r
-               }\r
-               & .item-delete {\r
-                       height: 14px;\r
-                       width: 16px;\r
-                       text-align: center;\r
-                       line-height: 14px;\r
-                       position: absolute;\r
-                       right: 2%;\r
-                       color: #999999;\r
-                       display: none;\r
-                       top: 3px;\r
-                       &:hover {\r
-                               cursor: pointer;\r
-                               color: darken(#999999, 20%);\r
-                       }\r
-                       &.no-progressbar {\r
-                               top: 6px;\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-.upload-wrapper .plx-ico-close-16 {\r
-  font-size: 16px;\r
-       float: right;\r
-       cursor: pointer;\r
-}\r
-\r
-.upload-wrapper ul.list-group {\r
-       margin-top: 15px;\r
-}\r
-\r
-.upload-wrapper .url-form-control {\r
-       display: inline-block;\r
-}\r
-\r
-.upload-wrapper .item-detail {\r
-       color: #aaa;\r
-       position: relative;\r
-       padding: 0 10px;\r
-       font-size: 12px;\r
-       & div {\r
-               margin: 0px 0px 15px 0;\r
-       }\r
-       & .detail {\r
-               margin: 5px 0 10px 0;\r
-       }\r
-}\r
-\r
-.upload-wrapper .item-detail-des {\r
-       display: inline-block;\r
-       width: 170px;\r
-       word-wrap: break-word;\r
-       margin-left: 15px;\r
-       vertical-align: top;\r
-}\r
-\r
-.upload-wrapper .item-detail-time {\r
-       display: inline-block;\r
-       width: 119px;\r
-       word-break: break-all;\r
-       vertical-align: top;\r
-}\r
-\r
-.upload-wrapper .selectFile {\r
-       display: inline-block;\r
-       min-width: 50px;\r
-       margin-right: 10px;\r
-       text-align: right;\r
-}\r
-\r
-.upload-wrapper label.raw-container{\r
-       margin: 0 10px;\r
-}\r
-\r
-.upload-wrapper .item-lists{\r
-       font-size: @font-size;\r
-}\r
-\r
-.upload-wrapper .list-container {\r
-       padding-right: 15px;\r
-\r
-       &.plx-upload-Manual-showdetail {\r
-               margin-left: -10px - @item-padding-left;\r
-       }\r
-\r
-       &.plx-upload-auto-showdetail {\r
-               margin-left: -10px;\r
-       }\r
-}\r
-\r
-.upload-wrapper .list-footer .upload-btn {\r
-       margin-top: 10px;\r
-}\r
-\r
-.upload-wrapper .upload-btn {\r
-       display: inline-block;\r
-}\r
-\r
-.upload-wrapper .loader-container {\r
-       position: absolute;\r
-       display: inline-block;\r
-       top: 8px;\r
-       left: 12px;\r
-}\r
-\r
-.upload-wrapper .list-group-item-pdleft-s{\r
-       padding: 0px 0px 0px @item-padding-left;\r
-}\r
-\r
-.upload-wrapper .list-group-item-pdleft {\r
-       padding: 0px 0px 0px @item-padding-left !important;\r
-}\r
-\r
-.upload-wrapper .upload-btn-wrapper {\r
-       display: inline-block;\r
-}\r
-.upload-wrapper .plx-red.left {\r
-       margin-left: 75px;\r
-}\r
-\r
-.upload-wrapper .expand-wrapper {\r
-       position: absolute;\r
-       left: 20px;\r
-       top: 4px;\r
-       display: inline-block;\r
-       font-size: @font-size;\r
-       &.open .ict-go {\r
-               display: none\r
-       }\r
-       &.open .ict-fold {\r
-               display: block;\r
-       }\r
-       & i {\r
-               height: 18px;\r
-               width: 20px;\r
-               text-align: left;\r
-               line-height: 19px;\r
-               cursor: pointer;\r
-       }\r
-}\r
-\r
-.upload-wrapper .ict-fold {\r
-       display: none;\r
-       color: @primary-color;\r
-       font-weight: bold;\r
-       transform: scale(0.7);\r
-}\r
-\r
-.upload-wrapper .ict-go {\r
-       display: block;\r
-       color: @primary-color;\r
-       font-weight: bold;\r
-       transform: scale(0.7);\r
-}\r
-\r
-.upload-wrapper .no-customparm-extend-wrapper {\r
-       left: -2px !important;\r
-}\r
-\r
-/* loding动画效果*/\r
-.upload-wrapper .loader {\r
-       font-size: @font-size;\r
-       width: @font-size;\r
-       height: @font-size;\r
-       display: inline-block;\r
-       border-radius: 50%;\r
-       background: @primary-color;\r
-       background: -moz-linear-gradient(left, @primary-color 10%, rgba(255, 255, 255, 0) 85%);\r
-       background: -webkit-linear-gradient(left, @primary-color 10%, rgba(255, 255, 255, 0) 85%);\r
-       background: -o-linear-gradient(left, @primary-color 10%, rgba(255, 255, 255, 0) 85%);\r
-       background: -ms-linear-gradient(left, @primary-color 10%, rgba(255, 255, 255, 0) 85%);\r
-       background: linear-gradient(to right, @primary-color 10%, rgba(255, 255, 255, 0) 85%);\r
-       position: relative;\r
-       -webkit-animation: load3 1.4s infinite linear;\r
-       animation: load3 1.4s infinite linear;\r
-       &:before {\r
-               width: 50%;\r
-               height: 50%;\r
-               background: @primary-color;\r
-               border-radius: 100% 0 0 0;\r
-               position: absolute;\r
-               top: 0;\r
-               left: 0;\r
-               content: '';\r
-       }\r
-       &:after {\r
-               background: @component-bg;\r
-               width: 75%;\r
-               height: 75%;\r
-               border-radius: 50%;\r
-               content: '';\r
-               margin: auto;\r
-               position: absolute;\r
-               top: 0;\r
-               left: 0;\r
-               bottom: 0;\r
-               right: 0;\r
-       }\r
-}\r
-\r
-@-webkit-keyframes load3 {\r
-       0% {\r
-               -webkit-transform: rotate(0deg);\r
-               transform: rotate(0deg);\r
-       }\r
-       100% {\r
-               -webkit-transform: rotate(360deg);\r
-               transform: rotate(360deg);\r
-       }\r
-}\r
-@keyframes load3 {\r
-       0% {\r
-               -webkit-transform: rotate(0deg);\r
-               transform: rotate(0deg);\r
-       }\r
-       100% {\r
-               -webkit-transform: rotate(360deg);\r
-               transform: rotate(360deg);\r
-       }\r
-}\r
-
 ///////
 .plx-table-customCols{
     height: 40px;
@@ -4644,383 +4644,383 @@ input::-webkit-input-placeholder{
   color: @disabled-text-color;
 }
 
-///////\r
-\r
-@padding-normal: 0px 16px;\r
-@padding-sm: 0px 14px;\r
-@padding-xs: 0px 12px;\r
-@min-width-normal: 80px;\r
-@min-width-sm: 60px;\r
-@min-width-xs: 60px;\r
-@btn-margin-right: 10px;\r
-@btn-margin-right-sm: 5px;\r
-@btn-margin-right-xs: 5px;\r
-@btn-border-height: 1px;\r
-\r
-.border-min-width(@min-width, 14px) {\r
-       min-width: @min-width + 8px;\r
-}\r
-\r
-.border-min-width(@min-width, 12px) {\r
-       min-width: @min-width;\r
-}\r
-\r
-.background-color-white-color-disabled (@color) when (@color = #fff) {\r
-       color: @disabled-text-color;\r
-  background-color: @common-color;\r
-       border-color: #e9e9e9;\r
-}\r
-\r
-.background-color-white-color-disabled (@color) when not (@color = #fff) {\r
-       border-color: @color;\r
-       background-color: @color;\r
-       opacity: @opacity-disable;\r
-}\r
-\r
-.plx-btn {\r
-       font-family: @font-family;\r
-       color: @common-textcolor;\r
-       .border-min-width(@min-width-normal, @font-size);\r
-       letter-spacing: 1px;\r
-       padding: @padding-normal;\r
-       height: @btn-height;\r
-       font-size: @font-size;\r
-       cursor: pointer;\r
-       text-align: center;\r
-       white-space: nowrap;\r
-       margin-right: @btn-margin-right;\r
-       vertical-align: middle;\r
-       border: @btn-border-height solid @border-color-base;\r
-       background-color: @common-color;\r
-       border-radius: @radius;\r
-       line-height: @btn-height - @btn-border-height * 2;\r
-       &:hover,\r
-       &:disabled,\r
-       &[disabled],\r
-       &:focus,\r
-       &:active {\r
-               outline: none;\r
-               background-image: none;\r
-               filter: none;\r
-               -webkit-box-shadow: none;\r
-               -moz-box-shadow: none;\r
-               box-shadow: none;\r
-               text-shadow: none;\r
-       }\r
-       &:hover,\r
-       &:focus {\r
-    color: @btn-common-color-text-hover;\r
-    border-color: @btn-common-color-border-hover;\r
-               background-color: @common-color-hover;\r
-       }\r
-       &:active {\r
-    color: @btn-common-color-text-click;\r
-    border-color: @btn-common-color-border-click;\r
-               background-color: @common-color-click;\r
-       }\r
-       &:disabled,\r
-       &[disabled] {\r
-               .background-color-white-color-disabled(@common-color);\r
-       }\r
-       &:disabled:hover,\r
-       &[disabled]:hover,\r
-       &:disabled:focus,\r
-       &[disabled]:focus {\r
-               .background-color-white-color-disabled(@common-color);\r
-               cursor: not-allowed;\r
-       }\r
-       & .plx-btn-icon {\r
-                       font-size: 16px;\r
-                       vertical-align: text-top;\r
-                       margin-right: 3px;\r
-       }\r
-}\r
-\r
-.plx-btn-primary {\r
-       background-color: @primary-color;\r
-       color: @scene-textcolor;\r
-       border-color: @primary-color;\r
-       &:hover,\r
-       &:focus {\r
-    color: @scene-textcolor;\r
-               background-color: @primary-color-hover;\r
-               border-color: @primary-color-hover;\r
-       }\r
-       &:active {\r
-    color: @scene-textcolor;\r
-               background-color: @primary-color-click;\r
-               border-color: @primary-color-click;\r
-       }\r
-       &:disabled,\r
-       &[disabled],\r
-       &:disabled:hover,\r
-       &[disabled]:hover,\r
-       &:disabled:focus,\r
-       &[disabled]:focus {\r
-               color: @scene-textcolor;\r
-               .background-color-white-color-disabled(@primary-color);\r
-       }\r
-}\r
-\r
-.plx-btn-guide {\r
-       background-color: @guide-color;\r
-       color: @scene-textcolor;\r
-       border-color: @guide-color;\r
-       &:hover,\r
-       &:focus {\r
-    color: @scene-textcolor;\r
-               background-color: @primary-color-guide-hover;\r
-               border-color: @primary-color-guide-hover;\r
-       }\r
-       &:active {\r
-    color: @scene-textcolor;\r
-               background-color: @primary-color-guide-click;\r
-               border-color: @primary-color-guide-click;\r
-       }\r
-       &:disabled,\r
-       &[disabled],\r
-       &:disabled:hover,\r
-       &[disabled]:hover,\r
-       &:disabled:focus,\r
-       &[disabled]:focus {\r
-               color: @scene-textcolor;\r
-               .background-color-white-color-disabled(@guide-color);\r
-       }\r
-}\r
-\r
-.plx-btn-table {\r
-       color: @text-color;\r
-}\r
-\r
-.plx-btn-error {\r
-       background-color: @error-color;\r
-       color: @scene-textcolor;\r
-       border-color: @error-color;\r
-       &:hover,\r
-       &:focus {\r
-    color: @scene-textcolor;\r
-               background-color: @error-color-hover;\r
-               border-color: @error-color-hover;\r
-       }\r
-       &:active {\r
-    color: @scene-textcolor;\r
-               background-color: @error-color-click;\r
-               border-color: @error-color-click;\r
-       }\r
-       &:disabled,\r
-       &[disabled],\r
-       &:disabled:hover,\r
-       &[disabled]:hover,\r
-       &:disabled:focus,\r
-       &[disabled]:focus {\r
-               color: @scene-textcolor;\r
-               .background-color-white-color-disabled(@error-color);\r
-       }\r
-}\r
-\r
-.plx-btn-sm {\r
-       height: @btn-height-sm;\r
-       padding: @padding-sm;\r
-       .border-min-width(@min-width-sm, @font-size);\r
-       margin-right: @btn-margin-right-sm;\r
-       line-height: @btn-height-sm - @btn-border-height * 2;\r
-}\r
-\r
-.plx-btn-xs{\r
-       height: @btn-height-xs;\r
-       padding: @padding-xs;\r
-       .border-min-width(@min-width-xs, @font-size);\r
-       margin-right: @btn-margin-right-xs;\r
-       line-height: @btn-height-xs - @btn-border-height * 2;\r
-}\r
-\r
-.plx-btn.dropdown-toggle {\r
-       margin-right: 0;\r
-       outline: none !important;\r
-       background-image: none !important;\r
-       filter: none;\r
-       -webkit-box-shadow: none;\r
-       -moz-box-shadow: none;\r
-       box-shadow: none;\r
-       text-shadow: none;\r
-}\r
-\r
-.plx-btn.dropdown-toggle::after {\r
-       margin-left: 16px;\r
-       border-top: 4px solid;\r
-       border-right: 4px solid transparent;\r
-       border-left: 4px solid transparent;\r
-       color: darken(@border-color-base, 10%);\r
-       margin-bottom: 1px;\r
-}\r
-\r
-.plx-btn-sm.dropdown-toggle::after {\r
-       margin-left: 14px;\r
-}\r
-\r
-.plx-btn-xs.dropdown-toggle::after {\r
-       margin-left: 12px;\r
-}\r
-\r
-.plx-btn+.dropdown-menu {\r
-       margin: 0;\r
-       padding: 0;\r
-       border: 0;\r
-       min-width: 100%;\r
-       font-size: @font-size;\r
-       border-radius: @radius;\r
-       .shadow;\r
-       & .dropdown-item {\r
-               background-color: @component-bg;\r
-               color: @text-color;\r
-               font-size: @font-size;\r
-               padding: @padding-normal;\r
-               height: 30px;\r
-               cursor: pointer;\r
-               &:hover,\r
-               &:focus,\r
-               &:active{\r
-                       outline: none;\r
-                       background-color: @hover-bg-color;\r
-               }\r
-               &:disabled,\r
-               &[disabled] {\r
-                       color: @disabled-text-color;\r
-               }\r
-               &:disabled:hover,\r
-               &[disabled]:hover,\r
-               &:disabled:focus,\r
-               &[disabled]:focus {\r
-                       cursor: not-allowed;\r
-                       background-color: @component-bg;\r
-               }\r
-       }\r
-}\r
-\r
-.plx-btn-sm+.dropdown-menu .dropdown-item {\r
-       padding: @padding-sm;\r
-}\r
-.plx-btn-xs+.dropdown-menu .dropdown-item {\r
-       padding: @padding-xs;\r
-}\r
-\r
-.plx-btn-more {\r
-       display: inline-block;\r
-       margin-right: @btn-margin-right;\r
-}\r
-\r
-.plx-btn-more-sm {\r
-       margin-right: @btn-margin-right-sm;\r
-}\r
-\r
-.plx-btn-more-xs {\r
-       margin-right: @btn-margin-right-xs;\r
-}
-///////\r
-\r
-@checkbox-border-size: 1px;\r
-\r
-.plx-checkbox-container {\r
-       font-size: 0;\r
-       position: relative;\r
-}\r
-\r
-.plx-checkbox {\r
-       position: absolute;\r
-       z-index: -1;\r
-       opacity: 0;\r
-       & + .checkbox-substitute {\r
-               position: relative;\r
-               display: inline-block;\r
-               cursor: pointer;\r
-               height: @checkbox-size;\r
-               width: @checkbox-size;\r
-               border: @checkbox-border-size solid @border-color-base;\r
-               border-radius: @radius-sm;\r
-               vertical-align: middle;\r
-       }\r
-       & + .checkbox-substitute + span {\r
-               font-weight: normal;\r
-               font-size: @font-size;\r
-               cursor: pointer;\r
-               vertical-align: middle;\r
-               .font-padding(@font-size);\r
-       }\r
-       &:hover + .checkbox-substitute {\r
-               border-color: @primary-color;\r
-               outline: none;\r
-               background-image: none;\r
-               -webkit-box-shadow: none;\r
-               -moz-box-shadow: none;\r
-               box-shadow: none;\r
-               text-shadow: none;\r
-       }\r
-       &:checked + .checkbox-substitute {\r
-               border-color: @primary-color;\r
-               background-color: @primary-color;\r
-               &::after {\r
-                       .checkbox-check(@component-bg);\r
-               }\r
-       }\r
-       &.portion + .checkbox-substitute {\r
-               background-color: @primary-color;\r
-               border-color: @primary-color;\r
-               opacity: 0.5;\r
-               &::after {\r
-                       .checkbox-check(@component-bg);\r
-               }\r
-       }\r
-       &:disabled + .checkbox-substitute,\r
-       &[disabled] + .checkbox-substitute {\r
-               border-color: @border-color-base;\r
-               background-color: @input-bg-color-disabled;\r
-               cursor: not-allowed;\r
-       }\r
-       &:disabled + .checkbox-substitute + span,\r
-       &[disabled] + .checkbox-substitute + span {\r
-               cursor: not-allowed;\r
-       }\r
-       &.portion[disabled] + .checkbox-substitute {\r
-               background-color: @border-color-base;\r
-               border-color: @border-color-base;\r
-               &::after {\r
-                       .checkbox-check(@fonticon-color);\r
-               }\r
-       }\r
-       &:checked[disabled] + .checkbox-substitute {\r
-               border-color: @border-color-base;\r
-               background-color: @border-color-base;\r
-       }\r
-}\r
-\r
-.checkbox-check(@color) {\r
-       content: '';\r
-       position: absolute;\r
-       display: block;\r
-       width: 6px;\r
-       height: 10px;\r
-       border: solid @color;\r
-       border-width: 0 2px 2px 0;\r
-       transform: rotate(45deg);\r
-       .checkbox-check-left(@font-size);\r
-       top: 0;\r
-}\r
-\r
-.checkbox-check-left(12px) {\r
-       left: 3px;\r
-}\r
-\r
-.checkbox-check-left(14px) {\r
-       left: 4px;\r
-}\r
-\r
-.font-padding(12px) {\r
-       padding-left: 6px;\r
-}\r
-\r
-.font-padding(14px) {\r
-       padding-left: 10px;\r
-}\r
+///////
+
+@padding-normal: 0px 16px;
+@padding-sm: 0px 14px;
+@padding-xs: 0px 12px;
+@min-width-normal: 80px;
+@min-width-sm: 60px;
+@min-width-xs: 60px;
+@btn-margin-right: 10px;
+@btn-margin-right-sm: 5px;
+@btn-margin-right-xs: 5px;
+@btn-border-height: 1px;
+
+.border-min-width(@min-width, 14px) {
+       min-width: @min-width + 8px;
+}
+
+.border-min-width(@min-width, 12px) {
+       min-width: @min-width;
+}
+
+.background-color-white-color-disabled (@color) when (@color = #fff) {
+       color: @disabled-text-color;
+  background-color: @common-color;
+       border-color: #e9e9e9;
+}
+
+.background-color-white-color-disabled (@color) when not (@color = #fff) {
+       border-color: @color;
+       background-color: @color;
+       opacity: @opacity-disable;
+}
+
+.plx-btn {
+       font-family: @font-family;
+       color: @common-textcolor;
+       .border-min-width(@min-width-normal, @font-size);
+       letter-spacing: 1px;
+       padding: @padding-normal;
+       height: @btn-height;
+       font-size: @font-size;
+       cursor: pointer;
+       text-align: center;
+       white-space: nowrap;
+       margin-right: @btn-margin-right;
+       vertical-align: middle;
+       border: @btn-border-height solid @border-color-base;
+       background-color: @common-color;
+       border-radius: @radius;
+       line-height: @btn-height - @btn-border-height * 2;
+       &:hover,
+       &:disabled,
+       &[disabled],
+       &:focus,
+       &:active {
+               outline: none;
+               background-image: none;
+               filter: none;
+               -webkit-box-shadow: none;
+               -moz-box-shadow: none;
+               box-shadow: none;
+               text-shadow: none;
+       }
+       &:hover,
+       &:focus {
+    color: @btn-common-color-text-hover;
+    border-color: @btn-common-color-border-hover;
+               background-color: @common-color-hover;
+       }
+       &:active {
+    color: @btn-common-color-text-click;
+    border-color: @btn-common-color-border-click;
+               background-color: @common-color-click;
+       }
+       &:disabled,
+       &[disabled] {
+               .background-color-white-color-disabled(@common-color);
+       }
+       &:disabled:hover,
+       &[disabled]:hover,
+       &:disabled:focus,
+       &[disabled]:focus {
+               .background-color-white-color-disabled(@common-color);
+               cursor: not-allowed;
+       }
+       & .plx-btn-icon {
+                       font-size: 16px;
+                       vertical-align: text-top;
+                       margin-right: 3px;
+       }
+}
+
+.plx-btn-primary {
+       background-color: @primary-color;
+       color: @scene-textcolor;
+       border-color: @primary-color;
+       &:hover,
+       &:focus {
+    color: @scene-textcolor;
+               background-color: @primary-color-hover;
+               border-color: @primary-color-hover;
+       }
+       &:active {
+    color: @scene-textcolor;
+               background-color: @primary-color-click;
+               border-color: @primary-color-click;
+       }
+       &:disabled,
+       &[disabled],
+       &:disabled:hover,
+       &[disabled]:hover,
+       &:disabled:focus,
+       &[disabled]:focus {
+               color: @scene-textcolor;
+               .background-color-white-color-disabled(@primary-color);
+       }
+}
+
+.plx-btn-guide {
+       background-color: @guide-color;
+       color: @scene-textcolor;
+       border-color: @guide-color;
+       &:hover,
+       &:focus {
+    color: @scene-textcolor;
+               background-color: @primary-color-guide-hover;
+               border-color: @primary-color-guide-hover;
+       }
+       &:active {
+    color: @scene-textcolor;
+               background-color: @primary-color-guide-click;
+               border-color: @primary-color-guide-click;
+       }
+       &:disabled,
+       &[disabled],
+       &:disabled:hover,
+       &[disabled]:hover,
+       &:disabled:focus,
+       &[disabled]:focus {
+               color: @scene-textcolor;
+               .background-color-white-color-disabled(@guide-color);
+       }
+}
+
+.plx-btn-table {
+       color: @text-color;
+}
+
+.plx-btn-error {
+       background-color: @error-color;
+       color: @scene-textcolor;
+       border-color: @error-color;
+       &:hover,
+       &:focus {
+    color: @scene-textcolor;
+               background-color: @error-color-hover;
+               border-color: @error-color-hover;
+       }
+       &:active {
+    color: @scene-textcolor;
+               background-color: @error-color-click;
+               border-color: @error-color-click;
+       }
+       &:disabled,
+       &[disabled],
+       &:disabled:hover,
+       &[disabled]:hover,
+       &:disabled:focus,
+       &[disabled]:focus {
+               color: @scene-textcolor;
+               .background-color-white-color-disabled(@error-color);
+       }
+}
+
+.plx-btn-sm {
+       height: @btn-height-sm;
+       padding: @padding-sm;
+       .border-min-width(@min-width-sm, @font-size);
+       margin-right: @btn-margin-right-sm;
+       line-height: @btn-height-sm - @btn-border-height * 2;
+}
+
+.plx-btn-xs{
+       height: @btn-height-xs;
+       padding: @padding-xs;
+       .border-min-width(@min-width-xs, @font-size);
+       margin-right: @btn-margin-right-xs;
+       line-height: @btn-height-xs - @btn-border-height * 2;
+}
+
+.plx-btn.dropdown-toggle {
+       margin-right: 0;
+       outline: none !important;
+       background-image: none !important;
+       filter: none;
+       -webkit-box-shadow: none;
+       -moz-box-shadow: none;
+       box-shadow: none;
+       text-shadow: none;
+}
+
+.plx-btn.dropdown-toggle::after {
+       margin-left: 16px;
+       border-top: 4px solid;
+       border-right: 4px solid transparent;
+       border-left: 4px solid transparent;
+       color: darken(@border-color-base, 10%);
+       margin-bottom: 1px;
+}
+
+.plx-btn-sm.dropdown-toggle::after {
+       margin-left: 14px;
+}
+
+.plx-btn-xs.dropdown-toggle::after {
+       margin-left: 12px;
+}
+
+.plx-btn+.dropdown-menu {
+       margin: 0;
+       padding: 0;
+       border: 0;
+       min-width: 100%;
+       font-size: @font-size;
+       border-radius: @radius;
+       .shadow;
+       & .dropdown-item {
+               background-color: @component-bg;
+               color: @text-color;
+               font-size: @font-size;
+               padding: @padding-normal;
+               height: 30px;
+               cursor: pointer;
+               &:hover,
+               &:focus,
+               &:active{
+                       outline: none;
+                       background-color: @hover-bg-color;
+               }
+               &:disabled,
+               &[disabled] {
+                       color: @disabled-text-color;
+               }
+               &:disabled:hover,
+               &[disabled]:hover,
+               &:disabled:focus,
+               &[disabled]:focus {
+                       cursor: not-allowed;
+                       background-color: @component-bg;
+               }
+       }
+}
+
+.plx-btn-sm+.dropdown-menu .dropdown-item {
+       padding: @padding-sm;
+}
+.plx-btn-xs+.dropdown-menu .dropdown-item {
+       padding: @padding-xs;
+}
+
+.plx-btn-more {
+       display: inline-block;
+       margin-right: @btn-margin-right;
+}
+
+.plx-btn-more-sm {
+       margin-right: @btn-margin-right-sm;
+}
+
+.plx-btn-more-xs {
+       margin-right: @btn-margin-right-xs;
+}
+///////
+
+@checkbox-border-size: 1px;
+
+.plx-checkbox-container {
+       font-size: 0;
+       position: relative;
+}
+
+.plx-checkbox {
+       position: absolute;
+       z-index: -1;
+       opacity: 0;
+       & + .checkbox-substitute {
+               position: relative;
+               display: inline-block;
+               cursor: pointer;
+               height: @checkbox-size;
+               width: @checkbox-size;
+               border: @checkbox-border-size solid @border-color-base;
+               border-radius: @radius-sm;
+               vertical-align: middle;
+       }
+       & + .checkbox-substitute + span {
+               font-weight: normal;
+               font-size: @font-size;
+               cursor: pointer;
+               vertical-align: middle;
+               .font-padding(@font-size);
+       }
+       &:hover + .checkbox-substitute {
+               border-color: @primary-color;
+               outline: none;
+               background-image: none;
+               -webkit-box-shadow: none;
+               -moz-box-shadow: none;
+               box-shadow: none;
+               text-shadow: none;
+       }
+       &:checked + .checkbox-substitute {
+               border-color: @primary-color;
+               background-color: @primary-color;
+               &::after {
+                       .checkbox-check(@component-bg);
+               }
+       }
+       &.portion + .checkbox-substitute {
+               background-color: @primary-color;
+               border-color: @primary-color;
+               opacity: 0.5;
+               &::after {
+                       .checkbox-check(@component-bg);
+               }
+       }
+       &:disabled + .checkbox-substitute,
+       &[disabled] + .checkbox-substitute {
+               border-color: @border-color-base;
+               background-color: @input-bg-color-disabled;
+               cursor: not-allowed;
+       }
+       &:disabled + .checkbox-substitute + span,
+       &[disabled] + .checkbox-substitute + span {
+               cursor: not-allowed;
+       }
+       &.portion[disabled] + .checkbox-substitute {
+               background-color: @border-color-base;
+               border-color: @border-color-base;
+               &::after {
+                       .checkbox-check(@fonticon-color);
+               }
+       }
+       &:checked[disabled] + .checkbox-substitute {
+               border-color: @border-color-base;
+               background-color: @border-color-base;
+       }
+}
+
+.checkbox-check(@color) {
+       content: '';
+       position: absolute;
+       display: block;
+       width: 6px;
+       height: 10px;
+       border: solid @color;
+       border-width: 0 2px 2px 0;
+       transform: rotate(45deg);
+       .checkbox-check-left(@font-size);
+       top: 0;
+}
+
+.checkbox-check-left(12px) {
+       left: 3px;
+}
+
+.checkbox-check-left(14px) {
+       left: 4px;
+}
+
+.font-padding(12px) {
+       padding-left: 6px;
+}
+
+.font-padding(14px) {
+       padding-left: 10px;
+}
 
 ///////
 ///////
@@ -5256,194 +5256,194 @@ input::-webkit-input-placeholder{
 }
 
 
-///////\r
-\r
-.plx-input {\r
-       font-size: @font-size;\r
-       height: @input-height;\r
-       padding-left: 10px;\r
-       padding-right: 10px;\r
-       outline: 0;\r
-       border: 1px solid @border-color-base;\r
-       border-radius: @radius;\r
-       vertical-align: middle;\r
-       &:focus {\r
-               border: 1px solid @primary-color;\r
-       }\r
-       &:disabled,\r
-       &[disabled] {\r
-               cursor: not-allowed;\r
-               background-color: @input-bg-color-disabled;\r
-       }\r
-}\r
-\r
-.plx-input-sm {\r
-       height: @input-height-sm;\r
-}\r
-\r
-.plx-input-right-no-radius {\r
-       border-bottom-right-radius: 0;\r
-       border-top-right-radius: 0;\r
-}
-///////\r
-\r
-.plx-radio-container {\r
-       font-size: 0;\r
-       position: relative;\r
-}\r
-\r
-.plx-radio {\r
-       position: absolute;\r
-       z-index: -1;\r
-       opacity: 0;\r
-       & + .radio-substitute {\r
-               position: relative;\r
-               display: inline-block;\r
-               cursor: pointer;\r
-               height: @checkbox-size;\r
-               width: @checkbox-size;\r
-               border: 1px solid @border-color-base;\r
-               border-radius: @checkbox-size;\r
-               vertical-align: middle;\r
-       }\r
-       &:hover + .radio-substitute,\r
-       &:focus + .radio-substitute {\r
-               border-color: @primary-color;\r
-               outline: none;\r
-               background-image: none;\r
-               -webkit-box-shadow: none;\r
-               -moz-box-shadow: none;\r
-               box-shadow: none;\r
-               text-shadow: none;\r
-       }\r
-       &:checked + .radio-substitute {\r
-               .radio-boder-checked-width(@font-size);\r
-       }\r
-       &:disabled + .radio-substitute,\r
-       &[disabled] + .radio-substitute {\r
-               border-color: @border-color-base;\r
-               background-color: @input-bg-color-disabled;\r
-               cursor: not-allowed;\r
-       }\r
-       &:checked [disabled] + .radio-substitute {\r
-               border-color: @border-color-split;\r
-               background-color: @border-color-split;\r
-               cursor: not-allowed;\r
-       }\r
-       & + .radio-substitute + span {\r
-               font-weight: normal;\r
-               font-size: @font-size;\r
-               cursor: pointer;\r
-               vertical-align: middle;\r
-               .font-padding(@font-size);\r
-       }\r
-       &:disabled + .radio-substitute + span,\r
-       &[disabled] + .radio-substitute + span {\r
-               cursor: not-allowed;\r
-       }\r
-}\r
-\r
-.radio-boder-checked-width(12px) {\r
-       border: 4px solid @primary-color;\r
-}\r
-\r
-.radio-boder-checked-width(14px) {\r
-       border: 5px solid @primary-color;\r
-}\r
-\r
-.font-padding(12px) {\r
-       padding-left: 6px;\r
-}\r
-\r
-.font-padding(14px) {\r
-       padding-left: 10px;\r
-}\r
-\r
-/*radio-group*/\r
-\r
-@radio-group-border-height: 1px;\r
-@padding-normal: 0px 16px;\r
-@padding-sm: 0px 14px;\r
-@min-width-normal: 80px;\r
-@min-width-sm: 60px;\r
-\r
-.border-min-width(@min-width, 14px) {\r
-       min-width: @min-width + 8px;\r
-}\r
-\r
-.border-min-width(@min-width, 12px) {\r
-       min-width: @min-width;\r
-}\r
-\r
-.btn.dropdown-toggle,\r
-.btn-group .btn.dropdown-toggle,\r
-.btn:hover,\r
-.btn:disabled,\r
-.btn[disabled],\r
-.btn:focus,\r
-.btn:active,\r
-.btn.active {\r
-       outline: none !important;\r
-       background-image: none !important;\r
-       filter: none;\r
-       -webkit-box-shadow: none;\r
-       -moz-box-shadow: none;\r
-       box-shadow: none;\r
-       text-shadow: none;\r
-}\r
-\r
-.plx-radio-group {\r
-       cursor: pointer;\r
-       font-size: @font-size;\r
-       height: @btn-height;\r
-       background-color: @common-color;\r
-       border: @radio-group-border-height solid @border-color-base;\r
-       color: @text-color;\r
-       border-radius: @radius;\r
-       padding: @padding-normal;\r
-       .border-min-width(@min-width-normal, @font-size);\r
-       transition: none;\r
-       &:hover,\r
-       &:focus,\r
-       &:active {\r
-               outline: none;\r
-               background-image: none;\r
-               filter: none;\r
-               -webkit-box-shadow: none;\r
-               -moz-box-shadow: none;\r
-               box-shadow: none;\r
-               text-shadow: none;\r
-       }\r
-\r
-  &:hover,\r
-  &:focus {\r
-    color: @btn-common-color-text-hover;\r
-    border-color: @btn-common-color-border-hover;\r
-    background-color: @common-color-hover;\r
-  }\r
-  &:active {\r
-    color: @btn-common-color-text-click;\r
-    border-color: @btn-common-color-border-click;\r
-    background-color: @common-color-click;\r
-  }\r
-       &.active {\r
-               background-color: @primary-color;\r
-               color: @scene-textcolor;\r
-               border-color: @primary-color;\r
-       }\r
-       & > span {\r
-               line-height: @btn-height - @radio-group-border-height * 2;\r
-       }\r
-}\r
-\r
-.plx-radio-group-sm {\r
-       height: @btn-height-sm;\r
-       padding: @padding-sm;\r
-       .border-min-width(@min-width-sm, @font-size);\r
-       & > span {\r
-               line-height: @btn-height-sm - @radio-group-border-height * 2;\r
-       }\r
-}\r
+///////
+
+.plx-input {
+       font-size: @font-size;
+       height: @input-height;
+       padding-left: 10px;
+       padding-right: 10px;
+       outline: 0;
+       border: 1px solid @border-color-base;
+       border-radius: @radius;
+       vertical-align: middle;
+       &:focus {
+               border: 1px solid @primary-color;
+       }
+       &:disabled,
+       &[disabled] {
+               cursor: not-allowed;
+               background-color: @input-bg-color-disabled;
+       }
+}
+
+.plx-input-sm {
+       height: @input-height-sm;
+}
+
+.plx-input-right-no-radius {
+       border-bottom-right-radius: 0;
+       border-top-right-radius: 0;
+}
+///////
+
+.plx-radio-container {
+       font-size: 0;
+       position: relative;
+}
+
+.plx-radio {
+       position: absolute;
+       z-index: -1;
+       opacity: 0;
+       & + .radio-substitute {
+               position: relative;
+               display: inline-block;
+               cursor: pointer;
+               height: @checkbox-size;
+               width: @checkbox-size;
+               border: 1px solid @border-color-base;
+               border-radius: @checkbox-size;
+               vertical-align: middle;
+       }
+       &:hover + .radio-substitute,
+       &:focus + .radio-substitute {
+               border-color: @primary-color;
+               outline: none;
+               background-image: none;
+               -webkit-box-shadow: none;
+               -moz-box-shadow: none;
+               box-shadow: none;
+               text-shadow: none;
+       }
+       &:checked + .radio-substitute {
+               .radio-boder-checked-width(@font-size);
+       }
+       &:disabled + .radio-substitute,
+       &[disabled] + .radio-substitute {
+               border-color: @border-color-base;
+               background-color: @input-bg-color-disabled;
+               cursor: not-allowed;
+       }
+       &:checked [disabled] + .radio-substitute {
+               border-color: @border-color-split;
+               background-color: @border-color-split;
+               cursor: not-allowed;
+       }
+       & + .radio-substitute + span {
+               font-weight: normal;
+               font-size: @font-size;
+               cursor: pointer;
+               vertical-align: middle;
+               .font-padding(@font-size);
+       }
+       &:disabled + .radio-substitute + span,
+       &[disabled] + .radio-substitute + span {
+               cursor: not-allowed;
+       }
+}
+
+.radio-boder-checked-width(12px) {
+       border: 4px solid @primary-color;
+}
+
+.radio-boder-checked-width(14px) {
+       border: 5px solid @primary-color;
+}
+
+.font-padding(12px) {
+       padding-left: 6px;
+}
+
+.font-padding(14px) {
+       padding-left: 10px;
+}
+
+/*radio-group*/
+
+@radio-group-border-height: 1px;
+@padding-normal: 0px 16px;
+@padding-sm: 0px 14px;
+@min-width-normal: 80px;
+@min-width-sm: 60px;
+
+.border-min-width(@min-width, 14px) {
+       min-width: @min-width + 8px;
+}
+
+.border-min-width(@min-width, 12px) {
+       min-width: @min-width;
+}
+
+.btn.dropdown-toggle,
+.btn-group .btn.dropdown-toggle,
+.btn:hover,
+.btn:disabled,
+.btn[disabled],
+.btn:focus,
+.btn:active,
+.btn.active {
+       outline: none !important;
+       background-image: none !important;
+       filter: none;
+       -webkit-box-shadow: none;
+       -moz-box-shadow: none;
+       box-shadow: none;
+       text-shadow: none;
+}
+
+.plx-radio-group {
+       cursor: pointer;
+       font-size: @font-size;
+       height: @btn-height;
+       background-color: @common-color;
+       border: @radio-group-border-height solid @border-color-base;
+       color: @text-color;
+       border-radius: @radius;
+       padding: @padding-normal;
+       .border-min-width(@min-width-normal, @font-size);
+       transition: none;
+       &:hover,
+       &:focus,
+       &:active {
+               outline: none;
+               background-image: none;
+               filter: none;
+               -webkit-box-shadow: none;
+               -moz-box-shadow: none;
+               box-shadow: none;
+               text-shadow: none;
+       }
+
+  &:hover,
+  &:focus {
+    color: @btn-common-color-text-hover;
+    border-color: @btn-common-color-border-hover;
+    background-color: @common-color-hover;
+  }
+  &:active {
+    color: @btn-common-color-text-click;
+    border-color: @btn-common-color-border-click;
+    background-color: @common-color-click;
+  }
+       &.active {
+               background-color: @primary-color;
+               color: @scene-textcolor;
+               border-color: @primary-color;
+       }
+       & > span {
+               line-height: @btn-height - @radio-group-border-height * 2;
+       }
+}
+
+.plx-radio-group-sm {
+       height: @btn-height-sm;
+       padding: @padding-sm;
+       .border-min-width(@min-width-sm, @font-size);
+       & > span {
+               line-height: @btn-height-sm - @radio-group-border-height * 2;
+       }
+}
 
 ///////
 
-@import "../../assets/components/themes/default/theme.less";\r
-\r
-plx-modal-window {\r
-  .modal {\r
-    position: fixed;\r
-    top: 0;\r
-    right: 0;\r
-    bottom: 0;\r
-    left: 0;\r
-    display: none;\r
-    outline: 0;\r
-    z-index: 10000;\r
-  }\r
-  .modal-dialog {\r
-    position: relative;\r
-    max-width: 600px;\r
-    margin: 30px auto;\r
-    &.modal-sm {\r
-      max-width: 600px;\r
-    }\r
-    &.modal-lg {\r
-      max-width: 1000px;\r
-    }\r
-  }\r
-  .modal-content {\r
-    position: relative;\r
-    display: flex;\r
-    -webkit-box-orient: vertical;\r
-    -webkit-box-direction: normal;\r
-    -ms-flex-direction: column;\r
-    flex-direction: column;\r
-    background-color: @component-bg;\r
-    background-clip: padding-box;\r
-    border-radius: @radius;\r
-    box-shadow: 0 5px 15px @shadow-color;\r
-    outline: 0;\r
-    .modal-header {\r
-      border-bottom: 0;\r
-      display: flex;\r
-      -webkit-box-align: center;\r
-      -ms-flex-align: center;\r
-      align-items: center;\r
-      -webkit-box-pack: justify;\r
-      -ms-flex-pack: justify;\r
-      justify-content: space-between;\r
-      padding: 15px;\r
-    }\r
-    .modal-body {\r
-      .form-group:last-child, form:last-child {\r
-        margin-bottom: 0;\r
-      }\r
-    }\r
-    .modal-footer {\r
-      display: block;\r
-      border-top: 0;\r
-      margin-top: 0;\r
-      padding: 0 15px 15px 15px;\r
-    }\r
-    .modal-title {\r
-      font-size: @font-size-title-level1;\r
-      margin-bottom: 0;\r
-      line-height: 1.5;\r
-    }\r
-    .modal-btn {\r
-      text-align: center;\r
-      font-size: 0;\r
-    }\r
-  }\r
-  .close {\r
-    color: @fonticon-color;\r
-    font-size: @font-size-title-level2;\r
-    text-shadow: none;\r
-    width: 24px;\r
-    height: 24px;\r
-    background: @scene-textcolor;\r
-    border-radius: 20px;\r
-    padding-bottom: 2px;\r
-    outline: none;\r
-    &:hover {\r
-      color: @fonticon-color;\r
-      background: @fonticon-bg-color-hover;\r
-    }\r
-  }\r
-  .alert-modal {\r
-    &.row {\r
-      margin-left: 100px;\r
-      margin-bottom: 30px;\r
-      text-align: left;\r
-      .tip-img {\r
-        display: inline-block;\r
-        width: 52px;\r
-        height: 52px;\r
-        border-radius: 50px;\r
-        font-size: 45px;\r
-        text-align: center;\r
-        line-height: 1;\r
-        margin-top: -5px;\r
-        margin-right: 15px;\r
-        &::before {\r
-          content: "!";\r
-        }\r
-      }\r
-      .tip-info {\r
-        width: 300px;\r
-        .alert-title {\r
-          font-size: @font-size-title-level2;\r
-          color: @title-text-color;\r
-        }\r
-        .alert-result {\r
-          margin-top: 5px;\r
-          font-size: @font-size;\r
-          color: @unselected-text-color;\r
-        }\r
-      }\r
-      .warning {\r
-        border: 3px solid @warning-color;\r
-        color: @warning-color;\r
-      }\r
-      .error {\r
-        border: 3px solid @error-color;\r
-        color: @error-color;\r
-      }\r
-    }\r
-  }\r
+@import "../../assets/components/themes/default/theme.less";
+
+plx-modal-window {
+  .modal {
+    position: fixed;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    display: none;
+    outline: 0;
+    z-index: 10000;
+  }
+  .modal-dialog {
+    position: relative;
+    max-width: 600px;
+    margin: 30px auto;
+    &.modal-sm {
+      max-width: 600px;
+    }
+    &.modal-lg {
+      max-width: 1000px;
+    }
+  }
+  .modal-content {
+    position: relative;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    background-color: @component-bg;
+    background-clip: padding-box;
+    border-radius: @radius;
+    box-shadow: 0 5px 15px @shadow-color;
+    outline: 0;
+    .modal-header {
+      border-bottom: 0;
+      display: flex;
+      -webkit-box-align: center;
+      -ms-flex-align: center;
+      align-items: center;
+      -webkit-box-pack: justify;
+      -ms-flex-pack: justify;
+      justify-content: space-between;
+      padding: 15px;
+    }
+    .modal-body {
+      .form-group:last-child, form:last-child {
+        margin-bottom: 0;
+      }
+    }
+    .modal-footer {
+      display: block;
+      border-top: 0;
+      margin-top: 0;
+      padding: 0 15px 15px 15px;
+    }
+    .modal-title {
+      font-size: @font-size-title-level1;
+      margin-bottom: 0;
+      line-height: 1.5;
+    }
+    .modal-btn {
+      text-align: center;
+      font-size: 0;
+    }
+  }
+  .close {
+    color: @fonticon-color;
+    font-size: @font-size-title-level2;
+    text-shadow: none;
+    width: 24px;
+    height: 24px;
+    background: @scene-textcolor;
+    border-radius: 20px;
+    padding-bottom: 2px;
+    outline: none;
+    &:hover {
+      color: @fonticon-color;
+      background: @fonticon-bg-color-hover;
+    }
+  }
+  .alert-modal {
+    &.row {
+      margin-left: 100px;
+      margin-bottom: 30px;
+      text-align: left;
+      .tip-img {
+        display: inline-block;
+        width: 52px;
+        height: 52px;
+        border-radius: 50px;
+        font-size: 45px;
+        text-align: center;
+        line-height: 1;
+        margin-top: -5px;
+        margin-right: 15px;
+        &::before {
+          content: "!";
+        }
+      }
+      .tip-info {
+        width: 300px;
+        .alert-title {
+          font-size: @font-size-title-level2;
+          color: @title-text-color;
+        }
+        .alert-result {
+          margin-top: 5px;
+          font-size: @font-size;
+          color: @unselected-text-color;
+        }
+      }
+      .warning {
+        border: 3px solid @warning-color;
+        color: @warning-color;
+      }
+      .error {
+        border: 3px solid @error-color;
+        color: @error-color;
+      }
+    }
+  }
 }
\ No newline at end of file
@@ -1,24 +1,24 @@
-import {Directive, forwardRef} from '@angular/core';\r
-import {AbstractControl, NG_VALIDATORS, Validators} from '@angular/forms';\r
-\r
-@Directive({\r
-       selector: '[ipv6][ngModel],[ipv6][formControl],[ipv6][formControlName]',\r
-       providers: [{\r
-               provide: NG_VALIDATORS,\r
-               useExisting: forwardRef(() => Ipv6ValidatorDirective),\r
-               multi: true\r
-       }],\r
-})\r
-\r
-export class Ipv6ValidatorDirective {\r
-       validate(c: AbstractControl) {\r
-               if (Validators.required(c) !== undefined &&\r
-                       Validators.required(c) !== null) {\r
-                       return null;\r
-               }\r
-               const ipv6Reg =\r
-                       /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/;\r
-               let regex = new RegExp(ipv6Reg);\r
-               return regex.test(c.value) ? null : {'ipv6': true};\r
-       }4\r
-}\r
+import {Directive, forwardRef} from '@angular/core';
+import {AbstractControl, NG_VALIDATORS, Validators} from '@angular/forms';
+
+@Directive({
+       selector: '[ipv6][ngModel],[ipv6][formControl],[ipv6][formControlName]',
+       providers: [{
+               provide: NG_VALIDATORS,
+               useExisting: forwardRef(() => Ipv6ValidatorDirective),
+               multi: true
+       }],
+})
+
+export class Ipv6ValidatorDirective {
+       validate(c: AbstractControl) {
+               if (Validators.required(c) !== undefined &&
+                       Validators.required(c) !== null) {
+                       return null;
+               }
+               const ipv6Reg =
+                       /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/;
+               let regex = new RegExp(ipv6Reg);
+               return regex.test(c.value) ? null : {'ipv6': true};
+       }4
+}
-import {Component, EventEmitter, forwardRef, Input, OnInit, Output} from '@angular/core';\r
-import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r
-import {BooleanFieldValue} from '../core/boolean-field-value';\r
-\r
-const noop = () => {};\r
-\r
-export const PX_TEXT_INPUT_IP_ADDRESS_CONTROL_VALUE_ACCESSOR: any = {\r
-       provide: NG_VALUE_ACCESSOR,\r
-       useExisting: forwardRef(() => PlxTextInputIpAddressComponent),\r
-       multi: true\r
-};\r
-@Component({\r
-       selector: 'plx-text-input-ip-address',\r
-       template: `\r
-               <div>\r
-                       <plx-text-input #textInputIpAddress type="text" [(ngModel)]="ipValue"\r
-                        [width]="'280px'" [numberShowSpinner]="false" minlength="1"\r
-                        (keyup)="keyUp($event)" (paste)="paste($event)" class="{{sizeClass}}"></plx-text-input>\r
-                       <div class="plx-text-input-error">{{errMsg}}</div>\r
-               </div>\r
-       `,\r
-       styleUrls: ['text-input.less'],\r
-       host: {'style': 'display: inline-block;'},\r
-       providers: [PX_TEXT_INPUT_IP_ADDRESS_CONTROL_VALUE_ACCESSOR]\r
-})\r
-\r
-export class PlxTextInputIpAddressComponent implements OnInit, ControlValueAccessor {\r
-       @Input() lang: string = 'zh'; //zh|en\r
-       @Input() size: string; //空代表普通尺寸,sm代表小尺寸\r
-       @Input() ipAddressCheckTip: string = ''; //\r
-\r
-       @Input() @BooleanFieldValue() required: boolean = false;\r
-\r
-       @Input() public ipValue: string;\r
-       @Output() public ipValueChange: EventEmitter<any> = new EventEmitter<any>();\r
-\r
-       @Input() public ipValueFlg : boolean;\r
-       @Output() public ipValueFlgChange: EventEmitter<any> = new EventEmitter<any>();\r
-\r
-       private isNull : boolean = true;\r
-\r
-       /** Callback registered via registerOnTouched (ControlValueAccessor) */\r
-       private _onTouchedCallback: () => void = noop;\r
-       /** Callback registered via registerOnChange (ControlValueAccessor) */\r
-       private _onChangeCallback: (_: any) => void = noop;\r
-\r
-       public errMsgs = {\r
-               'zh': {\r
-                       'empty': '此项不能为空',\r
-                       'invalidate': 'IP格式不对',\r
-                       'range': '请输入正确的IPV4地址或IPV6地址',\r
-                       'range-IPV4': '请输入正确的IPV4',\r
-                       'range-IPV6': '请输入正确的IPV6'\r
-               },\r
-               'en': {\r
-                       'empty': 'IP can not be empty',\r
-                       'invalidate': 'IP format is incorrect',\r
-                       'range': 'IP range is  IPV4 or IPV6',\r
-                       'range-IPV4': 'IP range is  IPV4',\r
-                       'range-IPV6': 'IP range is IPV6'\r
-               }\r
-       };\r
-       public errMsg: string;\r
-       public sizeClass: string;\r
-\r
-       constructor() {\r
-       }\r
-\r
-       ngOnInit(): void {\r
-               if (this.size === 'sm') {\r
-                       this.sizeClass = 'plx-input-sm';\r
-               }\r
-               this.isNull = this.ipValueFlg;\r
-               if(this.repIPStr(this.ipValue) === ''&& !this.ipValueFlg){\r
-                       this.ipValueFlg = false;\r
-                       this.emitValue();\r
-               }\r
-       }\r
-\r
-       public keyUp(event: any): void {\r
-               this.setValueToOutside(this.validate());\r
-               this.emitValue();\r
-       }\r
-\r
-       public paste(event: any): void{\r
-               setTimeout(() => {\r
-                       this.ipValue = event.target.value;\r
-                       this.setValueToOutside(this.validate());\r
-                       this.emitValue();\r
-               }, 0);\r
-       }\r
-\r
-       private emitValue(){\r
-               this.ipValueChange.emit(this.ipValue);\r
-               this.ipValueFlgChange.emit(this.ipValueFlg);\r
-       }\r
-\r
-       private setValueToOutside(validateFlg: boolean): void {\r
-               this.ipValueFlg = validateFlg;\r
-               let value;\r
-               if (validateFlg) {\r
-                       if (this.ipValue) {\r
-                               value = this.ipValue;\r
-                       }\r
-                       if(this.ipValue === ""  && !this.isNull){\r
-                               this.ipValueFlg = false;\r
-                       }\r
-               } else {\r
-                       value = false;\r
-               }\r
-               this._onChangeCallback(value);\r
-       }\r
-\r
-       writeValue(value: any): void {\r
-      //\r
-      this.errMsg = '';\r
-      this.ipValue = value;\r
-      if (value) {\r
-          this.validate();\r
-      }\r
-       }\r
-\r
-       registerOnChange(fn: any) {\r
-               this._onChangeCallback = fn;\r
-       }\r
-\r
-       registerOnTouched(fn: any) {\r
-               this._onTouchedCallback = fn;\r
-       }\r
-\r
-       public validate(): boolean {\r
-               this.errMsg = '';\r
-               if (this.required) {\r
-                       if (!this.ipValue) {\r
-                               this.errMsg = this.errMsgs[this.lang]['empty'];\r
-                               return false;\r
-                       }\r
-               }\r
-               if ((this.ipValue) && (!this.ipValue)) {\r
-                       this.errMsg = this.errMsgs[this.lang]['invalidate'];\r
-                       return false;\r
-               }\r
-               let blackStr = this.repIPStr(this.ipValue);\r
-               if(this.ipAddressCheckTip === ''){\r
-                       if(this.ipValue !== '' && blackStr === ''){\r
-                               this.errMsg = this.errMsgs[this.lang]['range'];\r
-                               return false;\r
-                       }\r
-               }else{\r
-                       if(this.ipValue !== '' && this.ipAddressCheckTip !== blackStr) {\r
-                               this.errMsg = this.errMsgs[this.lang]['range-'+ this.ipAddressCheckTip];\r
-                               return false;\r
-                       }\r
-               }\r
-               return true;\r
-       }\r
-\r
-       private repIPStr(value: any): string {\r
-               let blackStr = '';\r
-               var regip4 = /^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/;\r
-               if (regip4.test(value)) {\r
-                       return "IPV4";\r
-               }\r
-               var regip6 = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/;\r
-               if (regip6.test(value)) {\r
-                       return "IPV6";\r
-               }\r
-               return blackStr;\r
-       }\r
-}\r
+import {Component, EventEmitter, forwardRef, Input, OnInit, Output} from '@angular/core';
+import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';
+import {BooleanFieldValue} from '../core/boolean-field-value';
+
+const noop = () => {};
+
+export const PX_TEXT_INPUT_IP_ADDRESS_CONTROL_VALUE_ACCESSOR: any = {
+       provide: NG_VALUE_ACCESSOR,
+       useExisting: forwardRef(() => PlxTextInputIpAddressComponent),
+       multi: true
+};
+@Component({
+       selector: 'plx-text-input-ip-address',
+       template: `
+               <div>
+                       <plx-text-input #textInputIpAddress type="text" [(ngModel)]="ipValue"
+                        [width]="'280px'" [numberShowSpinner]="false" minlength="1"
+                        (keyup)="keyUp($event)" (paste)="paste($event)" class="{{sizeClass}}"></plx-text-input>
+                       <div class="plx-text-input-error">{{errMsg}}</div>
+               </div>
+       `,
+       styleUrls: ['text-input.less'],
+       host: {'style': 'display: inline-block;'},
+       providers: [PX_TEXT_INPUT_IP_ADDRESS_CONTROL_VALUE_ACCESSOR]
+})
+
+export class PlxTextInputIpAddressComponent implements OnInit, ControlValueAccessor {
+       @Input() lang: string = 'zh'; //zh|en
+       @Input() size: string; //空代表普通尺寸,sm代表小尺寸
+       @Input() ipAddressCheckTip: string = ''; //
+
+       @Input() @BooleanFieldValue() required: boolean = false;
+
+       @Input() public ipValue: string;
+       @Output() public ipValueChange: EventEmitter<any> = new EventEmitter<any>();
+
+       @Input() public ipValueFlg : boolean;
+       @Output() public ipValueFlgChange: EventEmitter<any> = new EventEmitter<any>();
+
+       private isNull : boolean = true;
+
+       /** Callback registered via registerOnTouched (ControlValueAccessor) */
+       private _onTouchedCallback: () => void = noop;
+       /** Callback registered via registerOnChange (ControlValueAccessor) */
+       private _onChangeCallback: (_: any) => void = noop;
+
+       public errMsgs = {
+               'zh': {
+                       'empty': '此项不能为空',
+                       'invalidate': 'IP格式不对',
+                       'range': '请输入正确的IPV4地址或IPV6地址',
+                       'range-IPV4': '请输入正确的IPV4',
+                       'range-IPV6': '请输入正确的IPV6'
+               },
+               'en': {
+                       'empty': 'IP can not be empty',
+                       'invalidate': 'IP format is incorrect',
+                       'range': 'IP range is  IPV4 or IPV6',
+                       'range-IPV4': 'IP range is  IPV4',
+                       'range-IPV6': 'IP range is IPV6'
+               }
+       };
+       public errMsg: string;
+       public sizeClass: string;
+
+       constructor() {
+       }
+
+       ngOnInit(): void {
+               if (this.size === 'sm') {
+                       this.sizeClass = 'plx-input-sm';
+               }
+               this.isNull = this.ipValueFlg;
+               if(this.repIPStr(this.ipValue) === ''&& !this.ipValueFlg){
+                       this.ipValueFlg = false;
+                       this.emitValue();
+               }
+       }
+
+       public keyUp(event: any): void {
+               this.setValueToOutside(this.validate());
+               this.emitValue();
+       }
+
+       public paste(event: any): void{
+               setTimeout(() => {
+                       this.ipValue = event.target.value;
+                       this.setValueToOutside(this.validate());
+                       this.emitValue();
+               }, 0);
+       }
+
+       private emitValue(){
+               this.ipValueChange.emit(this.ipValue);
+               this.ipValueFlgChange.emit(this.ipValueFlg);
+       }
+
+       private setValueToOutside(validateFlg: boolean): void {
+               this.ipValueFlg = validateFlg;
+               let value;
+               if (validateFlg) {
+                       if (this.ipValue) {
+                               value = this.ipValue;
+                       }
+                       if(this.ipValue === ""  && !this.isNull){
+                               this.ipValueFlg = false;
+                       }
+               } else {
+                       value = false;
+               }
+               this._onChangeCallback(value);
+       }
+
+       writeValue(value: any): void {
+      //
+      this.errMsg = '';
+      this.ipValue = value;
+      if (value) {
+          this.validate();
+      }
+       }
+
+       registerOnChange(fn: any) {
+               this._onChangeCallback = fn;
+       }
+
+       registerOnTouched(fn: any) {
+               this._onTouchedCallback = fn;
+       }
+
+       public validate(): boolean {
+               this.errMsg = '';
+               if (this.required) {
+                       if (!this.ipValue) {
+                               this.errMsg = this.errMsgs[this.lang]['empty'];
+                               return false;
+                       }
+               }
+               if ((this.ipValue) && (!this.ipValue)) {
+                       this.errMsg = this.errMsgs[this.lang]['invalidate'];
+                       return false;
+               }
+               let blackStr = this.repIPStr(this.ipValue);
+               if(this.ipAddressCheckTip === ''){
+                       if(this.ipValue !== '' && blackStr === ''){
+                               this.errMsg = this.errMsgs[this.lang]['range'];
+                               return false;
+                       }
+               }else{
+                       if(this.ipValue !== '' && this.ipAddressCheckTip !== blackStr) {
+                               this.errMsg = this.errMsgs[this.lang]['range-'+ this.ipAddressCheckTip];
+                               return false;
+                       }
+               }
+               return true;
+       }
+
+       private repIPStr(value: any): string {
+               let blackStr = '';
+               var regip4 = /^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/;
+               if (regip4.test(value)) {
+                       return "IPV4";
+               }
+               var regip6 = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/;
+               if (regip6.test(value)) {
+                       return "IPV6";
+               }
+               return blackStr;
+       }
+}
-@import "../../assets/components/themes/common/plx-input.less";\r
-\r
-@tooltip-arrow-border-width: 4px;\r
-@tooltip-arrow-border-width-before: 5px;\r
-@tooltip-arrow-border-height: @tooltip-arrow-border-width-before - @tooltip-arrow-border-width;\r
-@tooltip-arrow-away: 5px;\r
-@tooltip-arrow-background-color: #595959;\r
-@tooltip-arrow-border-color: #595959;\r
-@tooltip-away-host: 3px;\r
-\r
-.plx-tooltip {\r
-    font-family: @font-family;\r
-    font-size: @font-size;\r
-    opacity: 1;\r
-    position: absolute;\r
-    z-index: 10001;\r
-    display: block;\r
-    font-style: normal;\r
-    font-weight: normal;\r
-    letter-spacing: normal;\r
-    line-break: auto;\r
-    line-height: 1.5;\r
-    text-align: left;\r
-    text-decoration: none;\r
-    text-shadow: none;\r
-    text-transform: none;\r
-    white-space: normal;\r
-    word-break: normal;\r
-    word-spacing: normal;\r
-    word-wrap: break-word;\r
-    &::before,\r
-    &::after {\r
-        content: "";\r
-        position: absolute;\r
-        display: block;\r
-        width: 0;\r
-        height: 0;\r
-        border: solid transparent;\r
-    }\r
-    &::before {\r
-        border-width: @tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        border-width: @tooltip-arrow-border-width;\r
-    }\r
-}\r
-\r
-.plx-tooltip-inner {\r
-    min-width: 60px;\r
-    max-width: 200px;\r
-    padding: 3px 8px;\r
-    color: #fff;\r
-    text-align: center;\r
-    background-color: #000;\r
-}\r
-\r
-.plx-tooltip.show {\r
-       font-size: @font-size;\r
-       opacity: 1;\r
-}\r
-.plx-tooltip.show .plx-tooltip-inner {\r
-       background-color: #595959;\r
-       border-radius: @radius;\r
-       padding: 0px 12px;\r
-       height: 30px;\r
-       line-height: 30px;\r
-}\r
-\r
-.plx-tooltip-top-common {\r
-    margin-top: -(@tooltip-arrow-border-width + @tooltip-away-host);\r
-    &::before {\r
-        border-top-color: @tooltip-arrow-border-color;\r
-        border-bottom-width: 0;\r
-        bottom: -@tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        border-top-color: @tooltip-arrow-background-color;\r
-        border-bottom-width: 0;\r
-        bottom: -@tooltip-arrow-border-width;\r
-    }\r
-}\r
-.plx-tooltip-top {\r
-    .plx-tooltip-top-common;\r
-    &::before {\r
-        left: 50%;\r
-        margin-left: -@tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        left: 50%;\r
-        margin-left: -@tooltip-arrow-border-width;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-top-left {\r
-    .plx-tooltip-top-common;\r
-    &::before {\r
-        left: @tooltip-arrow-away;\r
-    }\r
-    &::after {\r
-        left: @tooltip-arrow-away + @tooltip-arrow-border-height;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-top-right {\r
-    .plx-tooltip-top-common;\r
-    &::before {\r
-        right: @tooltip-arrow-away;\r
-    }\r
-    &::after {\r
-        right: @tooltip-arrow-away + @tooltip-arrow-border-height;\r
-    }\r
-}\r
-\r
-.plx-tooltip-right-common {\r
-    margin-left: @tooltip-arrow-border-width + @tooltip-away-host;\r
-    &::before {\r
-        border-right-color: @tooltip-arrow-border-color;\r
-        border-left-width: 0;\r
-        left: -@tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        border-right-color: @tooltip-arrow-background-color;\r
-        border-left-width: 0;\r
-        left: -@tooltip-arrow-border-width;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-right {\r
-    .plx-tooltip-right-common;\r
-    &::before {\r
-        top: 50%;\r
-        margin-top: -@tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        top: 50%;\r
-        margin-top: -@tooltip-arrow-border-width;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-right-top {\r
-    .plx-tooltip-right-common;\r
-    &::before {\r
-        top: @tooltip-arrow-away;\r
-    }\r
-    &::after {\r
-        top: @tooltip-arrow-away + @tooltip-arrow-border-height;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-right-bottom {\r
-    .plx-tooltip-right-common;\r
-    &::before {\r
-        bottom: @tooltip-arrow-away;\r
-    }\r
-    &::after {\r
-        bottom: @tooltip-arrow-away + @tooltip-arrow-border-height;\r
-    }\r
-}\r
-\r
-.plx-tooltip-bottom-common {\r
-    margin-top: @tooltip-arrow-border-width + @tooltip-away-host;\r
-    &::before {\r
-        border-bottom-color: @tooltip-arrow-border-color;\r
-        border-top-width: 0;\r
-        top: -@tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        border-bottom-color: @tooltip-arrow-background-color;\r
-        border-top-width: 0;\r
-        top: -@tooltip-arrow-border-width;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-bottom {\r
-    .plx-tooltip-bottom-common;\r
-    &::before {\r
-        left: 50%;\r
-        margin-left: -@tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        left: 50%;\r
-        margin-left: -@tooltip-arrow-border-width;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-bottom-left {\r
-    .plx-tooltip-bottom-common;\r
-    &::before {\r
-        left: @tooltip-arrow-away;\r
-    }\r
-    &::after {\r
-        left: @tooltip-arrow-away + @tooltip-arrow-border-height;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-bottom-right {\r
-    .plx-tooltip-bottom-common;\r
-    &::before {\r
-        right: @tooltip-arrow-away;\r
-    }\r
-    &::after {\r
-        right: @tooltip-arrow-away + @tooltip-arrow-border-height;\r
-    }\r
-}\r
-\r
-.plx-tooltip-left-common {\r
-    margin-left: -(@tooltip-arrow-border-width + @tooltip-away-host);\r
-    &::before {\r
-        border-left-color: @tooltip-arrow-border-color;\r
-        border-right-width: 0;\r
-        right: -@tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        border-left-color: @tooltip-arrow-background-color;\r
-        border-right-width: 0;\r
-        right: -@tooltip-arrow-border-width;\r
-    }\r
-}\r
-\r
-.plx-tooltip.plx-tooltip-left {\r
-    .plx-tooltip-left-common;\r
-    &::before {\r
-        top: 50%;\r
-        margin-top: -@tooltip-arrow-border-width-before;\r
-    }\r
-    &::after {\r
-        top: 50%;\r
-        margin-top: -@tooltip-arrow-border-width;\r
-    }\r
-}\r
-\r
-.plx-tooltip.plx-tooltip-left-top {\r
-    .plx-tooltip-left-common;\r
-    &::before {\r
-        top: @tooltip-arrow-away;\r
-    }\r
-    &::after {\r
-        top: @tooltip-arrow-away + @tooltip-arrow-border-height;\r
-    }\r
-}\r
-.plx-tooltip.plx-tooltip-left-bottom {\r
-    .plx-tooltip-left-common;\r
-    &::before {\r
-        bottom: @tooltip-arrow-away;\r
-    }\r
-    &::after {\r
-        bottom: @tooltip-arrow-away + @tooltip-arrow-border-height;\r
-    }\r
+@import "../../assets/components/themes/common/plx-input.less";
+
+@tooltip-arrow-border-width: 4px;
+@tooltip-arrow-border-width-before: 5px;
+@tooltip-arrow-border-height: @tooltip-arrow-border-width-before - @tooltip-arrow-border-width;
+@tooltip-arrow-away: 5px;
+@tooltip-arrow-background-color: #595959;
+@tooltip-arrow-border-color: #595959;
+@tooltip-away-host: 3px;
+
+.plx-tooltip {
+    font-family: @font-family;
+    font-size: @font-size;
+    opacity: 1;
+    position: absolute;
+    z-index: 10001;
+    display: block;
+    font-style: normal;
+    font-weight: normal;
+    letter-spacing: normal;
+    line-break: auto;
+    line-height: 1.5;
+    text-align: left;
+    text-decoration: none;
+    text-shadow: none;
+    text-transform: none;
+    white-space: normal;
+    word-break: normal;
+    word-spacing: normal;
+    word-wrap: break-word;
+    &::before,
+    &::after {
+        content: "";
+        position: absolute;
+        display: block;
+        width: 0;
+        height: 0;
+        border: solid transparent;
+    }
+    &::before {
+        border-width: @tooltip-arrow-border-width-before;
+    }
+    &::after {
+        border-width: @tooltip-arrow-border-width;
+    }
+}
+
+.plx-tooltip-inner {
+    min-width: 60px;
+    max-width: 200px;
+    padding: 3px 8px;
+    color: #fff;
+    text-align: center;
+    background-color: #000;
+}
+
+.plx-tooltip.show {
+       font-size: @font-size;
+       opacity: 1;
+}
+.plx-tooltip.show .plx-tooltip-inner {
+       background-color: #595959;
+       border-radius: @radius;
+       padding: 0px 12px;
+       height: 30px;
+       line-height: 30px;
+}
+
+.plx-tooltip-top-common {
+    margin-top: -(@tooltip-arrow-border-width + @tooltip-away-host);
+    &::before {
+        border-top-color: @tooltip-arrow-border-color;
+        border-bottom-width: 0;
+        bottom: -@tooltip-arrow-border-width-before;
+    }
+    &::after {
+        border-top-color: @tooltip-arrow-background-color;
+        border-bottom-width: 0;
+        bottom: -@tooltip-arrow-border-width;
+    }
+}
+.plx-tooltip-top {
+    .plx-tooltip-top-common;
+    &::before {
+        left: 50%;
+        margin-left: -@tooltip-arrow-border-width-before;
+    }
+    &::after {
+        left: 50%;
+        margin-left: -@tooltip-arrow-border-width;
+    }
+}
+.plx-tooltip.plx-tooltip-top-left {
+    .plx-tooltip-top-common;
+    &::before {
+        left: @tooltip-arrow-away;
+    }
+    &::after {
+        left: @tooltip-arrow-away + @tooltip-arrow-border-height;
+    }
+}
+.plx-tooltip.plx-tooltip-top-right {
+    .plx-tooltip-top-common;
+    &::before {
+        right: @tooltip-arrow-away;
+    }
+    &::after {
+        right: @tooltip-arrow-away + @tooltip-arrow-border-height;
+    }
+}
+
+.plx-tooltip-right-common {
+    margin-left: @tooltip-arrow-border-width + @tooltip-away-host;
+    &::before {
+        border-right-color: @tooltip-arrow-border-color;
+        border-left-width: 0;
+        left: -@tooltip-arrow-border-width-before;
+    }
+    &::after {
+        border-right-color: @tooltip-arrow-background-color;
+        border-left-width: 0;
+        left: -@tooltip-arrow-border-width;
+    }
+}
+.plx-tooltip.plx-tooltip-right {
+    .plx-tooltip-right-common;
+    &::before {
+        top: 50%;
+        margin-top: -@tooltip-arrow-border-width-before;
+    }
+    &::after {
+        top: 50%;
+        margin-top: -@tooltip-arrow-border-width;
+    }
+}
+.plx-tooltip.plx-tooltip-right-top {
+    .plx-tooltip-right-common;
+    &::before {
+        top: @tooltip-arrow-away;
+    }
+    &::after {
+        top: @tooltip-arrow-away + @tooltip-arrow-border-height;
+    }
+}
+.plx-tooltip.plx-tooltip-right-bottom {
+    .plx-tooltip-right-common;
+    &::before {
+        bottom: @tooltip-arrow-away;
+    }
+    &::after {
+        bottom: @tooltip-arrow-away + @tooltip-arrow-border-height;
+    }
+}
+
+.plx-tooltip-bottom-common {
+    margin-top: @tooltip-arrow-border-width + @tooltip-away-host;
+    &::before {
+        border-bottom-color: @tooltip-arrow-border-color;
+        border-top-width: 0;
+        top: -@tooltip-arrow-border-width-before;
+    }
+    &::after {
+        border-bottom-color: @tooltip-arrow-background-color;
+        border-top-width: 0;
+        top: -@tooltip-arrow-border-width;
+    }
+}
+.plx-tooltip.plx-tooltip-bottom {
+    .plx-tooltip-bottom-common;
+    &::before {
+        left: 50%;
+        margin-left: -@tooltip-arrow-border-width-before;
+    }
+    &::after {
+        left: 50%;
+        margin-left: -@tooltip-arrow-border-width;
+    }
+}
+.plx-tooltip.plx-tooltip-bottom-left {
+    .plx-tooltip-bottom-common;
+    &::before {
+        left: @tooltip-arrow-away;
+    }
+    &::after {
+        left: @tooltip-arrow-away + @tooltip-arrow-border-height;
+    }
+}
+.plx-tooltip.plx-tooltip-bottom-right {
+    .plx-tooltip-bottom-common;
+    &::before {
+        right: @tooltip-arrow-away;
+    }
+    &::after {
+        right: @tooltip-arrow-away + @tooltip-arrow-border-height;
+    }
+}
+
+.plx-tooltip-left-common {
+    margin-left: -(@tooltip-arrow-border-width + @tooltip-away-host);
+    &::before {
+        border-left-color: @tooltip-arrow-border-color;
+        border-right-width: 0;
+        right: -@tooltip-arrow-border-width-before;
+    }
+    &::after {
+        border-left-color: @tooltip-arrow-background-color;
+        border-right-width: 0;
+        right: -@tooltip-arrow-border-width;
+    }
+}
+
+.plx-tooltip.plx-tooltip-left {
+    .plx-tooltip-left-common;
+    &::before {
+        top: 50%;
+        margin-top: -@tooltip-arrow-border-width-before;
+    }
+    &::after {
+        top: 50%;
+        margin-top: -@tooltip-arrow-border-width;
+    }
+}
+
+.plx-tooltip.plx-tooltip-left-top {
+    .plx-tooltip-left-common;
+    &::before {
+        top: @tooltip-arrow-away;
+    }
+    &::after {
+        top: @tooltip-arrow-away + @tooltip-arrow-border-height;
+    }
+}
+.plx-tooltip.plx-tooltip-left-bottom {
+    .plx-tooltip-left-common;
+    &::before {
+        bottom: @tooltip-arrow-away;
+    }
+    &::after {
+        bottom: @tooltip-arrow-away + @tooltip-arrow-border-height;
+    }
 }
\ No newline at end of file
@@ -1,27 +1,27 @@
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * and the Apache License 2.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-import { Injectable } from "@angular/core";\r
-import { HttpService } from "../util/http.service";\r
-import { Observable } from "rxjs";\r
-import { ModelService } from "./model.service";\r
-\r
-@Injectable()\r
-export class DisplayInfoService {\r
-    private displayInfoUrl = '/api/workflow-modeler/v1/ext-activities/displayInfo?scene=';\r
-\r
-    constructor(private modelService: ModelService, private httpService: HttpService) {\r
-    }\r
-\r
-    public getDisplayInfo(): Observable<any> {\r
-        return this.httpService.get(this.displayInfoUrl + this.modelService.getPlanModel().scene);\r
-    }\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+import { Injectable } from "@angular/core";
+import { HttpService } from "../util/http.service";
+import { Observable } from "rxjs";
+import { ModelService } from "./model.service";
+
+@Injectable()
+export class DisplayInfoService {
+    private displayInfoUrl = '/api/workflow-modeler/v1/ext-activities/displayInfo?scene=';
+
+    constructor(private modelService: ModelService, private httpService: HttpService) {
+    }
+
+    public getDisplayInfo(): Observable<any> {
+        return this.httpService.get(this.displayInfoUrl + this.modelService.getPlanModel().scene);
+    }
 }
\ No newline at end of file
@@ -1,68 +1,68 @@
-/**\r
- * Copyright (c) 2017 ZTE Corporation.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * and the Apache License 2.0 which both accompany this distribution,\r
- * and are available at http://www.eclipse.org/legal/epl-v10.html\r
- * and http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Contributors:\r
- *     ZTE - initial API and implementation and/or initial documentation\r
- */\r
-import { Injectable } from "@angular/core";\r
-import { HttpService } from "../util/http.service";\r
-import { BroadcastService } from "./broadcast.service";\r
-import { NodeDataType } from "../model/node-data-type/node-data-type";\r
-import { Parameter } from "../model/workflow/parameter";\r
-import { TranslateService } from "@ngx-translate/core";\r
-\r
-@Injectable()\r
-export class NodeTypeService {\r
-    private nodeDataTypes: NodeDataType[] = [];\r
-    private nodeDataTypeUrl = '/api/workflow-modeler/v1/ext-activities?sence=test';\r
-\r
-    constructor(private httpService: HttpService, private translateService: TranslateService,\r
-        private broadcastService: BroadcastService) {\r
-        this.initNodeDataTypes();\r
-    }\r
-\r
-    private initNodeDataTypes(): void {\r
-        this.httpService.get(this.nodeDataTypeUrl)\r
-            .toPromise()\r
-            .then(resp => {\r
-                if (resp && 0 < resp.length) {\r
-                    this.nodeDataTypes = resp;\r
-                }\r
-                this.broadcastService.broadcast(this.broadcastService.updateNodeTypeConfig, null);\r
-            });\r
-    }\r
-\r
-    public getAllNodeDataTypes(): NodeDataType[] {\r
-        return this.nodeDataTypes;\r
-    }\r
-\r
-    public getNodeDataTypeById(id: string): NodeDataType | null {\r
-        return this.nodeDataTypes.find(nodeDataType => nodeDataType.id === id);\r
-    }\r
-\r
-    public GetI18nName(key: string, displayName: any): string {\r
-        //todo: add logic\r
-        let name = key;\r
-        if (displayName) {\r
-            let language = 'zh_CN';\r
-            if (this.translateService.currentLang.indexOf('en') > -1) {\r
-                language = 'en_US';\r
-            }\r
-            if (displayName.language && '' != displayName.language) {\r
-                name = displayName.language;\r
-            }\r
-        }\r
-        return name;\r
-    }\r
-\r
-    public static GetParameterByDataType(nodeDataType: any): Parameter {\r
-        //todo: add logic\r
-        let param = new Parameter('', '', '');\r
-        return param;\r
-    }\r
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+import { Injectable } from "@angular/core";
+import { HttpService } from "../util/http.service";
+import { BroadcastService } from "./broadcast.service";
+import { NodeDataType } from "../model/node-data-type/node-data-type";
+import { Parameter } from "../model/workflow/parameter";
+import { TranslateService } from "@ngx-translate/core";
+
+@Injectable()
+export class NodeTypeService {
+    private nodeDataTypes: NodeDataType[] = [];
+    private nodeDataTypeUrl = '/api/workflow-modeler/v1/ext-activities?sence=test';
+
+    constructor(private httpService: HttpService, private translateService: TranslateService,
+        private broadcastService: BroadcastService) {
+        this.initNodeDataTypes();
+    }
+
+    private initNodeDataTypes(): void {
+        this.httpService.get(this.nodeDataTypeUrl)
+            .toPromise()
+            .then(resp => {
+                if (resp && 0 < resp.length) {
+                    this.nodeDataTypes = resp;
+                }
+                this.broadcastService.broadcast(this.broadcastService.updateNodeTypeConfig, null);
+            });
+    }
+
+    public getAllNodeDataTypes(): NodeDataType[] {
+        return this.nodeDataTypes;
+    }
+
+    public getNodeDataTypeById(id: string): NodeDataType | null {
+        return this.nodeDataTypes.find(nodeDataType => nodeDataType.id === id);
+    }
+
+    public GetI18nName(key: string, displayName: any): string {
+        //todo: add logic
+        let name = key;
+        if (displayName) {
+            let language = 'zh_CN';
+            if (this.translateService.currentLang.indexOf('en') > -1) {
+                language = 'en_US';
+            }
+            if (displayName.language && '' != displayName.language) {
+                name = displayName.language;
+            }
+        }
+        return name;
+    }
+
+    public static GetParameterByDataType(nodeDataType: any): Parameter {
+        //todo: add logic
+        let param = new Parameter('', '', '');
+        return param;
+    }
 }
\ No newline at end of file
-import {AbstractControl, ValidationErrors} from '@angular/forms';\r
-\r
-export function inRangeValidator(in_range: number[]): ValidationErrors|null {\r
-    return (control: AbstractControl): ValidationErrors => {\r
-        const value = parseFloat(control.value);\r
-        if (isNaN(value) || value > in_range[1] || value < in_range[0]) {\r
-            control.setErrors({\r
-                in_range: true\r
-            });\r
-            return {\r
-                in_range: true\r
-            }\r
-        } else {\r
-            return null;\r
-        }\r
-    }\r
-}\r
-\r
-export function greaterOrEqualValidator(max: string): ValidationErrors|null {\r
-    return (control: AbstractControl): ValidationErrors => {\r
-        const value = parseFloat(control.value);\r
-        const maxValue: any = parseFloat(max);\r
-        if (!isNaN(maxValue) && (isNaN(value) || value < maxValue)) {\r
-            control.setErrors({\r
-                greater_or_equal: true\r
-            });\r
-            return {\r
-                greater_or_equal: true\r
-            }\r
-        } else {\r
-            return null;\r
-        }\r
-    }\r
-}\r
-\r
-export function lessOrEqualValidator(min: string): ValidationErrors|null {\r
-    return (control: AbstractControl): ValidationErrors => {\r
-        const value = parseFloat(control.value);\r
-        const minValue: any = parseFloat(min);\r
-        if (!isNaN(minValue) && (isNaN(value) || value > minValue)) {\r
-            control.setErrors({\r
-                less_or_equal: true\r
-            });\r
-            return {\r
-                less_or_equal: true\r
-            }\r
-        } else {\r
-            return null;\r
-        }\r
-    }\r
-}\r
-\r
-export function greaterThanValidator(max: string): ValidationErrors|null {\r
-    return (control: AbstractControl): ValidationErrors => {\r
-        const value = parseFloat(control.value);\r
-        const maxValue: any = parseFloat(max);\r
-        if (!isNaN(maxValue) && (isNaN(value) || value <= maxValue)) {\r
-            control.setErrors({\r
-                greater_than: true\r
-            });\r
-            return {\r
-                greater_than: true\r
-            }\r
-        } else {\r
-            return null;\r
-        }\r
-    }\r
-}\r
-\r
-export function lessThanValidator(min: string): ValidationErrors|null {\r
-    return (control: AbstractControl): ValidationErrors => {\r
-        const value = parseFloat(control.value);\r
-        const minValue: any = parseFloat(min);\r
-        if (!isNaN(minValue) && (isNaN(value) || value >= minValue)) {\r
-            control.setErrors({\r
-                less_than: true\r
-            });\r
-            return {\r
-                less_than: true\r
-            }\r
-        } else {\r
-            return null;\r
-        }\r
-    }\r
-}\r
-\r
-export function equalValidator(value: any): ValidationErrors|null {\r
-    return (control: AbstractControl): ValidationErrors => {\r
-        if (control.value != value) {\r
-            control.setErrors({\r
-                equal: true\r
-            });\r
-            return {\r
-                equal: true\r
-            }\r
-        } else {\r
-            return null;\r
-        }\r
-    }\r
-}\r
-\r
-export function lengthValidator(length: number): ValidationErrors|null {\r
-    return (control: AbstractControl): ValidationErrors => {\r
-        if (control.value && control.value.length !== length) {\r
-            control.setErrors({\r
-                length: true\r
-            });\r
-            return {\r
-                length: true\r
-            }\r
-        } else {\r
-            return null;\r
-        }\r
-    }\r
-}\r
-\r
-export function floatValidator(): ValidationErrors|null {\r
-    return (control: AbstractControl): ValidationErrors => {\r
-        let floatPattern = /^(-?\d+)(\.\d+)?$/;\r
-        if (control.value && !floatPattern.test(control.value)) {\r
-            control.setErrors({\r
-                float: true\r
-            });\r
-            return {\r
-                float: true\r
-            }\r
-        } else {\r
-            return null;\r
-        }\r
-    }\r
-}\r
-\r
-export function integerValidator(): ValidationErrors|null {\r
-    return (control: AbstractControl): ValidationErrors => {\r
-        let integerPattern = /^-?\d+$/;\r
-        if (control.value && !integerPattern.test(control.value)) {\r
-            control.setErrors({\r
-                integer: true\r
-            });\r
-            return {\r
-                integer: true\r
-            }\r
-        } else {\r
-            return null;\r
-        }\r
-    }\r
+import {AbstractControl, ValidationErrors} from '@angular/forms';
+
+export function inRangeValidator(in_range: number[]): ValidationErrors|null {
+    return (control: AbstractControl): ValidationErrors => {
+        const value = parseFloat(control.value);
+        if (isNaN(value) || value > in_range[1] || value < in_range[0]) {
+            control.setErrors({
+                in_range: true
+            });
+            return {
+                in_range: true
+            }
+        } else {
+            return null;
+        }
+    }
+}
+
+export function greaterOrEqualValidator(max: string): ValidationErrors|null {
+    return (control: AbstractControl): ValidationErrors => {
+        const value = parseFloat(control.value);
+        const maxValue: any = parseFloat(max);
+        if (!isNaN(maxValue) && (isNaN(value) || value < maxValue)) {
+            control.setErrors({
+                greater_or_equal: true
+            });
+            return {
+                greater_or_equal: true
+            }
+        } else {
+            return null;
+        }
+    }
+}
+
+export function lessOrEqualValidator(min: string): ValidationErrors|null {
+    return (control: AbstractControl): ValidationErrors => {
+        const value = parseFloat(control.value);
+        const minValue: any = parseFloat(min);
+        if (!isNaN(minValue) && (isNaN(value) || value > minValue)) {
+            control.setErrors({
+                less_or_equal: true
+            });
+            return {
+                less_or_equal: true
+            }
+        } else {
+            return null;
+        }
+    }
+}
+
+export function greaterThanValidator(max: string): ValidationErrors|null {
+    return (control: AbstractControl): ValidationErrors => {
+        const value = parseFloat(control.value);
+        const maxValue: any = parseFloat(max);
+        if (!isNaN(maxValue) && (isNaN(value) || value <= maxValue)) {
+            control.setErrors({
+                greater_than: true
+            });
+            return {
+                greater_than: true
+            }
+        } else {
+            return null;
+        }
+    }
+}
+
+export function lessThanValidator(min: string): ValidationErrors|null {
+    return (control: AbstractControl): ValidationErrors => {
+        const value = parseFloat(control.value);
+        const minValue: any = parseFloat(min);
+        if (!isNaN(minValue) && (isNaN(value) || value >= minValue)) {
+            control.setErrors({
+                less_than: true
+            });
+            return {
+                less_than: true
+            }
+        } else {
+            return null;
+        }
+    }
+}
+
+export function equalValidator(value: any): ValidationErrors|null {
+    return (control: AbstractControl): ValidationErrors => {
+        if (control.value != value) {
+            control.setErrors({
+                equal: true
+            });
+            return {
+                equal: true
+            }
+        } else {
+            return null;
+        }
+    }
+}
+
+export function lengthValidator(length: number): ValidationErrors|null {
+    return (control: AbstractControl): ValidationErrors => {
+        if (control.value && control.value.length !== length) {
+            control.setErrors({
+                length: true
+            });
+            return {
+                length: true
+            }
+        } else {
+            return null;
+        }
+    }
+}
+
+export function floatValidator(): ValidationErrors|null {
+    return (control: AbstractControl): ValidationErrors => {
+        let floatPattern = /^(-?\d+)(\.\d+)?$/;
+        if (control.value && !floatPattern.test(control.value)) {
+            control.setErrors({
+                float: true
+            });
+            return {
+                float: true
+            }
+        } else {
+            return null;
+        }
+    }
+}
+
+export function integerValidator(): ValidationErrors|null {
+    return (control: AbstractControl): ValidationErrors => {
+        let integerPattern = /^-?\d+$/;
+        if (control.value && !integerPattern.test(control.value)) {
+            control.setErrors({
+                integer: true
+            });
+            return {
+                integer: true
+            }
+        } else {
+            return null;
+        }
+    }
 }
\ No newline at end of file
-import {\r
-    Component, Input, forwardRef, SimpleChanges, ViewChild, OnChanges, Output, EventEmitter,\r
-    ElementRef\r
-} from '@angular/core';\r
-import {TranslateService} from '@ngx-translate/core';\r
-import {\r
-    ControlValueAccessor, NG_VALUE_ACCESSOR, NG_VALIDATORS, Validator,\r
-    AbstractControl, ValidationErrors\r
-} from '@angular/forms';\r
-import {\r
-    inRangeValidator, greaterOrEqualValidator, lessOrEqualValidator,\r
-    greaterThanValidator, lessThanValidator, equalValidator, lengthValidator, floatValidator, integerValidator\r
-} from './validators';\r
-import {isNullOrUndefined} from "util";\r
-\r
-const noop = () => {\r
-};\r
-\r
-export const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\r
-    provide: NG_VALUE_ACCESSOR,\r
-    useExisting: forwardRef(() => WfmTextInputComponent),\r
-    multi: true\r
-};\r
-\r
-export const CUSTOM_INPUT_VALIDATOR: any = {\r
-    provide: NG_VALIDATORS,\r
-    useExisting: forwardRef(() => WfmTextInputComponent),\r
-    multi: true\r
-};\r
-\r
-@Component({\r
-    selector: 'wfm-text-input',\r
-    template: `\r
-        <input type="text"\r
-            [disabled]="disabled" \r
-            [class]="inputClass"\r
-            [placeholder]="placeholder"\r
-            [required]="required"\r
-            [maxlength]="maxlength"\r
-            [minlength]="minlength"\r
-            [pattern]="pattern"\r
-            (focus)="onFocus()"\r
-            (blur)="onBlur()"\r
-            [(ngModel)]="value"\r
-            [ngModelOptions]="{standalone: true}"\r
-            #wfInput="ngModel"\r
-        />\r
-\r
-        <small [hidden]="!wfInput.valid || !hintLabel || !isHintLabelShow" class="hint-label">{{hintLabel}}</small>\r
-        <small [hidden]="!wfInput.errors?.required" class="text-danger">\r
-            {{ 'VALIDATE.REQUIRED' | translate }}\r
-        </small>\r
-        <small [hidden]="!wfInput.errors?.maxlength" class="text-danger">\r
-            {{ 'VALIDATE.MAX_LENGTH' | translate: {value: maxlength} }}\r
-        </small>\r
-        <small [hidden]="!wfInput.errors?.minlength" class="text-danger">\r
-            {{ 'VALIDATE.MIN_LENGTH' | translate: {value: minlength} }}\r
-        </small>\r
-        <small [hidden]="!wfInput.errors?.length" class="text-danger">\r
-            {{ 'VALIDATE.LENGTH' | translate: {value: length} }}\r
-        </small>\r
-        <small *ngIf="patternError" [hidden]="!wfInput.errors?.pattern" class="text-danger">\r
-            {{ patternError }}\r
-        </small>\r
-        <small *ngIf="!patternError && pattern === generalRules" [hidden]="!wfInput.errors?.pattern" class="text-danger">\r
-            {{ getCommonRuleMessage(minlength + '-' + maxlength) }}\r
-        </small>\r
-        <small [hidden]="!wfInput.errors?.greater_or_equal" class="text-danger">\r
-            {{ 'VALIDATE.GREATER_OR_EQUAL' | translate: {value: greater_or_equal} }}\r
-        </small>\r
-        <small [hidden]="!wfInput.errors?.less_or_equal" class="text-danger">\r
-            {{ 'VALIDATE.LESS_OR_EQUAL' | translate: {value: less_or_equal} }}\r
-        </small>\r
-        <small [hidden]="!wfInput.errors?.greater_than" class="text-danger">\r
-            {{ 'VALIDATE.GREATER_THAN' | translate: {value: greater_than} }}\r
-        </small>\r
-        <small [hidden]="!wfInput.errors?.less_than" class="text-danger">\r
-            {{ 'VALIDATE.LESS_THAN' | translate: {value: less_than} }}\r
-        </small>\r
-        <small [hidden]="!wfInput.errors?.in_range" class="text-danger">\r
-            {{ 'VALIDATE.IN_RANGE' | translate: {value: in_range} }}\r
-        </small>\r
-        <small [hidden]="!wfInput.errors?.equal" class="text-danger">\r
-            {{ 'VALIDATE.EQUAL' | translate: {value: equal} }}\r
-        </small>\r
-        <small [hidden]="!wfInput.errors?.float" class="text-danger">\r
-            {{ 'VALIDATE.FLOAT' | translate }}\r
-        </small>\r
-        <small [hidden]="!wfInput.errors?.integer" class="text-danger">\r
-            {{ 'VALIDATE.INTEGER' | translate }}\r
-        </small>\r
-    `,\r
-    styles: [`\r
-        .hint-label {\r
-            color:#7c868d;\r
-        }\r
-        input.ng-invalid {\r
-            border-color: #d9534f;\r
-        }\r
-    `],\r
-    providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR, CUSTOM_INPUT_VALIDATOR]\r
-})\r
-export class WfmTextInputComponent implements ControlValueAccessor, Validator, OnChanges {\r
-    @Input() public disabled: boolean;\r
-    @Input() public inputType = 'string';\r
-    @Input() public inputClass = 'form-control';\r
-    @Input() public placeholder = '';\r
-    @Input() public hintLabel: string;\r
-    @Input() public patternError: string;\r
-    @Input() public required = false;\r
-    @Input() public maxlength: number;\r
-    @Input() public minlength: number;\r
-    @Input() public pattern = '';\r
-    @Input() public greater_or_equal: string; // >=\r
-    @Input() public less_or_equal: string;    // <=\r
-    @Input() public greater_than: string;     // >\r
-    @Input() public less_than: string;        // <\r
-    @Input() public length: number;\r
-    @Input() public equal: any;\r
-    @Input() public in_range: string;\r
-    @Input() public isFocus: boolean;\r
-    @Output() public blur: any = new EventEmitter();\r
-    @Output() public click: any = new EventEmitter();\r
-    @ViewChild('wfInput') public wfInput: any;\r
-\r
-    public isHintLabelShow = false;\r
-    private innerValue: any = '';\r
-    private onTouchedCallback: () => void = noop;\r
-    private onChangeCallback: (_: any) => void = noop;\r
-    private _validators: any = {};\r
-    public generalRules = '^(?![-_.])(?!\\d*$)[\\da-zA-Z-_.]*$';\r
-\r
-    constructor(public translate: TranslateService,\r
-                private elementRef: ElementRef) {\r
-\r
-    }\r
-\r
-    public ngOnChanges(changes: SimpleChanges): void {\r
-        this._createValidator(changes);\r
-        if (this.isFocus) {\r
-            this.elementRef.nativeElement.querySelector('input').focus();\r
-        }\r
-    }\r
-\r
-    // 动态创建Validator\r
-    private _createValidator(changes: SimpleChanges): void {\r
-        for (let change in changes) {\r
-            switch (change) {\r
-                case 'in_range':\r
-                    if (!isNullOrUndefined(this.in_range)) {\r
-                        this._validators.in_range = inRangeValidator(JSON.parse(this.in_range));\r
-                    }\r
-                    break;\r
-                case 'greater_or_equal':\r
-                    if (!isNullOrUndefined(this.greater_or_equal)) {\r
-                        this._validators.greater_or_equal = greaterOrEqualValidator(this.greater_or_equal);\r
-                    }\r
-                    break;\r
-                case 'less_or_equal':\r
-                    if (!isNullOrUndefined(this.less_or_equal)) {\r
-                        this._validators.less_or_equal = lessOrEqualValidator(this.less_or_equal);\r
-                    }\r
-                    break;\r
-                case 'greater_than':\r
-                    if (!isNullOrUndefined(this.greater_than)) {\r
-                        this._validators.greater_than = greaterThanValidator(this.greater_than);\r
-                    }\r
-                    break;\r
-                case 'less_than':\r
-                    if (!isNullOrUndefined(this.less_than)) {\r
-                        this._validators.less_than = lessThanValidator(this.less_than);\r
-                    }\r
-                    break;\r
-                case 'equal':\r
-                    if (!isNullOrUndefined(this.equal)) {\r
-                        this._validators.equal = equalValidator(this.equal);\r
-                    }\r
-                    break;\r
-                case 'length':\r
-                    if (!isNullOrUndefined(this.length)) {\r
-                        this._validators.length = lengthValidator(this.length);\r
-                    }\r
-                    break;\r
-                case 'inputType':\r
-                    delete this._validators.float;\r
-                    delete this._validators.integer;\r
-                    if (this.inputType === 'float') {\r
-                        this._validators.float = floatValidator();\r
-                    } else if (this.inputType === 'integer') {\r
-                        this._validators.integer = integerValidator();\r
-                    }\r
-                    break;\r
-            }\r
-        }\r
-    }\r
-\r
-    // 执行控件验证\r
-    public validate(c: AbstractControl): ValidationErrors | null {\r
-        let errors: any;\r
-        for (let validatorName in this._validators) {\r
-            let validator = this._validators[validatorName];\r
-            if (validator) {\r
-                let errors = validator(c);\r
-                if (errors) {\r
-                    return errors;\r
-                }\r
-            }\r
-        }\r
-        return null;\r
-    }\r
-\r
-    public onFocus(): void {\r
-        if (this.isFocus) {\r
-            this.click.emit();\r
-        }\r
-        this.isHintLabelShow = true;\r
-    }\r
-\r
-    public onBlur(): void {\r
-        this.blur.emit();\r
-        this.isHintLabelShow = false;\r
-        this.onTouchedCallback();\r
-    }\r
-\r
-    get value(): any {\r
-        this.validate(this.wfInput.control);\r
-        return this.innerValue;\r
-    };\r
-\r
-    set value(value: any) {\r
-        if (value !== this.innerValue) {\r
-            this.innerValue = value;\r
-            this.onChangeCallback(value);\r
-        }\r
-    }\r
-\r
-    writeValue(value: any) {\r
-        if (value !== this.innerValue) {\r
-            this.innerValue = value;\r
-        }\r
-    }\r
-\r
-    registerOnChange(fn: any) {\r
-        this.onChangeCallback = fn;\r
-    }\r
-\r
-    registerOnTouched(fn: any) {\r
-        this.onTouchedCallback = fn;\r
-    }\r
-\r
-    public getCommonRuleMessage(length: any): string {\r
-        let message = this.translate.get('VALIDATE.FIRST_CHARACTER')['value'] + ', ' +\r
-            this.translate.get('VALIDATE.NOT_ALL_NUMBER')['value'] + ', ' +\r
-            this.translate.get('VALIDATE.CHARACTER_LIMIT', {value: '[0-9],[a-z],[A-Z],[_],[-],[.]'})['value'] + ', ' +\r
-            this.translate.get('VALIDATE.CHARACTER_LENGTH', {value: length})['value'];\r
-        return message;\r
-    }\r
-}\r
+import {
+    Component, Input, forwardRef, SimpleChanges, ViewChild, OnChanges, Output, EventEmitter,
+    ElementRef
+} from '@angular/core';
+import {TranslateService} from '@ngx-translate/core';
+import {
+    ControlValueAccessor, NG_VALUE_ACCESSOR, NG_VALIDATORS, Validator,
+    AbstractControl, ValidationErrors
+} from '@angular/forms';
+import {
+    inRangeValidator, greaterOrEqualValidator, lessOrEqualValidator,
+    greaterThanValidator, lessThanValidator, equalValidator, lengthValidator, floatValidator, integerValidator
+} from './validators';
+import {isNullOrUndefined} from "util";
+
+const noop = () => {
+};
+
+export const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => WfmTextInputComponent),
+    multi: true
+};
+
+export const CUSTOM_INPUT_VALIDATOR: any = {
+    provide: NG_VALIDATORS,
+    useExisting: forwardRef(() => WfmTextInputComponent),
+    multi: true
+};
+
+@Component({
+    selector: 'wfm-text-input',
+    template: `
+        <input type="text"
+            [disabled]="disabled" 
+            [class]="inputClass"
+            [placeholder]="placeholder"
+            [required]="required"
+            [maxlength]="maxlength"
+            [minlength]="minlength"
+            [pattern]="pattern"
+            (focus)="onFocus()"
+            (blur)="onBlur()"
+            [(ngModel)]="value"
+            [ngModelOptions]="{standalone: true}"
+            #wfInput="ngModel"
+        />
+
+        <small [hidden]="!wfInput.valid || !hintLabel || !isHintLabelShow" class="hint-label">{{hintLabel}}</small>
+        <small [hidden]="!wfInput.errors?.required" class="text-danger">
+            {{ 'VALIDATE.REQUIRED' | translate }}
+        </small>
+        <small [hidden]="!wfInput.errors?.maxlength" class="text-danger">
+            {{ 'VALIDATE.MAX_LENGTH' | translate: {value: maxlength} }}
+        </small>
+        <small [hidden]="!wfInput.errors?.minlength" class="text-danger">
+            {{ 'VALIDATE.MIN_LENGTH' | translate: {value: minlength} }}
+        </small>
+        <small [hidden]="!wfInput.errors?.length" class="text-danger">
+            {{ 'VALIDATE.LENGTH' | translate: {value: length} }}
+        </small>
+        <small *ngIf="patternError" [hidden]="!wfInput.errors?.pattern" class="text-danger">
+            {{ patternError }}
+        </small>
+        <small *ngIf="!patternError && pattern === generalRules" [hidden]="!wfInput.errors?.pattern" class="text-danger">
+            {{ getCommonRuleMessage(minlength + '-' + maxlength) }}
+        </small>
+        <small [hidden]="!wfInput.errors?.greater_or_equal" class="text-danger">
+            {{ 'VALIDATE.GREATER_OR_EQUAL' | translate: {value: greater_or_equal} }}
+        </small>
+        <small [hidden]="!wfInput.errors?.less_or_equal" class="text-danger">
+            {{ 'VALIDATE.LESS_OR_EQUAL' | translate: {value: less_or_equal} }}
+        </small>
+        <small [hidden]="!wfInput.errors?.greater_than" class="text-danger">
+            {{ 'VALIDATE.GREATER_THAN' | translate: {value: greater_than} }}
+        </small>
+        <small [hidden]="!wfInput.errors?.less_than" class="text-danger">
+            {{ 'VALIDATE.LESS_THAN' | translate: {value: less_than} }}
+        </small>
+        <small [hidden]="!wfInput.errors?.in_range" class="text-danger">
+            {{ 'VALIDATE.IN_RANGE' | translate: {value: in_range} }}
+        </small>
+        <small [hidden]="!wfInput.errors?.equal" class="text-danger">
+            {{ 'VALIDATE.EQUAL' | translate: {value: equal} }}
+        </small>
+        <small [hidden]="!wfInput.errors?.float" class="text-danger">
+            {{ 'VALIDATE.FLOAT' | translate }}
+        </small>
+        <small [hidden]="!wfInput.errors?.integer" class="text-danger">
+            {{ 'VALIDATE.INTEGER' | translate }}
+        </small>
+    `,
+    styles: [`
+        .hint-label {
+            color:#7c868d;
+        }
+        input.ng-invalid {
+            border-color: #d9534f;
+        }
+    `],
+    providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR, CUSTOM_INPUT_VALIDATOR]
+})
+export class WfmTextInputComponent implements ControlValueAccessor, Validator, OnChanges {
+    @Input() public disabled: boolean;
+    @Input() public inputType = 'string';
+    @Input() public inputClass = 'form-control';
+    @Input() public placeholder = '';
+    @Input() public hintLabel: string;
+    @Input() public patternError: string;
+    @Input() public required = false;
+    @Input() public maxlength: number;
+    @Input() public minlength: number;
+    @Input() public pattern = '';
+    @Input() public greater_or_equal: string; // >=
+    @Input() public less_or_equal: string;    // <=
+    @Input() public greater_than: string;     // >
+    @Input() public less_than: string;        // <
+    @Input() public length: number;
+    @Input() public equal: any;
+    @Input() public in_range: string;
+    @Input() public isFocus: boolean;
+    @Output() public blur: any = new EventEmitter();
+    @Output() public click: any = new EventEmitter();
+    @ViewChild('wfInput') public wfInput: any;
+
+    public isHintLabelShow = false;
+    private innerValue: any = '';
+    private onTouchedCallback: () => void = noop;
+    private onChangeCallback: (_: any) => void = noop;
+    private _validators: any = {};
+    public generalRules = '^(?![-_.])(?!\\d*$)[\\da-zA-Z-_.]*$';
+
+    constructor(public translate: TranslateService,
+                private elementRef: ElementRef) {
+
+    }
+
+    public ngOnChanges(changes: SimpleChanges): void {
+        this._createValidator(changes);
+        if (this.isFocus) {
+            this.elementRef.nativeElement.querySelector('input').focus();
+        }
+    }
+
+    // 动态创建Validator
+    private _createValidator(changes: SimpleChanges): void {
+        for (let change in changes) {
+            switch (change) {
+                case 'in_range':
+                    if (!isNullOrUndefined(this.in_range)) {
+                        this._validators.in_range = inRangeValidator(JSON.parse(this.in_range));
+                    }
+                    break;
+                case 'greater_or_equal':
+                    if (!isNullOrUndefined(this.greater_or_equal)) {
+                        this._validators.greater_or_equal = greaterOrEqualValidator(this.greater_or_equal);
+                    }
+                    break;
+                case 'less_or_equal':
+                    if (!isNullOrUndefined(this.less_or_equal)) {
+                        this._validators.less_or_equal = lessOrEqualValidator(this.less_or_equal);
+                    }
+                    break;
+                case 'greater_than':
+                    if (!isNullOrUndefined(this.greater_than)) {
+                        this._validators.greater_than = greaterThanValidator(this.greater_than);
+                    }
+                    break;
+                case 'less_than':
+                    if (!isNullOrUndefined(this.less_than)) {
+                        this._validators.less_than = lessThanValidator(this.less_than);
+                    }
+                    break;
+                case 'equal':
+                    if (!isNullOrUndefined(this.equal)) {
+                        this._validators.equal = equalValidator(this.equal);
+                    }
+                    break;
+                case 'length':
+                    if (!isNullOrUndefined(this.length)) {
+                        this._validators.length = lengthValidator(this.length);
+                    }
+                    break;
+                case 'inputType':
+                    delete this._validators.float;
+                    delete this._validators.integer;
+                    if (this.inputType === 'float') {
+                        this._validators.float = floatValidator();
+                    } else if (this.inputType === 'integer') {
+                        this._validators.integer = integerValidator();
+                    }
+                    break;
+            }
+        }
+    }
+
+    // 执行控件验证
+    public validate(c: AbstractControl): ValidationErrors | null {
+        let errors: any;
+        for (let validatorName in this._validators) {
+            let validator = this._validators[validatorName];
+            if (validator) {
+                let errors = validator(c);
+                if (errors) {
+                    return errors;
+                }
+            }
+        }
+        return null;
+    }
+
+    public onFocus(): void {
+        if (this.isFocus) {
+            this.click.emit();
+        }
+        this.isHintLabelShow = true;
+    }
+
+    public onBlur(): void {
+        this.blur.emit();
+        this.isHintLabelShow = false;
+        this.onTouchedCallback();
+    }
+
+    get value(): any {
+        this.validate(this.wfInput.control);
+        return this.innerValue;
+    };
+
+    set value(value: any) {
+        if (value !== this.innerValue) {
+            this.innerValue = value;
+            this.onChangeCallback(value);
+        }
+    }
+
+    writeValue(value: any) {
+        if (value !== this.innerValue) {
+            this.innerValue = value;
+        }
+    }
+
+    registerOnChange(fn: any) {
+        this.onChangeCallback = fn;
+    }
+
+    registerOnTouched(fn: any) {
+        this.onTouchedCallback = fn;
+    }
+
+    public getCommonRuleMessage(length: any): string {
+        let message = this.translate.get('VALIDATE.FIRST_CHARACTER')['value'] + ', ' +
+            this.translate.get('VALIDATE.NOT_ALL_NUMBER')['value'] + ', ' +
+            this.translate.get('VALIDATE.CHARACTER_LIMIT', {value: '[0-9],[a-z],[A-Z],[_],[-],[.]'})['value'] + ', ' +
+            this.translate.get('VALIDATE.CHARACTER_LENGTH', {value: length})['value'];
+        return message;
+    }
+}
@@ -1,15 +1,15 @@
-import { NgModule } from '@angular/core';\r
-import { CommonModule } from '@angular/common';\r
-import { TranslateModule } from '@ngx-translate/core';\r
-import { FormsModule } from '@angular/forms';\r
-import { WfmTextInputComponent } from './wfm-text-input.component';\r
-\r
-@NgModule({\r
-    imports: [TranslateModule, CommonModule, FormsModule],\r
-    declarations: [WfmTextInputComponent],\r
-    exports: [WfmTextInputComponent]\r
-})\r
-\r
-export class WfmInputModule {\r
-\r
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { TranslateModule } from '@ngx-translate/core';
+import { FormsModule } from '@angular/forms';
+import { WfmTextInputComponent } from './wfm-text-input.component';
+
+@NgModule({
+    imports: [TranslateModule, CommonModule, FormsModule],
+    declarations: [WfmTextInputComponent],
+    exports: [WfmTextInputComponent]
+})
+
+export class WfmInputModule {
+
 }
\ No newline at end of file
@@ -1,16 +1,16 @@
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">\r
-    <style type="text/css">\r
-        .st0{fill:#00ABFF;}\r
-    </style>\r
-    <g>\r
-        <path class="st0" d="M24,29H6c-2.8,0-5-2.2-5-5V6c0-2.8,2.2-5,5-5h18c2.8,0,5,2.2,5,5v18C29,26.8,26.8,29,24,29z M6,3\r
-                        C4.3,3,3,4.3,3,6v18c0,1.7,1.3,3,3,3h18c1.7,0,3-1.3,3-3V6c0-1.7-1.3-3-3-3H6z" />\r
-        <path class="st0" d="M7.6,14.5h7.5c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,14.5,7.6,14.5z" />\r
-        <path class="st0" d="M7.6,18.7h3.7c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,18.7,7.6,18.7z" />\r
-        <path class="st0" d="M7.6,10.4H19c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,10.4,7.6,10.4z" />\r
-        <path class="st0" d="M24.1,22.6l-1.6-2.7c0.9-0.4,1.5-1.2,1.5-2.2c0-1.4-1.2-2.5-2.8-2.5h-1.9c-0.2,0-0.4,0.1-0.6,0.2\r
-                        c-0.2,0.1-0.3,0.3-0.3,0.6v7c0,0.4,0.3,0.8,0.8,0.8c0.4,0,0.8-0.3,0.8-0.8v-2.8h0.8l1.9,3.2c0.1,0.2,0.4,0.4,0.7,0.4\r
-                        c0.1,0,0.3,0,0.4-0.1C24.2,23.5,24.4,23,24.1,22.6z M20.1,16.8h1.2c0.6,0,1.2,0.4,1.2,0.9s-0.5,0.9-1.2,0.9h-1.2V16.8z"\r
-        />\r
-    </g>\r
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
+    <style type="text/css">
+        .st0{fill:#00ABFF;}
+    </style>
+    <g>
+        <path class="st0" d="M24,29H6c-2.8,0-5-2.2-5-5V6c0-2.8,2.2-5,5-5h18c2.8,0,5,2.2,5,5v18C29,26.8,26.8,29,24,29z M6,3
+                        C4.3,3,3,4.3,3,6v18c0,1.7,1.3,3,3,3h18c1.7,0,3-1.3,3-3V6c0-1.7-1.3-3-3-3H6z" />
+        <path class="st0" d="M7.6,14.5h7.5c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,14.5,7.6,14.5z" />
+        <path class="st0" d="M7.6,18.7h3.7c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,18.7,7.6,18.7z" />
+        <path class="st0" d="M7.6,10.4H19c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,10.4,7.6,10.4z" />
+        <path class="st0" d="M24.1,22.6l-1.6-2.7c0.9-0.4,1.5-1.2,1.5-2.2c0-1.4-1.2-2.5-2.8-2.5h-1.9c-0.2,0-0.4,0.1-0.6,0.2
+                        c-0.2,0.1-0.3,0.3-0.3,0.6v7c0,0.4,0.3,0.8,0.8,0.8c0.4,0,0.8-0.3,0.8-0.8v-2.8h0.8l1.9,3.2c0.1,0.2,0.4,0.4,0.7,0.4
+                        c0.1,0,0.3,0,0.4-0.1C24.2,23.5,24.4,23,24.1,22.6z M20.1,16.8h1.2c0.6,0,1.2,0.4,1.2,0.9s-0.5,0.9-1.2,0.9h-1.2V16.8z"
+        />
+    </g>
 </svg>
\ No newline at end of file
@@ -1,24 +1,24 @@
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">\r
-    <style type="text/css">\r
-        .st0{fill:#00ABFF;}\r
-    </style>\r
-\r
-    <g>\r
-        <path class="st0" d="M24,1H6C3.2,1,1,3.2,1,6v18c0,2.8,2.2,5,5,5h18c2.8,0,5-2.2,5-5V6C29,3.2,26.8,1,24,1z M16.9,3.4\r
-                        c0.5,0,0.9,0.2,1.3,0.5c0.4,0.4,0.5,0.8,0.5,1.3c0,0.5-0.2,0.9-0.5,1.3L17.7,7l-5.3,5.3c-0.2-0.6-0.5-1.2-0.9-1.6\r
-                        c-0.4-0.4-1-0.8-1.6-0.9l5.8-5.8C16,3.6,16.4,3.4,16.9,3.4z M10.3,27H6c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h8.2l-7.4,7.4\r
-                        c-0.1,0.1-0.2,0.2-0.3,0.3c-0.7,0.7-1,1.6-1,2.5c0,0.9,0.4,1.8,1,2.5l5.2,5.2l-1.3,1.3c-0.7,0.7-1,1.6-1,2.5\r
-                        C9.3,25.5,9.7,26.4,10.3,27z M14.1,25.9c-0.4,0.4-0.8,0.5-1.3,0.5c-0.5,0-0.9-0.2-1.3-0.5c-0.4-0.4-0.5-0.8-0.5-1.3\r
-                        c0-0.5,0.2-0.9,0.5-1.3l1.3-1.3l0.5,0.5l0.8,0.8c0.4,0.4,0.5,0.8,0.5,1.3C14.6,25.1,14.5,25.5,14.1,25.9z M14.5,21.3l-6.8-6.8\r
-                        c-0.4-0.4-0.5-0.8-0.5-1.3c0-0.5,0.2-0.9,0.5-1.3c0.4-0.4,0.8-0.5,1.3-0.5c0.5,0,0.9,0.2,1.3,0.5c0.4,0.4,0.5,0.8,0.5,1.3\r
-                        c0,0.5-0.2,0.9-0.5,1.3l0.9,0.9c0.2,0.2,0.4,0.2,0.6,0l5.2-5.2l4.4,4.4l0.8,0.8c0.4,0.4,0.5,0.8,0.5,1.3c0,0.5-0.2,0.9-0.5,1.3v0\r
-                        l-5.8,5.8c-0.1-0.6-0.5-1.2-0.9-1.6L14.5,21.3z M27,24c0,1.7-1.3,3-3,3h-8.6l7.9-7.9c0.7-0.7,1-1.6,1-2.5c0-0.9-0.4-1.8-1-2.5\r
-                        l-0.8-0.8L18.1,9l1.3-1.3c0.7-0.7,1-1.6,1-2.5c0-0.8-0.3-1.6-0.8-2.2H24c1.7,0,3,1.3,3,3V24z" />\r
-        <path class="st0" d="M17.2,12.4c-0.3-0.3-0.8-0.3-1.1,0L12.6,16c-0.3,0.3-0.3,0.8,0,1.1c0.1,0.1,0.3,0.2,0.5,0.2s0.4-0.1,0.5-0.2\r
-                        l3.6-3.6C17.5,13.1,17.5,12.7,17.2,12.4z" />\r
-        <path class="st0" d="M18.9,14.2c-0.3-0.3-0.8-0.3-1.1,0l-3.6,3.6c-0.3,0.3-0.3,0.8,0,1.1c0.1,0.1,0.3,0.2,0.5,0.2\r
-                        c0.2,0,0.4-0.1,0.5-0.2l3.6-3.6C19.2,14.9,19.2,14.4,18.9,14.2z" />\r
-        <path class="st0" d="M17.1,20.6l3.6-3.6c0.3-0.3,0.3-0.8,0-1.1s-0.8-0.3-1.1,0L16,19.5c-0.3,0.3-0.3,0.8,0,1.1\r
-                        c0.1,0.1,0.3,0.2,0.5,0.2S17,20.7,17.1,20.6z" />\r
-    </g>\r
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
+    <style type="text/css">
+        .st0{fill:#00ABFF;}
+    </style>
+
+    <g>
+        <path class="st0" d="M24,1H6C3.2,1,1,3.2,1,6v18c0,2.8,2.2,5,5,5h18c2.8,0,5-2.2,5-5V6C29,3.2,26.8,1,24,1z M16.9,3.4
+                        c0.5,0,0.9,0.2,1.3,0.5c0.4,0.4,0.5,0.8,0.5,1.3c0,0.5-0.2,0.9-0.5,1.3L17.7,7l-5.3,5.3c-0.2-0.6-0.5-1.2-0.9-1.6
+                        c-0.4-0.4-1-0.8-1.6-0.9l5.8-5.8C16,3.6,16.4,3.4,16.9,3.4z M10.3,27H6c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h8.2l-7.4,7.4
+                        c-0.1,0.1-0.2,0.2-0.3,0.3c-0.7,0.7-1,1.6-1,2.5c0,0.9,0.4,1.8,1,2.5l5.2,5.2l-1.3,1.3c-0.7,0.7-1,1.6-1,2.5
+                        C9.3,25.5,9.7,26.4,10.3,27z M14.1,25.9c-0.4,0.4-0.8,0.5-1.3,0.5c-0.5,0-0.9-0.2-1.3-0.5c-0.4-0.4-0.5-0.8-0.5-1.3
+                        c0-0.5,0.2-0.9,0.5-1.3l1.3-1.3l0.5,0.5l0.8,0.8c0.4,0.4,0.5,0.8,0.5,1.3C14.6,25.1,14.5,25.5,14.1,25.9z M14.5,21.3l-6.8-6.8
+                        c-0.4-0.4-0.5-0.8-0.5-1.3c0-0.5,0.2-0.9,0.5-1.3c0.4-0.4,0.8-0.5,1.3-0.5c0.5,0,0.9,0.2,1.3,0.5c0.4,0.4,0.5,0.8,0.5,1.3
+                        c0,0.5-0.2,0.9-0.5,1.3l0.9,0.9c0.2,0.2,0.4,0.2,0.6,0l5.2-5.2l4.4,4.4l0.8,0.8c0.4,0.4,0.5,0.8,0.5,1.3c0,0.5-0.2,0.9-0.5,1.3v0
+                        l-5.8,5.8c-0.1-0.6-0.5-1.2-0.9-1.6L14.5,21.3z M27,24c0,1.7-1.3,3-3,3h-8.6l7.9-7.9c0.7-0.7,1-1.6,1-2.5c0-0.9-0.4-1.8-1-2.5
+                        l-0.8-0.8L18.1,9l1.3-1.3c0.7-0.7,1-1.6,1-2.5c0-0.8-0.3-1.6-0.8-2.2H24c1.7,0,3,1.3,3,3V24z" />
+        <path class="st0" d="M17.2,12.4c-0.3-0.3-0.8-0.3-1.1,0L12.6,16c-0.3,0.3-0.3,0.8,0,1.1c0.1,0.1,0.3,0.2,0.5,0.2s0.4-0.1,0.5-0.2
+                        l3.6-3.6C17.5,13.1,17.5,12.7,17.2,12.4z" />
+        <path class="st0" d="M18.9,14.2c-0.3-0.3-0.8-0.3-1.1,0l-3.6,3.6c-0.3,0.3-0.3,0.8,0,1.1c0.1,0.1,0.3,0.2,0.5,0.2
+                        c0.2,0,0.4-0.1,0.5-0.2l3.6-3.6C19.2,14.9,19.2,14.4,18.9,14.2z" />
+        <path class="st0" d="M17.1,20.6l3.6-3.6c0.3-0.3,0.3-0.8,0-1.1s-0.8-0.3-1.1,0L16,19.5c-0.3,0.3-0.3,0.8,0,1.1
+                        c0.1,0.1,0.3,0.2,0.5,0.2S17,20.7,17.1,20.6z" />
+    </g>
 </svg>
\ No newline at end of file
@@ -1,18 +1,18 @@
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">\r
-    <style type="text/css">\r
-        .st0{fill:#00ABFF;}\r
-    </style>\r
-    <g>\r
-        <path class="st0" d="M24,29H6c-2.8,0-5-2.2-5-5V6c0-2.8,2.2-5,5-5h18c2.8,0,5,2.2,5,5v18C29,26.8,26.8,29,24,29z M6,3\r
-               C4.3,3,3,4.3,3,6v18c0,1.7,1.3,3,3,3h18c1.7,0,3-1.3,3-3V6c0-1.7-1.3-3-3-3H6z"/>\r
-       <path class="st0" d="M7.6,14.5h7.5c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,14.5,7.6,14.5z"/>\r
-       <path class="st0" d="M7.6,18.7h3.7c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,18.7,7.6,18.7z"/>\r
-       <path class="st0" d="M7.6,10.4H19c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,10.4,7.6,10.4z"/>\r
-       <path class="st0" d="M18.7,21.6C18.7,21.6,18.7,21.6,18.7,21.6c0.4-0.1,1.4,0.6,1.5,0.7c0.3,0.2,0.7,0.3,1.2,0.3\r
-               c0.6,0,1-0.1,1.3-0.3c0.2-0.2,0.3-0.4,0.3-0.6c0-0.2-0.1-0.3-0.2-0.4c-0.1-0.1-0.4-0.2-0.8-0.3c-1.8-0.4-3-0.8-3.5-1.1\r
-               c-0.7-0.5-1-1.1-1-1.9c0-0.7,0.3-1.4,0.9-1.9c0.6-0.5,1.5-0.8,2.7-0.8c1.2,0,2,0.3,2.6,0.6c0.4,0.3,0.7,0.5,0.9,0.9\r
-               c0.2,0.3,0.1,0.7-0.3,0.9c-0.2,0.1-0.7,0.4-1,0.2c-0.3-0.2-0.8-0.5-1.1-0.7c-0.3-0.2-0.6-0.3-1.1-0.3c-0.6,0-1,0.1-1.3,0.3\r
-               c-0.2,0.1-0.3,0.3-0.3,0.5c0,0.2,0.1,0.3,0.2,0.4c0.2,0.2,0.9,0.4,2.1,0.6c1.2,0.3,2,0.6,2.5,1c0.5,0.4,0.7,1,0.7,1.7\r
-               c0,0.8-0.3,1.5-1,2c-0.7,0.6-1.6,0.8-2.9,0.8c-1.2,0-2.1-0.2-2.8-0.7c-0.2-0.1-0.4-0.3-0.5-0.4C17.6,22.5,17.9,21.7,18.7,21.6z"/>\r
-    </g>\r
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
+    <style type="text/css">
+        .st0{fill:#00ABFF;}
+    </style>
+    <g>
+        <path class="st0" d="M24,29H6c-2.8,0-5-2.2-5-5V6c0-2.8,2.2-5,5-5h18c2.8,0,5,2.2,5,5v18C29,26.8,26.8,29,24,29z M6,3
+               C4.3,3,3,4.3,3,6v18c0,1.7,1.3,3,3,3h18c1.7,0,3-1.3,3-3V6c0-1.7-1.3-3-3-3H6z"/>
+       <path class="st0" d="M7.6,14.5h7.5c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,14.5,7.6,14.5z"/>
+       <path class="st0" d="M7.6,18.7h3.7c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,18.7,7.6,18.7z"/>
+       <path class="st0" d="M7.6,10.4H19c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,10.4,7.6,10.4z"/>
+       <path class="st0" d="M18.7,21.6C18.7,21.6,18.7,21.6,18.7,21.6c0.4-0.1,1.4,0.6,1.5,0.7c0.3,0.2,0.7,0.3,1.2,0.3
+               c0.6,0,1-0.1,1.3-0.3c0.2-0.2,0.3-0.4,0.3-0.6c0-0.2-0.1-0.3-0.2-0.4c-0.1-0.1-0.4-0.2-0.8-0.3c-1.8-0.4-3-0.8-3.5-1.1
+               c-0.7-0.5-1-1.1-1-1.9c0-0.7,0.3-1.4,0.9-1.9c0.6-0.5,1.5-0.8,2.7-0.8c1.2,0,2,0.3,2.6,0.6c0.4,0.3,0.7,0.5,0.9,0.9
+               c0.2,0.3,0.1,0.7-0.3,0.9c-0.2,0.1-0.7,0.4-1,0.2c-0.3-0.2-0.8-0.5-1.1-0.7c-0.3-0.2-0.6-0.3-1.1-0.3c-0.6,0-1,0.1-1.3,0.3
+               c-0.2,0.1-0.3,0.3-0.3,0.5c0,0.2,0.1,0.3,0.2,0.4c0.2,0.2,0.9,0.4,2.1,0.6c1.2,0.3,2,0.6,2.5,1c0.5,0.4,0.7,1,0.7,1.7
+               c0,0.8-0.3,1.5-1,2c-0.7,0.6-1.6,0.8-2.9,0.8c-1.2,0-2.1-0.2-2.8-0.7c-0.2-0.1-0.4-0.3-0.5-0.4C17.6,22.5,17.9,21.7,18.7,21.6z"/>
+    </g>
 </svg>
\ No newline at end of file
@@ -1,23 +1,23 @@
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">\r
-    <style type="text/css">\r
-        .st0{fill:#00ABFF;}\r
-    </style>\r
-    <g>\r
-        <path class="st0" d="M24,1H6C3.2,1,1,3.2,1,6v18c0,2.8,2.2,5,5,5h18c2.8,0,5-2.2,5-5V6C29,3.2,26.8,1,24,1z M16.9,3.4\r
-                        c0.5,0,0.9,0.2,1.3,0.5c0.4,0.4,0.5,0.8,0.5,1.3c0,0.5-0.2,0.9-0.5,1.3L17.7,7l-5.3,5.3c-0.2-0.6-0.5-1.2-0.9-1.6\r
-                        c-0.4-0.4-1-0.8-1.6-0.9l5.8-5.8C16,3.6,16.4,3.4,16.9,3.4z M10.3,27H6c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h8.2l-7.4,7.4\r
-                        c-0.1,0.1-0.2,0.2-0.3,0.3c-0.7,0.7-1,1.6-1,2.5c0,0.9,0.4,1.8,1,2.5l5.2,5.2l-1.3,1.3c-0.7,0.7-1,1.6-1,2.5\r
-                        C9.3,25.5,9.7,26.4,10.3,27z M14.1,25.9c-0.4,0.4-0.8,0.5-1.3,0.5c-0.5,0-0.9-0.2-1.3-0.5c-0.4-0.4-0.5-0.8-0.5-1.3\r
-                        c0-0.5,0.2-0.9,0.5-1.3l1.3-1.3l0.5,0.5l0.8,0.8c0.4,0.4,0.5,0.8,0.5,1.3C14.6,25.1,14.5,25.5,14.1,25.9z M14.5,21.3l-6.8-6.8\r
-                        c-0.4-0.4-0.5-0.8-0.5-1.3c0-0.5,0.2-0.9,0.5-1.3c0.4-0.4,0.8-0.5,1.3-0.5c0.5,0,0.9,0.2,1.3,0.5c0.4,0.4,0.5,0.8,0.5,1.3\r
-                        c0,0.5-0.2,0.9-0.5,1.3l0.9,0.9c0.2,0.2,0.4,0.2,0.6,0l5.2-5.2l4.4,4.4l0.8,0.8c0.4,0.4,0.5,0.8,0.5,1.3c0,0.5-0.2,0.9-0.5,1.3v0\r
-                        l-5.8,5.8c-0.1-0.6-0.5-1.2-0.9-1.6L14.5,21.3z M27,24c0,1.7-1.3,3-3,3h-8.6l7.9-7.9c0.7-0.7,1-1.6,1-2.5c0-0.9-0.4-1.8-1-2.5\r
-                        l-0.8-0.8L18.1,9l1.3-1.3c0.7-0.7,1-1.6,1-2.5c0-0.8-0.3-1.6-0.8-2.2H24c1.7,0,3,1.3,3,3V24z" />\r
-        <path class="st0" d="M17.2,12.4c-0.3-0.3-0.8-0.3-1.1,0L12.6,16c-0.3,0.3-0.3,0.8,0,1.1c0.1,0.1,0.3,0.2,0.5,0.2s0.4-0.1,0.5-0.2\r
-                        l3.6-3.6C17.5,13.1,17.5,12.7,17.2,12.4z" />\r
-        <path class="st0" d="M18.9,14.2c-0.3-0.3-0.8-0.3-1.1,0l-3.6,3.6c-0.3,0.3-0.3,0.8,0,1.1c0.1,0.1,0.3,0.2,0.5,0.2\r
-                        c0.2,0,0.4-0.1,0.5-0.2l3.6-3.6C19.2,14.9,19.2,14.4,18.9,14.2z" />\r
-        <path class="st0" d="M17.1,20.6l3.6-3.6c0.3-0.3,0.3-0.8,0-1.1s-0.8-0.3-1.1,0L16,19.5c-0.3,0.3-0.3,0.8,0,1.1\r
-                        c0.1,0.1,0.3,0.2,0.5,0.2S17,20.7,17.1,20.6z" />\r
-    </g>\r
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
+    <style type="text/css">
+        .st0{fill:#00ABFF;}
+    </style>
+    <g>
+        <path class="st0" d="M24,1H6C3.2,1,1,3.2,1,6v18c0,2.8,2.2,5,5,5h18c2.8,0,5-2.2,5-5V6C29,3.2,26.8,1,24,1z M16.9,3.4
+                        c0.5,0,0.9,0.2,1.3,0.5c0.4,0.4,0.5,0.8,0.5,1.3c0,0.5-0.2,0.9-0.5,1.3L17.7,7l-5.3,5.3c-0.2-0.6-0.5-1.2-0.9-1.6
+                        c-0.4-0.4-1-0.8-1.6-0.9l5.8-5.8C16,3.6,16.4,3.4,16.9,3.4z M10.3,27H6c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h8.2l-7.4,7.4
+                        c-0.1,0.1-0.2,0.2-0.3,0.3c-0.7,0.7-1,1.6-1,2.5c0,0.9,0.4,1.8,1,2.5l5.2,5.2l-1.3,1.3c-0.7,0.7-1,1.6-1,2.5
+                        C9.3,25.5,9.7,26.4,10.3,27z M14.1,25.9c-0.4,0.4-0.8,0.5-1.3,0.5c-0.5,0-0.9-0.2-1.3-0.5c-0.4-0.4-0.5-0.8-0.5-1.3
+                        c0-0.5,0.2-0.9,0.5-1.3l1.3-1.3l0.5,0.5l0.8,0.8c0.4,0.4,0.5,0.8,0.5,1.3C14.6,25.1,14.5,25.5,14.1,25.9z M14.5,21.3l-6.8-6.8
+                        c-0.4-0.4-0.5-0.8-0.5-1.3c0-0.5,0.2-0.9,0.5-1.3c0.4-0.4,0.8-0.5,1.3-0.5c0.5,0,0.9,0.2,1.3,0.5c0.4,0.4,0.5,0.8,0.5,1.3
+                        c0,0.5-0.2,0.9-0.5,1.3l0.9,0.9c0.2,0.2,0.4,0.2,0.6,0l5.2-5.2l4.4,4.4l0.8,0.8c0.4,0.4,0.5,0.8,0.5,1.3c0,0.5-0.2,0.9-0.5,1.3v0
+                        l-5.8,5.8c-0.1-0.6-0.5-1.2-0.9-1.6L14.5,21.3z M27,24c0,1.7-1.3,3-3,3h-8.6l7.9-7.9c0.7-0.7,1-1.6,1-2.5c0-0.9-0.4-1.8-1-2.5
+                        l-0.8-0.8L18.1,9l1.3-1.3c0.7-0.7,1-1.6,1-2.5c0-0.8-0.3-1.6-0.8-2.2H24c1.7,0,3,1.3,3,3V24z" />
+        <path class="st0" d="M17.2,12.4c-0.3-0.3-0.8-0.3-1.1,0L12.6,16c-0.3,0.3-0.3,0.8,0,1.1c0.1,0.1,0.3,0.2,0.5,0.2s0.4-0.1,0.5-0.2
+                        l3.6-3.6C17.5,13.1,17.5,12.7,17.2,12.4z" />
+        <path class="st0" d="M18.9,14.2c-0.3-0.3-0.8-0.3-1.1,0l-3.6,3.6c-0.3,0.3-0.3,0.8,0,1.1c0.1,0.1,0.3,0.2,0.5,0.2
+                        c0.2,0,0.4-0.1,0.5-0.2l3.6-3.6C19.2,14.9,19.2,14.4,18.9,14.2z" />
+        <path class="st0" d="M17.1,20.6l3.6-3.6c0.3-0.3,0.3-0.8,0-1.1s-0.8-0.3-1.1,0L16,19.5c-0.3,0.3-0.3,0.8,0,1.1
+                        c0.1,0.1,0.3,0.2,0.5,0.2S17,20.7,17.1,20.6z" />
+    </g>
 </svg>
\ No newline at end of file
@@ -1,11 +1,11 @@
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">\r
-    <g>\r
-        <path class="st0" d="M24,29H6c-2.8,0-5-2.2-5-5V6c0-2.8,2.2-5,5-5h18c2.8,0,5,2.2,5,5v18C29,26.8,26.8,29,24,29z M6,3\r
-                        C4.3,3,3,4.3,3,6v18c0,1.7,1.3,3,3,3h18c1.7,0,3-1.3,3-3V6c0-1.7-1.3-3-3-3H6z" />\r
-        <path class="st0" d="M7.6,14.5h7.5c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,14.5,7.6,14.5z" />\r
-        <path class="st0" d="M7.6,18.7h3.7c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,18.7,7.6,18.7z" />\r
-        <path class="st0" d="M7.6,10.4H19c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,10.4,7.6,10.4z" />\r
-        <path class="st0" d="M24.7,15.1h-5c-0.6,0-1,0.4-1,1c0,0.6,0.4,1,1,1h1.5v5.7c0,0.6,0.4,1,1,1s1-0.4,1-1v-5.7h1.5c0.6,0,1-0.4,1-1\r
-                        C25.7,15.5,25.2,15.1,24.7,15.1z" />\r
-    </g>\r
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
+    <g>
+        <path class="st0" d="M24,29H6c-2.8,0-5-2.2-5-5V6c0-2.8,2.2-5,5-5h18c2.8,0,5,2.2,5,5v18C29,26.8,26.8,29,24,29z M6,3
+                        C4.3,3,3,4.3,3,6v18c0,1.7,1.3,3,3,3h18c1.7,0,3-1.3,3-3V6c0-1.7-1.3-3-3-3H6z" />
+        <path class="st0" d="M7.6,14.5h7.5c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,14.5,7.6,14.5z" />
+        <path class="st0" d="M7.6,18.7h3.7c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,18.7,7.6,18.7z" />
+        <path class="st0" d="M7.6,10.4H19c0.5,0,0.8-0.4,0.8-1s-0.3-1-0.8-1H7.6c-0.5,0-0.8,0.4-0.8,1S7.1,10.4,7.6,10.4z" />
+        <path class="st0" d="M24.7,15.1h-5c-0.6,0-1,0.4-1,1c0,0.6,0.4,1,1,1h1.5v5.7c0,0.6,0.4,1,1,1s1-0.4,1-1v-5.7h1.5c0.6,0,1-0.4,1-1
+                        C25.7,15.5,25.2,15.1,24.7,15.1z" />
+    </g>
 </svg>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 3846d54..2ad0a82 100644 (file)
--- a/pom.xml
+++ b/pom.xml
-<?xml version="1.0" encoding="UTF-8"?>
 <!--
-/**
- * Copyright (c) 2017 ZTE Corporation.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * and the Apache License 2.0 which both accompany this distribution,
- * and are available at http://www.eclipse.org/legal/epl-v10.html
* and http://www.apache.org/licenses/LICENSE-2.0
- *
- * Contributors:
- *     ZTE - initial API and implementation and/or initial documentation
- */
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>org.onap.oparent</groupId>
-        <artifactId>oparent</artifactId>
-        <version>1.1.0</version>
-    </parent>
+  ~ Copyright © 2016-2018 European Support Limited
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
 ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<project
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xmlns="http://maven.apache.org/POM/4.0.0"
+        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
     <modelVersion>4.0.0</modelVersion>
-    <groupId>org.onap.sdc.sdc-workflow-designer</groupId>
-    <artifactId>sdc-workflow-designer</artifactId>
-    <name>sdc-sdc-workflow-designer</name>
-    <version>1.2.0-SNAPSHOT</version>
+    <groupId>org.onap.sdc.workflow_designer</groupId>
+    <artifactId>workflow-designer-parent</artifactId>
+    <version>1.3.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
-    <modules>
-        <module>sdc-workflow-designer-ui</module>
-        <module>sdc-workflow-designer-server</module>
-        <module>distribution</module>
-    </modules>
-    
     <properties>
-        <onap.nexus.javadocs-url>dav:https://nexus.onap.org/content/sites/site/org/onap/sdc/sdc-workflow-designer/${project.version}</onap.nexus.javadocs-url>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <onap.version>1.3.0-SNAPSHOT</onap.version>
+        <mvn.docker.version>0.23.0</mvn.docker.version>
+        <docker.optimize>true</docker.optimize>
+        <docker.username>docker</docker.username>
+        <docker.password>docker</docker.password>
+        <nexus.registry>nexus3.onap.org:10001</nexus.registry>
+        <nexus.proxy>https://nexus.onap.org</nexus.proxy>
+        <sitePath>/content/sites/site/org/onap/sdc/workflow/${project.version}</sitePath>
     </properties>
-    
-    <distributionManagement>
-      <site>
-        <id>ecomp-site</id>
-        <url>${onap.nexus.javadocs-url}</url>
-      </site>
-    </distributionManagement>
-    
+
+    <modules>
+        <module>workflow-designer-init</module>
+        <module>workflow-designer-be</module>
+        <module>workflow-designer-ui</module>
+    </modules>
+
     <build>
         <pluginManagement>
             <plugins>
                 <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-dependency-plugin</artifactId>
-                    <version>2.10</version>
-                </plugin>
-                <plugin>
-                    <artifactId>maven-antrun-plugin</artifactId>
-                    <version>1.8</version>
+                    <groupId>io.fabric8</groupId>
+                    <artifactId>docker-maven-plugin</artifactId>
+                    <version>${mvn.docker.version}</version>
+                    <configuration>
+                        <verbose>false</verbose>
+                        <registry>${nexus.registry}</registry>
+                        <authConfig>
+                            <pull>
+                                <username>${docker.username}</username>
+                                <password>${docker.password}</password>
+                            </pull>
+                        </authConfig>
+                    </configuration>
+                    <executions>
+                        <execution>
+                            <id>docker-build</id>
+                            <phase>install</phase>
+                            <goals>
+                                <goal>build</goal>
+                            </goals>
+                        </execution>
+                        <execution>
+                            <id>push-images</id>
+                            <phase>deploy</phase>
+                            <goals>
+                                <goal>push</goal>
+                            </goals>
+                        </execution>
+                    </executions>
                 </plugin>
             </plugins>
         </pluginManagement>
     </build>
-</project>
+
+    <repositories>
+        <repository>
+            <id>ecomp-releases</id>
+            <name>Release Repository</name>
+            <url>${nexus.proxy}/content/repositories/releases/</url>
+        </repository>
+        <repository>
+            <id>ecomp-snapshots</id>
+            <name>Snapshots Repository</name>
+            <url>${nexus.proxy}/content/repositories/snapshots/</url>
+        </repository>
+        <repository>
+            <id>ecomp-public</id>
+            <name>Public Repository</name>
+            <url>${nexus.proxy}/content/repositories/public/</url>
+        </repository>
+    </repositories>
+    <distributionManagement>
+        <repository>
+            <id>ecomp-releases</id>
+            <name>Release Repository</name>
+            <url>${nexus.proxy}/content/repositories/releases/</url>
+        </repository>
+        <snapshotRepository>
+            <id>ecomp-snapshots</id>
+            <name>Snapshot Repository</name>
+            <url>${nexus.proxy}/content/repositories/snapshots/</url>
+        </snapshotRepository>
+        <site>
+            <id>ecomp-site</id>
+            <url>dav:${nexus.proxy}${sitePath}</url>
+        </site>
+    </distributionManagement>
+
+</project>
\ No newline at end of file
index 08f1f93..70bc126 100644 (file)
@@ -3,7 +3,7 @@
 # because they are used in Jenkins, whose plug-in doesn't support\r
 \r
 major=1\r
-minor=2\r
+minor=3\r
 patch=0\r
 \r
 base_version=${major}.${minor}.${patch}\r
old mode 100755 (executable)
new mode 100644 (file)
similarity index 100%
rename from workflow/workflow-designer-ui/pom.xml
rename to workflow-designer-ui/pom.xml
diff --git a/workflow/pom.xml b/workflow/pom.xml
deleted file mode 100644 (file)
index e51accc..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-<project
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xmlns="http://maven.apache.org/POM/4.0.0"
-        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.onap.sdc.workflow_designer</groupId>
-    <artifactId>workflow-designer-parent</artifactId>
-    <version>1.3.0-SNAPSHOT</version>
-    <packaging>pom</packaging>
-
-    <properties>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-        <onap.version>1.3.0-SNAPSHOT</onap.version>
-        <mvn.docker.version>0.23.0</mvn.docker.version>
-        <docker.optimize>true</docker.optimize>
-        <docker.username>docker</docker.username>
-        <docker.password>docker</docker.password>
-        <nexus.registry>nexus3.onap.org:10001</nexus.registry>
-        <nexus.proxy>https://nexus.onap.org</nexus.proxy>
-        <sitePath>/content/sites/site/org/onap/sdc/workflow/${project.version}</sitePath>
-    </properties>
-
-    <modules>
-        <module>workflow-designer-init</module>
-        <module>workflow-designer-be</module>
-        <module>workflow-designer-ui</module>
-    </modules>
-
-    <build>
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <groupId>io.fabric8</groupId>
-                    <artifactId>docker-maven-plugin</artifactId>
-                    <version>${mvn.docker.version}</version>
-                    <configuration>
-                        <verbose>false</verbose>
-                        <registry>${nexus.registry}</registry>
-                        <authConfig>
-                            <pull>
-                                <username>${docker.username}</username>
-                                <password>${docker.password}</password>
-                            </pull>
-                        </authConfig>
-                    </configuration>
-                    <executions>
-                        <execution>
-                            <id>docker-build</id>
-                            <phase>install</phase>
-                            <goals>
-                                <goal>build</goal>
-                            </goals>
-                        </execution>
-                        <execution>
-                            <id>push-images</id>
-                            <phase>deploy</phase>
-                            <goals>
-                                <goal>push</goal>
-                            </goals>
-                        </execution>
-                    </executions>
-                </plugin>
-            </plugins>
-        </pluginManagement>
-    </build>
-
-    <repositories>
-        <repository>
-            <id>ecomp-releases</id>
-            <name>Release Repository</name>
-            <url>${nexus.proxy}/content/repositories/releases/</url>
-        </repository>
-        <repository>
-            <id>ecomp-snapshots</id>
-            <name>Snapshots Repository</name>
-            <url>${nexus.proxy}/content/repositories/snapshots/</url>
-        </repository>
-        <repository>
-            <id>ecomp-public</id>
-            <name>Public Repository</name>
-            <url>${nexus.proxy}/content/repositories/public/</url>
-        </repository>
-    </repositories>
-    <distributionManagement>
-        <repository>
-            <id>ecomp-releases</id>
-            <name>Release Repository</name>
-            <url>${nexus.proxy}/content/repositories/releases/</url>
-        </repository>
-        <snapshotRepository>
-            <id>ecomp-snapshots</id>
-            <name>Snapshot Repository</name>
-            <url>${nexus.proxy}/content/repositories/snapshots/</url>
-        </snapshotRepository>
-        <site>
-            <id>ecomp-site</id>
-            <url>dav:${nexus.proxy}${sitePath}</url>
-        </site>
-    </distributionManagement>
-
-</project>
\ No newline at end of file