311 lines
27 KiB
JavaScript
311 lines
27 KiB
JavaScript
|
'use strict';/**
|
||
|
* @module
|
||
|
* @description
|
||
|
* The http module provides services to perform http requests. To get started, see the {@link Http}
|
||
|
* class.
|
||
|
*/
|
||
|
var core_1 = require('angular2/core');
|
||
|
var http_1 = require('./src/http/http');
|
||
|
var xhr_backend_1 = require('./src/http/backends/xhr_backend');
|
||
|
var jsonp_backend_1 = require('./src/http/backends/jsonp_backend');
|
||
|
var browser_xhr_1 = require('./src/http/backends/browser_xhr');
|
||
|
var browser_jsonp_1 = require('./src/http/backends/browser_jsonp');
|
||
|
var base_request_options_1 = require('./src/http/base_request_options');
|
||
|
var base_response_options_1 = require('./src/http/base_response_options');
|
||
|
var static_request_1 = require('./src/http/static_request');
|
||
|
exports.Request = static_request_1.Request;
|
||
|
var static_response_1 = require('./src/http/static_response');
|
||
|
exports.Response = static_response_1.Response;
|
||
|
var interfaces_1 = require('./src/http/interfaces');
|
||
|
exports.Connection = interfaces_1.Connection;
|
||
|
exports.ConnectionBackend = interfaces_1.ConnectionBackend;
|
||
|
var browser_xhr_2 = require('./src/http/backends/browser_xhr');
|
||
|
exports.BrowserXhr = browser_xhr_2.BrowserXhr;
|
||
|
var base_request_options_2 = require('./src/http/base_request_options');
|
||
|
exports.BaseRequestOptions = base_request_options_2.BaseRequestOptions;
|
||
|
exports.RequestOptions = base_request_options_2.RequestOptions;
|
||
|
var base_response_options_2 = require('./src/http/base_response_options');
|
||
|
exports.BaseResponseOptions = base_response_options_2.BaseResponseOptions;
|
||
|
exports.ResponseOptions = base_response_options_2.ResponseOptions;
|
||
|
var xhr_backend_2 = require('./src/http/backends/xhr_backend');
|
||
|
exports.XHRBackend = xhr_backend_2.XHRBackend;
|
||
|
exports.XHRConnection = xhr_backend_2.XHRConnection;
|
||
|
var jsonp_backend_2 = require('./src/http/backends/jsonp_backend');
|
||
|
exports.JSONPBackend = jsonp_backend_2.JSONPBackend;
|
||
|
exports.JSONPConnection = jsonp_backend_2.JSONPConnection;
|
||
|
var http_2 = require('./src/http/http');
|
||
|
exports.Http = http_2.Http;
|
||
|
exports.Jsonp = http_2.Jsonp;
|
||
|
var headers_1 = require('./src/http/headers');
|
||
|
exports.Headers = headers_1.Headers;
|
||
|
var enums_1 = require('./src/http/enums');
|
||
|
exports.ResponseType = enums_1.ResponseType;
|
||
|
exports.ReadyState = enums_1.ReadyState;
|
||
|
exports.RequestMethod = enums_1.RequestMethod;
|
||
|
var url_search_params_1 = require('./src/http/url_search_params');
|
||
|
exports.URLSearchParams = url_search_params_1.URLSearchParams;
|
||
|
/**
|
||
|
* Provides a basic set of injectables to use the {@link Http} service in any application.
|
||
|
*
|
||
|
* The `HTTP_PROVIDERS` should be included either in a component's injector,
|
||
|
* or in the root injector when bootstrapping an application.
|
||
|
*
|
||
|
* ### Example ([live demo](http://plnkr.co/edit/snj7Nv?p=preview))
|
||
|
*
|
||
|
* ```
|
||
|
* import {Component} from 'angular2/core';
|
||
|
* import {bootstrap} from 'angular2/platform/browser';
|
||
|
* import {NgFor} from 'angular2/common';
|
||
|
* import {HTTP_PROVIDERS, Http} from 'angular2/http';
|
||
|
*
|
||
|
* @Component({
|
||
|
* selector: 'app',
|
||
|
* providers: [HTTP_PROVIDERS],
|
||
|
* template: `
|
||
|
* <div>
|
||
|
* <h1>People</h1>
|
||
|
* <ul>
|
||
|
* <li *ngFor="#person of people">
|
||
|
* {{person.name}}
|
||
|
* </li>
|
||
|
* </ul>
|
||
|
* </div>
|
||
|
* `,
|
||
|
* directives: [NgFor]
|
||
|
* })
|
||
|
* export class App {
|
||
|
* people: Object[];
|
||
|
* constructor(http:Http) {
|
||
|
* http.get('people.json').subscribe(res => {
|
||
|
* this.people = res.json();
|
||
|
* });
|
||
|
* }
|
||
|
* active:boolean = false;
|
||
|
* toggleActiveState() {
|
||
|
* this.active = !this.active;
|
||
|
* }
|
||
|
* }
|
||
|
*
|
||
|
* bootstrap(App)
|
||
|
* .catch(err => console.error(err));
|
||
|
* ```
|
||
|
*
|
||
|
* The primary public API included in `HTTP_PROVIDERS` is the {@link Http} class.
|
||
|
* However, other providers required by `Http` are included,
|
||
|
* which may be beneficial to override in certain cases.
|
||
|
*
|
||
|
* The providers included in `HTTP_PROVIDERS` include:
|
||
|
* * {@link Http}
|
||
|
* * {@link XHRBackend}
|
||
|
* * `BrowserXHR` - Private factory to create `XMLHttpRequest` instances
|
||
|
* * {@link RequestOptions} - Bound to {@link BaseRequestOptions} class
|
||
|
* * {@link ResponseOptions} - Bound to {@link BaseResponseOptions} class
|
||
|
*
|
||
|
* There may be cases where it makes sense to extend the base request options,
|
||
|
* such as to add a search string to be appended to all URLs.
|
||
|
* To accomplish this, a new provider for {@link RequestOptions} should
|
||
|
* be added in the same injector as `HTTP_PROVIDERS`.
|
||
|
*
|
||
|
* ### Example ([live demo](http://plnkr.co/edit/aCMEXi?p=preview))
|
||
|
*
|
||
|
* ```
|
||
|
* import {provide} from 'angular2/core';
|
||
|
* import {bootstrap} from 'angular2/platform/browser';
|
||
|
* import {HTTP_PROVIDERS, BaseRequestOptions, RequestOptions} from 'angular2/http';
|
||
|
*
|
||
|
* class MyOptions extends BaseRequestOptions {
|
||
|
* search: string = 'coreTeam=true';
|
||
|
* }
|
||
|
*
|
||
|
* bootstrap(App, [HTTP_PROVIDERS, provide(RequestOptions, {useClass: MyOptions})])
|
||
|
* .catch(err => console.error(err));
|
||
|
* ```
|
||
|
*
|
||
|
* Likewise, to use a mock backend for unit tests, the {@link XHRBackend}
|
||
|
* provider should be bound to {@link MockBackend}.
|
||
|
*
|
||
|
* ### Example ([live demo](http://plnkr.co/edit/7LWALD?p=preview))
|
||
|
*
|
||
|
* ```
|
||
|
* import {provide} from 'angular2/core';
|
||
|
* import {bootstrap} from 'angular2/platform/browser';
|
||
|
* import {HTTP_PROVIDERS, Http, Response, XHRBackend} from 'angular2/http';
|
||
|
* import {MockBackend} from 'angular2/http/testing';
|
||
|
*
|
||
|
* var people = [{name: 'Jeff'}, {name: 'Tobias'}];
|
||
|
*
|
||
|
* var injector = Injector.resolveAndCreate([
|
||
|
* HTTP_PROVIDERS,
|
||
|
* MockBackend,
|
||
|
* provide(XHRBackend, {useExisting: MockBackend})
|
||
|
* ]);
|
||
|
* var http = injector.get(Http);
|
||
|
* var backend = injector.get(MockBackend);
|
||
|
*
|
||
|
* // Listen for any new requests
|
||
|
* backend.connections.observer({
|
||
|
* next: connection => {
|
||
|
* var response = new Response({body: people});
|
||
|
* setTimeout(() => {
|
||
|
* // Send a response to the request
|
||
|
* connection.mockRespond(response);
|
||
|
* });
|
||
|
* }
|
||
|
* });
|
||
|
*
|
||
|
* http.get('people.json').observer({
|
||
|
* next: res => {
|
||
|
* // Response came from mock backend
|
||
|
* console.log('first person', res.json()[0].name);
|
||
|
* }
|
||
|
* });
|
||
|
* ```
|
||
|
*/
|
||
|
exports.HTTP_PROVIDERS = [
|
||
|
// TODO(pascal): use factory type annotations once supported in DI
|
||
|
// issue: https://github.com/angular/angular/issues/3183
|
||
|
core_1.provide(http_1.Http, {
|
||
|
useFactory: function (xhrBackend, requestOptions) {
|
||
|
return new http_1.Http(xhrBackend, requestOptions);
|
||
|
},
|
||
|
deps: [xhr_backend_1.XHRBackend, base_request_options_1.RequestOptions]
|
||
|
}),
|
||
|
browser_xhr_1.BrowserXhr,
|
||
|
core_1.provide(base_request_options_1.RequestOptions, { useClass: base_request_options_1.BaseRequestOptions }),
|
||
|
core_1.provide(base_response_options_1.ResponseOptions, { useClass: base_response_options_1.BaseResponseOptions }),
|
||
|
xhr_backend_1.XHRBackend
|
||
|
];
|
||
|
/**
|
||
|
* See {@link HTTP_PROVIDERS} instead.
|
||
|
*
|
||
|
* @deprecated
|
||
|
*/
|
||
|
exports.HTTP_BINDINGS = exports.HTTP_PROVIDERS;
|
||
|
/**
|
||
|
* Provides a basic set of providers to use the {@link Jsonp} service in any application.
|
||
|
*
|
||
|
* The `JSONP_PROVIDERS` should be included either in a component's injector,
|
||
|
* or in the root injector when bootstrapping an application.
|
||
|
*
|
||
|
* ### Example ([live demo](http://plnkr.co/edit/vmeN4F?p=preview))
|
||
|
*
|
||
|
* ```
|
||
|
* import {Component} from 'angular2/core';
|
||
|
* import {NgFor} from 'angular2/common';
|
||
|
* import {JSONP_PROVIDERS, Jsonp} from 'angular2/http';
|
||
|
*
|
||
|
* @Component({
|
||
|
* selector: 'app',
|
||
|
* providers: [JSONP_PROVIDERS],
|
||
|
* template: `
|
||
|
* <div>
|
||
|
* <h1>People</h1>
|
||
|
* <ul>
|
||
|
* <li *ngFor="#person of people">
|
||
|
* {{person.name}}
|
||
|
* </li>
|
||
|
* </ul>
|
||
|
* </div>
|
||
|
* `,
|
||
|
* directives: [NgFor]
|
||
|
* })
|
||
|
* export class App {
|
||
|
* people: Array<Object>;
|
||
|
* constructor(jsonp:Jsonp) {
|
||
|
* jsonp.request('people.json').subscribe(res => {
|
||
|
* this.people = res.json();
|
||
|
* })
|
||
|
* }
|
||
|
* }
|
||
|
* ```
|
||
|
*
|
||
|
* The primary public API included in `JSONP_PROVIDERS` is the {@link Jsonp} class.
|
||
|
* However, other providers required by `Jsonp` are included,
|
||
|
* which may be beneficial to override in certain cases.
|
||
|
*
|
||
|
* The providers included in `JSONP_PROVIDERS` include:
|
||
|
* * {@link Jsonp}
|
||
|
* * {@link JSONPBackend}
|
||
|
* * `BrowserJsonp` - Private factory
|
||
|
* * {@link RequestOptions} - Bound to {@link BaseRequestOptions} class
|
||
|
* * {@link ResponseOptions} - Bound to {@link BaseResponseOptions} class
|
||
|
*
|
||
|
* There may be cases where it makes sense to extend the base request options,
|
||
|
* such as to add a search string to be appended to all URLs.
|
||
|
* To accomplish this, a new provider for {@link RequestOptions} should
|
||
|
* be added in the same injector as `JSONP_PROVIDERS`.
|
||
|
*
|
||
|
* ### Example ([live demo](http://plnkr.co/edit/TFug7x?p=preview))
|
||
|
*
|
||
|
* ```
|
||
|
* import {provide} from 'angular2/core';
|
||
|
* import {bootstrap} from 'angular2/platform/browser';
|
||
|
* import {JSONP_PROVIDERS, BaseRequestOptions, RequestOptions} from 'angular2/http';
|
||
|
*
|
||
|
* class MyOptions extends BaseRequestOptions {
|
||
|
* search: string = 'coreTeam=true';
|
||
|
* }
|
||
|
*
|
||
|
* bootstrap(App, [JSONP_PROVIDERS, provide(RequestOptions, {useClass: MyOptions})])
|
||
|
* .catch(err => console.error(err));
|
||
|
* ```
|
||
|
*
|
||
|
* Likewise, to use a mock backend for unit tests, the {@link JSONPBackend}
|
||
|
* provider should be bound to {@link MockBackend}.
|
||
|
*
|
||
|
* ### Example ([live demo](http://plnkr.co/edit/HDqZWL?p=preview))
|
||
|
*
|
||
|
* ```
|
||
|
* import {provide, Injector} from 'angular2/core';
|
||
|
* import {JSONP_PROVIDERS, Jsonp, Response, JSONPBackend} from 'angular2/http';
|
||
|
* import {MockBackend} from 'angular2/http/testing';
|
||
|
*
|
||
|
* var people = [{name: 'Jeff'}, {name: 'Tobias'}];
|
||
|
* var injector = Injector.resolveAndCreate([
|
||
|
* JSONP_PROVIDERS,
|
||
|
* MockBackend,
|
||
|
* provide(JSONPBackend, {useExisting: MockBackend})
|
||
|
* ]);
|
||
|
* var jsonp = injector.get(Jsonp);
|
||
|
* var backend = injector.get(MockBackend);
|
||
|
*
|
||
|
* // Listen for any new requests
|
||
|
* backend.connections.observer({
|
||
|
* next: connection => {
|
||
|
* var response = new Response({body: people});
|
||
|
* setTimeout(() => {
|
||
|
* // Send a response to the request
|
||
|
* connection.mockRespond(response);
|
||
|
* });
|
||
|
* }
|
||
|
* });
|
||
|
|
||
|
* jsonp.get('people.json').observer({
|
||
|
* next: res => {
|
||
|
* // Response came from mock backend
|
||
|
* console.log('first person', res.json()[0].name);
|
||
|
* }
|
||
|
* });
|
||
|
* ```
|
||
|
*/
|
||
|
exports.JSONP_PROVIDERS = [
|
||
|
// TODO(pascal): use factory type annotations once supported in DI
|
||
|
// issue: https://github.com/angular/angular/issues/3183
|
||
|
core_1.provide(http_1.Jsonp, {
|
||
|
useFactory: function (jsonpBackend, requestOptions) {
|
||
|
return new http_1.Jsonp(jsonpBackend, requestOptions);
|
||
|
},
|
||
|
deps: [jsonp_backend_1.JSONPBackend, base_request_options_1.RequestOptions]
|
||
|
}),
|
||
|
browser_jsonp_1.BrowserJsonp,
|
||
|
core_1.provide(base_request_options_1.RequestOptions, { useClass: base_request_options_1.BaseRequestOptions }),
|
||
|
core_1.provide(base_response_options_1.ResponseOptions, { useClass: base_response_options_1.BaseResponseOptions }),
|
||
|
core_1.provide(jsonp_backend_1.JSONPBackend, { useClass: jsonp_backend_1.JSONPBackend_ })
|
||
|
];
|
||
|
/**
|
||
|
* See {@link JSONP_PROVIDERS} instead.
|
||
|
*
|
||
|
* @deprecated
|
||
|
*/
|
||
|
exports.JSON_BINDINGS = exports.JSONP_PROVIDERS;
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL2h0dHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFDSCxxQkFBZ0MsZUFBZSxDQUFDLENBQUE7QUFDaEQscUJBQTBCLGlCQUFpQixDQUFDLENBQUE7QUFDNUMsNEJBQXdDLGlDQUFpQyxDQUFDLENBQUE7QUFDMUUsOEJBQTJELG1DQUFtQyxDQUFDLENBQUE7QUFDL0YsNEJBQXlCLGlDQUFpQyxDQUFDLENBQUE7QUFDM0QsOEJBQTJCLG1DQUFtQyxDQUFDLENBQUE7QUFDL0QscUNBQWlELGlDQUFpQyxDQUFDLENBQUE7QUFFbkYsc0NBQW1ELGtDQUFrQyxDQUFDLENBQUE7QUFDdEYsK0JBQXNCLDJCQUEyQixDQUFDO0FBQTFDLDJDQUEwQztBQUNsRCxnQ0FBdUIsNEJBQTRCLENBQUM7QUFBNUMsOENBQTRDO0FBRXBELDJCQUtPLHVCQUF1QixDQUFDO0FBRjdCLDZDQUFVO0FBQ1YsMkRBQzZCO0FBRS9CLDRCQUF5QixpQ0FBaUMsQ0FBQztBQUFuRCw4Q0FBbUQ7QUFDM0QscUNBQWlELGlDQUFpQyxDQUFDO0FBQTNFLHVFQUFrQjtBQUFFLCtEQUF1RDtBQUNuRixzQ0FBbUQsa0NBQWtDLENBQUM7QUFBOUUsMEVBQW1CO0FBQUUsa0VBQXlEO0FBQ3RGLDRCQUF3QyxpQ0FBaUMsQ0FBQztBQUFsRSw4Q0FBVTtBQUFFLG9EQUFzRDtBQUMxRSw4QkFBNEMsbUNBQW1DLENBQUM7QUFBeEUsb0RBQVk7QUFBRSwwREFBMEQ7QUFDaEYscUJBQTBCLGlCQUFpQixDQUFDO0FBQXBDLDJCQUFJO0FBQUUsNkJBQThCO0FBRTVDLHdCQUFzQixvQkFBb0IsQ0FBQztBQUFuQyxvQ0FBbUM7QUFFM0Msc0JBQXNELGtCQUFrQixDQUFDO0FBQWpFLDRDQUFZO0FBQUUsd0NBQVU7QUFBRSw4Q0FBdUM7QUFDekUsa0NBQThCLDhCQUE4QixDQUFDO0FBQXJELDhEQUFxRDtBQUU3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvSEc7QUFDVSxzQkFBYyxHQUFVO0lBQ25DLGtFQUFrRTtJQUNsRSx3REFBd0Q7SUFDeEQsY0FBTyxDQUFDLFdBQUksRUFDSjtRQUNFLFVBQVUsRUFBRSxVQUFDLFVBQXNCLEVBQUUsY0FBOEI7bUJBQ25ELElBQUksV0FBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUM7UUFBcEMsQ0FBb0M7UUFDcEQsSUFBSSxFQUFFLENBQUMsd0JBQVUsRUFBRSxxQ0FBYyxDQUFDO0tBQ25DLENBQUM7SUFDVix3QkFBVTtJQUNWLGNBQU8sQ0FBQyxxQ0FBYyxFQUFFLEVBQUMsUUFBUSxFQUFFLHlDQUFrQixFQUFDLENBQUM7SUFDdkQsY0FBTyxDQUFDLHVDQUFlLEVBQUUsRUFBQyxRQUFRLEVBQUUsMkNBQW1CLEVBQUMsQ0FBQztJQUN6RCx3QkFBVTtDQUNYLENBQUM7QUFFRjs7OztHQUlHO0FBQ1UscUJBQWEsR0FBRyxzQkFBYyxDQUFDO0FBRTVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEdHO0FBQ1UsdUJBQWUsR0FBVTtJQUNwQyxrRUFBa0U7SUFDbEUsd0RBQXdEO0lBQ3hELGNBQU8sQ0FBQyxZQUFLLEVBQ0w7UUFDRSxVQUFVLEVBQUUsVUFBQyxZQUEwQixFQUFFLGNBQThCO21CQUN2RCxJQUFJLFlBQUssQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDO1FBQXZDLENBQXVDO1FBQ3ZELElBQUksRUFBRSxDQUFDLDRCQUFZLEVBQUUscUNBQWMsQ0FBQztLQUNyQyxDQUFDO0lBQ1YsNEJBQVk7SUFDWixjQUFPLENBQUMscUNBQWMsRUFBRSxFQUFDLFFBQVEsRUFBRSx5Q0FBa0IsRUFBQyxDQUFDO0lBQ3ZELGNBQU8sQ0FBQyx1Q0FBZSxFQUFFLEVBQUMsUUFBUSxFQUFFLDJDQUFtQixFQUFDLENBQUM7SUFDekQsY0FBTyxDQUFDLDRCQUFZLEVBQUUsRUFBQyxRQUFRLEVBQUUsNkJBQWEsRUFBQyxDQUFDO0NBQ2pELENBQUM7QUFFRjs7OztHQUlHO0FBQ1UscUJBQWEsR0FBRyx1QkFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBodHRwIG1vZHVsZSBwcm92aWRlcyBzZXJ2aWNlcyB0byBwZXJmb3JtIGh0dHAgcmVxdWVzdHMuIFRvIGdldCBzdGFydGVkLCBzZWUgdGhlIHtAbGluayBIdHRwfVxuICogY2xhc3MuXG4gKi9cbmltcG9ydCB7cHJvdmlkZSwgUHJvdmlkZXJ9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtIdHRwLCBKc29ucH0gZnJvbSAnLi9zcmMvaHR0cC9odHRwJztcbmltcG9ydCB7WEhSQmFja2VuZCwgWEhSQ29ubmVjdGlvbn0gZnJvbSAnLi9zcmMvaHR0cC9iYWNrZW5kcy94aHJfYmFja2VuZCc7XG5pbXBvcnQge0pTT05QQmFja2VuZCwgSlNPTlBCYWNrZW5kXywgSlNPTlBDb25uZWN0aW9ufSBmcm9tICcuL3NyYy9odHRwL2JhY2tlbmRzL2pzb25wX2JhY2tlbmQnO1xuaW1wb3J0IHtCcm93c2VyWGhyfSBmcm9tICcuL3NyYy9odHRwL2JhY2tlbmRzL2Jyb3dzZXJfeGhyJztcbmltcG9ydCB7QnJvd3Nlckpzb25wfSBmcm9tICcuL3NyYy9odHRwL2JhY2tlbmRzL2Jyb3dzZXJfanNvbnAnO1xuaW1wb3J0IHtCYXNlUmVxdWVzdE9wdGlvbnMsIFJlcXVlc3RPcHRpb25zfSBmcm9tICcuL3NyYy9odHRwL2Jhc2VfcmVxdWVzdF9vcHRpb25zJztcbmltcG9ydCB7Q29ubmVjdGlvbkJhY2tlbmR9IGZyb20gJy4vc3JjL2h0dHAvaW50ZXJmYWNlcyc7XG5pbXBvcnQge0Jhc2VSZXNwb25zZU9wdGlvbnMsIFJlc3BvbnNlT3B0aW9uc30gZnJvbSAnLi9zcmMvaHR0cC9iYXNlX3Jlc3BvbnNlX29wdGlvbnMnO1xuZXhwb3J0IHtSZXF1ZXN0fSBmcm9tICcuL3NyYy9odHRwL3N0YXRpY19yZXF1ZXN0JztcbmV4cG9ydCB7UmVzcG9uc2V9IGZyb20gJy4vc3JjL2h0dHAvc3RhdGljX3Jlc3BvbnNlJztcblxuZXhwb3J0IHtcbiAgUmVxdWVzdE9wdGlvbnNBcmdzLFxuICBSZXNwb25zZU9wdGlvbnNBcmdzLFxuICBDb25uZWN0aW9uLFxuICBDb25uZWN0aW9uQmFja2VuZFxufSBmcm9tICcuL3NyYy9odHRwL2ludGVyZmFjZXMnO1xuXG5leHBvcnQge
|