v1.8.0.0
The Ontada FHIR Server documentation provides information for retrieving patient data from the Common Clinical Data Set, as defined by the 2015 Edition ONC Certification criteria. This documentation is intended to meet applicable certification criteria, as well as aid clients who want to consume these APIs. Access is based on HL7® FHIR® version R4. More information can be found on the FHIR Website.
The Ontada FHIR Server uses OAuth2.0 and Open ID Connect for authentication and authorization.
The /authorize and /token endpoints of the Auth server can be found by calling the /metadata
Capability Statement (see documentation)
or /.well-known/smart-configuration
(see documentation) endpoints.
For more information about registering and launching applications, please reach out to support.
For EHR embedded application launches, clients will use the SMART App Authorization 1.0 specification.
The Ontada FHIR Server also supports Client Credentials for authentication. A client id and secret are passed to the token endpoint to obtain an access token.
When a token is obtained through client credentials, the client is required to include a header named practicePublicId
when calling the APIs.
This header must hold the value of the iKnowMed practice that the client is requesting information about. This value is crucial for validation and analytical purposes.
It is the same value as the FHIR Organization id
field.
The Ontada FHIR Server is a REST-based API implementation. FHIR resources are accessed through HTTP protocol. Data can be retrieved for each resource using search or read APIs. Each search API has its own set of usable query parameters.
Ontada supports the standard JSON and FHIR media type as specified for R4 FHIR.
If no Accept header is included in the request, the media type will default to application/json+fhir.
Ontada supports all FHIR compliant date, date time, and timestamp formats as specified by the R4 FHIR Data Types.
Ontada supports the following HTTP verbs:
GET
POST
It is expected most READ/SEARCH options will use a GET verb with query parameters however a POST with x-www-form-urlencoded body parameters is also supported.
With some of the search APIs, the server may return Provenance resources that outline the parties and processes involved in bringing about the resources.
They will be included in the end of the Bundle entry list.
Including the _revinclude
parameter in the query will achieve this in the relevant APIs.
You can also retrieve Provenance data by calling the Provenance API directly.
The Ontada FHIR Server undergoes scheduled downtime once a week, typically between 1-3 AM Eastern Time on Sundays. For more details, please contact support.
Below are the common error responses that may be returned by the FHIR Servers. In each case, an OperationOutcome resource will be returned in the response body:
400 Bad Request: The server could not understand the request due to invalid syntax.
401 Unauthorized: The client must authenticate itself to get the requested response.
403 Forbidden: The client does not have access rights to the content.
404 Not Found: The server can not find the requested resource.
429 Too Many Requests: The client has exceeded the rate limit in requests per second and will receive this response code until usage falls below the rate limit.
500 Internal Server Error: The server has encountered a situation it doesn't know how to handle.
Example OperationOutcome response:
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "processing",
"diagnostics": "Invalid input"
}
]
}
Consumers of these APIs should follow best practices when making requests. These include, but are not limited to, the following:
Reuse the access token obtained through client credentials; there is no need to acquire a new token for every API call. The "exp" field in the token indicates when a new token will be required.
Only call for data that are absolutely needed for the purpose of the application.
Cache data when possible to avoid unnecessary API calls.
When applicable, use date ranges to get only the data that are needed.
For precautionary measures, we have implemented API rate limiting. This restricts the number of requests a client can make within a specified time frame. Please reach out to support to learn more.
A client will have certain objectives in what data it needs to retrieve. Here's an overview of the best practices for different types of data retrieval. Further specificity may be found in each search API description in the FHIR Resources section.
Active Patient
This is a patient who has an active CarePlan or MedicationRequest in place.
Active Clinical Data
This refers to any clinical information about a patient that is relevant today. It can be either Recent or Historical.
Recent Clinical Data
This includes any clinical information for a patient that was recorded within the last 30 days. For an Active Patient, these data are typically linked to their recent visits. If a patient isn't an Active Patient, it's unlikely that they have any Recent Clinical Data.
Historical Clinical Data
This covers clinical information that was recorded more than 30 days ago. This type of data can come with different labels like draft, active, on-hold, completed, or cancelled.
Active Clinical Data Best Practice
This practice is for applications that want to access a patient’s current records.
Recent Clinical Data Best Practice
This practice is for applications that want access to recent health records just before, during, or shortly after a patient visit. This practice focuses on capturing all relevant data within this immediate timeframe without targeting specific types of data. This practice timeframe is up to 30 days prior to the current date. An example of using this practice is to query for new lab results of any category or code for a patient that had a visit the previous week.
Targeted Historical Data Best Practice
This practice is for applications aiming to search for historical data. Applications must clearly define the data type (using categories or codes), the precise time period (up to 3 months), or any other relevant qualifiers to narrow the search request, ensuring efficient execution. Historical Clinical Data should be accessed in a limited and focused manner, avoiding broad or extensive searches. For comprehensive patient histories, please consult the Patient Data Export section.
A client that desires to obtain all clinical data for a patient may do so as required by § 170.315(b)(10) Electronic Health Information (EHI) Export. Please see your practice representative for details.
This operation will generate a FHIR R4 Capability Statement documenting current server capabilties. The data generated is up to date as to currently available resources and operations. The Capability Statement supersedes anything found in this API guide or the OpenAPI document.
References:
{- "resourceType": "CapabilityStatement",
- "id": "c559aff3-873d-4395-a77d-e02c96b0b975",
- "version": "iKnowMed G2 1.0",
- "name": "SMART on FHIR Conformance Statement",
- "status": "active",
- "date": "2022-08-17T15:08:56.061-07:00",
- "publisher": "McKesson",
- "description": "Describes capabilities of this server",
- "kind": "instance",
- "software": {
- "name": "HAPI FHIR Server",
- "version": "6.0.4"
}, - "fhirVersion": "4.0.1",
- "format": [
- "application/fhir+xml",
- "xml",
- "application/fhir+json",
- "json"
], - "rest": [
- {
- "mode": "server",
- "documentation": "All the functionality defined in FHIR",
- "security": {
- "extension": [
- {
- "extension": [
]
}
], - "cors": true,
- "service": [
- {
- "coding": [
- {
- "code": "SMART-on-FHIR",
- "display": "SMART-on-FHIR"
}
], - "text": "OAuth2 using SMART-on-FHIR profile (see http://docs.smarthealthit.org)"
}
]
}, - "resource": [
- {
- "type": "AllergyIntolerance",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "patient",
- "type": "string",
- "documentation": "Who the sensitivity is for"
}
]
}, - {
- "type": "Appointment",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*",
- "Appointment:participant:actor:Location",
- "Appointment:participant:actor:Patient"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "date",
- "type": "date",
- "documentation": "Appointment date/time."
}, - {
- "name": "patient",
- "type": "string",
- "documentation": "One of the individuals of the appointment is this patient"
}, - {
- "name": "status",
- "type": "token",
- "documentation": "The overall status of the appointment"
}
]
}, - {
- "type": "Binary",
- "interaction": [
- {
- "code": "read"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
]
}, - {
- "type": "CarePlan",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*",
- "CarePlan:actionresulting",
- "CarePlan:actionresultingmedication",
- "CarePlan:activityreference",
- "CarePlan:activityreferencemedication"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "_id",
- "type": "token",
- "documentation": "The ID of the resource"
}, - {
- "name": "category",
- "type": "token",
- "documentation": "Type of plan"
}, - {
- "name": "date",
- "type": "date",
- "documentation": "Time period plan covers"
}, - {
- "name": "patient",
- "type": "string",
- "documentation": "Who the care plan is for"
}, - {
- "name": "status",
- "type": "token",
- "documentation": "draft | active | on-hold | revoked | completed | entered-in-error | unknown"
}, - {
- "name": "subject",
- "type": "string",
- "documentation": "Who the care plan is for"
}
]
}, - {
- "type": "CareTeam",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "patient",
- "type": "string",
- "documentation": "Who care team is for"
}, - {
- "name": "status",
- "type": "string",
- "documentation": "proposed | active | suspended | inactive | entered-in-error"
}
]
}, - {
- "type": "Condition",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "patient",
- "type": "string",
- "documentation": "Who has the condition?"
}, - {
- "name": "category",
- "type": "token",
- "documentation": "The category of the condition"
}, - {
- "name": "clinical-status",
- "type": "token",
- "documentation": "The clinical status of the condition"
}, - {
- "name": "code",
- "type": "token",
- "documentation": "Code for the condition"
}, - {
- "name": "onset-date",
- "type": "date",
- "documentation": "Date related onsets (dateTime and Period)"
}
]
}, - {
- "type": "Device",
- "interaction": [
- {
- "code": "search-type"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "patient",
- "type": "string",
- "documentation": "Patient information, if the resource is affixed to a person"
}
]
}, - {
- "type": "DiagnosticReport",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "patient",
- "type": "string",
- "documentation": "The subject of the report if a patient"
}, - {
- "name": "category",
- "type": "string",
- "documentation": "Which diagnostic discipline/department created the report"
}, - {
- "name": "code",
- "type": "token",
- "documentation": "The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result"
}, - {
- "name": "date",
- "type": "date",
- "documentation": "The clinically relevant time of the report"
}
]
}, - {
- "type": "DocumentReference",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "_id",
- "type": "token",
- "documentation": "The ID of the resource"
}, - {
- "name": "category",
- "type": "token",
- "documentation": "Categorization of document"
}, - {
- "name": "date",
- "type": "date",
- "documentation": "When this document reference was created"
}, - {
- "name": "patient",
- "type": "string",
- "documentation": "Who/what is the subject of the document"
}, - {
- "name": "period",
- "type": "date",
- "documentation": "Time of service that is being documented"
}, - {
- "name": "status",
- "type": "string",
- "documentation": "current | superseded | entered-in-error"
}, - {
- "name": "type",
- "type": "token",
- "documentation": "Kind of document (LOINC if possible)"
}
]
}, - {
- "type": "Encounter",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "patient",
- "type": "string",
- "documentation": "The patient or group present at the encounter"
}, - {
- "name": "class",
- "type": "token",
- "documentation": "Classification of patient encounter"
}, - {
- "name": "date",
- "type": "date",
- "documentation": "A date within the period the Encounter lasted"
}, - {
- "name": "service-provider.code",
- "type": "token",
- "documentation": "The organization (facility) responsible for this encounter"
}, - {
- "name": "type",
- "type": "token",
- "documentation": "Specific type of encounter"
}
]
}, - {
- "type": "Goal",
- "interaction": [
- {
- "code": "search-type"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "patient",
- "type": "string",
- "documentation": "Who this goal is intended for"
}, - {
- "name": "start-date",
- "type": "date",
- "documentation": "When goal pursuit begins"
}
]
}, - {
- "type": "Immunization",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "patient",
- "type": "string",
- "documentation": "The patient for the vaccination record"
}
]
}, - {
- "type": "Location",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "address",
- "type": "string",
- "documentation": "A (part of the) address of the location"
}, - {
- "name": "identifier",
- "type": "string",
- "documentation": "An identifier for the location"
}, - {
- "name": "name",
- "type": "string",
- "documentation": "A portion of the location's name or alias"
}
]
}, - {
- "type": "MedicationAdministration",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "patient",
- "type": "string",
- "documentation": "The identity of a patient to list administrations for"
}, - {
- "name": "code",
- "type": "token",
- "documentation": "Return administrations of this medication code"
}, - {
- "name": "effective-time",
- "type": "date",
- "documentation": "Date administration happened (or did not happen)"
}, - {
- "name": "medication",
- "type": "token",
- "documentation": "Return administrations of this medication resource"
}
]
}, - {
- "type": "MedicationRequest",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "MedicationRequest:medication"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "patient",
- "type": "string",
- "documentation": "Returns prescriptions for a specific patient"
}, - {
- "name": "authoredon",
- "type": "date",
- "documentation": "Return prescriptions written on this date"
}, - {
- "name": "intent",
- "type": "string",
- "documentation": "Returns prescriptions with different intents"
}, - {
- "name": "status",
- "type": "string",
- "documentation": "Status of the prescription"
}
]
}, - {
- "type": "MedicationStatement",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "MedicationStatement:medication"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "patient",
- "type": "string",
- "documentation": "Returns statements for a specific patient."
}, - {
- "name": "effective",
- "type": "date",
- "documentation": "Date when patient was taking (or not taking) the medication"
}
]
}, - {
- "type": "Observation",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "patient",
- "type": "string",
- "documentation": "The subject that the observation is about (if patient)"
}, - {
- "name": "category",
- "type": "string",
- "documentation": "The classification of the type of observation"
}, - {
- "name": "code",
- "type": "token",
- "documentation": "The code of the observation type"
}, - {
- "name": "date",
- "type": "date",
- "documentation": "Obtained date/time. If the obtained element is a period, a date that falls in the period"
}
]
}, - {
- "type": "OperationDefinition",
- "interaction": [
- {
- "code": "read"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
]
}, - {
- "type": "Organization",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "identifier",
- "type": "token",
- "documentation": "Any identifier for the organization (not the accreditation issuer's identifier)"
}, - {
- "name": "patient",
- "type": "token"
}
]
}, - {
- "type": "Patient",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*",
- "Patient:generalPractitioner:Practitioner"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "birthdate",
- "type": "date",
- "documentation": "The patient's date of birth"
}, - {
- "name": "family",
- "type": "string",
- "documentation": "A portion of the family name of the patient"
}, - {
- "name": "gender",
- "type": "token",
- "documentation": "Gender of the patient"
}, - {
- "name": "given",
- "type": "string",
- "documentation": "A portion of the given name of the patient"
}, - {
- "name": "identifier",
- "type": "token",
- "documentation": "A patient identifier"
}, - {
- "name": "name",
- "type": "string",
- "documentation": "A server defined search that may match any of the string fields in the HumanName, including family, give, prefix, suffix, suffix, and/or text"
}, - {
- "name": "practicePublicId",
- "type": "string"
}
]
}, - {
- "type": "Practitioner",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "_has",
- "type": "string"
}, - {
- "name": "_id",
- "type": "token",
- "documentation": "The ID of the resource"
}, - {
- "name": "family",
- "type": "string",
- "documentation": "A portion of the family name"
}, - {
- "name": "given",
- "type": "string",
- "documentation": "A portion of the given name"
}, - {
- "name": "identifier",
- "type": "token",
- "documentation": "A practitioner's Identifier"
}, - {
- "name": "name",
- "type": "string",
- "documentation": "A server defined search that may match any of the string fields in the HumanName, including family, give, prefix, suffix, suffix, and/or text"
}
]
}, - {
- "type": "Procedure",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "patient",
- "type": "string",
- "documentation": "Search by subject - a patient"
}, - {
- "name": "date",
- "type": "date",
- "documentation": "When the procedure was performed"
}
]
}, - {
- "type": "Provenance",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "Provenance:target"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "target",
- "type": "reference",
- "documentation": "Target Reference(s) (usually version specific)"
}
]
}, - {
- "type": "ServiceRequest",
- "interaction": [
- {
- "code": "search-type"
}, - {
- "code": "read"
}
], - "searchInclude": [
- "*"
], - "searchRevInclude": [
- "Provenance:target"
], - "searchParam": [
- {
- "name": "authored",
- "type": "date",
- "documentation": "Date request signed"
}, - {
- "name": "patient",
- "type": "string",
- "documentation": "Search by subject - a patient"
}
]
}
]
}
]
}
You can use the AllergyIntolerance REST API to read and search for patient AllergyIntolerance FHIR resources.
id required | string Example: 123 The resource ID |
{- "resourceType": "AllergyIntolerance",
- "id": "1234567",
- "meta": {
}, - "extension": [
- {
}
], - "clinicalStatus": {
- "coding": [
]
}, - "verificationStatus": {
- "coding": [
- {
- "code": "confirmed"
}
]
}, - "code": {
- "coding": [
], - "text": "Sulfamide"
}, - "patient": {
- "reference": "Patient/268201F1AA9764DCE0540014IW29IQS7",
- "display": "Patient, Example"
}, - "recordedDate": "2022-07-21T00:00:00-07:00",
- "reaction": [
- {
- "manifestation": [
- {
- "coding": [
]
}
]
}, - {
- "manifestation": [
- {
- "coding": [
]
}
]
}
]
}
Search operation to return AllergyIntolerance resources
patient required | string Who the sensitivity is for. Identified by patient public ID. |
_count | number The number of resources to return |
_sort | string Specify which fields to sort by and the direction of the sort (ex: |
{- "resourceType": "Bundle",
- "id": "B123",
- "meta": {
- "lastUpdated": "2022-08-22T13:03:00.807-07:00"
}, - "type": "searchset",
- "total": 1,
- "entry": [
- {
- "resource": {
- "resource": {
- "resourceType": "AllergyIntolerance",
- "id": "D444445",
- "meta": {
}, - "clinicalStatus": {
- "coding": [
]
}, - "verificationStatus": {
- "coding": [
- {
- "code": "confirmed"
}
]
}, - "code": {
- "text": "Penicillins"
}, - "patient": {
- "reference": "Patient/123",
- "display": "Last, Given"
}, - "reaction": [
- {
- "manifestation": [
]
}
]
}
}
}
]
}
Read a Binary instance by its public ID. This id is usually found in results from the DocumentReference search API. The contentType may be application/xml, application/pdf, text/html, image/jpeg, etc. The data is base64 encoded.
id required | string Example: 123 The resource ID |
{- "resourceType": "Binary",
- "id": "1234567",
- "contentType": "application/xml",
- "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENsaW5pY2FsRG9jdW1lbnQgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM9InVybjpobDctb3JnOnYzIiB4c2k6c2NoZW1hTG9jYXRpb249InVybjpobDctb3JnOnYzIGluZnJhc3RydWN0dXJlL2NkYS9DREFfU0RUQy54c2QiPgogIDxyZWFsbUNvZGUgY29kZT0iVVMiLz4KICA8dHlwZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEuMyIgZXh0ZW5zaW9uPSJQT0NEX0hEMDAwMDQwIi8+CiAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMS4yIiBleHRlbnNpb249IjIwMTUtMDgtMDEiLz4KICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4xLjEiLz4KICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4xLjEiIGV4dGVuc2lvbj0iMjAxNS0wOC0wMSIvPgogIDxpZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4zLjYyMyIgZXh0ZW5zaW9uPSJQYXRpZW50UmVjb3JkQ0NEX1NtaXRoZXlfMjAyMjEwMTdfMjE0MV80OS41NDMiLz4KICA8Y29kZSBjb2RlPSIzNDEzMy05IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiLz4KICA8dGl0bGU+U21pdGhleSwgSGFycnkgUGF0aWVudCBSZWNvcmQgQ0NEPC90aXRsZT4KICA8ZWZmZWN0aXZlVGltZSB2YWx1ZT0iMjAyMjEwMTcyMTQxNDkrMDAwMCIvPgogIDxjb25maWRlbnRpYWxpdHlDb2RlIGNvZGU9Ik4iIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjUuMjUiLz4KICA8bGFuZ3VhZ2VDb2RlIGNvZGU9ImVuLVVTIi8+CiAgPHJlY29yZFRhcmdldD4KICAgIDxwYXRpZW50Um9sZT4KICAgICAgPGlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjMuNjIzIiBleHRlbnNpb249Ijc2MTM5NiIvPgogICAgICA8YWRkciB1c2U9IkhQIj48c3RyZWV0QWRkcmVzc0xpbmU+Njg1MyBDYW1kZW4gUGxhY2U8L3N0cmVldEFkZHJlc3NMaW5lPjxjaXR5PkxhcyBWZWdhczwvY2l0eT48c3RhdGU+TlY8L3N0YXRlPjxwb3N0YWxDb2RlPjg5MTMxPC9wb3N0YWxDb2RlPjwvYWRkcj4KICAgICAgPHRlbGVjb20gdmFsdWU9InRlbDo1NTUtNTU1LTU1NTUiIHVzZT0iTUMiLz4KICAgICAgPHRlbGVjb20gdmFsdWU9Im1haWx0bzpoc21pdGhleUB5YWhvby5jb20iIHVzZT0iRElSIi8+CiAgICAgIDxwYXRpZW50PgogICAgICAgIDxpZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4zLjYyMyIgZXh0ZW5zaW9uPSI3NjEzOTYiLz4KICAgICAgICA8bmFtZT48Z2l2ZW4+SGFycnk8L2dpdmVuPjxmYW1pbHk+U21pdGhleTwvZmFtaWx5PjwvbmFtZT4KICAgICAgICA8YWRtaW5pc3RyYXRpdmVHZW5kZXJDb2RlIGNvZGU9Ik0iIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjUuMSIgY29kZVN5c3RlbU5hbWU9IkhMNyBBZG1pbmlzdHJhdGl2ZSBHZW5kZXIiIGRpc3BsYXlOYW1lPSJNYWxlIi8+CiAgICAgICAgPGJpcnRoVGltZSB2YWx1ZT0iMTk4NzA2MDQiLz4KICAgICAgICA8bWFyaXRhbFN0YXR1c0NvZGUgbnVsbEZsYXZvcj0iVU5LIi8+CiAgICAgICAgPHJhY2VDb2RlIG51bGxGbGF2b3I9IlVOSyIvPgogICAgICAgIDxldGhuaWNHcm91cENvZGUgbnVsbEZsYXZvcj0iVU5LIi8+CiAgICAgICAgPGxhbmd1YWdlQ29tbXVuaWNhdGlvbj4KICAgICAgICAgIDxsYW5ndWFnZUNvZGUgbnVsbEZsYXZvcj0iVU5LIi8+CiAgICAgICAgPC9sYW5ndWFnZUNvbW11bmljYXRpb24+CiAgICAgIDwvcGF0aWVudD4KICAgIDwvcGF0aWVudFJvbGU+CiAgPC9yZWNvcmRUYXJnZXQ+CiAgPGF1dGhvcj4KICAgIDx0aW1lIHZhbHVlPSIyMDIyMTAxNzIxNDE0OSswMDAwIi8+CiAgICA8YXNzaWduZWRBdXRob3I+CiAgICAgIDxpZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My40LjYiIGV4dGVuc2lvbj0iNDAzMSIvPgogICAgICA8YWRkcj48c3RyZWV0QWRkcmVzc0xpbmU+MjE2NCBMYWtlIEZvcmVzdCBEcml2ZTwvc3RyZWV0QWRkcmVzc0xpbmU+PHN0cmVldEFkZHJlc3NMaW5lPjk3NDQgQ291bnR5IExpbmUgUm9hZDwvc3RyZWV0QWRkcmVzc0xpbmU+PGNpdHk+RWFzdCBQcm92aWRlbmNlPC9jaXR5PjxzdGF0ZT5SSTwvc3RhdGU+PHBvc3RhbENvZGU+OTQ1NTU8L3Bvc3RhbENvZGU+PC9hZGRyPgogICAgICA8dGVsZWNvbSBudWxsRmxhdm9yPSJOSSIvPgogICAgICA8YXNzaWduZWRQZXJzb24+CiAgICAgICAgPG5hbWU+PGdpdmVuPkx5bng8L2dpdmVuPjxmYW1pbHk+SW50ZXJmYWNlPC9mYW1pbHk+PC9uYW1lPgogICAgICA8L2Fzc2lnbmVkUGVyc29uPgogICAgICA8cmVwcmVzZW50ZWRPcmdhbml6YXRpb24+CiAgICAgICAgPGlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjMuNjIzIiBleHRlbnNpb249IkNCQzNENjU0ODNENjRFOTZFMDQ0MDAyMTI4NjFCMjk2Ii8+CiAgICAgICAgPG5hbWU+T25jIEhlbSBvZiBNU0g8L25hbWU+CiAgICAgICAgPHRlbGVjb20gdmFsdWU9Im1haWx0bzpEaXZpeW5pX0xibmJoaW5AbWNrZXNzb24uY29tIiB1c2U9IkRJUiIvPgogICAgICAgIDxhZGRyPjxzdHJlZXRBZGRyZXNzTGluZT4yMTY0IExha2UgRm9yZXN0IERyaXZlPC9zdHJlZXRBZGRyZXNzTGluZT48c3RyZWV0QWRkcmVzc0xpbmU+OTc0NCBDb3VudHkgTGluZSBSb2FkPC9zdHJlZXRBZGRyZXNzTGluZT48Y2l0eT5FYXN0IFByb3ZpZGVuY2U8L2NpdHk+PHN0YXRlPlJJPC9zdGF0ZT48cG9zdGFsQ29kZT45NDU1NTwvcG9zdGFsQ29kZT48L2FkZHI+CiAgICAgIDwvcmVwcmVzZW50ZWRPcmdhbml6YXRpb24+CiAgICA8L2Fzc2lnbmVkQXV0aG9yPgogIDwvYXV0aG9yPgogIDxpbmZvcm1hbnQ+CiAgICA8YXNzaWduZWRFbnRpdHk+CiAgICAgIDxpZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4zLjYyMyIgZXh0ZW5zaW9uPSIwODQyNjAiLz4KICAgICAgPGFkZHIgbnVsbEZsYXZvcj0iTkkiLz4KICAgICAgPHRlbGVjb20gbnVsbEZsYXZvcj0iTkkiLz4KICAgICAgPGFzc2lnbmVkUGVyc29uPgogICAgICAgIDxuYW1lPjxnaXZlbj5MYWNpZTwvZ2l2ZW4+PGZhbWlseT5SYXZlbnNjcmFmdDwvZmFtaWx5PjwvbmFtZT4KICAgICAgPC9hc3NpZ25lZFBlcnNvbj4KICAgICAgPHJlcHJlc2VudGVkT3JnYW5pemF0aW9uPgogICAgICAgIDxpZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4zLjYyMyIgZXh0ZW5zaW9uPSJDQkMzRDY1NDgzRDY0RTk2RTA0NDAwMjEyODYxQjI5NiIvPgogICAgICAgIDxuYW1lPk9uYyBIZW0gb2YgTVNIPC9uYW1lPgogICAgICAgIDx0ZWxlY29tIHZhbHVlPSJtYWlsdG86RGl2aXluaV9MYm5iaGluQG1ja2Vzc29uLmNvbSIgdXNlPSJESVIiLz4KICAgICAgICA8YWRkcj48c3RyZWV0QWRkcmVzc0xpbmU+MjE2NCBMYWtlIEZvcmVzdCBEcml2ZTwvc3RyZWV0QWRkcmVzc0xpbmU+PHN0cmVldEFkZHJlc3NMaW5lPjk3NDQgQ291bnR5IExpbmUgUm9hZDwvc3RyZWV0QWRkcmVzc0xpbmU+PGNpdHk+RWFzdCBQcm92aWRlbmNlPC9jaXR5PjxzdGF0ZT5SSTwvc3RhdGU+PHBvc3RhbENvZGU+OTQ1NTU8L3Bvc3RhbENvZGU+PC9hZGRyPgogICAgICA8L3JlcHJlc2VudGVkT3JnYW5pemF0aW9uPgogICAgPC9hc3NpZ25lZEVudGl0eT4KICA8L2luZm9ybWFudD4KICA8Y3VzdG9kaWFuPgogICAgPGFzc2lnbmVkQ3VzdG9kaWFuPgogICAgICA8cmVwcmVzZW50ZWRDdXN0b2RpYW5Pcmdhbml6YXRpb24+CiAgICAgICAgPGlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjMuNjIzIi8+CiAgICAgICAgPG5hbWU+TWNLZXNzb24gU3BlY2lhbHR5IEhlYWx0aDwvbmFtZT4KICAgICAgICA8dGVsZWNvbSB2YWx1ZT0idGVsOjgwMCAzODEgMjYzNyIgdXNlPSJXUCIvPgogICAgICAgIDxhZGRyPjxzdHJlZXRBZGRyZXNzTGluZT4xMDEwMSBXb29kbG9jaCBGb3Jlc3Q8L3N0cmVldEFkZHJlc3NMaW5lPjxjaXR5PlRoZSBXb29kbGFuZHM8L2NpdHk+PGNvdW50cnk+VVNBPC9jb3VudHJ5PjxzdGF0ZT5UWDwvc3RhdGU+PHBvc3RhbENvZGU+NzczODA8L3Bvc3RhbENvZGU+PC9hZGRyPgogICAgICA8L3JlcHJlc2VudGVkQ3VzdG9kaWFuT3JnYW5pemF0aW9uPgogICAgPC9hc3NpZ25lZEN1c3RvZGlhbj4KICA8L2N1c3RvZGlhbj4KICA8ZG9jdW1lbnRhdGlvbk9mPgogICAgPHNlcnZpY2VFdmVudCBjbGFzc0NvZGU9IlBDUFIiPgogICAgICA8ZWZmZWN0aXZlVGltZT4KICAgICAgICA8bG93IHZhbHVlPSIyMDIyMTAxNyIvPgogICAgICAgIDxoaWdoIHZhbHVlPSIyMDIyMTAxNyIvPgogICAgICA8L2VmZmVjdGl2ZVRpbWU+CiAgICAgIDxwZXJmb3JtZXIgdHlwZUNvZGU9IlBSRiI+CiAgICAgICAgPGFzc2lnbmVkRW50aXR5PgogICAgICAgICAgPGlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjMuNjIzIiBleHRlbnNpb249IjA4NDI2MCIvPgogICAgICAgICAgPGFkZHIgbnVsbEZsYXZvcj0iTkkiLz4KICAgICAgICAgIDx0ZWxlY29tIG51bGxGbGF2b3I9Ik5JIi8+CiAgICAgICAgICA8YXNzaWduZWRQZXJzb24+CiAgICAgICAgICAgIDxuYW1lPjxnaXZlbj5MYWNpZTwvZ2l2ZW4+PGZhbWlseT5SYXZlbnNjcmFmdDwvZmFtaWx5PjwvbmFtZT4KICAgICAgICAgIDwvYXNzaWduZWRQZXJzb24+CiAgICAgICAgICA8cmVwcmVzZW50ZWRPcmdhbml6YXRpb24+CiAgICAgICAgICAgIDxpZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4zLjYyMyIgZXh0ZW5zaW9uPSJDQkMzRDY1NDgzRDY0RTk2RTA0NDAwMjEyODYxQjI5NiIvPgogICAgICAgICAgICA8bmFtZT5PbmMgSGVtIG9mIE1TSDwvbmFtZT4KICAgICAgICAgICAgPHRlbGVjb20gdmFsdWU9Im1haWx0bzpEaXZpeW5pX0xibmJoaW5AbWNrZXNzb24uY29tIiB1c2U9IkRJUiIvPgogICAgICAgICAgICA8YWRkcj48c3RyZWV0QWRkcmVzc0xpbmU+MjE2NCBMYWtlIEZvcmVzdCBEcml2ZTwvc3RyZWV0QWRkcmVzc0xpbmU+PHN0cmVldEFkZHJlc3NMaW5lPjk3NDQgQ291bnR5IExpbmUgUm9hZDwvc3RyZWV0QWRkcmVzc0xpbmU+PGNpdHk+RWFzdCBQcm92aWRlbmNlPC9jaXR5PjxzdGF0ZT5SSTwvc3RhdGU+PHBvc3RhbENvZGU+OTQ1NTU8L3Bvc3RhbENvZGU+PC9hZGRyPgogICAgICAgICAgPC9yZXByZXNlbnRlZE9yZ2FuaXphdGlvbj4KICAgICAgICA8L2Fzc2lnbmVkRW50aXR5PgogICAgICA8L3BlcmZvcm1lcj4KICAgICAgPHBlcmZvcm1lciB0eXBlQ29kZT0iUFJGIj4KICAgICAgICA8YXNzaWduZWRFbnRpdHk+CiAgICAgICAgICA8aWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMy42MjMiIGV4dGVuc2lvbj0iNTE3OTM1MTcwMyIvPgogICAgICAgICAgPGFkZHIgbnVsbEZsYXZvcj0iTkkiLz4KICAgICAgICAgIDx0ZWxlY29tIG51bGxGbGF2b3I9Ik5JIi8+CiAgICAgICAgICA8YXNzaWduZWRQZXJzb24+CiAgICAgICAgICAgIDxuYW1lPjxnaXZlbj5Nb29yPC9naXZlbj48ZmFtaWx5Pk9tYW48L2ZhbWlseT48L25hbWU+CiAgICAgICAgICA8L2Fzc2lnbmVkUGVyc29uPgogICAgICAgICAgPHJlcHJlc2VudGVkT3JnYW5pemF0aW9uPgogICAgICAgICAgICA8aWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMy42MjMiIGV4dGVuc2lvbj0iQ0JDM0Q2NTQ4M0Q2NEU5NkUwNDQwMDIxMjg2MUIyOTYiLz4KICAgICAgICAgICAgPG5hbWU+T25jIEhlbSBvZiBNU0g8L25hbWU+CiAgICAgICAgICAgIDx0ZWxlY29tIHZhbHVlPSJtYWlsdG86RGl2aXluaV9MYm5iaGluQG1ja2Vzc29uLmNvbSIgdXNlPSJESVIiLz4KICAgICAgICAgICAgPGFkZHI+PHN0cmVldEFkZHJlc3NMaW5lPjIxNjQgTGFrZSBGb3Jlc3QgRHJpdmU8L3N0cmVldEFkZHJlc3NMaW5lPjxzdHJlZXRBZGRyZXNzTGluZT45NzQ0IENvdW50eSBMaW5lIFJvYWQ8L3N0cmVldEFkZHJlc3NMaW5lPjxjaXR5PkVhc3QgUHJvdmlkZW5jZTwvY2l0eT48c3RhdGU+Ukk8L3N0YXRlPjxwb3N0YWxDb2RlPjk0NTU1PC9wb3N0YWxDb2RlPjwvYWRkcj4KICAgICAgICAgIDwvcmVwcmVzZW50ZWRPcmdhbml6YXRpb24+CiAgICAgICAgPC9hc3NpZ25lZEVudGl0eT4KICAgICAgPC9wZXJmb3JtZXI+CiAgICA8L3NlcnZpY2VFdmVudD4KICA8L2RvY3VtZW50YXRpb25PZj4KICA8Y29tcG9uZW50T2Y+CiAgICA8ZW5jb21wYXNzaW5nRW5jb3VudGVyPgogICAgICA8aWQgcm9vdD0iY2Y3ZjMzNDUtYzgzNi00YzBiLWFhZDYtZjNlNjk1NTgwOTA0Ii8+CiAgICAgIDxlZmZlY3RpdmVUaW1lIHZhbHVlPSIyMDIyMTAxNyIvPgogICAgICA8bG9jYXRpb24+CiAgICAgICAgPGhlYWx0aENhcmVGYWNpbGl0eT4KICAgICAgICAgIDxsb2NhdGlvbj4KICAgICAgICAgICAgPG5hbWU+PGdpdmVuPlNhbiBGcmFuY2lzY28gTWVkaWNhbCBPbmNvbG9neTwvZ2l2ZW4+PC9uYW1lPgogICAgICAgICAgPC9sb2NhdGlvbj4KICAgICAgICA8L2hlYWx0aENhcmVGYWNpbGl0eT4KICAgICAgPC9sb2NhdGlvbj4KICAgIDwvZW5jb21wYXNzaW5nRW5jb3VudGVyPgogIDwvY29tcG9uZW50T2Y+CiAgPGNvbXBvbmVudD4KICAgIDxzdHJ1Y3R1cmVkQm9keT4KICAgICAgPGNvbXBvbmVudD4KICAgICAgICA8c2VjdGlvbiBudWxsRmxhdm9yPSJOSSI+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjkiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi45Ii8+CiAgICAgICAgICA8Y29kZSBjb2RlPSI1MTg0Ny0yIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9IkFTU0VTU01FTlQgQU5EIFBMQU4iLz4KICAgICAgICAgIDx0aXRsZT5Bc3Nlc3NtZW50IGFuZCBQbGFuPC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGF0ZTwvdGg+CgkJCQk8dGg+QXNzZXNzbWVudDwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+CgkJCTx0cj48dGQgY29sc3Bhbj0iMiI+Tk9ORTwvdGQ+PC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvdGV4dD4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi42LjEiIGV4dGVuc2lvbj0iMjAxNS0wOC0wMSIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi42Ii8+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjYiIGV4dGVuc2lvbj0iMjAxNS0wOC0wMSIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi42LjEiLz4KICAgICAgICAgIDxjb2RlIGNvZGU9IjQ4NzY1LTIiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iQWxsZXJnaWVzLCBhZHZlcnNlIHJlYWN0aW9ucywgYWxlcnRzIi8+CiAgICAgICAgICA8dGl0bGU+QWxsZXJnaWVzIGFuZCBBZHZlcnNlIFJlYWN0aW9uczwvdGl0bGU+CiAgICAgICAgICA8dGV4dD48dGFibGU+CiAgICA8dGhlYWQ+CiAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk1lZGljYXRpb24vR3JvdXAgTmFtZTwvdGg+CiAgICAgICAgICAgICAgICA8dGg+UmVhY3Rpb248L3RoPgogICAgICAgICAgICAgICAgPHRoPlNldmVyaXR5PC90aD4KICAgICAgICAgICAgICAgIDx0aD5EYXRlPC90aD4KICAgICAgICA8L3RyPgogICAgPC90aGVhZD4KICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgIDx0ciBJRD0iQWxlcnRPQlMtMTAwMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+U3VsZmFtaWRlPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5CcmFkeWNhcmRpYSwgSXRjaHkgc2tpbiBlcnVwdGlvbiwgQ2hpbGw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPk1vZGVyYXRlPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4wOC8xMS8yMDIyPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHIgSUQ9IkFsZXJ0T0JTLTEwMDEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnBlbmljaWxsaW4gRzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPk1pbGQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjA3LzIxLzIwMjI8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0ciBJRD0iQWxlcnRPQlMtMTAwMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+YXNwaXJpbjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+QW54aWV0eTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+TWlsZCB0byBtb2RlcmF0ZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+MDgvMTEvMjAyMjwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgPC90Ym9keT4KPC90YWJsZT4KPC90ZXh0PgogICAgICAgICAgPGVudHJ5PgogICAgICAgICAgICA8YWN0IGNsYXNzQ29kZT0iQUNUIiBtb29kQ29kZT0iRVZOIj4KICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjMwIiBleHRlbnNpb249IjIwMTUtMDgtMDEiLz4KICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjMwIi8+CiAgICAgICAgICAgICAgPGlkIHJvb3Q9IjEwMGI3MzQ5LTYwZGEtNDFmYi05NWIyLTdhNWU4NmE1YjYwYSIvPgogICAgICAgICAgICAgIDxjb2RlIGNvZGU9IjQ4NzY1LTIiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iQWxsZXJnaWVzLCBhZHZlcnNlIHJlYWN0aW9ucywgYWxlcnRzIi8+CiAgICAgICAgICAgICAgPHN0YXR1c0NvZGUgY29kZT0iYWN0aXZlIi8+CiAgICAgICAgICAgICAgPGVmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICA8bG93IHZhbHVlPSIyMDIyMTAxNzIxNDE0OSswMDAwIi8+CiAgICAgICAgICAgICAgICA8aGlnaCB2YWx1ZT0iMjAyMjEwMTcyMTQxNDkrMDAwMCIvPgogICAgICAgICAgICAgIDwvZWZmZWN0aXZlVGltZT4KICAgICAgICAgICAgICA8ZW50cnlSZWxhdGlvbnNoaXAgdHlwZUNvZGU9IlNVQkoiPgogICAgICAgICAgICAgICAgPG9ic2VydmF0aW9uIGNsYXNzQ29kZT0iT0JTIiBtb29kQ29kZT0iRVZOIj4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC43IiBleHRlbnNpb249IjIwMTQtMDYtMDkiLz4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjQuMy45MCIvPgogICAgICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjciLz4KICAgICAgICAgICAgICAgICAgPGlkIHJvb3Q9IjA3MmJmZTZlLWRiNzEtNDQzYS05MzdlLTlmNDRjNmM1NDlmZiIvPgogICAgICAgICAgICAgICAgICA8Y29kZSBjb2RlPSJBU1NFUlRJT04iIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjUuNCIgY29kZVN5c3RlbU5hbWU9IkhMNyBBY3QgQ29kZXMiIGRpc3BsYXlOYW1lPSJBY3RDb2RlLkFTU0VSVElPTiIvPgogICAgICAgICAgICAgICAgICA8dGV4dD48cmVmZXJlbmNlIHZhbHVlPSIjQWxlcnRPQlMtMTAwMCIvPjwvdGV4dD4KICAgICAgICAgICAgICAgICAgPHN0YXR1c0NvZGUgY29kZT0iY29tcGxldGVkIi8+CiAgICAgICAgICAgICAgICAgIDxlZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgICAgIDxsb3cgdmFsdWU9IjIwMjIwODExIi8+CiAgICAgICAgICAgICAgICAgIDwvZWZmZWN0aXZlVGltZT4KICAgICAgICAgICAgICAgICAgPHZhbHVlIHhzaTp0eXBlPSJDRCIgY29kZT0iNDE2MDk4MDAyIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42Ljk2IiBjb2RlU3lzdGVtTmFtZT0iU05PTUVEIENUIiBkaXNwbGF5TmFtZT0iRHJ1ZyBBbGxlcmd5IChkaXNvcmRlcikiLz4KICAgICAgICAgICAgICAgICAgPHBhcnRpY2lwYW50IHR5cGVDb2RlPSJDU00iPgogICAgICAgICAgICAgICAgICAgIDxwYXJ0aWNpcGFudFJvbGUgY2xhc3NDb2RlPSJNQU5VIj4KICAgICAgICAgICAgICAgICAgICAgIDxwbGF5aW5nRW50aXR5IGNsYXNzQ29kZT0iTU1BVCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNvZGU9IjgyMTAxIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42Ljg4IiBjb2RlU3lzdGVtTmFtZT0iUnhOb3JtIiBkaXNwbGF5TmFtZT0ic3VsZmFjZXRhbWlkZSBzb2RpdW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxvcmlnaW5hbFRleHQ+PHJlZmVyZW5jZSB2YWx1ZT0iI0FsZXJ0T0JTLTEwMDAiLz48L29yaWdpbmFsVGV4dD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9jb2RlPgogICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT5TdWxmYW1pZGU8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICA8L3BsYXlpbmdFbnRpdHk+CiAgICAgICAgICAgICAgICAgICAgPC9wYXJ0aWNpcGFudFJvbGU+CiAgICAgICAgICAgICAgICAgIDwvcGFydGljaXBhbnQ+CiAgICAgICAgICAgICAgICAgIDxlbnRyeVJlbGF0aW9uc2hpcCB0eXBlQ29kZT0iTUZTVCIgaW52ZXJzaW9uSW5kPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICA8b2JzZXJ2YXRpb24gY2xhc3NDb2RlPSJPQlMiIG1vb2RDb2RlPSJFVk4iPgogICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC45IiBleHRlbnNpb249IjIwMTQtMDYtMDkiLz4KICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuOSIvPgogICAgICAgICAgICAgICAgICAgICAgPGlkIHJvb3Q9Ijk4ZGI3ZDRjLWM3OWEtNDU5Yi05ODdjLTMxMDM1ODI2ZjJkZiIvPgogICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY29kZT0iQVNTRVJUSU9OIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My41LjQiIGNvZGVTeXN0ZW1OYW1lPSJITDcgQWN0IENvZGVzIiBkaXNwbGF5TmFtZT0iQWN0Q29kZS5BU1NFUlRJT04iLz4KICAgICAgICAgICAgICAgICAgICAgIDxzdGF0dXNDb2RlIGNvZGU9ImNvbXBsZXRlZCIvPgogICAgICAgICAgICAgICAgICAgICAgPGVmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsb3cgdmFsdWU9IjIwMjIwODExIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoaWdoIHZhbHVlPSIyMDIyMDgxMSIvPgogICAgICAgICAgICAgICAgICAgICAgPC9lZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHhzaTp0eXBlPSJDRCIgY29kZT0iNDg4NjcwMDMiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuOTYiIGNvZGVTeXN0ZW1OYW1lPSJTTk9NRUQgQ1QiIGRpc3BsYXlOYW1lPSJCcmFkeWNhcmRpYSIvPgogICAgICAgICAgICAgICAgICAgIDwvb2JzZXJ2YXRpb24+CiAgICAgICAgICAgICAgICAgIDwvZW50cnlSZWxhdGlvbnNoaXA+CiAgICAgICAgICAgICAgICAgIDxlbnRyeVJlbGF0aW9uc2hpcCB0eXBlQ29kZT0iTUZTVCIgaW52ZXJzaW9uSW5kPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICA8b2JzZXJ2YXRpb24gY2xhc3NDb2RlPSJPQlMiIG1vb2RDb2RlPSJFVk4iPgogICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC45IiBleHRlbnNpb249IjIwMTQtMDYtMDkiLz4KICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuOSIvPgogICAgICAgICAgICAgICAgICAgICAgPGlkIHJvb3Q9ImMxYTU0YThkLTYxYTgtNGVjOC04YTc4LTE5OGFkOTgyMzNhZCIvPgogICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY29kZT0iQVNTRVJUSU9OIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My41LjQiIGNvZGVTeXN0ZW1OYW1lPSJITDcgQWN0IENvZGVzIiBkaXNwbGF5TmFtZT0iQWN0Q29kZS5BU1NFUlRJT04iLz4KICAgICAgICAgICAgICAgICAgICAgIDxzdGF0dXNDb2RlIGNvZGU9ImNvbXBsZXRlZCIvPgogICAgICAgICAgICAgICAgICAgICAgPGVmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsb3cgdmFsdWU9IjIwMjIwODExIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoaWdoIHZhbHVlPSIyMDIyMDgxMSIvPgogICAgICAgICAgICAgICAgICAgICAgPC9lZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHhzaTp0eXBlPSJDRCIgY29kZT0iNDM3MjQwMDIiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuOTYiIGNvZGVTeXN0ZW1OYW1lPSJTTk9NRUQgQ1QiIGRpc3BsYXlOYW1lPSJDaGlsbCIvPgogICAgICAgICAgICAgICAgICAgIDwvb2JzZXJ2YXRpb24+CiAgICAgICAgICAgICAgICAgIDwvZW50cnlSZWxhdGlvbnNoaXA+CiAgICAgICAgICAgICAgICAgIDxlbnRyeVJlbGF0aW9uc2hpcCB0eXBlQ29kZT0iTUZTVCIgaW52ZXJzaW9uSW5kPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICA8b2JzZXJ2YXRpb24gY2xhc3NDb2RlPSJPQlMiIG1vb2RDb2RlPSJFVk4iPgogICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC45IiBleHRlbnNpb249IjIwMTQtMDYtMDkiLz4KICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuOSIvPgogICAgICAgICAgICAgICAgICAgICAgPGlkIHJvb3Q9IjVmN2JlYzU1LWZiNzItNGFlYy1hNTEzLTU2M2E4MGY4OTVhMCIvPgogICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY29kZT0iQVNTRVJUSU9OIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My41LjQiIGNvZGVTeXN0ZW1OYW1lPSJITDcgQWN0IENvZGVzIiBkaXNwbGF5TmFtZT0iQWN0Q29kZS5BU1NFUlRJT04iLz4KICAgICAgICAgICAgICAgICAgICAgIDxzdGF0dXNDb2RlIGNvZGU9ImNvbXBsZXRlZCIvPgogICAgICAgICAgICAgICAgICAgICAgPGVmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsb3cgdmFsdWU9IjIwMjIwODExIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoaWdoIHZhbHVlPSIyMDIyMDgxMSIvPgogICAgICAgICAgICAgICAgICAgICAgPC9lZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHhzaTp0eXBlPSJDRCIgY29kZT0iNjQxNDQwMDIiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuOTYiIGNvZGVTeXN0ZW1OYW1lPSJTTk9NRUQgQ1QiIGRpc3BsYXlOYW1lPSJJdGNoeSBza2luIGVydXB0aW9uIi8+CiAgICAgICAgICAgICAgICAgICAgPC9vYnNlcnZhdGlvbj4KICAgICAgICAgICAgICAgICAgPC9lbnRyeVJlbGF0aW9uc2hpcD4KICAgICAgICAgICAgICAgICAgPGVudHJ5UmVsYXRpb25zaGlwIHR5cGVDb2RlPSJTVUJKIiBpbnZlcnNpb25JbmQ9InRydWUiPgogICAgICAgICAgICAgICAgICAgIDxvYnNlcnZhdGlvbiBjbGFzc0NvZGU9Ik9CUyIgbW9vZENvZGU9IkVWTiI+CiAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjgiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC44Ii8+CiAgICAgICAgICAgICAgICAgICAgICA8aWQgcm9vdD0iZDQ4YTNlMmQtZmEyZi00ZmJiLWJkMzktYjBhNWU3OTBkYzNkIi8+CiAgICAgICAgICAgICAgICAgICAgICA8Y29kZSBjb2RlPSJTRVYiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjUuNCIgY29kZVN5c3RlbU5hbWU9IkhMN0FjdENvZGUiIGRpc3BsYXlOYW1lPSJTZXZlcml0eSBvYnNlcnZhdGlvbiIvPgogICAgICAgICAgICAgICAgICAgICAgPHN0YXR1c0NvZGUgY29kZT0iY29tcGxldGVkIi8+CiAgICAgICAgICAgICAgICAgICAgICA8ZWZmZWN0aXZlVGltZT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxvdyB2YWx1ZT0iMjAyMjA4MTEiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGhpZ2ggdmFsdWU9IjIwMjIwODExIi8+CiAgICAgICAgICAgICAgICAgICAgICA8L2VmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgeHNpOnR5cGU9IkNEIiBjb2RlPSI2NzM2MDA3IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42Ljk2IiBjb2RlU3lzdGVtTmFtZT0iU05PTUVEIENUIiBkaXNwbGF5TmFtZT0iTW9kZXJhdGUiLz4KICAgICAgICAgICAgICAgICAgICA8L29ic2VydmF0aW9uPgogICAgICAgICAgICAgICAgICA8L2VudHJ5UmVsYXRpb25zaGlwPgogICAgICAgICAgICAgICAgICA8ZW50cnlSZWxhdGlvbnNoaXAgdHlwZUNvZGU9IlJFRlIiIGludmVyc2lvbkluZD0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgPG9ic2VydmF0aW9uIGNsYXNzQ29kZT0iT0JTIiBtb29kQ29kZT0iRVZOIj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMjgiLz4KICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNvZGU9IjMzOTk5LTQiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iU3RhdHVzIi8+CiAgICAgICAgICAgICAgICAgICAgICA8c3RhdHVzQ29kZSBjb2RlPSJjb21wbGV0ZWQiLz4KICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSB4c2k6dHlwZT0iQ0UiIGNvZGU9IjU1NTYxMDAzIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42Ljk2IiBjb2RlU3lzdGVtTmFtZT0iU05PTUVEIENUIiBkaXNwbGF5TmFtZT0iQWN0aXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPC9vYnNlcnZhdGlvbj4KICAgICAgICAgICAgICAgICAgPC9lbnRyeVJlbGF0aW9uc2hpcD4KICAgICAgICAgICAgICAgIDwvb2JzZXJ2YXRpb24+CiAgICAgICAgICAgICAgPC9lbnRyeVJlbGF0aW9uc2hpcD4KICAgICAgICAgICAgPC9hY3Q+CiAgICAgICAgICA8L2VudHJ5PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICAgIDxjb21wb25lbnQ+CiAgICAgICAgPHNlY3Rpb24+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjEwIi8+CiAgICAgICAgICA8Y29kZSBjb2RlPSIxODc3Ni01IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9IlRyZWF0bWVudCBwbGFuIi8+CiAgICAgICAgICA8dGl0bGU+Q2FyZSBQbGFuPC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGF0ZTwvdGg+CgkJCQk8dGg+VHlwZTwvdGg+CgkJCQk8dGg+VmFsdWU8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJCQkJPHRyIElEPSJDYXJlUGxhblJlZi0xMDAzIj4KCQkJCQkJPHRkPjAxLzA5LzIwMjM8L3RkPgoJCQkJCQk8dGQ+QVBQT0lOVE1FTlQ8L3RkPgoJCQkJCQk8dGQ+Q2hlbW8gQzZEMjIgQ2lzcGxhdGluICsgQ2V0dXhpbWFiIEQxLDgsMTUsMjIgUTI4RCAoSGVhZCBhbmQgTmVjayk8L3RkPgoJCQkJPC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvdGV4dD4KICAgICAgICAgIDxlbnRyeT4KICAgICAgICAgICAgPGVuY291bnRlciBjbGFzc0NvZGU9IkVOQyIgbW9vZENvZGU9IkFSUSI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC40MCIvPgogICAgICAgICAgICAgIDxpZCByb290PSJjOTUyNjY4MS1jMzFkLTQ4OGYtYmJiMy1jZjdhOGYxYjNhNTMiLz4KICAgICAgICAgICAgICA8dGV4dD5DaGVtbyBDNEQxIENpc3BsYXRpbiArIENldHV4aW1hYiBEMSw4LDE1LDIyIFEyOEQgKEhlYWQgYW5kIE5lY2spPHJlZmVyZW5jZSB2YWx1ZT0iI0NhcmVQbGFuUmVmLTEwMTQiLz48L3RleHQ+CiAgICAgICAgICAgICAgPGVmZmVjdGl2ZVRpbWUgdmFsdWU9IjIwMjIxMDI0Ii8+CiAgICAgICAgICAgIDwvZW5jb3VudGVyPgogICAgICAgICAgPC9lbnRyeT4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi4xMiIvPgogICAgICAgICAgPGNvZGUgY29kZT0iMjkyOTktNSIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJSRUFTT04gRk9SIFZJU0lUIi8+CiAgICAgICAgICA8dGl0bGU+UmVhc29uIGZvciBWaXNpdDwvdGl0bGU+CiAgICAgICAgICA8dGV4dD5DaGVtbyBDM0QyMiBDaXNwbGF0aW4gKyBDZXR1eGltYWIgRDEsOCwxNSwyMiBRMjhEIChIZWFkIGFuZCBOZWNrKTwvdGV4dD4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi41NiIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICA8Y29kZSBjb2RlPSIxMDE5MC03IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9Ik1lbnRhbCBTdGF0dXMiLz4KICAgICAgICAgIDx0aXRsZT5NZW50YWwgU3RhdHVzPC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGF0ZTwvdGg+CgkJCQk8dGg+VmFsdWU8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJCQkJCTx0ciBJRD0iTWVudGFsU3RhdHVzUmVmLTEwMTUiPgoJCQkJCQkJPHRkPjA3LzIxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPk1lbW9yeSBmdW5jdGlvbiBub3JtYWw8L3RkPgoJCQkJCTwvdHI+Cgk8L3Rib2R5Pgo8L3RhYmxlPgo8L3RleHQ+CiAgICAgICAgICA8ZW50cnk+CiAgICAgICAgICAgIDxvYnNlcnZhdGlvbiBjbGFzc0NvZGU9Ik9CUyIgbW9vZENvZGU9IkVWTiI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC43NCIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICAgICAgPGlkIHJvb3Q9IjBmYzBkNmJhLTFiMTAtNGEzMC05ZmQyLWRhNjI4MGJlOTJhMCIvPgogICAgICAgICAgICAgIDxjb2RlIGNvZGU9IjM3MzkzMDAwMCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi45NiIgY29kZVN5c3RlbU5hbWU9IlNOT01FRCBDVCIgZGlzcGxheU5hbWU9IkNvZ25pdGl2ZSBTdGF0dXMgRmluZGluZyI+CiAgICAgICAgICAgICAgICA8dHJhbnNsYXRpb24gY29kZT0iNzUyNzUtOCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJDb2duaXRpdmUgZnVuY3Rpb24gW0ludGVycHJldGF0aW9uXSIvPgogICAgICAgICAgICAgIDwvY29kZT4KICAgICAgICAgICAgICA8dGV4dD48cmVmZXJlbmNlIHZhbHVlPSIjTWVudGFsU3RhdHVzUmVmLTEwMTUiLz48L3RleHQ+CiAgICAgICAgICAgICAgPHN0YXR1c0NvZGUgY29kZT0iY29tcGxldGVkIi8+CiAgICAgICAgICAgICAgPGVmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICA8bG93IHZhbHVlPSIyMDIyMDcyMSIvPgogICAgICAgICAgICAgIDwvZWZmZWN0aXZlVGltZT4KICAgICAgICAgICAgICA8dmFsdWUgeHNpOnR5cGU9IkNEIiBjb2RlPSIyNDc2MDIwMDUiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuOTYiIGNvZGVTeXN0ZW1OYW1lPSJTTk9NRUQgQ1QiIGRpc3BsYXlOYW1lPSJNZW1vcnkgZnVuY3Rpb24gbm9ybWFsIj4KICAgICAgICAgICAgICAgIDx0cmFuc2xhdGlvbiBudWxsRmxhdm9yPSJVTksiLz4KICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICA8L29ic2VydmF0aW9uPgogICAgICAgICAgPC9lbnRyeT4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi4yMi4xIiBleHRlbnNpb249IjIwMTUtMDgtMDEiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMjIiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMjIiIGV4dGVuc2lvbj0iMjAxNS0wOC0wMSIvPgogICAgICAgICAgPGNvZGUgY29kZT0iNDYyNDAtOCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJFbmNvdW50ZXJzIi8+CiAgICAgICAgICA8dGl0bGU+RW5jb3VudGVyczwvdGl0bGU+CiAgICAgICAgICA8dGV4dD48dGFibGU+Cgk8dGhlYWQ+CgkJPHRyPgoJCQkJCQkJPHRoPkRhdGU8L3RoPgoJCQkJPHRoPk5hbWU8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJCQkJCTx0ciBJRD0iRW5jb3VudGVyRGlhZ25vc2lzUmVmLTEwMTgiPgoJCQkJCQkJPHRkPjA4LzAxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPkxhcnluZ2VhbCBjYW5jZXIsIHN1cHJhZ2xvdHRpczwvdGQ+CQkJCQkJCgkJCQkJPC90cj4KCQkJCQk8dHIgSUQ9IkVuY291bnRlckRpYWdub3Npc1JlZi0xMDE5Ij4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD5OZXcgQXBwb2ludG1lbnQ8L3RkPgkJCQkJCQoJCQkJCTwvdHI+Cgk8L3Rib2R5Pgo8L3RhYmxlPgo8L3RleHQ+CiAgICAgICAgICA8ZW50cnk+CiAgICAgICAgICAgIDxlbmNvdW50ZXIgY2xhc3NDb2RlPSJFTkMiIG1vb2RDb2RlPSJFVk4iPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuNDkiIGV4dGVuc2lvbj0iMjAxNS0wOC0wMSIvPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuNDkiLz4KICAgICAgICAgICAgICA8aWQgcm9vdD0iNDNkYmU3M2EtYzE5Yi00MzlhLWI5NjMtNTRmZTQzMjBlMWZjIi8+CiAgICAgICAgICAgICAgPGNvZGUgbnVsbEZsYXZvcj0iVU5LIi8+CiAgICAgICAgICAgICAgPHRleHQ+PHJlZmVyZW5jZSB2YWx1ZT0iI0VuY291bnRlckRpYWdub3Npc1JlZi0xMDE5Ii8+PC90ZXh0PgogICAgICAgICAgICAgIDxlZmZlY3RpdmVUaW1lIHZhbHVlPSIyMDIyMDgwMSIvPgogICAgICAgICAgICAgIDxwZXJmb3JtZXIgdHlwZUNvZGU9IlBSRiI+CiAgICAgICAgICAgICAgICA8YXNzaWduZWRFbnRpdHk+CiAgICAgICAgICAgICAgICAgIDxpZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4zLjYyMyIgZXh0ZW5zaW9uPSIwODQyNjAiLz4KICAgICAgICAgICAgICAgICAgPGFkZHIgbnVsbEZsYXZvcj0iTkkiLz4KICAgICAgICAgICAgICAgICAgPHRlbGVjb20gbnVsbEZsYXZvcj0iTkkiLz4KICAgICAgICAgICAgICAgICAgPGFzc2lnbmVkUGVyc29uPgogICAgICAgICAgICAgICAgICAgIDxuYW1lPjxnaXZlbj5MYWNpZTwvZ2l2ZW4+PGZhbWlseT5SYXZlbnNjcmFmdDwvZmFtaWx5PjwvbmFtZT4KICAgICAgICAgICAgICAgICAgPC9hc3NpZ25lZFBlcnNvbj4KICAgICAgICAgICAgICAgICAgPHJlcHJlc2VudGVkT3JnYW5pemF0aW9uPgogICAgICAgICAgICAgICAgICAgIDxpZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4zLjYyMyIgZXh0ZW5zaW9uPSJDQkMzRDY1NDgzRDY0RTk2RTA0NDAwMjEyODYxQjI5NiIvPgogICAgICAgICAgICAgICAgICAgIDxuYW1lPk9uYyBIZW0gb2YgTVNIPC9uYW1lPgogICAgICAgICAgICAgICAgICAgIDx0ZWxlY29tIHZhbHVlPSJtYWlsdG86RGl2aXluaV9MYm5iaGluQG1ja2Vzc29uLmNvbSIgdXNlPSJESVIiLz4KICAgICAgICAgICAgICAgICAgICA8YWRkcj48c3RyZWV0QWRkcmVzc0xpbmU+MjE2NCBMYWtlIEZvcmVzdCBEcml2ZTwvc3RyZWV0QWRkcmVzc0xpbmU+PHN0cmVldEFkZHJlc3NMaW5lPjk3NDQgQ291bnR5IExpbmUgUm9hZDwvc3RyZWV0QWRkcmVzc0xpbmU+PGNpdHk+RWFzdCBQcm92aWRlbmNlPC9jaXR5PjxzdGF0ZT5SSTwvc3RhdGU+PHBvc3RhbENvZGU+OTQ1NTU8L3Bvc3RhbENvZGU+PC9hZGRyPgogICAgICAgICAgICAgICAgICA8L3JlcHJlc2VudGVkT3JnYW5pemF0aW9uPgogICAgICAgICAgICAgICAgPC9hc3NpZ25lZEVudGl0eT4KICAgICAgICAgICAgICA8L3BlcmZvcm1lcj4KICAgICAgICAgICAgPC9lbmNvdW50ZXI+CiAgICAgICAgICA8L2VudHJ5PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICAgIDxjb21wb25lbnQ+CiAgICAgICAgPHNlY3Rpb24+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjE0IiBleHRlbnNpb249IjIwMTQtMDYtMDkiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMTQiLz4KICAgICAgICAgIDxjb2RlIGNvZGU9IjQ3NDIwLTUiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iRnVuY3Rpb25hbCBzdGF0dXMgYXNzZXNzbWVudCIvPgogICAgICAgICAgPHRpdGxlPkZ1bmN0aW9uYWwgU3RhdHVzPC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGF0ZTwvdGg+CgkJCQk8dGg+TmFtZTwvdGg+CgkJCQk8dGg+U2NvcmU8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJCQkJCTx0ciBJRD0iRnVuY3Rpb25hbFN0YXR1c1JlZi0xMDIxIj4KCQkJCQkJCTx0ZD4wNy8yMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD5LYXJub2Zza3kgcGVyZm9ybWFuY2Ugc3RhdHVzPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD45MDwvdGQ+CgkJCQkJPC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvdGV4dD4KICAgICAgICAgIDxlbnRyeT4KICAgICAgICAgICAgPG9yZ2FuaXplciBjbGFzc0NvZGU9IkNMVVNURVIiIG1vb2RDb2RlPSJFVk4iPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuNjYiLz4KICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjEiLz4KICAgICAgICAgICAgICA8aWQgcm9vdD0iNWY1NjY4OWMtYWFmZi00YTk1LTlkMzQtNTlkNTk5MjAxMzAwIi8+CiAgICAgICAgICAgICAgPGNvZGUgY29kZT0iZDUiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMjU0IiBjb2RlU3lzdGVtTmFtZT0iSUNGIiBkaXNwbGF5TmFtZT0iU2VsZi1DYXJlIi8+CiAgICAgICAgICAgICAgPHN0YXR1c0NvZGUgY29kZT0iY29tcGxldGVkIi8+CiAgICAgICAgICAgICAgPGNvbXBvbmVudD4KICAgICAgICAgICAgICAgIDxvYnNlcnZhdGlvbiBjbGFzc0NvZGU9Ik9CUyIgbW9vZENvZGU9IkVWTiI+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuNjciLz4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC4yIi8+CiAgICAgICAgICAgICAgICAgIDxpZCByb290PSIyNWJmZWY1Mi0xMDdkLTQwMDMtOGQwOC05Y2Y2Njc4MTE4MzEiLz4KICAgICAgICAgICAgICAgICAgPGNvZGUgY29kZT0iNTQ1MjItOCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJGdW5jdGlvbmFsIHN0YXR1cyIvPgogICAgICAgICAgICAgICAgICA8dGV4dD48cmVmZXJlbmNlIHZhbHVlPSIjRnVuY3Rpb25hbFN0YXR1c1JlZi0xMDIxIi8+PC90ZXh0PgogICAgICAgICAgICAgICAgICA8c3RhdHVzQ29kZSBjb2RlPSJjb21wbGV0ZWQiLz4KICAgICAgICAgICAgICAgICAgPGVmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICAgICAgPGxvdyB2YWx1ZT0iMjAyMjA3MjEiLz4KICAgICAgICAgICAgICAgICAgPC9lZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgICA8dmFsdWUgeHNpOnR5cGU9IkNEIiBjb2RlPSIyNzM1NDYwMDMiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuOTYiIGNvZGVTeXN0ZW1OYW1lPSJTTk9NRUQgQ1QiIGRpc3BsYXlOYW1lPSJLYXJub2Zza3kgcGVyZm9ybWFuY2Ugc3RhdHVzIj4KICAgICAgICAgICAgICAgICAgICA8b3JpZ2luYWxUZXh0PjkwPC9vcmlnaW5hbFRleHQ+CiAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICA8L29ic2VydmF0aW9uPgogICAgICAgICAgICAgIDwvY29tcG9uZW50PgogICAgICAgICAgICA8L29yZ2FuaXplcj4KICAgICAgICAgIDwvZW50cnk+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICA8L2NvbXBvbmVudD4KICAgICAgPGNvbXBvbmVudD4KICAgICAgICA8c2VjdGlvbiBudWxsRmxhdm9yPSJOSSI+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjYwIi8+CiAgICAgICAgICA8Y29kZSBjb2RlPSI2MTE0Ni03IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9IkdvYWxzIi8+CiAgICAgICAgICA8dGl0bGU+R29hbHM8L3RpdGxlPgogICAgICAgICAgPHRleHQ+PHRhYmxlPgoJPHRoZWFkPgoJCTx0cj4KCQkJCQkJCTx0aD5EYXRlPC90aD4KCQkJCTx0aD5Hb2FsPC90aD4KCQkJCTx0aD5BdXRob3I8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJCQk8dHI+PHRkIGNvbHNwYW49IjMiPk5PTkU8L3RkPjwvdHI+Cgk8L3Rib2R5Pgo8L3RhYmxlPgo8L3RleHQ+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICA8L2NvbXBvbmVudD4KICAgICAgPGNvbXBvbmVudD4KICAgICAgICA8c2VjdGlvbiBudWxsRmxhdm9yPSJOSSI+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjU4IiBleHRlbnNpb249IjIwMTUtMDgtMDEiLz4KICAgICAgICAgIDxjb2RlIGNvZGU9Ijc1MzEwLTMiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iSGVhbHRoIGNvbmNlcm5zIGRvY3VtZW50Ii8+CiAgICAgICAgICA8dGl0bGU+SGVhbHRoQ29uY2VybnM8L3RpdGxlPgogICAgICAgICAgPHRleHQ+PHRhYmxlPgoJPHRoZWFkPgoJCTx0cj4KCQkJCQkJCTx0aD5EYXRlPC90aD4KCQkJCTx0aD5IZWFsdGggQ29uY2VybjwvdGg+CgkJCQk8dGg+QXV0aG9yPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQkJPHRyPjx0ZCBjb2xzcGFuPSIzIj5OT05FPC90ZD48L3RyPgoJPC90Ym9keT4KPC90YWJsZT4KPC90ZXh0PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICAgIDxjb21wb25lbnQ+CiAgICAgICAgPHNlY3Rpb24+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjIuMSIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjIiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMiIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICA8Y29kZSBjb2RlPSIxMTM2OS02IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9IkltbXVuaXphdGlvbnMiLz4KICAgICAgICAgIDx0aXRsZT5JbW11bml6YXRpb25zPC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGF0ZTwvdGg+CgkJCQk8dGg+TmFtZTwvdGg+CgkJCQk8dGg+Um91dGU8L3RoPgoJCQkJPHRoPkRvc2U8L3RoPgoJCQkJPHRoPkluc3RydWN0aW9uczwvdGg+CgkJCQk8dGg+UmVmdXNhbCBSZWFzb248L3RoPgoJCQkJPHRoPlN0YXR1czwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+CgkJCQkJPHRyIElEPSJJbW11bml6YXRpb25PQlMtMTAyMiI+CgkJCQkJCQk8dGQvPgoJCQkJCQkJPHRkPkNvdmlkLTE5IHZhY2NpbmUgKE1vZGVybmEpIDwvdGQ+CgkJCQkJCQk8dGQvPgoJCQkJCQkJPHRkLz4JCQkJCQkJCgkJCQkJCQk8dGQvPgkJCQkJCQkKCQkJCQkJCTx0ZC8+CgkJCQkJCQk8dGQ+Q29tcGxldGVkPC90ZD4KCQkJCQk8L3RyPgoJPC90Ym9keT4KPC90YWJsZT4KPC90ZXh0PgogICAgICAgICAgPGVudHJ5PgogICAgICAgICAgICA8c3Vic3RhbmNlQWRtaW5pc3RyYXRpb24gY2xhc3NDb2RlPSJTQkFETSIgbW9vZENvZGU9IkVWTiIgbmVnYXRpb25JbmQ9ImZhbHNlIj4KICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjUyIiBleHRlbnNpb249IjIwMTUtMDgtMDEiLz4KICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjUyIi8+CiAgICAgICAgICAgICAgPGlkIHJvb3Q9ImQxOTFlZTNiLTQ0MzAtNGI5ZS1iZWIzLWUzNjNkNzQ0NTIzMSIvPgogICAgICAgICAgICAgIDx0ZXh0PjxyZWZlcmVuY2UgdmFsdWU9IiNJbW11bml6YXRpb25PQlMtMTAyMiIvPjwvdGV4dD4KICAgICAgICAgICAgICA8c3RhdHVzQ29kZSBjb2RlPSJjb21wbGV0ZWQiLz4KICAgICAgICAgICAgICA8ZWZmZWN0aXZlVGltZSB4c2k6dHlwZT0iSVZMX1RTIj4KICAgICAgICAgICAgICAgIDxsb3cgbnVsbEZsYXZvcj0iVU5LIi8+CiAgICAgICAgICAgICAgPC9lZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgIDxyb3V0ZUNvZGUgbnVsbEZsYXZvcj0iVU5LIi8+CiAgICAgICAgICAgICAgPGRvc2VRdWFudGl0eSBudWxsRmxhdm9yPSJVTksiPgogICAgICAgICAgICAgICAgPHRyYW5zbGF0aW9uIG51bGxGbGF2b3I9IlVOSyI+CiAgICAgICAgICAgICAgICAgIDxvcmlnaW5hbFRleHQ+PHJlZmVyZW5jZSB2YWx1ZT0iI0ltbXVuaXphdGlvbk9CUy0xMDIyIi8+PC9vcmlnaW5hbFRleHQ+CiAgICAgICAgICAgICAgICA8L3RyYW5zbGF0aW9uPgogICAgICAgICAgICAgIDwvZG9zZVF1YW50aXR5PgogICAgICAgICAgICAgIDxhZG1pbmlzdHJhdGlvblVuaXRDb2RlIG51bGxGbGF2b3I9IlVOSyIvPgogICAgICAgICAgICAgIDxjb25zdW1hYmxlPgogICAgICAgICAgICAgICAgPG1hbnVmYWN0dXJlZFByb2R1Y3QgY2xhc3NDb2RlPSJNQU5VIj4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC41NCIgZXh0ZW5zaW9uPSIyMDE0LTA2LTA5Ii8+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuNTQiLz4KICAgICAgICAgICAgICAgICAgPG1hbnVmYWN0dXJlZE1hdGVyaWFsPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNvZGU9IjIwNyIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuMTIuMjkyIiBjb2RlU3lzdGVtTmFtZT0iQ1ZYIENvZGVzIiBkaXNwbGF5TmFtZT0iQ292aWQtMTkgdmFjY2luZSAoTW9kZXJuYSkiPgogICAgICAgICAgICAgICAgICAgICAgPG9yaWdpbmFsVGV4dD48cmVmZXJlbmNlIHZhbHVlPSIjSW1tdW5pemF0aW9uT0JTLTEwMjIiLz48L29yaWdpbmFsVGV4dD4KICAgICAgICAgICAgICAgICAgICA8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q292aWQtMTkgdmFjY2luZSAoTW9kZXJuYSk8L25hbWU+CiAgICAgICAgICAgICAgICAgIDwvbWFudWZhY3R1cmVkTWF0ZXJpYWw+CiAgICAgICAgICAgICAgICA8L21hbnVmYWN0dXJlZFByb2R1Y3Q+CiAgICAgICAgICAgICAgPC9jb25zdW1hYmxlPgogICAgICAgICAgICA8L3N1YnN0YW5jZUFkbWluaXN0cmF0aW9uPgogICAgICAgICAgPC9lbnRyeT4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uIG51bGxGbGF2b3I9Ik5JIj4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMy4xIiBleHRlbnNpb249IjIwMTUtMDgtMDEiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMyIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi4zIiBleHRlbnNpb249IjIwMTUtMDgtMDEiLz4KICAgICAgICAgIDxjb2RlIGNvZGU9IjMwOTU0LTIiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iUmVsZXZhbnQgZGlhZ25vc3RpYyB0ZXN0cyBhbmQvb3IgbGFib3JhdG9yeSBkYXRhIi8+CiAgICAgICAgICA8dGl0bGU+RGlhZ25vc3RpYyBSZXN1bHRzPC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGF0ZTwvdGg+CgkJCQk8dGg+VHlwZTwvdGg+CgkJCQk8dGg+VGVzdDwvdGg+CgkJCQk8dGg+VW5pdHM8L3RoPgoJCQkJPHRoPkxvd2VyIExpbWl0PC90aD4KCQkJCTx0aD5VcHBlciBMaW1pdDwvdGg+CgkJCQk8dGg+UmVzdWx0PC90aD4KCQkJCTx0aD5GbGFnPC90aD4KCQkJCTx0aD5Db21tZW50czwvdGg+CgkJCQk8dGg+U3RhdHVzPC90aD4KCQkJCTx0aD5PcmRlcmVkIEJ5PC90aD4KCQkJCTx0aD5TcGVjaW1lbiBTb3VyY2U8L3RoPgoJCQkJPHRoPkxhYiBBZGRyZXNzPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQkJPHRyPjx0ZCBjb2xzcGFuPSIxMyI+Tk9ORTwvdGQ+PC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvdGV4dD4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uIG51bGxGbGF2b3I9Ik5JIj4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMjMiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi4yMyIvPgogICAgICAgICAgPGNvZGUgY29kZT0iNDYyNjQtOCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJNZWRpY2FsIEVxdWlwbWVudCIvPgogICAgICAgICAgPHRpdGxlPk1lZGljYWwgRXF1aXBtZW50PC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGVzY3JpcHRpb248L3RoPgoJCQkJPHRoPlVESSBOdW1iZXI8L3RoPgoJCQkJPHRoPlNpdGU8L3RoPgoJCQkJPHRoPkRhdGU8L3RoPgoJCQkJPHRoPkFjdGl2ZTwvdGg+CgkJCQk8dGg+Q29tbWVudDwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+CgkJCTx0cj48dGQgY29sc3Bhbj0iNiI+Tk9ORTwvdGQ+PC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvdGV4dD4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi4zOCIgZXh0ZW5zaW9uPSIyMDE0LTA2LTA5Ii8+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjM4Ii8+CiAgICAgICAgICA8Y29kZSBjb2RlPSIyOTU0OS0zIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9Ik1lZGljYXRpb25zIEFkbWluaXN0ZXJlZCIvPgogICAgICAgICAgPHRpdGxlPk1lZGljYXRpb25zIEFkbWluaXN0ZXJlZDwvdGl0bGU+CiAgICAgICAgICA8dGV4dD48dGFibGU+Cgk8dGhlYWQ+CgkJPHRyPgoJCQkJCQkJPHRoPkRhdGU8L3RoPgoJCQkJPHRoPk5hbWU8L3RoPgoJCQkJPHRoPlJvdXRlPC90aD4KCQkJCTx0aD5Eb3NlPC90aD4KCQkJCTx0aD5GcmVxdWVuY3k8L3RoPgoJCQkJPHRoPkluc3RydWN0aW9uczwvdGg+CgkJCQk8dGg+U3RhcnQgRGF0ZTwvdGg+CgkJCQk8dGg+RW5kIERhdGU8L3RoPgoJCQkJPHRoPlN0YXR1czwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+CgkJCQkJPHRyIElEPSJNZWRpY2F0aW9uT0JTLTEwMjMiPgoJCQkJCQkJPHRkPjA4LzAxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPnNvZGl1bSBjaGxvcmlkZSA5IE1HL01MIEluamVjdGFibGUgU29sdXRpb24gPC90ZD4KCQkJCQkJCTx0ZD5pbnRyYXZlbm91c2x5PC90ZD4KCQkJCQkJCTx0ZD4xMDAwLjAgbUw8L3RkPgoJCQkJCQkJPHRkPm9uY2U8L3RkPgoJCQkJCQkJPHRkPlBvc3QtaHlkcmF0aW9uIGFmdGVyIENpc3BsYXRpbiBhZG1pbmlzdHJhdGlvbi48L3RkPgoJCQkJCQkJPHRkPjA4LzAxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPjA4LzAxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPmluYWN0aXZlPC90ZD4KCQkJCQk8L3RyPgoJCQkJCTx0ciBJRD0iTWVkaWNhdGlvbk9CUy0xMDI0Ij4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD5jaXNwbGF0aW4gMSBNRy9NTCBJbmplY3RhYmxlIFNvbHV0aW9uIDwvdGQ+CgkJCQkJCQk8dGQ+aW50cmF2ZW5vdXNseTwvdGQ+CgkJCQkJCQk8dGQ+MjE0LjAgbWc8L3RkPgoJCQkJCQkJPHRkPm9uY2U8L3RkPgoJCQkJCQkJPHRkPkNpc3BsYXRpbiBpcyBhIHZlc2ljYW50LiBJZiBkaWx1dGVkIHRvIGEgZmluYWwgY29uY2VudHJhdGlvbiBvZiBsZXNzIHRoYW4gMC41IG1nL21MLCBjaXNwbGF0aW4gaXMgYSB2YXNjdWxhciBpcnJpdGFudC48L3RkPgoJCQkJCQkJPHRkPjA4LzAxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPjA4LzAxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPmluYWN0aXZlPC90ZD4KCQkJCQk8L3RyPgoJCQkJCTx0ciBJRD0iTWVkaWNhdGlvbk9CUy0xMDI1Ij4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD4xMDAgTUwgY2V0dXhpbWFiIDIgTUcvTUwgSW5qZWN0aW9uIDwvdGQ+CgkJCQkJCQk8dGQ+aW50cmF2ZW5vdXNseTwvdGQ+CgkJCQkJCQk8dGQ+NTM2LjAgbWc8L3RkPgoJCQkJCQkJPHRkPm9uY2U8L3RkPgoJCQkJCQkJPHRkPkxPQURJTkcgRE9TRSwgQzFEMSBPTkxZLiAKTWl4IGluIGFuIGVtcHR5IHZpYWZsZXggYmFnLiBEbyBub3Qgc2hha2Ugb3IgZnVydGhlciBkaWx1dGUgQ2V0dXhpbWFiLiBVc2UgYSAwLjIyIG1pY3JvbiBsb3cgcHJvdGVpbiBiaW5kaW5nIGluLWxpbmUgZmlsdGVyLgpNYXhpbXVtIGluZnVzaW9uIHJhdGUgaXMgNSBtTC9taW51dGUuIEFkbWluaXN0ZXIgQ2V0dXhpbWFiIG9ubHkgYXMgYSBjb250cm9sbGVkIElWIGluZnVzaW9uLiBNb25pdG9yIHBhdGllbnQgZm9yIDEgaG91ciBmb2xsb3dpbmcgaW5mdXNpb24uIEZsdXNoIGxpbmUgYXQgZW5kIG9mIGluZnVzaW9uIHdpdGggTlMuPC90ZD4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD5pbmFjdGl2ZTwvdGQ+CgkJCQkJPC90cj4KCQkJCQk8dHIgSUQ9Ik1lZGljYXRpb25PQlMtMTAyNiI+CgkJCQkJCQk8dGQ+MDgvMDEvMjAyMjwvdGQ+CgkJCQkJCQk8dGQ+Rm9zYXByZXBpdGFudCBJViA8L3RkPgoJCQkJCQkJPHRkPmludHJhdmVub3VzbHk8L3RkPgoJCQkJCQkJPHRkPjE1MC4wIG1nPC90ZD4KCQkJCQkJCTx0ZD5vbmNlPC90ZD4KCQkJCQkJCTx0ZC8+CgkJCQkJCQk8dGQ+MDgvMDEvMjAyMjwvdGQ+CgkJCQkJCQk8dGQ+MDgvMDEvMjAyMjwvdGQ+CgkJCQkJCQk8dGQ+aW5hY3RpdmU8L3RkPgoJCQkJCTwvdHI+CgkJCQkJPHRyIElEPSJNZWRpY2F0aW9uT0JTLTEwMjciPgoJCQkJCQkJPHRkPjA4LzAxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPmRleGFtZXRoYXNvbmUgcGhvc3BoYXRlIDQgTUcvTUwgSW5qZWN0YWJsZSBTb2x1dGlvbiA8L3RkPgoJCQkJCQkJPHRkPmludHJhdmVub3VzbHk8L3RkPgoJCQkJCQkJPHRkPjEwLjAgbWc8L3RkPgoJCQkJCQkJPHRkPm9uY2U8L3RkPgoJCQkJCQkJPHRkLz4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD5pbmFjdGl2ZTwvdGQ+CgkJCQkJPC90cj4KCQkJCQk8dHIgSUQ9Ik1lZGljYXRpb25PQlMtMTAyOCI+CgkJCQkJCQk8dGQ+MDgvMDEvMjAyMjwvdGQ+CgkJCQkJCQk8dGQ+ZGlwaGVuaHlkcmFtaW5lIGh5ZHJvY2hsb3JpZGUgMC41IE1HL01MIEluamVjdGFibGUgU29sdXRpb24gPC90ZD4KCQkJCQkJCTx0ZD5pbnRyYXZlbm91c2x5PC90ZD4KCQkJCQkJCTx0ZD41MC4wIG1nPC90ZD4KCQkJCQkJCTx0ZD5vbmNlPC90ZD4KCQkJCQkJCTx0ZD5BZG1pbmlzdGVyIGFzIHByZW1lZGljYXRpb24gMzAtNjAgbWludXRlcyBiZWZvcmUgY2V0dXhpbWFiIGluZnVzaW9uLjwvdGQ+CgkJCQkJCQk8dGQ+MDgvMDEvMjAyMjwvdGQ+CgkJCQkJCQk8dGQ+MDgvMDEvMjAyMjwvdGQ+CgkJCQkJCQk8dGQ+aW5hY3RpdmU8L3RkPgoJCQkJCTwvdHI+CgkJCQkJPHRyIElEPSJNZWRpY2F0aW9uT0JTLTEwMjkiPgoJCQkJCQkJPHRkPjA4LzAxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPlBhbG9ub3NldHJvbiBJViA8L3RkPgoJCQkJCQkJPHRkPmludHJhdmVub3VzbHk8L3RkPgoJCQkJCQkJPHRkPjAuMjUgbWc8L3RkPgoJCQkJCQkJPHRkPm9uY2U8L3RkPgoJCQkJCQkJPHRkLz4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD5pbmFjdGl2ZTwvdGQ+CgkJCQkJPC90cj4KCQkJCQk8dHIgSUQ9Ik1lZGljYXRpb25PQlMtMTAzMCI+CgkJCQkJCQk8dGQ+MDgvMDEvMjAyMjwvdGQ+CgkJCQkJCQk8dGQ+c29kaXVtIGNobG9yaWRlIDkgTUcvTUwgSW5qZWN0YWJsZSBTb2x1dGlvbiA8L3RkPgoJCQkJCQkJPHRkPmludHJhdmVub3VzbHk8L3RkPgoJCQkJCQkJPHRkPjEwMDAuMCBtTDwvdGQ+CgkJCQkJCQk8dGQ+b25jZTwvdGQ+CgkJCQkJCQk8dGQ+UHJlLWh5ZHJhdGlvbiBwcmlvciB0byBDaXNwbGF0aW4gYWRtaW5pc3RyYXRpb24uPC90ZD4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD5pbmFjdGl2ZTwvdGQ+CgkJCQkJPC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvdGV4dD4KICAgICAgICAgIDxlbnRyeT4KICAgICAgICAgICAgPHN1YnN0YW5jZUFkbWluaXN0cmF0aW9uIGNsYXNzQ29kZT0iU0JBRE0iIG1vb2RDb2RlPSJFVk4iPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMTYiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMTYiLz4KICAgICAgICAgICAgICA8aWQgcm9vdD0iZDI1ZGIzNjktMWIyOS00ZWM0LTlkNjYtYmYzYTZhYzMyZWQwIi8+CiAgICAgICAgICAgICAgPHRleHQ+PHJlZmVyZW5jZSB2YWx1ZT0iI01lZGljYXRpb25PQlMtMTAyMyIvPjwvdGV4dD4KICAgICAgICAgICAgICA8c3RhdHVzQ29kZSBjb2RlPSJjb21wbGV0ZWQiLz4KICAgICAgICAgICAgICA8ZWZmZWN0aXZlVGltZSB4c2k6dHlwZT0iSVZMX1RTIj4KICAgICAgICAgICAgICAgIDxsb3cgdmFsdWU9IjIwMjIwODAxMTg0NSswMCIvPgogICAgICAgICAgICAgICAgPGhpZ2ggdmFsdWU9IjIwMjIwODAxMTkxNSswMCIvPgogICAgICAgICAgICAgIDwvZWZmZWN0aXZlVGltZT4KICAgICAgICAgICAgICA8cm91dGVDb2RlIGNvZGU9IkMzODI3NiIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuMy4yNi4xLjEiIGNvZGVTeXN0ZW1OYW1lPSJOQ0kgVGhlc2F1cnVzIiBkaXNwbGF5TmFtZT0iSU5UUkFWRU5PVVMiLz4KICAgICAgICAgICAgICA8YXBwcm9hY2hTaXRlQ29kZSBudWxsRmxhdm9yPSJVTksiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuOTYiIGNvZGVTeXN0ZW1OYW1lPSJTTk9NRURDVCIvPgogICAgICAgICAgICAgIDxkb3NlUXVhbnRpdHkgdmFsdWU9IjEwMDAuMCIgdW5pdD0ibUwiLz4KICAgICAgICAgICAgICA8YWRtaW5pc3RyYXRpb25Vbml0Q29kZSBudWxsRmxhdm9yPSJVTksiLz4KICAgICAgICAgICAgICA8Y29uc3VtYWJsZT4KICAgICAgICAgICAgICAgIDxtYW51ZmFjdHVyZWRQcm9kdWN0IGNsYXNzQ29kZT0iTUFOVSI+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMjMiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjIzIi8+CiAgICAgICAgICAgICAgICAgIDxtYW51ZmFjdHVyZWRNYXRlcmlhbD4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjb2RlPSIzMTMwMDIiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuODgiIGNvZGVTeXN0ZW1OYW1lPSJSeE5vcm0iIGRpc3BsYXlOYW1lPSJzb2RpdW0gY2hsb3JpZGUgOSBNRy9NTCBJbmplY3RhYmxlIFNvbHV0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgIDxvcmlnaW5hbFRleHQ+PHJlZmVyZW5jZSB2YWx1ZT0iI01lZGljYXRpb25PQlMtMTAyMyIvPjwvb3JpZ2luYWxUZXh0PgogICAgICAgICAgICAgICAgICAgICAgPHRyYW5zbGF0aW9uIHhzaTp0eXBlPSJDRSIgY29kZT0iMTIxMCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNC42NCIgY29kZVN5c3RlbU5hbWU9IkdDTiBTZXF1ZW5jZSBOdW1iZXJzIiBkaXNwbGF5TmFtZT0ic29kaXVtIGNobG9yaWRlIDkgTUcvTUwgSW5qZWN0YWJsZSBTb2x1dGlvbiIvPgogICAgICAgICAgICAgICAgICAgIDwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8bmFtZT5zb2RpdW0gY2hsb3JpZGUgOSBNRy9NTCBJbmplY3RhYmxlIFNvbHV0aW9uPC9uYW1lPgogICAgICAgICAgICAgICAgICA8L21hbnVmYWN0dXJlZE1hdGVyaWFsPgogICAgICAgICAgICAgICAgPC9tYW51ZmFjdHVyZWRQcm9kdWN0PgogICAgICAgICAgICAgIDwvY29uc3VtYWJsZT4KICAgICAgICAgICAgICA8ZW50cnlSZWxhdGlvbnNoaXAgdHlwZUNvZGU9IlNVQkoiIGludmVyc2lvbkluZD0idHJ1ZSI+CiAgICAgICAgICAgICAgICA8YWN0IGNsYXNzQ29kZT0iQUNUIiBtb29kQ29kZT0iSU5UIj4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC4yMCIvPgogICAgICAgICAgICAgICAgICA8Y29kZSB4c2k6dHlwZT0iQ0UiIGNvZGU9Ijk2NzAwNiIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi45NiIgY29kZVN5c3RlbU5hbWU9IlNOT01FRCBDVCIgZGlzcGxheU5hbWU9Ik1lZGljYXRpb24gRWR1Y2F0aW9uIi8+CiAgICAgICAgICAgICAgICAgIDx0ZXh0PlBvc3QtaHlkcmF0aW9uIGFmdGVyIENpc3BsYXRpbiBhZG1pbmlzdHJhdGlvbi48L3RleHQ+CiAgICAgICAgICAgICAgICAgIDxzdGF0dXNDb2RlIGNvZGU9ImNvbXBsZXRlZCIvPgogICAgICAgICAgICAgICAgPC9hY3Q+CiAgICAgICAgICAgICAgPC9lbnRyeVJlbGF0aW9uc2hpcD4KICAgICAgICAgICAgPC9zdWJzdGFuY2VBZG1pbmlzdHJhdGlvbj4KICAgICAgICAgIDwvZW50cnk+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICA8L2NvbXBvbmVudD4KICAgICAgPGNvbXBvbmVudD4KICAgICAgICA8c2VjdGlvbj4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMS4xIiBleHRlbnNpb249IjIwMTQtMDYtMDkiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMSIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi4xIiBleHRlbnNpb249IjIwMTQtMDYtMDkiLz4KICAgICAgICAgIDxjb2RlIGNvZGU9IjEwMTYwLTAiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iSGlzdG9yeSBvZiBtZWRpY2F0aW9uIHVzZSIvPgogICAgICAgICAgPHRpdGxlPk1lZGljYXRpb25zPC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGF0ZTwvdGg+CgkJCQk8dGg+TmFtZTwvdGg+CgkJCQk8dGg+Um91dGU8L3RoPgoJCQkJPHRoPkRvc2U8L3RoPgoJCQkJPHRoPkZyZXF1ZW5jeTwvdGg+CgkJCQk8dGg+SW5zdHJ1Y3Rpb25zPC90aD4KCQkJCTx0aD5TdGFydCBEYXRlPC90aD4KCQkJCTx0aD5FbmQgRGF0ZTwvdGg+CgkJCQk8dGg+U3RhdHVzPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQkJCQk8dHIgSUQ9Ik1lZGljYXRpb25PQlMtMTAzMSI+CgkJCQkJCQk8dGQvPgoJCQkJCQkJPHRkPlRyYW1hZG9sIE9yYWwgPC90ZD4KCQkJCQkJCTx0ZD5vcmFsbHk8L3RkPgoJCQkJCQkJPHRkPjEuMCB0YWJsZXQ8L3RkPgoJCQkJCQkJPHRkPmRhaWx5PC90ZD4KCQkJCQkJCTx0ZD4gcXVhbnRpdHkgc3VmZmljaWVudCBmb3IgNTAgZGF5czsgMCByZWZpbGxzPC90ZD4KCQkJCQkJCTx0ZC8+CgkJCQkJCQk8dGQvPgoJCQkJCQkJPHRkPmFjdGl2ZTwvdGQ+CgkJCQkJPC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvdGV4dD4KICAgICAgICAgIDxlbnRyeT4KICAgICAgICAgICAgPHN1YnN0YW5jZUFkbWluaXN0cmF0aW9uIGNsYXNzQ29kZT0iU0JBRE0iIG1vb2RDb2RlPSJFVk4iPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMTYiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMTYiLz4KICAgICAgICAgICAgICA8aWQgcm9vdD0iN2QwYjY1ZGQtZmNhZC00YmM0LWEyNDgtYTJhZTRiZDRiZTk1Ii8+CiAgICAgICAgICAgICAgPHRleHQ+PHJlZmVyZW5jZSB2YWx1ZT0iI01lZGljYXRpb25PQlMtMTAzMSIvPjwvdGV4dD4KICAgICAgICAgICAgICA8c3RhdHVzQ29kZSBjb2RlPSJhY3RpdmUiLz4KICAgICAgICAgICAgICA8ZWZmZWN0aXZlVGltZSB4c2k6dHlwZT0iSVZMX1RTIj4KICAgICAgICAgICAgICAgIDxsb3cgbnVsbEZsYXZvcj0iVU5LIi8+CiAgICAgICAgICAgICAgPC9lZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgIDxyb3V0ZUNvZGUgY29kZT0iQzM4Mjg4IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My4zLjI2LjEuMSIgY29kZVN5c3RlbU5hbWU9Ik5DSSBUaGVzYXVydXMiIGRpc3BsYXlOYW1lPSJPUkFMIi8+CiAgICAgICAgICAgICAgPGFwcHJvYWNoU2l0ZUNvZGUgbnVsbEZsYXZvcj0iVU5LIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42Ljk2IiBjb2RlU3lzdGVtTmFtZT0iU05PTUVEQ1QiLz4KICAgICAgICAgICAgICA8ZG9zZVF1YW50aXR5IHZhbHVlPSIxLjAiIHVuaXQ9InRhYmxldCIvPgogICAgICAgICAgICAgIDxhZG1pbmlzdHJhdGlvblVuaXRDb2RlIG51bGxGbGF2b3I9IlVOSyIvPgogICAgICAgICAgICAgIDxjb25zdW1hYmxlPgogICAgICAgICAgICAgICAgPG1hbnVmYWN0dXJlZFByb2R1Y3QgY2xhc3NDb2RlPSJNQU5VIj4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC4yMyIgZXh0ZW5zaW9uPSIyMDE0LTA2LTA5Ii8+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMjMiLz4KICAgICAgICAgICAgICAgICAgPG1hbnVmYWN0dXJlZE1hdGVyaWFsPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNvZGU9IjgzNTYwMyIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi44OCIgY29kZVN5c3RlbU5hbWU9IlJ4Tm9ybSIgZGlzcGxheU5hbWU9IlRyYW1hZG9sIE9yYWwiPgogICAgICAgICAgICAgICAgICAgICAgPG9yaWdpbmFsVGV4dD48cmVmZXJlbmNlIHZhbHVlPSIjTWVkaWNhdGlvbk9CUy0xMDMxIi8+PC9vcmlnaW5hbFRleHQ+CiAgICAgICAgICAgICAgICAgICAgICA8dHJhbnNsYXRpb24geHNpOnR5cGU9IkNFIiBjb2RlPSJVTktOT1dOIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My40LjY0IiBjb2RlU3lzdGVtTmFtZT0iR0NOIFNlcXVlbmNlIE51bWJlcnMiIGRpc3BsYXlOYW1lPSJUcmFtYWRvbCBPcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgPC9jb2RlPgogICAgICAgICAgICAgICAgICAgIDxuYW1lPlRyYW1hZG9sIE9yYWw8L25hbWU+CiAgICAgICAgICAgICAgICAgIDwvbWFudWZhY3R1cmVkTWF0ZXJpYWw+CiAgICAgICAgICAgICAgICA8L21hbnVmYWN0dXJlZFByb2R1Y3Q+CiAgICAgICAgICAgICAgPC9jb25zdW1hYmxlPgogICAgICAgICAgICAgIDxlbnRyeVJlbGF0aW9uc2hpcCB0eXBlQ29kZT0iU1VCSiIgaW52ZXJzaW9uSW5kPSJ0cnVlIj4KICAgICAgICAgICAgICAgIDxhY3QgY2xhc3NDb2RlPSJBQ1QiIG1vb2RDb2RlPSJJTlQiPgogICAgICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjIwIi8+CiAgICAgICAgICAgICAgICAgIDxjb2RlIHhzaTp0eXBlPSJDRSIgY29kZT0iOTY3MDA2IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42Ljk2IiBjb2RlU3lzdGVtTmFtZT0iU05PTUVEIENUIiBkaXNwbGF5TmFtZT0iTWVkaWNhdGlvbiBFZHVjYXRpb24iLz4KICAgICAgICAgICAgICAgICAgPHRleHQ+IHF1YW50aXR5IHN1ZmZpY2llbnQgZm9yIDUwIGRheXM7IDAgcmVmaWxsczwvdGV4dD4KICAgICAgICAgICAgICAgICAgPHN0YXR1c0NvZGUgY29kZT0iY29tcGxldGVkIi8+CiAgICAgICAgICAgICAgICA8L2FjdD4KICAgICAgICAgICAgICA8L2VudHJ5UmVsYXRpb25zaGlwPgogICAgICAgICAgICA8L3N1YnN0YW5jZUFkbWluaXN0cmF0aW9uPgogICAgICAgICAgPC9lbnRyeT4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uIG51bGxGbGF2b3I9Ik5JIj4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuNDUiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi40NSIvPgogICAgICAgICAgPGNvZGUgY29kZT0iNjk3MzAtMCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJJbnN0cnVjdGlvbnMiLz4KICAgICAgICAgIDx0aXRsZT5QYXRpZW50IEVkdWNhdGlvbjwvdGl0bGU+CiAgICAgICAgICA8dGV4dD48dGFibGU+Cgk8dGhlYWQ+CgkJPHRyPgoJCQkJCQkJPHRoPkRhdGU8L3RoPgoJCQkJPHRoPlR5cGU8L3RoPgoJCQkJPHRoPlZhbHVlPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQkJPHRyPjx0ZCBjb2xzcGFuPSIzIj5OT05FPC90ZD48L3RyPgoJPC90Ym9keT4KPC90YWJsZT4KPC90ZXh0PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICAgIDxjb21wb25lbnQ+CiAgICAgICAgPHNlY3Rpb24+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjUuMSIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjUiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuNSIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjUuMSIvPgogICAgICAgICAgPGNvZGUgY29kZT0iMTE0NTAtNCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJQcm9ibGVtIExpc3QiLz4KICAgICAgICAgIDx0aXRsZT5Qcm9ibGVtczwvdGl0bGU+CiAgICAgICAgICA8dGV4dD48dGFibGU+Cgk8dGhlYWQ+CgkJPHRyPgoJCQkJCQkJPHRoPkRpYWdub3NpczwvdGg+CgkJCQk8dGg+U3RhdHVzPC90aD4KCQkJCTx0aD5EYXRlIG9mIERpYWdub3NpczwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+CgkJCQk8dHIgSUQ9IlByb2JsZW1PQlMtMTI1MyI+CgkJCQkJCTx0ZD5IaWdoIGJsb29kIHByZXNzdXJlPC90ZD4KCQkJCQkJPHRkPkFjdGl2ZTwvdGQ+CgkJCQkJCTx0ZC8+CgkJCQk8L3RyPgoJCQkJPHRyIElEPSJQcm9ibGVtT0JTLTEyNTQiPgoJCQkJCQk8dGQ+UHJvc3RhdGUgY2FuY2VyPC90ZD4KCQkJCQkJPHRkPkFjdGl2ZTwvdGQ+CgkJCQkJCTx0ZD4wOS8wMS8yMDIxPC90ZD4KCQkJCTwvdHI+Cgk8L3Rib2R5Pgo8L3RhYmxlPgo8L3RleHQ+CiAgICAgICAgICA8ZW50cnk+CiAgICAgICAgICAgIDxhY3QgY2xhc3NDb2RlPSJBQ1QiIG1vb2RDb2RlPSJFVk4iPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMyIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC4zIi8+CiAgICAgICAgICAgICAgPGlkIHJvb3Q9IjJhMTg3NmI5LTVhYzYtNDdhMi1hMzIyLTYzMmU1OTBmOWFkYSIvPgogICAgICAgICAgICAgIDxjb2RlIGNvZGU9IkNPTkMiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjUuNiIgY29kZVN5c3RlbU5hbWU9IkhMN0FjdENsYXNzIiBkaXNwbGF5TmFtZT0iQ29uY2VybiIvPgogICAgICAgICAgICAgIDxzdGF0dXNDb2RlIGNvZGU9ImFjdGl2ZSIvPgogICAgICAgICAgICAgIDxlZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgPGxvdyBudWxsRmxhdm9yPSJVTksiLz4KICAgICAgICAgICAgICA8L2VmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgPGVudHJ5UmVsYXRpb25zaGlwIHR5cGVDb2RlPSJTVUJKIj4KICAgICAgICAgICAgICAgIDxvYnNlcnZhdGlvbiBjbGFzc0NvZGU9Ik9CUyIgbW9vZENvZGU9IkVWTiI+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuNCIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuNCIvPgogICAgICAgICAgICAgICAgICA8aWQgcm9vdD0iOTllYWVlOGUtNzNiNi00OWQxLTk0Y2EtYmNiYmMyYTM2ZmEwIi8+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNvZGU9IjU1NjA3MDA2IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42Ljk2IiBjb2RlU3lzdGVtTmFtZT0iU05PTUVEIENUIiBkaXNwbGF5TmFtZT0iUHJvYmxlbSI+CiAgICAgICAgICAgICAgICAgICAgPHRyYW5zbGF0aW9uIGNvZGU9Ijc1MzI2LTkiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iUHJvYmxlbSIvPgogICAgICAgICAgICAgICAgICA8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDx0ZXh0PjxyZWZlcmVuY2UgdmFsdWU9IiNQcm9ibGVtT0JTLTEyNTMiLz48L3RleHQ+CiAgICAgICAgICAgICAgICAgIDxzdGF0dXNDb2RlIGNvZGU9ImNvbXBsZXRlZCIvPgogICAgICAgICAgICAgICAgICA8ZWZmZWN0aXZlVGltZT4KICAgICAgICAgICAgICAgICAgICA8bG93IG51bGxGbGF2b3I9IlVOSyIvPgogICAgICAgICAgICAgICAgICA8L2VmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZSB4c2k6dHlwZT0iQ0QiIGNvZGU9IjM4MzQxMDAzIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42Ljk2IiBjb2RlU3lzdGVtTmFtZT0iU05PTUVEIENUIiBkaXNwbGF5TmFtZT0iSHlwZXJ0ZW5zaXZlIGRpc29yZGVyLCBzeXN0ZW1pYyBhcnRlcmlhbCAoZGlzb3JkZXIpIj4KICAgICAgICAgICAgICAgICAgICA8dHJhbnNsYXRpb24gY29kZT0iSTEwIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjkwIiBjb2RlU3lzdGVtTmFtZT0iSUNELTEwLUNNIiBkaXNwbGF5TmFtZT0iRXNzZW50aWFsIChwcmltYXJ5KSBoeXBlcnRlbnNpb24iLz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgIDwvb2JzZXJ2YXRpb24+CiAgICAgICAgICAgICAgPC9lbnRyeVJlbGF0aW9uc2hpcD4KICAgICAgICAgICAgPC9hY3Q+CiAgICAgICAgICA8L2VudHJ5PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICAgIDxjb21wb25lbnQ+CiAgICAgICAgPHNlY3Rpb24gbnVsbEZsYXZvcj0iTkkiPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi43LjEiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi43Ii8+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjciIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgPGNvZGUgY29kZT0iNDc1MTktNCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJIaXN0b3J5IG9mIFByb2NlZHVyZXMiLz4KICAgICAgICAgIDx0aXRsZT5Qcm9jZWR1cmVzPC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGF0ZTwvdGg+CgkJCQk8dGg+Q2F0ZWdvcnk8L3RoPgoJCQkJPHRoPk5hbWU8L3RoPgoJCQkJPHRoPkluc3RydWN0aW9uczwvdGg+CgkJCQk8dGg+U3RhdHVzPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQkJPHRyPjx0ZCBjb2xzcGFuPSI1Ij5OT05FPC90ZD48L3RyPgoJPC90Ym9keT4KPC90YWJsZT4KPC90ZXh0PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICAgIDxjb21wb25lbnQ+CiAgICAgICAgPHNlY3Rpb24gbnVsbEZsYXZvcj0iTkkiPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMS4zLjYuMS40LjEuMTkzNzYuMS41LjMuMS4zLjEiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMS4zLjYuMS40LjEuMTkzNzYuMS41LjMuMS4zLjEiLz4KICAgICAgICAgIDxjb2RlIGNvZGU9IjQyMzQ5LTEiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iUkVBU09OIEZPUiBSRUZFUlJBTCIvPgogICAgICAgICAgPHRpdGxlPlJlYXNvbiBmb3IgUmVmZXJyYWw8L3RpdGxlPgogICAgICAgICAgPHRleHQ+PHRhYmxlPgoJPHRoZWFkPgoJCTx0cj4KCQkJCQkJCTx0aD5EYXRlPC90aD4KCQkJCTx0aD5SZWFzb248L3RoPgoJCQkJPHRoPlJlZmVycmVkIFRvPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQkJPHRyPjx0ZCBjb2xzcGFuPSIzIj5OT05FPC90ZD48L3RyPgoJPC90Ym9keT4KPC90YWJsZT4KPC90ZXh0PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICAgIDxjb21wb25lbnQ+CiAgICAgICAgPHNlY3Rpb24+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjE3IiBleHRlbnNpb249IjIwMTUtMDgtMDEiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMTciLz4KICAgICAgICAgIDxjb2RlIGNvZGU9IjI5NzYyLTIiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iU29jaWFsIGhpc3RvcnkiLz4KICAgICAgICAgIDx0aXRsZT5Tb2NpYWwgSGlzdG9yeTwvdGl0bGU+CiAgICAgICAgICA8dGV4dD48dGFibGU+Cgk8dGhlYWQ+CgkJPHRyPgoJCQkJCQkJPHRoPkRhdGU8L3RoPgoJCQkJPHRoPk5hbWU8L3RoPgoJCQkJPHRoPlZhbHVlPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQkJCTx0ciBJRD0iU29jaWFsSGlzdG9yeVJlZi0xMjYwIj4KCQkJCQkJPHRkPjA3LzI2LzIwMjI8L3RkPgoJCQkJCQk8dGQ+U21va2luZyBTdGF0dXM8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Q3VycmVudCBzb21lIGRheSBzbW9rZXI8L3RkPgoJCQkJPC90cj4KCQkJCTx0ciBJRD0iU29jaWFsSGlzdG9yeVJlZi0xMjYxIj4KCQkJCQkJPHRkPjA3LzIxLzIwMjI8L3RkPgoJCQkJCQk8dGQ+QmlydGggU2V4PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPk1hbGU8L3RkPgoJCQkJPC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvdGV4dD4KICAgICAgICAgIDxlbnRyeT4KICAgICAgICAgICAgPG9ic2VydmF0aW9uIGNsYXNzQ29kZT0iT0JTIiBtb29kQ29kZT0iRVZOIj4KICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40Ljc4Ii8+CiAgICAgICAgICAgICAgPGNvZGUgY29kZT0iQVNTRVJUSU9OIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My41LjQiIGNvZGVTeXN0ZW1OYW1lPSJITDcgQWN0IENvZGVzIiBkaXNwbGF5TmFtZT0iQWN0Q29kZS5BU1NFUlRJT04iLz4KICAgICAgICAgICAgICA8dGV4dD48cmVmZXJlbmNlIHZhbHVlPSIjU29jaWFsSGlzdG9yeVJlZi0xMjYwIi8+PC90ZXh0PgogICAgICAgICAgICAgIDxzdGF0dXNDb2RlIGNvZGU9ImNvbXBsZXRlZCIvPgogICAgICAgICAgICAgIDxlZmZlY3RpdmVUaW1lIHZhbHVlPSIyMDIyMDcyNiIvPgogICAgICAgICAgICAgIDx2YWx1ZSB4c2k6dHlwZT0iQ0QiIGNvZGU9IjQyODA0MTAwMDEyNDEwNiIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi45NiIgY29kZVN5c3RlbU5hbWU9IlNOT01FRCBDVCIgZGlzcGxheU5hbWU9IkN1cnJlbnQgc29tZSBkYXkgc21va2VyIi8+CiAgICAgICAgICAgIDwvb2JzZXJ2YXRpb24+CiAgICAgICAgICA8L2VudHJ5PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICAgIDxjb21wb25lbnQ+CiAgICAgICAgPHNlY3Rpb24+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjQuMSIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjQiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuNCIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICA8Y29kZSBjb2RlPSI4NzE2LTMiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iVml0YWwgU2lnbnMiLz4KICAgICAgICAgIDx0aXRsZT5WaXRhbCBTaWduczwvdGl0bGU+CiAgICAgICAgICA8dGV4dD48dGFibGU+Cgk8dGhlYWQ+CgkJPHRyPgoJCQkJCQkJPHRoPkRhdGU8L3RoPgoJCQkJPHRoPlR5cGU8L3RoPgoJCQkJPHRoPlZhbHVlPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQkJCTx0ciBJRD0iVml0YWxTaWduc1JlZi0xMjYyIj4KCQkJCQkJPHRkPjA2LzAyLzIwMjA8L3RkPgoJCQkJCQk8dGQ+CgkJCQkJCQlCU0EKCQkJCQkJCQoJCQkJCQk8L3RkPgoJCQkJCQk8dGQ+Mi4xNzwvdGQ+CgkJCQk8L3RyPgoJPC90Ym9keT4KPC90YWJsZT4KPC90ZXh0PgogICAgICAgICAgPGVudHJ5PgogICAgICAgICAgICA8b3JnYW5pemVyIGNsYXNzQ29kZT0iQ0xVU1RFUiIgbW9vZENvZGU9IkVWTiI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC4yNiIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC4yNiIvPgogICAgICAgICAgICAgIDxpZCByb290PSJjYzBhMzdjZS0yZWU0LTQ4MGMtOTcyMC1mMGM4ODQzMjljZTYiLz4KICAgICAgICAgICAgICA8Y29kZSBjb2RlPSI0NjY4MDAwNSIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi45NiIgY29kZVN5c3RlbU5hbWU9IlNOT01FRCBDVCIgZGlzcGxheU5hbWU9IlZpdGFsIFNpZ25zIj4KICAgICAgICAgICAgICAgIDx0cmFuc2xhdGlvbiBjb2RlPSI3NDcyOC03IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9IlZpdGFsIHNpZ25zLCB3ZWlnaHQsIGhlaWdodCwgaGVhZCBjaXJjdW1mZXJlbmNlLCBveGltZXRyeSwgQk1JLCBhbmQgQlNBIHBhbmVsIC0gSEw3LkNDREFyMS4xIi8+CiAgICAgICAgICAgICAgPC9jb2RlPgogICAgICAgICAgICAgIDxzdGF0dXNDb2RlIGNvZGU9ImNvbXBsZXRlZCIvPgogICAgICAgICAgICAgIDxlZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgPGxvdyB2YWx1ZT0iMjAyMjEwMTcyMTQxNDkrMDAwMCIvPgogICAgICAgICAgICAgICAgPGhpZ2ggdmFsdWU9IjIwMjIxMDE3MjE0MTQ5KzAwMDAiLz4KICAgICAgICAgICAgICA8L2VmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgPGNvbXBvbmVudD4KICAgICAgICAgICAgICAgIDxvYnNlcnZhdGlvbiBjbGFzc0NvZGU9Ik9CUyIgbW9vZENvZGU9IkVWTiI+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMjciIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjI3Ii8+CiAgICAgICAgICAgICAgICAgIDxpZCByb290PSI3MTU0YmQyZC1mZmJhLTQ4MjUtYjc1MC0zNTI3MjNkNmYwYTEiLz4KICAgICAgICAgICAgICAgICAgPGNvZGUgY29kZT0iMzE0MC0xIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9IkJTQSIvPgogICAgICAgICAgICAgICAgICA8dGV4dD48cmVmZXJlbmNlIHZhbHVlPSIjVml0YWxTaWduc1JlZi0xMjYyIi8+PC90ZXh0PgogICAgICAgICAgICAgICAgICA8c3RhdHVzQ29kZSBjb2RlPSJjb21wbGV0ZWQiLz4KICAgICAgICAgICAgICAgICAgPGVmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICAgICAgPGxvdyB2YWx1ZT0iMjAyMDA2MDIiLz4KICAgICAgICAgICAgICAgICAgPC9lZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgICA8dmFsdWUgeHNpOnR5cGU9IlBRIiB2YWx1ZT0iMi4xNyIgdW5pdD0ibTIiLz4KICAgICAgICAgICAgICAgIDwvb2JzZXJ2YXRpb24+CiAgICAgICAgICAgICAgPC9jb21wb25lbnQ+CiAgICAgICAgICAgICAgPGNvbXBvbmVudD4KICAgICAgICAgICAgICAgIDxvYnNlcnZhdGlvbiBjbGFzc0NvZGU9Ik9CUyIgbW9vZENvZGU9IkVWTiI+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMjciIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjI3Ii8+CiAgICAgICAgICAgICAgICAgIDxpZCByb290PSI4NzFmNmZkYS04MTUzLTQ1ZWQtODk2MS0yNTBjZDMwMWY4ZjYiLz4KICAgICAgICAgICAgICAgICAgPGNvZGUgY29kZT0iOTI3OS0xIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9IlJlc3BpcmF0b3J5IFJhdGUiLz4KICAgICAgICAgICAgICAgICAgPHRleHQ+PHJlZmVyZW5jZSB2YWx1ZT0iI1ZpdGFsU2lnbnNSZWYtMTI2MyIvPjwvdGV4dD4KICAgICAgICAgICAgICAgICAgPHN0YXR1c0NvZGUgY29kZT0iY29tcGxldGVkIi8+CiAgICAgICAgICAgICAgICAgIDxlZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgICAgIDxsb3cgdmFsdWU9IjIwMjAwNjAyIi8+CiAgICAgICAgICAgICAgICAgIDwvZWZmZWN0aXZlVGltZT4KICAgICAgICAgICAgICAgICAgPHZhbHVlIHhzaTp0eXBlPSJQUSIgdmFsdWU9IjEyLjAiIHVuaXQ9Ii9taW4iLz4KICAgICAgICAgICAgICAgIDwvb2JzZXJ2YXRpb24+CiAgICAgICAgICAgICAgPC9jb21wb25lbnQ+CiAgICAgICAgICAgIDwvb3JnYW5pemVyPgogICAgICAgICAgPC9lbnRyeT4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uIG51bGxGbGF2b3I9Ik5JIj4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuNjUiIGV4dGVuc2lvbj0iMjAxNi0xMS0wMSIvPgogICAgICAgICAgPGNvZGUgY29kZT0iMzQxMDktOSIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJOb3RlIi8+CiAgICAgICAgICA8dGl0bGU+Tm90ZXMgU2VjdGlvbjwvdGl0bGU+CiAgICAgICAgICA8dGV4dD4gICAgTm8gbm90ZXMgYXJlIGF2YWlsYWJsZSBhdCB0aGlzIHRpbWUsIHBsZWFzZSBjaGVjayBhZ2Fpbi4KPC90ZXh0PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICA8L3N0cnVjdHVyZWRCb2R5PgogIDwvY29tcG9uZW50Pgo8L0NsaW5pY2FsRG9jdW1lbnQ+"
}
The CarePlan APIs provide care plans for a patient. A CarePlan with the SNOMED-CT code "395082007" is considered a cancer care regimen.
A CarePlan with a "status" of "completed" are considered Previous Therapies. A CarePlan with a "status" of "active" are considered Concurrent Therapies.
The Line of Therapy, staging, and treatment intent can sometimes be found by using regex on the text.div field (see response examples)
The Treatment Plan is found in the "description" field.
{- "resourceType": "CarePlan",
- "id": "1234567890",
- "text": {
- "status": "generated",
- "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\"><span class='generateShortDescriptionForMedAbstractOrder'>Benralizumab (Initial) Q28D</span> Cycle Length: 28 Number Cycles: 3 Start: C1D1 on 03/29/2024 Assoc Dx: <b>Secondary malignant neoplasm of liver (disorder)</b> LOT: 1st Line Metastatic or Recurrent Stage: IIA Treatment Intent: Curative</div>"
}, - "extension": [
], - "status": "active",
- "intent": "order",
- "category": [
- {
- "coding": [
- {
- "code": "395082007",
- "display": "Cancer care plan (qualifier value)"
}
]
}, - {
- "coding": [
- {
- "code": "assess-plan",
- "display": "Assessment and Plan of Treatment"
}
]
}
], - "description": "Benralizumab (Initial) Q28D",
- "subject": {
- "reference": "Patient/123",
- "display": "Smithey, Harry"
}, - "period": {
- "start": "2024-03-29T00:00:00-07:00"
}, - "addresses": [
- {
- "reference": "Condition/583511",
- "identifier": {
- "value": "Primary"
}, - "display": "Secondary malignant neoplasm of liver (disorder)"
}
], - "goal": [
- {
- "reference": "Curative"
}
], - "activity": [
- {
- "reference": {
- "reference": "MedicationRequest/12345675",
- "display": "Benralizumab Subcutaneous\nBenralizumab Subcutaneous 30 mg/mL syringe\n30 mg subcutaneously once. Instructions: Administer into the subcutaneous tissue of the upper arm, thigh, or abdomen.\n "
}
}, - {
- "reference": {
- "reference": "MedicationRequest/12345676",
- "display": "Benralizumab Subcutaneous\nBenralizumab Subcutaneous 30 mg/mL syringe\n30 mg subcutaneously once. Instructions: Administer into the subcutaneous tissue of the upper arm, thigh, or abdomen.\n "
}
}
]
}
Active Clinical Data Best Practice
Note that the active care plan might be several months old despite being active.
/CarePlan?patient=123&status=active
Recent Clinical Data Best Practice
This is to find recent CarePlan records. Historical CarePlan records with recent activity may be found by searching for recent associated MedicationAdministration, MedicationRequest, and/or associated CarePlan records.
/CarePlan?patient=123&_lastUpdated=gt{today-30}
Targeted Historical Data Best Practice
One or more of:
/CarePlan?patient=123&status=draft&_lastUpdated=gt2024-06-03&_lastUpdated=lt2024-09-01
patient required | string The public ID of the patient who is the subject of the careplan |
_count | number The number of resources to return |
_id | string The ID of the resource |
_sort | string Specify which fields to sort by and the direction of the sort (ex: |
_lastUpdated | string Only return resources which were last updated as specified by the given range |
category | string Type of plan. Currently not operational and should not be used |
date | string Time period plan covers. Currently not operational and should not be used |
status | string Enum: "draft" "active" "completed" "cancelled" Codes identifying the lifecycle stage of a request. "cancelled" is the equivalent of the FHIR R4 status "revoked" |
subject | string Who the care plan is for. The server just assumes that "subject" is the "patient" so just use the "patient" query parameter |
_summary | boolean Returns a subset of data focusing on the core of the resource |
{- "resourceType": "Bundle",
- "id": "B123",
- "meta": {
- "lastUpdated": "2022-08-22T13:03:00.807-07:00"
}, - "type": "searchset",
- "total": 1,
- "entry": [
- {
- "resource": {
- "resourceType": "CarePlan",
- "id": "1234567890",
- "text": {
- "status": "generated",
- "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\"><span class='generateShortDescriptionForMedAbstractOrder'>Benralizumab (Initial) Q28D</span> Cycle Length: 28 Number Cycles: 3 Start: C1D1 on 03/29/2024 Assoc Dx: <b>Secondary malignant neoplasm of liver (disorder)</b> LOT: 1st Line Metastatic or Recurrent</div>"
}, - "extension": [
], - "status": "active",
- "intent": "order",
- "category": [
- {
- "coding": [
- {
- "code": "395082007",
- "display": "Cancer care plan (qualifier value)"
}
]
}, - {
- "coding": [
- {
- "code": "assess-plan",
- "display": "Assessment and Plan of Treatment"
}
]
}
], - "description": "Benralizumab (Initial) Q28D",
- "subject": {
- "reference": "Patient/123",
- "display": "Smithey, Harry"
}, - "period": {
- "start": "2024-03-29T00:00:00-07:00"
}, - "addresses": [
- {
- "reference": "Condition/583511",
- "identifier": {
- "value": "Primary"
}, - "display": "Secondary malignant neoplasm of liver (disorder)"
}
], - "goal": [
- {
- "reference": "Curative"
}
], - "activity": [
- {
- "reference": {
- "reference": "MedicationRequest/12345675",
- "display": "Benralizumab Subcutaneous\nBenralizumab Subcutaneous 30 mg/mL syringe\n30 mg subcutaneously once. Instructions: Administer into the subcutaneous tissue of the upper arm, thigh, or abdomen.\n "
}
}, - {
- "reference": {
- "reference": "MedicationRequest/12345676",
- "display": "Benralizumab Subcutaneous\nBenralizumab Subcutaneous 30 mg/mL syringe\n30 mg subcutaneously once. Instructions: Administer into the subcutaneous tissue of the upper arm, thigh, or abdomen.\n "
}
}
]
}
}
]
}
The CareTeam APIs provide a comprehensive list of practitioners involved in patient care. Each CareTeam resource is dedicated to a single practitioner. Additionally, an extension is incorporated to indicate the patient's preferred pharmacy, which is the same in all resources for a given patient. The resources returned are compliant with the US Core profile.
{- "resourceType": "CareTeam",
- "id": "123456",
- "extension": [
- {
- "extension": [
- {
- "url": "Code",
- "valueCodeableConcept": {
- "coding": [
- {
- "code": "PPH",
- "display": "Patient Preferred Pharmacy"
}
]
}
}, - {
- "extension": [
- {
- "url": "NCPDPID",
- "valueString": "0507840"
}, - {
- "url": "PharmacyName",
- "valueString": "Pharmacy Drug Store 04491"
}, - {
- "url": "Address",
- "valueString": "15650 San Pablo Ave., San Pablo, CA 94806-1240"
}, - {
- "url": "State",
- "valueString": "CA"
}, - {
- "url": "PhoneNumber",
- "valueString": "5102431100"
}
]
}
]
}
], - "status": "active",
- "subject": {
- "reference": "Patient/0987654321",
- "display": "Smithey, Harry"
}, - "participant": [
- {
- "role": [
], - "member": {
- "reference": "Practitioner/1234509876",
- "display": "Lacie Ravenscraft, NP"
}
}
]
}
Active Clinical Data Best Practice
/CareTeam?patient=123&status=active
patient required | string The public ID of the patient who is the subject of the careteam |
status | string Enum: "active" "inactive" Correlates with whether the practitioner in the CareTeam resource is active or inactive |
{- "resourceType": "Bundle",
- "id": "111",
- "meta": {
- "lastUpdated": "2022-08-22T12:49:22.584-07:00"
}, - "type": "searchset",
- "total": 1,
- "entry": [
- {
- "resource": {
- "resourceType": "CareTeam",
- "id": "123456",
- "extension": [
- {
- "extension": [
- {
- "url": "Code",
- "valueCodeableConcept": {
- "coding": [
- {
- "code": "PPH",
- "display": "Patient Preferred Pharmacy"
}
]
}
}, - {
- "extension": [
- {
- "url": "NCPDPID",
- "valueString": "0507840"
}, - {
- "url": "PharmacyName",
- "valueString": "Pharmacy Drug Store 04491"
}, - {
- "url": "Address",
- "valueString": "15650 San Pablo Ave., San Pablo, CA 94806-1240"
}, - {
- "url": "State",
- "valueString": "CA"
}, - {
- "url": "PhoneNumber",
- "valueString": "5102431100"
}
]
}
]
}
], - "status": "active",
- "subject": {
- "reference": "Patient/0987654321",
- "display": "Smithey, Harry"
}, - "participant": [
- {
- "role": [
], - "member": {
- "reference": "Practitioner/1234509876",
- "display": "Lacie Ravenscraft, NP"
}
}
]
}
}
]
}
The Condition APIs provide information about patient conditions. Additionally, an extension is incorporated to indicate whether the Condition is the patient's primary diagnosis (pDX)
According to the FHIR specification, the staging of a cancer diagnosis is expected to be documented within the Condition.stage array. However, in this API, the information is represented as an "extension" with the URL "http://fhir.iknowmed.com/StructureDefinition/cds-tools-typedstage" Additionally, biomarkers related to this diagnosis are included in the "contained" list of the Condition resource, as is the Disease State, identified by the code "58DEE57115B24630BCBA0925B5C8D447."
{- "resourceType": "Condition",
- "id": "573416",
- "clinicalStatus": {
}, - "verificationStatus": {
- "coding": [
]
}, - "category": [
- {
- "coding": [
- {
- "code": "problem-list-item",
- "display": "Problem List Item"
}
]
}
], - "code": {
- "coding": [
- {
- "code": "372064008",
- "display": "Malignant neoplasm of female breast (disorder)"
}, - {
- "code": "174.2",
- "display": "Malignant neoplasm of upper-inner quadrant of female breast"
}
], - "text": "Malignant neoplasm of female breast (disorder)"
}, - "subject": {
- "reference": "Patient/123",
- "display": "Last, Given"
}, - "recordedDate": "2017-06-28T14:19:20-06:00"
}
Active Clinical Data Best Practice
/Condition?patient=123&clinical-status=active
Recent Clinical Data Best Practice
/Condition?patient=123&onset-date=gt{today-30}
Targeted Historical Data Best Practice
One or more of:
/Condition?patient=123&clinical-status=resolved&onset-date=gt2024-06-03&onset-date=lt2024-09-01
patient required | string The public ID of the patient who has the condition |
category | string Value: "problem-list-item" The category of the condition. There's only one respected option so this parameter is not really usable |
clinical-status | string Enum: "active" "inactive" "resolved" The clinical status of the condition |
onset-date | string Date related onsets (dateTime and Period) |
_sort | string Specify which fields to sort by and the direction of the sort (ex: |
{- "$ref": "../fhir_samples/Condition/condition_problem_search.json"
}
The Device APIs provide information about patient implantable devices. The resources returned are compliant with the US Core profile. A custom extension for the date of the device implant may be returned in the base extension list.
{- "resourceType": "Device",
- "id": "12345",
- "extension": [
- {
- "valueDateTime": "2017-04-19T00:00:00-07:00"
}
], - "udiCarrier": [
- {
- "deviceIdentifier": "[org.hl7.fhir.r4.model.Identifier@1e5be6ff]",
- "carrierHRF": "Carrier Name"
}
], - "status": "active",
- "manufactureDate": "2013-02-01T00:00:00-08:00",
- "expirationDate": "2014-02-01T00:00:00-08:00",
- "lotNumber": "000000000000XYZ123",
- "serialNumber": "000025",
- "type": {
- "coding": [
- {
- "code": "700516001",
- "display": "Drug-eluting coronary artery stent, non-bioabsorbable-polymer-coated"
}
]
}, - "distinctIdentifier": "GS1",
- "patient": {
- "reference": "Patient/123",
- "display": "Last, Given"
}
}
patient required | string The public ID of the patient who is the subject of the device |
{- "resourceType": "Bundle",
- "id": "B443",
- "meta": {
- "lastUpdated": "2022-08-25T16:10:32.602-07:00"
}, - "type": "searchset",
- "total": 1,
- "entry": [
- {
- "resource": {
- "resourceType": "Device",
- "id": "12345",
- "extension": [
- {
- "valueDateTime": "2017-04-19T00:00:00-07:00"
}
], - "udiCarrier": [
- {
- "deviceIdentifier": "[org.hl7.fhir.r4.model.Identifier@1e5be6ff]",
- "carrierHRF": "Carrier Name"
}
], - "status": "active",
- "manufactureDate": "2013-02-01T00:00:00-08:00",
- "expirationDate": "2014-02-01T00:00:00-08:00",
- "lotNumber": "000000000000XYZ123",
- "serialNumber": "000025",
- "type": {
- "coding": [
- {
- "code": "700516001",
- "display": "Drug-eluting coronary artery stent, non-bioabsorbable-polymer-coated"
}
]
}, - "distinctIdentifier": "GS1",
- "patient": {
- "reference": "Patient/123",
- "display": "Last, Given"
}
}
}
]
}
The DiagnosticReport APIs provide information about patient diagnostic reports. The resources returned are compliant with the US Core profile for Labs. Notes can also be returned, but may not include the actual documents. If the report is associated with a Lab's name and address, the "performer" field will be populated with the Lab's information (via the "contained" list)
The presentedForm
field may be populated in any DiagnosticReport resource. It includes a reference to a Binary resource of type application/pdf
. This resource typically originates from an external interface, such as HL7.
It's important to note that the url field contains a full URL, but it may not reliably direct you to the correct endpoint.
Instead, you'll need to extract the Binary ID from this URL and construct the actual API call using the designated API base URL.
For illustration, the base URL of the actual API used in this example is https://example.com/fhir.
"presentedForm": [
{
"contentType": "application/pdf",
"url": "https://example-2.com/fhir/Binary/FA0987654",
"title": "sas"
}
]
To retrieve the Binary resource, make the following API call:
GET https://example.com/fhir/Binary/FA0987654
An extension with url http://mckesson.com/ontada/fhir/g2/result-reviewed-status
and one of these valueString
values may be included:
PENDING
REVIEWED
NOT_REQUIRED
An extension with url http://mckesson.com/ontada/fhir/g2/result-interpretation
with a valueString
may also be included
id required | string Example: 123 The resource ID |
{- "resourceType": "DiagnosticReport",
- "id": "123456",
- "meta": {
}, - "contained": [
- {
- "resourceType": "Organization",
- "id": "1",
- "active": true,
- "name": "Quest Labs"
}, - {
- "resourceType": "Specimen",
- "id": "2",
- "note": [
- {
- "text": "Blood"
}
]
}
], - "extension": [
], - "status": "registered",
- "category": [
- {
- "coding": [
]
}
], - "code": {
- "text": "CMP w/ LDH"
}, - "subject": {
- "reference": "Patient/123",
- "display": "Last, Given"
}, - "encounter": {
- "reference": "Encounter/44795920-b3da-3ad3-bffc-1234sa3ae2.123456",
- "display": "Result encounter - 123456"
}, - "effectiveDateTime": "2024-03-13T08:42:25-07:00",
- "issued": "2024-03-13T08:42:25.000-07:00",
- "performer": [
- {
- "reference": "#1"
}, - {
- "id": "123456",
- "reference": "Practitioner/123456",
- "display": "Last, Given"
}
], - "specimen": [
- {
- "reference": "#2"
}
], - "result": [
- {
- "reference": "Observation/799ad83c-247e-3b99-b891-c10762d12345.12345678",
- "display": "2.4 g/dL"
}, - {
- "reference": "Observation/799ad83c-247e-3b99-b891-c10762d12345.12345678",
- "display": ".4 mg/dL"
}, - {
- "reference": "Observation/799ad83c-247e-3b99-b891-c10762d12345.12345678",
- "display": "9.8 mg/dL"
}
], - "conclusion": "A field that is not used often",
- "presentedForm": [
- {
- "contentType": "application/pdf",
- "title": "sas"
}
]
}
Search operation to return DiagnosticReport resources. This api has paging enabled, with a default page size of 10.
Recent Clinical Data Best Practice
One of:
/DiagnosticReport?patient=123&date=gt{today-30}
Targeted Historical Data Best Practice
One or more of:
/DiagnosticReport?patient=123&status=draft&_lastUpdated=gt2024-06-03&_lastUpdated=lt2024-09-01
patient required | string The public ID of the patient of the DiagnosticReport |
category | string Enum: "LAB" "LP29708-2" "LP7839-6" "LP29684-5" Which diagnostic discipline/department created the report. Use |
code | string The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result |
date | string The clinically relevant time of the report |
releaseToPatient | boolean Custom search parameter used to filter for reports that are signed and are available to the patient from the patient portal. |
status | string Enum: "registered" "partial" "preliminary" "final" "incomplete" "corrected" "cancelled" The status of the report. This is currently not working so do not use this parameter |
_count | number The number of resources to return. Max is 50 |
_sort | string Value: "date" Specify which fields to sort by and the direction of the sort |
_lastUpdated | string Only return resources which were last updated as specified by the given range |
_revinclude | string Value: "Provenance:target" Signals to server to return Provenance resources related to the DiagnosticReport resources. |
_summary | boolean Returns a subset of data focusing on the core of the resource |
{- "resourceType": "Bundle",
- "id": "111",
- "meta": {
- "lastUpdated": "2022-08-22T12:49:22.584-07:00"
}, - "type": "searchset",
- "total": 1,
- "entry": [
- {
- "resource": {
- "resourceType": "DiagnosticReport",
- "id": "123456",
- "meta": {
}, - "contained": [
- {
- "resourceType": "Organization",
- "id": "1",
- "active": true,
- "name": "Quest Labs"
}, - {
- "resourceType": "Specimen",
- "id": "2",
- "note": [
- {
- "text": "Blood"
}
]
}
], - "extension": [
], - "status": "registered",
- "category": [
- {
- "coding": [
]
}
], - "code": {
- "text": "CMP w/ LDH"
}, - "subject": {
- "reference": "Patient/123",
- "display": "Last, Given"
}, - "encounter": {
- "reference": "Encounter/44795920-b3da-3ad3-bffc-1234sa3ae2.123456",
- "display": "Result encounter - 123456"
}, - "effectiveDateTime": "2024-03-13T08:42:25-07:00",
- "issued": "2024-03-13T08:42:25.000-07:00",
- "performer": [
- {
- "reference": "#1"
}, - {
- "id": "123456",
- "reference": "Practitioner/123456",
- "display": "Last, Given"
}
], - "specimen": [
- {
- "reference": "#2"
}
], - "result": [
- {
- "reference": "Observation/799ad83c-247e-3b99-b891-c10762d12345.12345678",
- "display": "2.4 g/dL"
}, - {
- "reference": "Observation/799ad83c-247e-3b99-b891-c10762d12345.12345678",
- "display": ".4 mg/dL"
}, - {
- "reference": "Observation/799ad83c-247e-3b99-b891-c10762d12345.12345678",
- "display": "9.8 mg/dL"
}
], - "conclusion": "A field that is not used often",
- "presentedForm": [
- {
- "contentType": "application/pdf",
- "title": "sas"
}
]
}
}
]
}
The resource(s) returned are compliant with the US Core profile.
Read operation to return a DocumentReference resource. The DocumentReference resource identifier has been previously established via a search or a reference from another resource.
This resource is compliant with the US Core profile.
Specification references:
id required | string Example: 123 The resource ID |
{- "resourceType": "DocumentReference",
- "id": "D444445",
- "extension": [
- {
- "valueString": "Oncology treatment plan"
},
], - "identifier": [
- {
- "system": "urn:oid:2.16.840.1.113883.3.623.1"
}
], - "status": "current",
- "type": {
- "coding": [
- {
- "code": "74156-1",
- "display": "Oncology treatment plan and summary Document"
}
]
}, - "category": [
- {
- "coding": [
- {
- "code": "74156-1",
- "display": "Oncology treatment plan and summary Document"
}
]
}
], - "subject": {
- "reference": "Patient/123",
- "display": "Last, First"
}, - "date": "2017-01-26T10:50:48.322-08:00",
- "author": [
- {
- "id": "DB333",
- "reference": "Practitioner/DB333",
- "display": "Provider, First"
}
], - "custodian": {
- "reference": "Organization/C234234",
- "display": "Ontada"
}, - "content": [
- {
- "attachment": {
- "contentType": "application/pdf",
- "title": "FREE TEXT FIELD"
}, - "format": {
- "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient",
- "display": "MIMEType"
}
}, - {
- "attachment": {
- "contentType": "text/plain",
- "title": "FREE TEXT FIELD"
}, - "format": {
- "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient",
- "display": "MIMEType"
}
}
]
}
Recent Clinical Data Best Practice
One of:
/DocumentReference?patient=123&date=gt{today-30}
Targeted Historical Data Best Practice
One or more of:
/DocumentReference?patient=123&date=gt2024-06-03&date=lt2024-09-01&status=current&category={LOINC code}&type={LOINC code}
category | string Categorization of document |
date | string When this document reference was created |
patient | string Who/what is the subject of the document. Identified by patient public ID. |
period | string Time of service that is being documented |
status | string Enum: "current" "superseded" "entered-in-error" Status of the document. |
type | string Kind of document (LOINC if possible) |
releaseToPatient | boolean Custom search parameter used to filter for documents that are signed and are available to the patient from the patient portal. |
_count | number The number of resources to return |
_id | string Logical identifier of the resource |
_sort | string Specify which fields to sort by and the direction of the sort (ex: |
_include | string Value: "*" Server will return all referenced resources as part of the Bundle entry list |
_revinclude | string Value: "Provenance:target" Signals to server to return Provenance resources related to the DocumentReference resources. |
{- "resourceType": "Bundle",
- "id": "B8761",
- "meta": {
- "lastUpdated": "2022-08-25T16:57:25.205-07:00"
}, - "type": "searchset",
- "total": 1,
- "entry": [
- {
- "resource": {
- "resourceType": "DocumentReference",
- "id": "D444445",
- "extension": [
- {
- "valueString": "Oncology treatment plan"
},
], - "identifier": [
- {
- "system": "urn:oid:2.16.840.1.113883.3.623.1"
}
], - "status": "current",
- "type": {
- "coding": [
- {
- "code": "74156-1",
- "display": "Oncology treatment plan and summary Document"
}
]
}, - "category": [
- {
- "coding": [
- {
- "code": "74156-1",
- "display": "Oncology treatment plan and summary Document"
}
]
}
], - "subject": {
- "reference": "Patient/123",
- "display": "Last, First"
}, - "date": "2017-01-26T10:50:48.322-08:00",
- "author": [
- {
- "id": "DB333",
- "reference": "Practitioner/DB333",
- "display": "Provider, First"
}
], - "custodian": {
- "reference": "Organization/C234234",
- "display": "Ontada"
}, - "content": [
- {
- "attachment": {
- "contentType": "application/pdf",
- "title": "FREE TEXT FIELD"
}, - "format": {
- "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient",
- "display": "MIMEType"
}
}, - {
- "attachment": {
- "contentType": "text/plain",
- "title": "FREE TEXT FIELD"
}, - "format": {
- "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient",
- "display": "MIMEType"
}
}
]
}
}
]
}
This operation retrieves a single DocumentReference resource based on a set of search criteria. $docref will signal to the DocumentReference API to return the latest ccda document. If dates are specified, the API will return the latest ccda document within the date range.
patient required | string The public ID of the patient who is the subject of the DocumentReferences |
start | string The start date of the care to which the document is related |
end | string The end date of the care to which the document is related |
{- "resourceType": "DocumentReference",
- "id": "098765",
- "identifier": [
- {
- "system": "urn:oid:2.16.840.1.113883.3.623.1"
}
], - "status": "current",
- "type": {
}, - "category": [
], - "subject": {
- "reference": "Patient/123",
- "display": "Smithey, Harry"
}, - "date": "2025-01-31T12:18:33.553-08:00",
- "author": [
- {
- "id": "456",
- "reference": "Practitioner/456",
- "display": "Last, Given"
}
], - "custodian": {
- "reference": "Organization/789",
- "display": "Cancer Center"
}, - "content": [
- {
- "attachment": {
- "contentType": "application/xml",
- "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENsaW5pY2FsRG9jdW1lbnQgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM9InVybjpobDctb3JnOnYzIiB4c2k6c2NoZW1hTG9jYXRpb249InVybjpobDctb3JnOnYzIGluZnJhc3RydWN0dXJlL2NkYS9DREFfU0RUQy54c2QiPgogIDxyZWFsbUNvZGUgY29kZT0iVVMiLz4KICA8dHlwZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEuMyIgZXh0ZW5zaW9uPSJQT0NEX0hEMDAwMDQwIi8+CiAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMS4yIiBleHRlbnNpb249IjIwMTUtMDgtMDEiLz4KICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4xLjEiLz4KICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4xLjEiIGV4dGVuc2lvbj0iMjAxNS0wOC0wMSIvPgogIDxpZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4zLjYyMyIgZXh0ZW5zaW9uPSJQYXRpZW50UmVjb3JkQ0NEX1NtaXRoZXlfMjAyMjEwMTdfMjE0MV80OS41NDMiLz4KICA8Y29kZSBjb2RlPSIzNDEzMy05IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiLz4KICA8dGl0bGU+U21pdGhleSwgSGFycnkgUGF0aWVudCBSZWNvcmQgQ0NEPC90aXRsZT4KICA8ZWZmZWN0aXZlVGltZSB2YWx1ZT0iMjAyMjEwMTcyMTQxNDkrMDAwMCIvPgogIDxjb25maWRlbnRpYWxpdHlDb2RlIGNvZGU9Ik4iIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjUuMjUiLz4KICA8bGFuZ3VhZ2VDb2RlIGNvZGU9ImVuLVVTIi8+CiAgPHJlY29yZFRhcmdldD4KICAgIDxwYXRpZW50Um9sZT4KICAgICAgPGlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjMuNjIzIiBleHRlbnNpb249Ijc2MTM5NiIvPgogICAgICA8YWRkciB1c2U9IkhQIj48c3RyZWV0QWRkcmVzc0xpbmU+Njg1MyBDYW1kZW4gUGxhY2U8L3N0cmVldEFkZHJlc3NMaW5lPjxjaXR5PkxhcyBWZWdhczwvY2l0eT48c3RhdGU+TlY8L3N0YXRlPjxwb3N0YWxDb2RlPjg5MTMxPC9wb3N0YWxDb2RlPjwvYWRkcj4KICAgICAgPHRlbGVjb20gdmFsdWU9InRlbDo1NTUtNTU1LTU1NTUiIHVzZT0iTUMiLz4KICAgICAgPHRlbGVjb20gdmFsdWU9Im1haWx0bzpoc21pdGhleUB5YWhvby5jb20iIHVzZT0iRElSIi8+CiAgICAgIDxwYXRpZW50PgogICAgICAgIDxpZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4zLjYyMyIgZXh0ZW5zaW9uPSI3NjEzOTYiLz4KICAgICAgICA8bmFtZT48Z2l2ZW4+SGFycnk8L2dpdmVuPjxmYW1pbHk+U21pdGhleTwvZmFtaWx5PjwvbmFtZT4KICAgICAgICA8YWRtaW5pc3RyYXRpdmVHZW5kZXJDb2RlIGNvZGU9Ik0iIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjUuMSIgY29kZVN5c3RlbU5hbWU9IkhMNyBBZG1pbmlzdHJhdGl2ZSBHZW5kZXIiIGRpc3BsYXlOYW1lPSJNYWxlIi8+CiAgICAgICAgPGJpcnRoVGltZSB2YWx1ZT0iMTk4NzA2MDQiLz4KICAgICAgICA8bWFyaXRhbFN0YXR1c0NvZGUgbnVsbEZsYXZvcj0iVU5LIi8+CiAgICAgICAgPHJhY2VDb2RlIG51bGxGbGF2b3I9IlVOSyIvPgogICAgICAgIDxldGhuaWNHcm91cENvZGUgbnVsbEZsYXZvcj0iVU5LIi8+CiAgICAgICAgPGxhbmd1YWdlQ29tbXVuaWNhdGlvbj4KICAgICAgICAgIDxsYW5ndWFnZUNvZGUgbnVsbEZsYXZvcj0iVU5LIi8+CiAgICAgICAgPC9sYW5ndWFnZUNvbW11bmljYXRpb24+CiAgICAgIDwvcGF0aWVudD4KICAgIDwvcGF0aWVudFJvbGU+CiAgPC9yZWNvcmRUYXJnZXQ+CiAgPGF1dGhvcj4KICAgIDx0aW1lIHZhbHVlPSIyMDIyMTAxNzIxNDE0OSswMDAwIi8+CiAgICA8YXNzaWduZWRBdXRob3I+CiAgICAgIDxpZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My40LjYiIGV4dGVuc2lvbj0iNDAzMSIvPgogICAgICA8YWRkcj48c3RyZWV0QWRkcmVzc0xpbmU+MjE2NCBMYWtlIEZvcmVzdCBEcml2ZTwvc3RyZWV0QWRkcmVzc0xpbmU+PHN0cmVldEFkZHJlc3NMaW5lPjk3NDQgQ291bnR5IExpbmUgUm9hZDwvc3RyZWV0QWRkcmVzc0xpbmU+PGNpdHk+RWFzdCBQcm92aWRlbmNlPC9jaXR5PjxzdGF0ZT5SSTwvc3RhdGU+PHBvc3RhbENvZGU+OTQ1NTU8L3Bvc3RhbENvZGU+PC9hZGRyPgogICAgICA8dGVsZWNvbSBudWxsRmxhdm9yPSJOSSIvPgogICAgICA8YXNzaWduZWRQZXJzb24+CiAgICAgICAgPG5hbWU+PGdpdmVuPkx5bng8L2dpdmVuPjxmYW1pbHk+SW50ZXJmYWNlPC9mYW1pbHk+PC9uYW1lPgogICAgICA8L2Fzc2lnbmVkUGVyc29uPgogICAgICA8cmVwcmVzZW50ZWRPcmdhbml6YXRpb24+CiAgICAgICAgPGlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjMuNjIzIiBleHRlbnNpb249IkNCQzNENjU0ODNENjRFOTZFMDQ0MDAyMTI4NjFCMjk2Ii8+CiAgICAgICAgPG5hbWU+T25jIEhlbSBvZiBNU0g8L25hbWU+CiAgICAgICAgPHRlbGVjb20gdmFsdWU9Im1haWx0bzpEaXZpeW5pX0xibmJoaW5AbWNrZXNzb24uY29tIiB1c2U9IkRJUiIvPgogICAgICAgIDxhZGRyPjxzdHJlZXRBZGRyZXNzTGluZT4yMTY0IExha2UgRm9yZXN0IERyaXZlPC9zdHJlZXRBZGRyZXNzTGluZT48c3RyZWV0QWRkcmVzc0xpbmU+OTc0NCBDb3VudHkgTGluZSBSb2FkPC9zdHJlZXRBZGRyZXNzTGluZT48Y2l0eT5FYXN0IFByb3ZpZGVuY2U8L2NpdHk+PHN0YXRlPlJJPC9zdGF0ZT48cG9zdGFsQ29kZT45NDU1NTwvcG9zdGFsQ29kZT48L2FkZHI+CiAgICAgIDwvcmVwcmVzZW50ZWRPcmdhbml6YXRpb24+CiAgICA8L2Fzc2lnbmVkQXV0aG9yPgogIDwvYXV0aG9yPgogIDxpbmZvcm1hbnQ+CiAgICA8YXNzaWduZWRFbnRpdHk+CiAgICAgIDxpZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4zLjYyMyIgZXh0ZW5zaW9uPSIwODQyNjAiLz4KICAgICAgPGFkZHIgbnVsbEZsYXZvcj0iTkkiLz4KICAgICAgPHRlbGVjb20gbnVsbEZsYXZvcj0iTkkiLz4KICAgICAgPGFzc2lnbmVkUGVyc29uPgogICAgICAgIDxuYW1lPjxnaXZlbj5MYWNpZTwvZ2l2ZW4+PGZhbWlseT5SYXZlbnNjcmFmdDwvZmFtaWx5PjwvbmFtZT4KICAgICAgPC9hc3NpZ25lZFBlcnNvbj4KICAgICAgPHJlcHJlc2VudGVkT3JnYW5pemF0aW9uPgogICAgICAgIDxpZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4zLjYyMyIgZXh0ZW5zaW9uPSJDQkMzRDY1NDgzRDY0RTk2RTA0NDAwMjEyODYxQjI5NiIvPgogICAgICAgIDxuYW1lPk9uYyBIZW0gb2YgTVNIPC9uYW1lPgogICAgICAgIDx0ZWxlY29tIHZhbHVlPSJtYWlsdG86RGl2aXluaV9MYm5iaGluQG1ja2Vzc29uLmNvbSIgdXNlPSJESVIiLz4KICAgICAgICA8YWRkcj48c3RyZWV0QWRkcmVzc0xpbmU+MjE2NCBMYWtlIEZvcmVzdCBEcml2ZTwvc3RyZWV0QWRkcmVzc0xpbmU+PHN0cmVldEFkZHJlc3NMaW5lPjk3NDQgQ291bnR5IExpbmUgUm9hZDwvc3RyZWV0QWRkcmVzc0xpbmU+PGNpdHk+RWFzdCBQcm92aWRlbmNlPC9jaXR5PjxzdGF0ZT5SSTwvc3RhdGU+PHBvc3RhbENvZGU+OTQ1NTU8L3Bvc3RhbENvZGU+PC9hZGRyPgogICAgICA8L3JlcHJlc2VudGVkT3JnYW5pemF0aW9uPgogICAgPC9hc3NpZ25lZEVudGl0eT4KICA8L2luZm9ybWFudD4KICA8Y3VzdG9kaWFuPgogICAgPGFzc2lnbmVkQ3VzdG9kaWFuPgogICAgICA8cmVwcmVzZW50ZWRDdXN0b2RpYW5Pcmdhbml6YXRpb24+CiAgICAgICAgPGlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjMuNjIzIi8+CiAgICAgICAgPG5hbWU+TWNLZXNzb24gU3BlY2lhbHR5IEhlYWx0aDwvbmFtZT4KICAgICAgICA8dGVsZWNvbSB2YWx1ZT0idGVsOjgwMCAzODEgMjYzNyIgdXNlPSJXUCIvPgogICAgICAgIDxhZGRyPjxzdHJlZXRBZGRyZXNzTGluZT4xMDEwMSBXb29kbG9jaCBGb3Jlc3Q8L3N0cmVldEFkZHJlc3NMaW5lPjxjaXR5PlRoZSBXb29kbGFuZHM8L2NpdHk+PGNvdW50cnk+VVNBPC9jb3VudHJ5PjxzdGF0ZT5UWDwvc3RhdGU+PHBvc3RhbENvZGU+NzczODA8L3Bvc3RhbENvZGU+PC9hZGRyPgogICAgICA8L3JlcHJlc2VudGVkQ3VzdG9kaWFuT3JnYW5pemF0aW9uPgogICAgPC9hc3NpZ25lZEN1c3RvZGlhbj4KICA8L2N1c3RvZGlhbj4KICA8ZG9jdW1lbnRhdGlvbk9mPgogICAgPHNlcnZpY2VFdmVudCBjbGFzc0NvZGU9IlBDUFIiPgogICAgICA8ZWZmZWN0aXZlVGltZT4KICAgICAgICA8bG93IHZhbHVlPSIyMDIyMTAxNyIvPgogICAgICAgIDxoaWdoIHZhbHVlPSIyMDIyMTAxNyIvPgogICAgICA8L2VmZmVjdGl2ZVRpbWU+CiAgICAgIDxwZXJmb3JtZXIgdHlwZUNvZGU9IlBSRiI+CiAgICAgICAgPGFzc2lnbmVkRW50aXR5PgogICAgICAgICAgPGlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjMuNjIzIiBleHRlbnNpb249IjA4NDI2MCIvPgogICAgICAgICAgPGFkZHIgbnVsbEZsYXZvcj0iTkkiLz4KICAgICAgICAgIDx0ZWxlY29tIG51bGxGbGF2b3I9Ik5JIi8+CiAgICAgICAgICA8YXNzaWduZWRQZXJzb24+CiAgICAgICAgICAgIDxuYW1lPjxnaXZlbj5MYWNpZTwvZ2l2ZW4+PGZhbWlseT5SYXZlbnNjcmFmdDwvZmFtaWx5PjwvbmFtZT4KICAgICAgICAgIDwvYXNzaWduZWRQZXJzb24+CiAgICAgICAgICA8cmVwcmVzZW50ZWRPcmdhbml6YXRpb24+CiAgICAgICAgICAgIDxpZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4zLjYyMyIgZXh0ZW5zaW9uPSJDQkMzRDY1NDgzRDY0RTk2RTA0NDAwMjEyODYxQjI5NiIvPgogICAgICAgICAgICA8bmFtZT5PbmMgSGVtIG9mIE1TSDwvbmFtZT4KICAgICAgICAgICAgPHRlbGVjb20gdmFsdWU9Im1haWx0bzpEaXZpeW5pX0xibmJoaW5AbWNrZXNzb24uY29tIiB1c2U9IkRJUiIvPgogICAgICAgICAgICA8YWRkcj48c3RyZWV0QWRkcmVzc0xpbmU+MjE2NCBMYWtlIEZvcmVzdCBEcml2ZTwvc3RyZWV0QWRkcmVzc0xpbmU+PHN0cmVldEFkZHJlc3NMaW5lPjk3NDQgQ291bnR5IExpbmUgUm9hZDwvc3RyZWV0QWRkcmVzc0xpbmU+PGNpdHk+RWFzdCBQcm92aWRlbmNlPC9jaXR5PjxzdGF0ZT5SSTwvc3RhdGU+PHBvc3RhbENvZGU+OTQ1NTU8L3Bvc3RhbENvZGU+PC9hZGRyPgogICAgICAgICAgPC9yZXByZXNlbnRlZE9yZ2FuaXphdGlvbj4KICAgICAgICA8L2Fzc2lnbmVkRW50aXR5PgogICAgICA8L3BlcmZvcm1lcj4KICAgICAgPHBlcmZvcm1lciB0eXBlQ29kZT0iUFJGIj4KICAgICAgICA8YXNzaWduZWRFbnRpdHk+CiAgICAgICAgICA8aWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMy42MjMiIGV4dGVuc2lvbj0iNTE3OTM1MTcwMyIvPgogICAgICAgICAgPGFkZHIgbnVsbEZsYXZvcj0iTkkiLz4KICAgICAgICAgIDx0ZWxlY29tIG51bGxGbGF2b3I9Ik5JIi8+CiAgICAgICAgICA8YXNzaWduZWRQZXJzb24+CiAgICAgICAgICAgIDxuYW1lPjxnaXZlbj5Nb29yPC9naXZlbj48ZmFtaWx5Pk9tYW48L2ZhbWlseT48L25hbWU+CiAgICAgICAgICA8L2Fzc2lnbmVkUGVyc29uPgogICAgICAgICAgPHJlcHJlc2VudGVkT3JnYW5pemF0aW9uPgogICAgICAgICAgICA8aWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMy42MjMiIGV4dGVuc2lvbj0iQ0JDM0Q2NTQ4M0Q2NEU5NkUwNDQwMDIxMjg2MUIyOTYiLz4KICAgICAgICAgICAgPG5hbWU+T25jIEhlbSBvZiBNU0g8L25hbWU+CiAgICAgICAgICAgIDx0ZWxlY29tIHZhbHVlPSJtYWlsdG86RGl2aXluaV9MYm5iaGluQG1ja2Vzc29uLmNvbSIgdXNlPSJESVIiLz4KICAgICAgICAgICAgPGFkZHI+PHN0cmVldEFkZHJlc3NMaW5lPjIxNjQgTGFrZSBGb3Jlc3QgRHJpdmU8L3N0cmVldEFkZHJlc3NMaW5lPjxzdHJlZXRBZGRyZXNzTGluZT45NzQ0IENvdW50eSBMaW5lIFJvYWQ8L3N0cmVldEFkZHJlc3NMaW5lPjxjaXR5PkVhc3QgUHJvdmlkZW5jZTwvY2l0eT48c3RhdGU+Ukk8L3N0YXRlPjxwb3N0YWxDb2RlPjk0NTU1PC9wb3N0YWxDb2RlPjwvYWRkcj4KICAgICAgICAgIDwvcmVwcmVzZW50ZWRPcmdhbml6YXRpb24+CiAgICAgICAgPC9hc3NpZ25lZEVudGl0eT4KICAgICAgPC9wZXJmb3JtZXI+CiAgICA8L3NlcnZpY2VFdmVudD4KICA8L2RvY3VtZW50YXRpb25PZj4KICA8Y29tcG9uZW50T2Y+CiAgICA8ZW5jb21wYXNzaW5nRW5jb3VudGVyPgogICAgICA8aWQgcm9vdD0iY2Y3ZjMzNDUtYzgzNi00YzBiLWFhZDYtZjNlNjk1NTgwOTA0Ii8+CiAgICAgIDxlZmZlY3RpdmVUaW1lIHZhbHVlPSIyMDIyMTAxNyIvPgogICAgICA8bG9jYXRpb24+CiAgICAgICAgPGhlYWx0aENhcmVGYWNpbGl0eT4KICAgICAgICAgIDxsb2NhdGlvbj4KICAgICAgICAgICAgPG5hbWU+PGdpdmVuPlNhbiBGcmFuY2lzY28gTWVkaWNhbCBPbmNvbG9neTwvZ2l2ZW4+PC9uYW1lPgogICAgICAgICAgPC9sb2NhdGlvbj4KICAgICAgICA8L2hlYWx0aENhcmVGYWNpbGl0eT4KICAgICAgPC9sb2NhdGlvbj4KICAgIDwvZW5jb21wYXNzaW5nRW5jb3VudGVyPgogIDwvY29tcG9uZW50T2Y+CiAgPGNvbXBvbmVudD4KICAgIDxzdHJ1Y3R1cmVkQm9keT4KICAgICAgPGNvbXBvbmVudD4KICAgICAgICA8c2VjdGlvbiBudWxsRmxhdm9yPSJOSSI+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjkiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi45Ii8+CiAgICAgICAgICA8Y29kZSBjb2RlPSI1MTg0Ny0yIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9IkFTU0VTU01FTlQgQU5EIFBMQU4iLz4KICAgICAgICAgIDx0aXRsZT5Bc3Nlc3NtZW50IGFuZCBQbGFuPC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGF0ZTwvdGg+CgkJCQk8dGg+QXNzZXNzbWVudDwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+CgkJCTx0cj48dGQgY29sc3Bhbj0iMiI+Tk9ORTwvdGQ+PC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvdGV4dD4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi42LjEiIGV4dGVuc2lvbj0iMjAxNS0wOC0wMSIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi42Ii8+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjYiIGV4dGVuc2lvbj0iMjAxNS0wOC0wMSIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi42LjEiLz4KICAgICAgICAgIDxjb2RlIGNvZGU9IjQ4NzY1LTIiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iQWxsZXJnaWVzLCBhZHZlcnNlIHJlYWN0aW9ucywgYWxlcnRzIi8+CiAgICAgICAgICA8dGl0bGU+QWxsZXJnaWVzIGFuZCBBZHZlcnNlIFJlYWN0aW9uczwvdGl0bGU+CiAgICAgICAgICA8dGV4dD48dGFibGU+CiAgICA8dGhlYWQ+CiAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk1lZGljYXRpb24vR3JvdXAgTmFtZTwvdGg+CiAgICAgICAgICAgICAgICA8dGg+UmVhY3Rpb248L3RoPgogICAgICAgICAgICAgICAgPHRoPlNldmVyaXR5PC90aD4KICAgICAgICAgICAgICAgIDx0aD5EYXRlPC90aD4KICAgICAgICA8L3RyPgogICAgPC90aGVhZD4KICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgIDx0ciBJRD0iQWxlcnRPQlMtMTAwMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+U3VsZmFtaWRlPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5CcmFkeWNhcmRpYSwgSXRjaHkgc2tpbiBlcnVwdGlvbiwgQ2hpbGw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPk1vZGVyYXRlPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4wOC8xMS8yMDIyPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHIgSUQ9IkFsZXJ0T0JTLTEwMDEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnBlbmljaWxsaW4gRzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPk1pbGQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjA3LzIxLzIwMjI8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0ciBJRD0iQWxlcnRPQlMtMTAwMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+YXNwaXJpbjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+QW54aWV0eTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+TWlsZCB0byBtb2RlcmF0ZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+MDgvMTEvMjAyMjwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgPC90Ym9keT4KPC90YWJsZT4KPC90ZXh0PgogICAgICAgICAgPGVudHJ5PgogICAgICAgICAgICA8YWN0IGNsYXNzQ29kZT0iQUNUIiBtb29kQ29kZT0iRVZOIj4KICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjMwIiBleHRlbnNpb249IjIwMTUtMDgtMDEiLz4KICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjMwIi8+CiAgICAgICAgICAgICAgPGlkIHJvb3Q9IjEwMGI3MzQ5LTYwZGEtNDFmYi05NWIyLTdhNWU4NmE1YjYwYSIvPgogICAgICAgICAgICAgIDxjb2RlIGNvZGU9IjQ4NzY1LTIiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iQWxsZXJnaWVzLCBhZHZlcnNlIHJlYWN0aW9ucywgYWxlcnRzIi8+CiAgICAgICAgICAgICAgPHN0YXR1c0NvZGUgY29kZT0iYWN0aXZlIi8+CiAgICAgICAgICAgICAgPGVmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICA8bG93IHZhbHVlPSIyMDIyMTAxNzIxNDE0OSswMDAwIi8+CiAgICAgICAgICAgICAgICA8aGlnaCB2YWx1ZT0iMjAyMjEwMTcyMTQxNDkrMDAwMCIvPgogICAgICAgICAgICAgIDwvZWZmZWN0aXZlVGltZT4KICAgICAgICAgICAgICA8ZW50cnlSZWxhdGlvbnNoaXAgdHlwZUNvZGU9IlNVQkoiPgogICAgICAgICAgICAgICAgPG9ic2VydmF0aW9uIGNsYXNzQ29kZT0iT0JTIiBtb29kQ29kZT0iRVZOIj4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC43IiBleHRlbnNpb249IjIwMTQtMDYtMDkiLz4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjQuMy45MCIvPgogICAgICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjciLz4KICAgICAgICAgICAgICAgICAgPGlkIHJvb3Q9IjA3MmJmZTZlLWRiNzEtNDQzYS05MzdlLTlmNDRjNmM1NDlmZiIvPgogICAgICAgICAgICAgICAgICA8Y29kZSBjb2RlPSJBU1NFUlRJT04iIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjUuNCIgY29kZVN5c3RlbU5hbWU9IkhMNyBBY3QgQ29kZXMiIGRpc3BsYXlOYW1lPSJBY3RDb2RlLkFTU0VSVElPTiIvPgogICAgICAgICAgICAgICAgICA8dGV4dD48cmVmZXJlbmNlIHZhbHVlPSIjQWxlcnRPQlMtMTAwMCIvPjwvdGV4dD4KICAgICAgICAgICAgICAgICAgPHN0YXR1c0NvZGUgY29kZT0iY29tcGxldGVkIi8+CiAgICAgICAgICAgICAgICAgIDxlZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgICAgIDxsb3cgdmFsdWU9IjIwMjIwODExIi8+CiAgICAgICAgICAgICAgICAgIDwvZWZmZWN0aXZlVGltZT4KICAgICAgICAgICAgICAgICAgPHZhbHVlIHhzaTp0eXBlPSJDRCIgY29kZT0iNDE2MDk4MDAyIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42Ljk2IiBjb2RlU3lzdGVtTmFtZT0iU05PTUVEIENUIiBkaXNwbGF5TmFtZT0iRHJ1ZyBBbGxlcmd5IChkaXNvcmRlcikiLz4KICAgICAgICAgICAgICAgICAgPHBhcnRpY2lwYW50IHR5cGVDb2RlPSJDU00iPgogICAgICAgICAgICAgICAgICAgIDxwYXJ0aWNpcGFudFJvbGUgY2xhc3NDb2RlPSJNQU5VIj4KICAgICAgICAgICAgICAgICAgICAgIDxwbGF5aW5nRW50aXR5IGNsYXNzQ29kZT0iTU1BVCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNvZGU9IjgyMTAxIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42Ljg4IiBjb2RlU3lzdGVtTmFtZT0iUnhOb3JtIiBkaXNwbGF5TmFtZT0ic3VsZmFjZXRhbWlkZSBzb2RpdW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxvcmlnaW5hbFRleHQ+PHJlZmVyZW5jZSB2YWx1ZT0iI0FsZXJ0T0JTLTEwMDAiLz48L29yaWdpbmFsVGV4dD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9jb2RlPgogICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT5TdWxmYW1pZGU8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICA8L3BsYXlpbmdFbnRpdHk+CiAgICAgICAgICAgICAgICAgICAgPC9wYXJ0aWNpcGFudFJvbGU+CiAgICAgICAgICAgICAgICAgIDwvcGFydGljaXBhbnQ+CiAgICAgICAgICAgICAgICAgIDxlbnRyeVJlbGF0aW9uc2hpcCB0eXBlQ29kZT0iTUZTVCIgaW52ZXJzaW9uSW5kPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICA8b2JzZXJ2YXRpb24gY2xhc3NDb2RlPSJPQlMiIG1vb2RDb2RlPSJFVk4iPgogICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC45IiBleHRlbnNpb249IjIwMTQtMDYtMDkiLz4KICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuOSIvPgogICAgICAgICAgICAgICAgICAgICAgPGlkIHJvb3Q9Ijk4ZGI3ZDRjLWM3OWEtNDU5Yi05ODdjLTMxMDM1ODI2ZjJkZiIvPgogICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY29kZT0iQVNTRVJUSU9OIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My41LjQiIGNvZGVTeXN0ZW1OYW1lPSJITDcgQWN0IENvZGVzIiBkaXNwbGF5TmFtZT0iQWN0Q29kZS5BU1NFUlRJT04iLz4KICAgICAgICAgICAgICAgICAgICAgIDxzdGF0dXNDb2RlIGNvZGU9ImNvbXBsZXRlZCIvPgogICAgICAgICAgICAgICAgICAgICAgPGVmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsb3cgdmFsdWU9IjIwMjIwODExIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoaWdoIHZhbHVlPSIyMDIyMDgxMSIvPgogICAgICAgICAgICAgICAgICAgICAgPC9lZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHhzaTp0eXBlPSJDRCIgY29kZT0iNDg4NjcwMDMiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuOTYiIGNvZGVTeXN0ZW1OYW1lPSJTTk9NRUQgQ1QiIGRpc3BsYXlOYW1lPSJCcmFkeWNhcmRpYSIvPgogICAgICAgICAgICAgICAgICAgIDwvb2JzZXJ2YXRpb24+CiAgICAgICAgICAgICAgICAgIDwvZW50cnlSZWxhdGlvbnNoaXA+CiAgICAgICAgICAgICAgICAgIDxlbnRyeVJlbGF0aW9uc2hpcCB0eXBlQ29kZT0iTUZTVCIgaW52ZXJzaW9uSW5kPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICA8b2JzZXJ2YXRpb24gY2xhc3NDb2RlPSJPQlMiIG1vb2RDb2RlPSJFVk4iPgogICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC45IiBleHRlbnNpb249IjIwMTQtMDYtMDkiLz4KICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuOSIvPgogICAgICAgICAgICAgICAgICAgICAgPGlkIHJvb3Q9ImMxYTU0YThkLTYxYTgtNGVjOC04YTc4LTE5OGFkOTgyMzNhZCIvPgogICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY29kZT0iQVNTRVJUSU9OIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My41LjQiIGNvZGVTeXN0ZW1OYW1lPSJITDcgQWN0IENvZGVzIiBkaXNwbGF5TmFtZT0iQWN0Q29kZS5BU1NFUlRJT04iLz4KICAgICAgICAgICAgICAgICAgICAgIDxzdGF0dXNDb2RlIGNvZGU9ImNvbXBsZXRlZCIvPgogICAgICAgICAgICAgICAgICAgICAgPGVmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsb3cgdmFsdWU9IjIwMjIwODExIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoaWdoIHZhbHVlPSIyMDIyMDgxMSIvPgogICAgICAgICAgICAgICAgICAgICAgPC9lZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHhzaTp0eXBlPSJDRCIgY29kZT0iNDM3MjQwMDIiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuOTYiIGNvZGVTeXN0ZW1OYW1lPSJTTk9NRUQgQ1QiIGRpc3BsYXlOYW1lPSJDaGlsbCIvPgogICAgICAgICAgICAgICAgICAgIDwvb2JzZXJ2YXRpb24+CiAgICAgICAgICAgICAgICAgIDwvZW50cnlSZWxhdGlvbnNoaXA+CiAgICAgICAgICAgICAgICAgIDxlbnRyeVJlbGF0aW9uc2hpcCB0eXBlQ29kZT0iTUZTVCIgaW52ZXJzaW9uSW5kPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICA8b2JzZXJ2YXRpb24gY2xhc3NDb2RlPSJPQlMiIG1vb2RDb2RlPSJFVk4iPgogICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC45IiBleHRlbnNpb249IjIwMTQtMDYtMDkiLz4KICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuOSIvPgogICAgICAgICAgICAgICAgICAgICAgPGlkIHJvb3Q9IjVmN2JlYzU1LWZiNzItNGFlYy1hNTEzLTU2M2E4MGY4OTVhMCIvPgogICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY29kZT0iQVNTRVJUSU9OIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My41LjQiIGNvZGVTeXN0ZW1OYW1lPSJITDcgQWN0IENvZGVzIiBkaXNwbGF5TmFtZT0iQWN0Q29kZS5BU1NFUlRJT04iLz4KICAgICAgICAgICAgICAgICAgICAgIDxzdGF0dXNDb2RlIGNvZGU9ImNvbXBsZXRlZCIvPgogICAgICAgICAgICAgICAgICAgICAgPGVmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsb3cgdmFsdWU9IjIwMjIwODExIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoaWdoIHZhbHVlPSIyMDIyMDgxMSIvPgogICAgICAgICAgICAgICAgICAgICAgPC9lZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHhzaTp0eXBlPSJDRCIgY29kZT0iNjQxNDQwMDIiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuOTYiIGNvZGVTeXN0ZW1OYW1lPSJTTk9NRUQgQ1QiIGRpc3BsYXlOYW1lPSJJdGNoeSBza2luIGVydXB0aW9uIi8+CiAgICAgICAgICAgICAgICAgICAgPC9vYnNlcnZhdGlvbj4KICAgICAgICAgICAgICAgICAgPC9lbnRyeVJlbGF0aW9uc2hpcD4KICAgICAgICAgICAgICAgICAgPGVudHJ5UmVsYXRpb25zaGlwIHR5cGVDb2RlPSJTVUJKIiBpbnZlcnNpb25JbmQ9InRydWUiPgogICAgICAgICAgICAgICAgICAgIDxvYnNlcnZhdGlvbiBjbGFzc0NvZGU9Ik9CUyIgbW9vZENvZGU9IkVWTiI+CiAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjgiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC44Ii8+CiAgICAgICAgICAgICAgICAgICAgICA8aWQgcm9vdD0iZDQ4YTNlMmQtZmEyZi00ZmJiLWJkMzktYjBhNWU3OTBkYzNkIi8+CiAgICAgICAgICAgICAgICAgICAgICA8Y29kZSBjb2RlPSJTRVYiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjUuNCIgY29kZVN5c3RlbU5hbWU9IkhMN0FjdENvZGUiIGRpc3BsYXlOYW1lPSJTZXZlcml0eSBvYnNlcnZhdGlvbiIvPgogICAgICAgICAgICAgICAgICAgICAgPHN0YXR1c0NvZGUgY29kZT0iY29tcGxldGVkIi8+CiAgICAgICAgICAgICAgICAgICAgICA8ZWZmZWN0aXZlVGltZT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxvdyB2YWx1ZT0iMjAyMjA4MTEiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGhpZ2ggdmFsdWU9IjIwMjIwODExIi8+CiAgICAgICAgICAgICAgICAgICAgICA8L2VmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgeHNpOnR5cGU9IkNEIiBjb2RlPSI2NzM2MDA3IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42Ljk2IiBjb2RlU3lzdGVtTmFtZT0iU05PTUVEIENUIiBkaXNwbGF5TmFtZT0iTW9kZXJhdGUiLz4KICAgICAgICAgICAgICAgICAgICA8L29ic2VydmF0aW9uPgogICAgICAgICAgICAgICAgICA8L2VudHJ5UmVsYXRpb25zaGlwPgogICAgICAgICAgICAgICAgICA8ZW50cnlSZWxhdGlvbnNoaXAgdHlwZUNvZGU9IlJFRlIiIGludmVyc2lvbkluZD0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgPG9ic2VydmF0aW9uIGNsYXNzQ29kZT0iT0JTIiBtb29kQ29kZT0iRVZOIj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMjgiLz4KICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNvZGU9IjMzOTk5LTQiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iU3RhdHVzIi8+CiAgICAgICAgICAgICAgICAgICAgICA8c3RhdHVzQ29kZSBjb2RlPSJjb21wbGV0ZWQiLz4KICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSB4c2k6dHlwZT0iQ0UiIGNvZGU9IjU1NTYxMDAzIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42Ljk2IiBjb2RlU3lzdGVtTmFtZT0iU05PTUVEIENUIiBkaXNwbGF5TmFtZT0iQWN0aXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPC9vYnNlcnZhdGlvbj4KICAgICAgICAgICAgICAgICAgPC9lbnRyeVJlbGF0aW9uc2hpcD4KICAgICAgICAgICAgICAgIDwvb2JzZXJ2YXRpb24+CiAgICAgICAgICAgICAgPC9lbnRyeVJlbGF0aW9uc2hpcD4KICAgICAgICAgICAgPC9hY3Q+CiAgICAgICAgICA8L2VudHJ5PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICAgIDxjb21wb25lbnQ+CiAgICAgICAgPHNlY3Rpb24+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjEwIi8+CiAgICAgICAgICA8Y29kZSBjb2RlPSIxODc3Ni01IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9IlRyZWF0bWVudCBwbGFuIi8+CiAgICAgICAgICA8dGl0bGU+Q2FyZSBQbGFuPC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGF0ZTwvdGg+CgkJCQk8dGg+VHlwZTwvdGg+CgkJCQk8dGg+VmFsdWU8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJCQkJPHRyIElEPSJDYXJlUGxhblJlZi0xMDAzIj4KCQkJCQkJPHRkPjAxLzA5LzIwMjM8L3RkPgoJCQkJCQk8dGQ+QVBQT0lOVE1FTlQ8L3RkPgoJCQkJCQk8dGQ+Q2hlbW8gQzZEMjIgQ2lzcGxhdGluICsgQ2V0dXhpbWFiIEQxLDgsMTUsMjIgUTI4RCAoSGVhZCBhbmQgTmVjayk8L3RkPgoJCQkJPC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvdGV4dD4KICAgICAgICAgIDxlbnRyeT4KICAgICAgICAgICAgPGVuY291bnRlciBjbGFzc0NvZGU9IkVOQyIgbW9vZENvZGU9IkFSUSI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC40MCIvPgogICAgICAgICAgICAgIDxpZCByb290PSJjOTUyNjY4MS1jMzFkLTQ4OGYtYmJiMy1jZjdhOGYxYjNhNTMiLz4KICAgICAgICAgICAgICA8dGV4dD5DaGVtbyBDNEQxIENpc3BsYXRpbiArIENldHV4aW1hYiBEMSw4LDE1LDIyIFEyOEQgKEhlYWQgYW5kIE5lY2spPHJlZmVyZW5jZSB2YWx1ZT0iI0NhcmVQbGFuUmVmLTEwMTQiLz48L3RleHQ+CiAgICAgICAgICAgICAgPGVmZmVjdGl2ZVRpbWUgdmFsdWU9IjIwMjIxMDI0Ii8+CiAgICAgICAgICAgIDwvZW5jb3VudGVyPgogICAgICAgICAgPC9lbnRyeT4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi4xMiIvPgogICAgICAgICAgPGNvZGUgY29kZT0iMjkyOTktNSIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJSRUFTT04gRk9SIFZJU0lUIi8+CiAgICAgICAgICA8dGl0bGU+UmVhc29uIGZvciBWaXNpdDwvdGl0bGU+CiAgICAgICAgICA8dGV4dD5DaGVtbyBDM0QyMiBDaXNwbGF0aW4gKyBDZXR1eGltYWIgRDEsOCwxNSwyMiBRMjhEIChIZWFkIGFuZCBOZWNrKTwvdGV4dD4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi41NiIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICA8Y29kZSBjb2RlPSIxMDE5MC03IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9Ik1lbnRhbCBTdGF0dXMiLz4KICAgICAgICAgIDx0aXRsZT5NZW50YWwgU3RhdHVzPC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGF0ZTwvdGg+CgkJCQk8dGg+VmFsdWU8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJCQkJCTx0ciBJRD0iTWVudGFsU3RhdHVzUmVmLTEwMTUiPgoJCQkJCQkJPHRkPjA3LzIxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPk1lbW9yeSBmdW5jdGlvbiBub3JtYWw8L3RkPgoJCQkJCTwvdHI+Cgk8L3Rib2R5Pgo8L3RhYmxlPgo8L3RleHQ+CiAgICAgICAgICA8ZW50cnk+CiAgICAgICAgICAgIDxvYnNlcnZhdGlvbiBjbGFzc0NvZGU9Ik9CUyIgbW9vZENvZGU9IkVWTiI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC43NCIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICAgICAgPGlkIHJvb3Q9IjBmYzBkNmJhLTFiMTAtNGEzMC05ZmQyLWRhNjI4MGJlOTJhMCIvPgogICAgICAgICAgICAgIDxjb2RlIGNvZGU9IjM3MzkzMDAwMCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi45NiIgY29kZVN5c3RlbU5hbWU9IlNOT01FRCBDVCIgZGlzcGxheU5hbWU9IkNvZ25pdGl2ZSBTdGF0dXMgRmluZGluZyI+CiAgICAgICAgICAgICAgICA8dHJhbnNsYXRpb24gY29kZT0iNzUyNzUtOCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJDb2duaXRpdmUgZnVuY3Rpb24gW0ludGVycHJldGF0aW9uXSIvPgogICAgICAgICAgICAgIDwvY29kZT4KICAgICAgICAgICAgICA8dGV4dD48cmVmZXJlbmNlIHZhbHVlPSIjTWVudGFsU3RhdHVzUmVmLTEwMTUiLz48L3RleHQ+CiAgICAgICAgICAgICAgPHN0YXR1c0NvZGUgY29kZT0iY29tcGxldGVkIi8+CiAgICAgICAgICAgICAgPGVmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICA8bG93IHZhbHVlPSIyMDIyMDcyMSIvPgogICAgICAgICAgICAgIDwvZWZmZWN0aXZlVGltZT4KICAgICAgICAgICAgICA8dmFsdWUgeHNpOnR5cGU9IkNEIiBjb2RlPSIyNDc2MDIwMDUiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuOTYiIGNvZGVTeXN0ZW1OYW1lPSJTTk9NRUQgQ1QiIGRpc3BsYXlOYW1lPSJNZW1vcnkgZnVuY3Rpb24gbm9ybWFsIj4KICAgICAgICAgICAgICAgIDx0cmFuc2xhdGlvbiBudWxsRmxhdm9yPSJVTksiLz4KICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICA8L29ic2VydmF0aW9uPgogICAgICAgICAgPC9lbnRyeT4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi4yMi4xIiBleHRlbnNpb249IjIwMTUtMDgtMDEiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMjIiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMjIiIGV4dGVuc2lvbj0iMjAxNS0wOC0wMSIvPgogICAgICAgICAgPGNvZGUgY29kZT0iNDYyNDAtOCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJFbmNvdW50ZXJzIi8+CiAgICAgICAgICA8dGl0bGU+RW5jb3VudGVyczwvdGl0bGU+CiAgICAgICAgICA8dGV4dD48dGFibGU+Cgk8dGhlYWQ+CgkJPHRyPgoJCQkJCQkJPHRoPkRhdGU8L3RoPgoJCQkJPHRoPk5hbWU8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJCQkJCTx0ciBJRD0iRW5jb3VudGVyRGlhZ25vc2lzUmVmLTEwMTgiPgoJCQkJCQkJPHRkPjA4LzAxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPkxhcnluZ2VhbCBjYW5jZXIsIHN1cHJhZ2xvdHRpczwvdGQ+CQkJCQkJCgkJCQkJPC90cj4KCQkJCQk8dHIgSUQ9IkVuY291bnRlckRpYWdub3Npc1JlZi0xMDE5Ij4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD5OZXcgQXBwb2ludG1lbnQ8L3RkPgkJCQkJCQoJCQkJCTwvdHI+Cgk8L3Rib2R5Pgo8L3RhYmxlPgo8L3RleHQ+CiAgICAgICAgICA8ZW50cnk+CiAgICAgICAgICAgIDxlbmNvdW50ZXIgY2xhc3NDb2RlPSJFTkMiIG1vb2RDb2RlPSJFVk4iPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuNDkiIGV4dGVuc2lvbj0iMjAxNS0wOC0wMSIvPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuNDkiLz4KICAgICAgICAgICAgICA8aWQgcm9vdD0iNDNkYmU3M2EtYzE5Yi00MzlhLWI5NjMtNTRmZTQzMjBlMWZjIi8+CiAgICAgICAgICAgICAgPGNvZGUgbnVsbEZsYXZvcj0iVU5LIi8+CiAgICAgICAgICAgICAgPHRleHQ+PHJlZmVyZW5jZSB2YWx1ZT0iI0VuY291bnRlckRpYWdub3Npc1JlZi0xMDE5Ii8+PC90ZXh0PgogICAgICAgICAgICAgIDxlZmZlY3RpdmVUaW1lIHZhbHVlPSIyMDIyMDgwMSIvPgogICAgICAgICAgICAgIDxwZXJmb3JtZXIgdHlwZUNvZGU9IlBSRiI+CiAgICAgICAgICAgICAgICA8YXNzaWduZWRFbnRpdHk+CiAgICAgICAgICAgICAgICAgIDxpZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4zLjYyMyIgZXh0ZW5zaW9uPSIwODQyNjAiLz4KICAgICAgICAgICAgICAgICAgPGFkZHIgbnVsbEZsYXZvcj0iTkkiLz4KICAgICAgICAgICAgICAgICAgPHRlbGVjb20gbnVsbEZsYXZvcj0iTkkiLz4KICAgICAgICAgICAgICAgICAgPGFzc2lnbmVkUGVyc29uPgogICAgICAgICAgICAgICAgICAgIDxuYW1lPjxnaXZlbj5MYWNpZTwvZ2l2ZW4+PGZhbWlseT5SYXZlbnNjcmFmdDwvZmFtaWx5PjwvbmFtZT4KICAgICAgICAgICAgICAgICAgPC9hc3NpZ25lZFBlcnNvbj4KICAgICAgICAgICAgICAgICAgPHJlcHJlc2VudGVkT3JnYW5pemF0aW9uPgogICAgICAgICAgICAgICAgICAgIDxpZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4zLjYyMyIgZXh0ZW5zaW9uPSJDQkMzRDY1NDgzRDY0RTk2RTA0NDAwMjEyODYxQjI5NiIvPgogICAgICAgICAgICAgICAgICAgIDxuYW1lPk9uYyBIZW0gb2YgTVNIPC9uYW1lPgogICAgICAgICAgICAgICAgICAgIDx0ZWxlY29tIHZhbHVlPSJtYWlsdG86RGl2aXluaV9MYm5iaGluQG1ja2Vzc29uLmNvbSIgdXNlPSJESVIiLz4KICAgICAgICAgICAgICAgICAgICA8YWRkcj48c3RyZWV0QWRkcmVzc0xpbmU+MjE2NCBMYWtlIEZvcmVzdCBEcml2ZTwvc3RyZWV0QWRkcmVzc0xpbmU+PHN0cmVldEFkZHJlc3NMaW5lPjk3NDQgQ291bnR5IExpbmUgUm9hZDwvc3RyZWV0QWRkcmVzc0xpbmU+PGNpdHk+RWFzdCBQcm92aWRlbmNlPC9jaXR5PjxzdGF0ZT5SSTwvc3RhdGU+PHBvc3RhbENvZGU+OTQ1NTU8L3Bvc3RhbENvZGU+PC9hZGRyPgogICAgICAgICAgICAgICAgICA8L3JlcHJlc2VudGVkT3JnYW5pemF0aW9uPgogICAgICAgICAgICAgICAgPC9hc3NpZ25lZEVudGl0eT4KICAgICAgICAgICAgICA8L3BlcmZvcm1lcj4KICAgICAgICAgICAgPC9lbmNvdW50ZXI+CiAgICAgICAgICA8L2VudHJ5PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICAgIDxjb21wb25lbnQ+CiAgICAgICAgPHNlY3Rpb24+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjE0IiBleHRlbnNpb249IjIwMTQtMDYtMDkiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMTQiLz4KICAgICAgICAgIDxjb2RlIGNvZGU9IjQ3NDIwLTUiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iRnVuY3Rpb25hbCBzdGF0dXMgYXNzZXNzbWVudCIvPgogICAgICAgICAgPHRpdGxlPkZ1bmN0aW9uYWwgU3RhdHVzPC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGF0ZTwvdGg+CgkJCQk8dGg+TmFtZTwvdGg+CgkJCQk8dGg+U2NvcmU8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJCQkJCTx0ciBJRD0iRnVuY3Rpb25hbFN0YXR1c1JlZi0xMDIxIj4KCQkJCQkJCTx0ZD4wNy8yMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD5LYXJub2Zza3kgcGVyZm9ybWFuY2Ugc3RhdHVzPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD45MDwvdGQ+CgkJCQkJPC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvdGV4dD4KICAgICAgICAgIDxlbnRyeT4KICAgICAgICAgICAgPG9yZ2FuaXplciBjbGFzc0NvZGU9IkNMVVNURVIiIG1vb2RDb2RlPSJFVk4iPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuNjYiLz4KICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjEiLz4KICAgICAgICAgICAgICA8aWQgcm9vdD0iNWY1NjY4OWMtYWFmZi00YTk1LTlkMzQtNTlkNTk5MjAxMzAwIi8+CiAgICAgICAgICAgICAgPGNvZGUgY29kZT0iZDUiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMjU0IiBjb2RlU3lzdGVtTmFtZT0iSUNGIiBkaXNwbGF5TmFtZT0iU2VsZi1DYXJlIi8+CiAgICAgICAgICAgICAgPHN0YXR1c0NvZGUgY29kZT0iY29tcGxldGVkIi8+CiAgICAgICAgICAgICAgPGNvbXBvbmVudD4KICAgICAgICAgICAgICAgIDxvYnNlcnZhdGlvbiBjbGFzc0NvZGU9Ik9CUyIgbW9vZENvZGU9IkVWTiI+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuNjciLz4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC4yIi8+CiAgICAgICAgICAgICAgICAgIDxpZCByb290PSIyNWJmZWY1Mi0xMDdkLTQwMDMtOGQwOC05Y2Y2Njc4MTE4MzEiLz4KICAgICAgICAgICAgICAgICAgPGNvZGUgY29kZT0iNTQ1MjItOCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJGdW5jdGlvbmFsIHN0YXR1cyIvPgogICAgICAgICAgICAgICAgICA8dGV4dD48cmVmZXJlbmNlIHZhbHVlPSIjRnVuY3Rpb25hbFN0YXR1c1JlZi0xMDIxIi8+PC90ZXh0PgogICAgICAgICAgICAgICAgICA8c3RhdHVzQ29kZSBjb2RlPSJjb21wbGV0ZWQiLz4KICAgICAgICAgICAgICAgICAgPGVmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICAgICAgPGxvdyB2YWx1ZT0iMjAyMjA3MjEiLz4KICAgICAgICAgICAgICAgICAgPC9lZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgICA8dmFsdWUgeHNpOnR5cGU9IkNEIiBjb2RlPSIyNzM1NDYwMDMiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuOTYiIGNvZGVTeXN0ZW1OYW1lPSJTTk9NRUQgQ1QiIGRpc3BsYXlOYW1lPSJLYXJub2Zza3kgcGVyZm9ybWFuY2Ugc3RhdHVzIj4KICAgICAgICAgICAgICAgICAgICA8b3JpZ2luYWxUZXh0PjkwPC9vcmlnaW5hbFRleHQ+CiAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICA8L29ic2VydmF0aW9uPgogICAgICAgICAgICAgIDwvY29tcG9uZW50PgogICAgICAgICAgICA8L29yZ2FuaXplcj4KICAgICAgICAgIDwvZW50cnk+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICA8L2NvbXBvbmVudD4KICAgICAgPGNvbXBvbmVudD4KICAgICAgICA8c2VjdGlvbiBudWxsRmxhdm9yPSJOSSI+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjYwIi8+CiAgICAgICAgICA8Y29kZSBjb2RlPSI2MTE0Ni03IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9IkdvYWxzIi8+CiAgICAgICAgICA8dGl0bGU+R29hbHM8L3RpdGxlPgogICAgICAgICAgPHRleHQ+PHRhYmxlPgoJPHRoZWFkPgoJCTx0cj4KCQkJCQkJCTx0aD5EYXRlPC90aD4KCQkJCTx0aD5Hb2FsPC90aD4KCQkJCTx0aD5BdXRob3I8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJCQk8dHI+PHRkIGNvbHNwYW49IjMiPk5PTkU8L3RkPjwvdHI+Cgk8L3Rib2R5Pgo8L3RhYmxlPgo8L3RleHQ+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICA8L2NvbXBvbmVudD4KICAgICAgPGNvbXBvbmVudD4KICAgICAgICA8c2VjdGlvbiBudWxsRmxhdm9yPSJOSSI+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjU4IiBleHRlbnNpb249IjIwMTUtMDgtMDEiLz4KICAgICAgICAgIDxjb2RlIGNvZGU9Ijc1MzEwLTMiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iSGVhbHRoIGNvbmNlcm5zIGRvY3VtZW50Ii8+CiAgICAgICAgICA8dGl0bGU+SGVhbHRoQ29uY2VybnM8L3RpdGxlPgogICAgICAgICAgPHRleHQ+PHRhYmxlPgoJPHRoZWFkPgoJCTx0cj4KCQkJCQkJCTx0aD5EYXRlPC90aD4KCQkJCTx0aD5IZWFsdGggQ29uY2VybjwvdGg+CgkJCQk8dGg+QXV0aG9yPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQkJPHRyPjx0ZCBjb2xzcGFuPSIzIj5OT05FPC90ZD48L3RyPgoJPC90Ym9keT4KPC90YWJsZT4KPC90ZXh0PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICAgIDxjb21wb25lbnQ+CiAgICAgICAgPHNlY3Rpb24+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjIuMSIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjIiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMiIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICA8Y29kZSBjb2RlPSIxMTM2OS02IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9IkltbXVuaXphdGlvbnMiLz4KICAgICAgICAgIDx0aXRsZT5JbW11bml6YXRpb25zPC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGF0ZTwvdGg+CgkJCQk8dGg+TmFtZTwvdGg+CgkJCQk8dGg+Um91dGU8L3RoPgoJCQkJPHRoPkRvc2U8L3RoPgoJCQkJPHRoPkluc3RydWN0aW9uczwvdGg+CgkJCQk8dGg+UmVmdXNhbCBSZWFzb248L3RoPgoJCQkJPHRoPlN0YXR1czwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+CgkJCQkJPHRyIElEPSJJbW11bml6YXRpb25PQlMtMTAyMiI+CgkJCQkJCQk8dGQvPgoJCQkJCQkJPHRkPkNvdmlkLTE5IHZhY2NpbmUgKE1vZGVybmEpIDwvdGQ+CgkJCQkJCQk8dGQvPgoJCQkJCQkJPHRkLz4JCQkJCQkJCgkJCQkJCQk8dGQvPgkJCQkJCQkKCQkJCQkJCTx0ZC8+CgkJCQkJCQk8dGQ+Q29tcGxldGVkPC90ZD4KCQkJCQk8L3RyPgoJPC90Ym9keT4KPC90YWJsZT4KPC90ZXh0PgogICAgICAgICAgPGVudHJ5PgogICAgICAgICAgICA8c3Vic3RhbmNlQWRtaW5pc3RyYXRpb24gY2xhc3NDb2RlPSJTQkFETSIgbW9vZENvZGU9IkVWTiIgbmVnYXRpb25JbmQ9ImZhbHNlIj4KICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjUyIiBleHRlbnNpb249IjIwMTUtMDgtMDEiLz4KICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjUyIi8+CiAgICAgICAgICAgICAgPGlkIHJvb3Q9ImQxOTFlZTNiLTQ0MzAtNGI5ZS1iZWIzLWUzNjNkNzQ0NTIzMSIvPgogICAgICAgICAgICAgIDx0ZXh0PjxyZWZlcmVuY2UgdmFsdWU9IiNJbW11bml6YXRpb25PQlMtMTAyMiIvPjwvdGV4dD4KICAgICAgICAgICAgICA8c3RhdHVzQ29kZSBjb2RlPSJjb21wbGV0ZWQiLz4KICAgICAgICAgICAgICA8ZWZmZWN0aXZlVGltZSB4c2k6dHlwZT0iSVZMX1RTIj4KICAgICAgICAgICAgICAgIDxsb3cgbnVsbEZsYXZvcj0iVU5LIi8+CiAgICAgICAgICAgICAgPC9lZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgIDxyb3V0ZUNvZGUgbnVsbEZsYXZvcj0iVU5LIi8+CiAgICAgICAgICAgICAgPGRvc2VRdWFudGl0eSBudWxsRmxhdm9yPSJVTksiPgogICAgICAgICAgICAgICAgPHRyYW5zbGF0aW9uIG51bGxGbGF2b3I9IlVOSyI+CiAgICAgICAgICAgICAgICAgIDxvcmlnaW5hbFRleHQ+PHJlZmVyZW5jZSB2YWx1ZT0iI0ltbXVuaXphdGlvbk9CUy0xMDIyIi8+PC9vcmlnaW5hbFRleHQ+CiAgICAgICAgICAgICAgICA8L3RyYW5zbGF0aW9uPgogICAgICAgICAgICAgIDwvZG9zZVF1YW50aXR5PgogICAgICAgICAgICAgIDxhZG1pbmlzdHJhdGlvblVuaXRDb2RlIG51bGxGbGF2b3I9IlVOSyIvPgogICAgICAgICAgICAgIDxjb25zdW1hYmxlPgogICAgICAgICAgICAgICAgPG1hbnVmYWN0dXJlZFByb2R1Y3QgY2xhc3NDb2RlPSJNQU5VIj4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC41NCIgZXh0ZW5zaW9uPSIyMDE0LTA2LTA5Ii8+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuNTQiLz4KICAgICAgICAgICAgICAgICAgPG1hbnVmYWN0dXJlZE1hdGVyaWFsPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNvZGU9IjIwNyIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuMTIuMjkyIiBjb2RlU3lzdGVtTmFtZT0iQ1ZYIENvZGVzIiBkaXNwbGF5TmFtZT0iQ292aWQtMTkgdmFjY2luZSAoTW9kZXJuYSkiPgogICAgICAgICAgICAgICAgICAgICAgPG9yaWdpbmFsVGV4dD48cmVmZXJlbmNlIHZhbHVlPSIjSW1tdW5pemF0aW9uT0JTLTEwMjIiLz48L29yaWdpbmFsVGV4dD4KICAgICAgICAgICAgICAgICAgICA8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q292aWQtMTkgdmFjY2luZSAoTW9kZXJuYSk8L25hbWU+CiAgICAgICAgICAgICAgICAgIDwvbWFudWZhY3R1cmVkTWF0ZXJpYWw+CiAgICAgICAgICAgICAgICA8L21hbnVmYWN0dXJlZFByb2R1Y3Q+CiAgICAgICAgICAgICAgPC9jb25zdW1hYmxlPgogICAgICAgICAgICA8L3N1YnN0YW5jZUFkbWluaXN0cmF0aW9uPgogICAgICAgICAgPC9lbnRyeT4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uIG51bGxGbGF2b3I9Ik5JIj4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMy4xIiBleHRlbnNpb249IjIwMTUtMDgtMDEiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMyIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi4zIiBleHRlbnNpb249IjIwMTUtMDgtMDEiLz4KICAgICAgICAgIDxjb2RlIGNvZGU9IjMwOTU0LTIiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iUmVsZXZhbnQgZGlhZ25vc3RpYyB0ZXN0cyBhbmQvb3IgbGFib3JhdG9yeSBkYXRhIi8+CiAgICAgICAgICA8dGl0bGU+RGlhZ25vc3RpYyBSZXN1bHRzPC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGF0ZTwvdGg+CgkJCQk8dGg+VHlwZTwvdGg+CgkJCQk8dGg+VGVzdDwvdGg+CgkJCQk8dGg+VW5pdHM8L3RoPgoJCQkJPHRoPkxvd2VyIExpbWl0PC90aD4KCQkJCTx0aD5VcHBlciBMaW1pdDwvdGg+CgkJCQk8dGg+UmVzdWx0PC90aD4KCQkJCTx0aD5GbGFnPC90aD4KCQkJCTx0aD5Db21tZW50czwvdGg+CgkJCQk8dGg+U3RhdHVzPC90aD4KCQkJCTx0aD5PcmRlcmVkIEJ5PC90aD4KCQkJCTx0aD5TcGVjaW1lbiBTb3VyY2U8L3RoPgoJCQkJPHRoPkxhYiBBZGRyZXNzPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQkJPHRyPjx0ZCBjb2xzcGFuPSIxMyI+Tk9ORTwvdGQ+PC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvdGV4dD4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uIG51bGxGbGF2b3I9Ik5JIj4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMjMiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi4yMyIvPgogICAgICAgICAgPGNvZGUgY29kZT0iNDYyNjQtOCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJNZWRpY2FsIEVxdWlwbWVudCIvPgogICAgICAgICAgPHRpdGxlPk1lZGljYWwgRXF1aXBtZW50PC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGVzY3JpcHRpb248L3RoPgoJCQkJPHRoPlVESSBOdW1iZXI8L3RoPgoJCQkJPHRoPlNpdGU8L3RoPgoJCQkJPHRoPkRhdGU8L3RoPgoJCQkJPHRoPkFjdGl2ZTwvdGg+CgkJCQk8dGg+Q29tbWVudDwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+CgkJCTx0cj48dGQgY29sc3Bhbj0iNiI+Tk9ORTwvdGQ+PC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvdGV4dD4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi4zOCIgZXh0ZW5zaW9uPSIyMDE0LTA2LTA5Ii8+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjM4Ii8+CiAgICAgICAgICA8Y29kZSBjb2RlPSIyOTU0OS0zIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9Ik1lZGljYXRpb25zIEFkbWluaXN0ZXJlZCIvPgogICAgICAgICAgPHRpdGxlPk1lZGljYXRpb25zIEFkbWluaXN0ZXJlZDwvdGl0bGU+CiAgICAgICAgICA8dGV4dD48dGFibGU+Cgk8dGhlYWQ+CgkJPHRyPgoJCQkJCQkJPHRoPkRhdGU8L3RoPgoJCQkJPHRoPk5hbWU8L3RoPgoJCQkJPHRoPlJvdXRlPC90aD4KCQkJCTx0aD5Eb3NlPC90aD4KCQkJCTx0aD5GcmVxdWVuY3k8L3RoPgoJCQkJPHRoPkluc3RydWN0aW9uczwvdGg+CgkJCQk8dGg+U3RhcnQgRGF0ZTwvdGg+CgkJCQk8dGg+RW5kIERhdGU8L3RoPgoJCQkJPHRoPlN0YXR1czwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+CgkJCQkJPHRyIElEPSJNZWRpY2F0aW9uT0JTLTEwMjMiPgoJCQkJCQkJPHRkPjA4LzAxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPnNvZGl1bSBjaGxvcmlkZSA5IE1HL01MIEluamVjdGFibGUgU29sdXRpb24gPC90ZD4KCQkJCQkJCTx0ZD5pbnRyYXZlbm91c2x5PC90ZD4KCQkJCQkJCTx0ZD4xMDAwLjAgbUw8L3RkPgoJCQkJCQkJPHRkPm9uY2U8L3RkPgoJCQkJCQkJPHRkPlBvc3QtaHlkcmF0aW9uIGFmdGVyIENpc3BsYXRpbiBhZG1pbmlzdHJhdGlvbi48L3RkPgoJCQkJCQkJPHRkPjA4LzAxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPjA4LzAxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPmluYWN0aXZlPC90ZD4KCQkJCQk8L3RyPgoJCQkJCTx0ciBJRD0iTWVkaWNhdGlvbk9CUy0xMDI0Ij4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD5jaXNwbGF0aW4gMSBNRy9NTCBJbmplY3RhYmxlIFNvbHV0aW9uIDwvdGQ+CgkJCQkJCQk8dGQ+aW50cmF2ZW5vdXNseTwvdGQ+CgkJCQkJCQk8dGQ+MjE0LjAgbWc8L3RkPgoJCQkJCQkJPHRkPm9uY2U8L3RkPgoJCQkJCQkJPHRkPkNpc3BsYXRpbiBpcyBhIHZlc2ljYW50LiBJZiBkaWx1dGVkIHRvIGEgZmluYWwgY29uY2VudHJhdGlvbiBvZiBsZXNzIHRoYW4gMC41IG1nL21MLCBjaXNwbGF0aW4gaXMgYSB2YXNjdWxhciBpcnJpdGFudC48L3RkPgoJCQkJCQkJPHRkPjA4LzAxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPjA4LzAxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPmluYWN0aXZlPC90ZD4KCQkJCQk8L3RyPgoJCQkJCTx0ciBJRD0iTWVkaWNhdGlvbk9CUy0xMDI1Ij4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD4xMDAgTUwgY2V0dXhpbWFiIDIgTUcvTUwgSW5qZWN0aW9uIDwvdGQ+CgkJCQkJCQk8dGQ+aW50cmF2ZW5vdXNseTwvdGQ+CgkJCQkJCQk8dGQ+NTM2LjAgbWc8L3RkPgoJCQkJCQkJPHRkPm9uY2U8L3RkPgoJCQkJCQkJPHRkPkxPQURJTkcgRE9TRSwgQzFEMSBPTkxZLiAKTWl4IGluIGFuIGVtcHR5IHZpYWZsZXggYmFnLiBEbyBub3Qgc2hha2Ugb3IgZnVydGhlciBkaWx1dGUgQ2V0dXhpbWFiLiBVc2UgYSAwLjIyIG1pY3JvbiBsb3cgcHJvdGVpbiBiaW5kaW5nIGluLWxpbmUgZmlsdGVyLgpNYXhpbXVtIGluZnVzaW9uIHJhdGUgaXMgNSBtTC9taW51dGUuIEFkbWluaXN0ZXIgQ2V0dXhpbWFiIG9ubHkgYXMgYSBjb250cm9sbGVkIElWIGluZnVzaW9uLiBNb25pdG9yIHBhdGllbnQgZm9yIDEgaG91ciBmb2xsb3dpbmcgaW5mdXNpb24uIEZsdXNoIGxpbmUgYXQgZW5kIG9mIGluZnVzaW9uIHdpdGggTlMuPC90ZD4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD5pbmFjdGl2ZTwvdGQ+CgkJCQkJPC90cj4KCQkJCQk8dHIgSUQ9Ik1lZGljYXRpb25PQlMtMTAyNiI+CgkJCQkJCQk8dGQ+MDgvMDEvMjAyMjwvdGQ+CgkJCQkJCQk8dGQ+Rm9zYXByZXBpdGFudCBJViA8L3RkPgoJCQkJCQkJPHRkPmludHJhdmVub3VzbHk8L3RkPgoJCQkJCQkJPHRkPjE1MC4wIG1nPC90ZD4KCQkJCQkJCTx0ZD5vbmNlPC90ZD4KCQkJCQkJCTx0ZC8+CgkJCQkJCQk8dGQ+MDgvMDEvMjAyMjwvdGQ+CgkJCQkJCQk8dGQ+MDgvMDEvMjAyMjwvdGQ+CgkJCQkJCQk8dGQ+aW5hY3RpdmU8L3RkPgoJCQkJCTwvdHI+CgkJCQkJPHRyIElEPSJNZWRpY2F0aW9uT0JTLTEwMjciPgoJCQkJCQkJPHRkPjA4LzAxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPmRleGFtZXRoYXNvbmUgcGhvc3BoYXRlIDQgTUcvTUwgSW5qZWN0YWJsZSBTb2x1dGlvbiA8L3RkPgoJCQkJCQkJPHRkPmludHJhdmVub3VzbHk8L3RkPgoJCQkJCQkJPHRkPjEwLjAgbWc8L3RkPgoJCQkJCQkJPHRkPm9uY2U8L3RkPgoJCQkJCQkJPHRkLz4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD5pbmFjdGl2ZTwvdGQ+CgkJCQkJPC90cj4KCQkJCQk8dHIgSUQ9Ik1lZGljYXRpb25PQlMtMTAyOCI+CgkJCQkJCQk8dGQ+MDgvMDEvMjAyMjwvdGQ+CgkJCQkJCQk8dGQ+ZGlwaGVuaHlkcmFtaW5lIGh5ZHJvY2hsb3JpZGUgMC41IE1HL01MIEluamVjdGFibGUgU29sdXRpb24gPC90ZD4KCQkJCQkJCTx0ZD5pbnRyYXZlbm91c2x5PC90ZD4KCQkJCQkJCTx0ZD41MC4wIG1nPC90ZD4KCQkJCQkJCTx0ZD5vbmNlPC90ZD4KCQkJCQkJCTx0ZD5BZG1pbmlzdGVyIGFzIHByZW1lZGljYXRpb24gMzAtNjAgbWludXRlcyBiZWZvcmUgY2V0dXhpbWFiIGluZnVzaW9uLjwvdGQ+CgkJCQkJCQk8dGQ+MDgvMDEvMjAyMjwvdGQ+CgkJCQkJCQk8dGQ+MDgvMDEvMjAyMjwvdGQ+CgkJCQkJCQk8dGQ+aW5hY3RpdmU8L3RkPgoJCQkJCTwvdHI+CgkJCQkJPHRyIElEPSJNZWRpY2F0aW9uT0JTLTEwMjkiPgoJCQkJCQkJPHRkPjA4LzAxLzIwMjI8L3RkPgoJCQkJCQkJPHRkPlBhbG9ub3NldHJvbiBJViA8L3RkPgoJCQkJCQkJPHRkPmludHJhdmVub3VzbHk8L3RkPgoJCQkJCQkJPHRkPjAuMjUgbWc8L3RkPgoJCQkJCQkJPHRkPm9uY2U8L3RkPgoJCQkJCQkJPHRkLz4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD5pbmFjdGl2ZTwvdGQ+CgkJCQkJPC90cj4KCQkJCQk8dHIgSUQ9Ik1lZGljYXRpb25PQlMtMTAzMCI+CgkJCQkJCQk8dGQ+MDgvMDEvMjAyMjwvdGQ+CgkJCQkJCQk8dGQ+c29kaXVtIGNobG9yaWRlIDkgTUcvTUwgSW5qZWN0YWJsZSBTb2x1dGlvbiA8L3RkPgoJCQkJCQkJPHRkPmludHJhdmVub3VzbHk8L3RkPgoJCQkJCQkJPHRkPjEwMDAuMCBtTDwvdGQ+CgkJCQkJCQk8dGQ+b25jZTwvdGQ+CgkJCQkJCQk8dGQ+UHJlLWh5ZHJhdGlvbiBwcmlvciB0byBDaXNwbGF0aW4gYWRtaW5pc3RyYXRpb24uPC90ZD4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD4wOC8wMS8yMDIyPC90ZD4KCQkJCQkJCTx0ZD5pbmFjdGl2ZTwvdGQ+CgkJCQkJPC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvdGV4dD4KICAgICAgICAgIDxlbnRyeT4KICAgICAgICAgICAgPHN1YnN0YW5jZUFkbWluaXN0cmF0aW9uIGNsYXNzQ29kZT0iU0JBRE0iIG1vb2RDb2RlPSJFVk4iPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMTYiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMTYiLz4KICAgICAgICAgICAgICA8aWQgcm9vdD0iZDI1ZGIzNjktMWIyOS00ZWM0LTlkNjYtYmYzYTZhYzMyZWQwIi8+CiAgICAgICAgICAgICAgPHRleHQ+PHJlZmVyZW5jZSB2YWx1ZT0iI01lZGljYXRpb25PQlMtMTAyMyIvPjwvdGV4dD4KICAgICAgICAgICAgICA8c3RhdHVzQ29kZSBjb2RlPSJjb21wbGV0ZWQiLz4KICAgICAgICAgICAgICA8ZWZmZWN0aXZlVGltZSB4c2k6dHlwZT0iSVZMX1RTIj4KICAgICAgICAgICAgICAgIDxsb3cgdmFsdWU9IjIwMjIwODAxMTg0NSswMCIvPgogICAgICAgICAgICAgICAgPGhpZ2ggdmFsdWU9IjIwMjIwODAxMTkxNSswMCIvPgogICAgICAgICAgICAgIDwvZWZmZWN0aXZlVGltZT4KICAgICAgICAgICAgICA8cm91dGVDb2RlIGNvZGU9IkMzODI3NiIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuMy4yNi4xLjEiIGNvZGVTeXN0ZW1OYW1lPSJOQ0kgVGhlc2F1cnVzIiBkaXNwbGF5TmFtZT0iSU5UUkFWRU5PVVMiLz4KICAgICAgICAgICAgICA8YXBwcm9hY2hTaXRlQ29kZSBudWxsRmxhdm9yPSJVTksiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuOTYiIGNvZGVTeXN0ZW1OYW1lPSJTTk9NRURDVCIvPgogICAgICAgICAgICAgIDxkb3NlUXVhbnRpdHkgdmFsdWU9IjEwMDAuMCIgdW5pdD0ibUwiLz4KICAgICAgICAgICAgICA8YWRtaW5pc3RyYXRpb25Vbml0Q29kZSBudWxsRmxhdm9yPSJVTksiLz4KICAgICAgICAgICAgICA8Y29uc3VtYWJsZT4KICAgICAgICAgICAgICAgIDxtYW51ZmFjdHVyZWRQcm9kdWN0IGNsYXNzQ29kZT0iTUFOVSI+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMjMiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjIzIi8+CiAgICAgICAgICAgICAgICAgIDxtYW51ZmFjdHVyZWRNYXRlcmlhbD4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjb2RlPSIzMTMwMDIiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuODgiIGNvZGVTeXN0ZW1OYW1lPSJSeE5vcm0iIGRpc3BsYXlOYW1lPSJzb2RpdW0gY2hsb3JpZGUgOSBNRy9NTCBJbmplY3RhYmxlIFNvbHV0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgIDxvcmlnaW5hbFRleHQ+PHJlZmVyZW5jZSB2YWx1ZT0iI01lZGljYXRpb25PQlMtMTAyMyIvPjwvb3JpZ2luYWxUZXh0PgogICAgICAgICAgICAgICAgICAgICAgPHRyYW5zbGF0aW9uIHhzaTp0eXBlPSJDRSIgY29kZT0iMTIxMCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNC42NCIgY29kZVN5c3RlbU5hbWU9IkdDTiBTZXF1ZW5jZSBOdW1iZXJzIiBkaXNwbGF5TmFtZT0ic29kaXVtIGNobG9yaWRlIDkgTUcvTUwgSW5qZWN0YWJsZSBTb2x1dGlvbiIvPgogICAgICAgICAgICAgICAgICAgIDwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8bmFtZT5zb2RpdW0gY2hsb3JpZGUgOSBNRy9NTCBJbmplY3RhYmxlIFNvbHV0aW9uPC9uYW1lPgogICAgICAgICAgICAgICAgICA8L21hbnVmYWN0dXJlZE1hdGVyaWFsPgogICAgICAgICAgICAgICAgPC9tYW51ZmFjdHVyZWRQcm9kdWN0PgogICAgICAgICAgICAgIDwvY29uc3VtYWJsZT4KICAgICAgICAgICAgICA8ZW50cnlSZWxhdGlvbnNoaXAgdHlwZUNvZGU9IlNVQkoiIGludmVyc2lvbkluZD0idHJ1ZSI+CiAgICAgICAgICAgICAgICA8YWN0IGNsYXNzQ29kZT0iQUNUIiBtb29kQ29kZT0iSU5UIj4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC4yMCIvPgogICAgICAgICAgICAgICAgICA8Y29kZSB4c2k6dHlwZT0iQ0UiIGNvZGU9Ijk2NzAwNiIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi45NiIgY29kZVN5c3RlbU5hbWU9IlNOT01FRCBDVCIgZGlzcGxheU5hbWU9Ik1lZGljYXRpb24gRWR1Y2F0aW9uIi8+CiAgICAgICAgICAgICAgICAgIDx0ZXh0PlBvc3QtaHlkcmF0aW9uIGFmdGVyIENpc3BsYXRpbiBhZG1pbmlzdHJhdGlvbi48L3RleHQ+CiAgICAgICAgICAgICAgICAgIDxzdGF0dXNDb2RlIGNvZGU9ImNvbXBsZXRlZCIvPgogICAgICAgICAgICAgICAgPC9hY3Q+CiAgICAgICAgICAgICAgPC9lbnRyeVJlbGF0aW9uc2hpcD4KICAgICAgICAgICAgPC9zdWJzdGFuY2VBZG1pbmlzdHJhdGlvbj4KICAgICAgICAgIDwvZW50cnk+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICA8L2NvbXBvbmVudD4KICAgICAgPGNvbXBvbmVudD4KICAgICAgICA8c2VjdGlvbj4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMS4xIiBleHRlbnNpb249IjIwMTQtMDYtMDkiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMSIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi4xIiBleHRlbnNpb249IjIwMTQtMDYtMDkiLz4KICAgICAgICAgIDxjb2RlIGNvZGU9IjEwMTYwLTAiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iSGlzdG9yeSBvZiBtZWRpY2F0aW9uIHVzZSIvPgogICAgICAgICAgPHRpdGxlPk1lZGljYXRpb25zPC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGF0ZTwvdGg+CgkJCQk8dGg+TmFtZTwvdGg+CgkJCQk8dGg+Um91dGU8L3RoPgoJCQkJPHRoPkRvc2U8L3RoPgoJCQkJPHRoPkZyZXF1ZW5jeTwvdGg+CgkJCQk8dGg+SW5zdHJ1Y3Rpb25zPC90aD4KCQkJCTx0aD5TdGFydCBEYXRlPC90aD4KCQkJCTx0aD5FbmQgRGF0ZTwvdGg+CgkJCQk8dGg+U3RhdHVzPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQkJCQk8dHIgSUQ9Ik1lZGljYXRpb25PQlMtMTAzMSI+CgkJCQkJCQk8dGQvPgoJCQkJCQkJPHRkPlRyYW1hZG9sIE9yYWwgPC90ZD4KCQkJCQkJCTx0ZD5vcmFsbHk8L3RkPgoJCQkJCQkJPHRkPjEuMCB0YWJsZXQ8L3RkPgoJCQkJCQkJPHRkPmRhaWx5PC90ZD4KCQkJCQkJCTx0ZD4gcXVhbnRpdHkgc3VmZmljaWVudCBmb3IgNTAgZGF5czsgMCByZWZpbGxzPC90ZD4KCQkJCQkJCTx0ZC8+CgkJCQkJCQk8dGQvPgoJCQkJCQkJPHRkPmFjdGl2ZTwvdGQ+CgkJCQkJPC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvdGV4dD4KICAgICAgICAgIDxlbnRyeT4KICAgICAgICAgICAgPHN1YnN0YW5jZUFkbWluaXN0cmF0aW9uIGNsYXNzQ29kZT0iU0JBRE0iIG1vb2RDb2RlPSJFVk4iPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMTYiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMTYiLz4KICAgICAgICAgICAgICA8aWQgcm9vdD0iN2QwYjY1ZGQtZmNhZC00YmM0LWEyNDgtYTJhZTRiZDRiZTk1Ii8+CiAgICAgICAgICAgICAgPHRleHQ+PHJlZmVyZW5jZSB2YWx1ZT0iI01lZGljYXRpb25PQlMtMTAzMSIvPjwvdGV4dD4KICAgICAgICAgICAgICA8c3RhdHVzQ29kZSBjb2RlPSJhY3RpdmUiLz4KICAgICAgICAgICAgICA8ZWZmZWN0aXZlVGltZSB4c2k6dHlwZT0iSVZMX1RTIj4KICAgICAgICAgICAgICAgIDxsb3cgbnVsbEZsYXZvcj0iVU5LIi8+CiAgICAgICAgICAgICAgPC9lZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgIDxyb3V0ZUNvZGUgY29kZT0iQzM4Mjg4IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My4zLjI2LjEuMSIgY29kZVN5c3RlbU5hbWU9Ik5DSSBUaGVzYXVydXMiIGRpc3BsYXlOYW1lPSJPUkFMIi8+CiAgICAgICAgICAgICAgPGFwcHJvYWNoU2l0ZUNvZGUgbnVsbEZsYXZvcj0iVU5LIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42Ljk2IiBjb2RlU3lzdGVtTmFtZT0iU05PTUVEQ1QiLz4KICAgICAgICAgICAgICA8ZG9zZVF1YW50aXR5IHZhbHVlPSIxLjAiIHVuaXQ9InRhYmxldCIvPgogICAgICAgICAgICAgIDxhZG1pbmlzdHJhdGlvblVuaXRDb2RlIG51bGxGbGF2b3I9IlVOSyIvPgogICAgICAgICAgICAgIDxjb25zdW1hYmxlPgogICAgICAgICAgICAgICAgPG1hbnVmYWN0dXJlZFByb2R1Y3QgY2xhc3NDb2RlPSJNQU5VIj4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC4yMyIgZXh0ZW5zaW9uPSIyMDE0LTA2LTA5Ii8+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMjMiLz4KICAgICAgICAgICAgICAgICAgPG1hbnVmYWN0dXJlZE1hdGVyaWFsPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNvZGU9IjgzNTYwMyIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi44OCIgY29kZVN5c3RlbU5hbWU9IlJ4Tm9ybSIgZGlzcGxheU5hbWU9IlRyYW1hZG9sIE9yYWwiPgogICAgICAgICAgICAgICAgICAgICAgPG9yaWdpbmFsVGV4dD48cmVmZXJlbmNlIHZhbHVlPSIjTWVkaWNhdGlvbk9CUy0xMDMxIi8+PC9vcmlnaW5hbFRleHQ+CiAgICAgICAgICAgICAgICAgICAgICA8dHJhbnNsYXRpb24geHNpOnR5cGU9IkNFIiBjb2RlPSJVTktOT1dOIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My40LjY0IiBjb2RlU3lzdGVtTmFtZT0iR0NOIFNlcXVlbmNlIE51bWJlcnMiIGRpc3BsYXlOYW1lPSJUcmFtYWRvbCBPcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgPC9jb2RlPgogICAgICAgICAgICAgICAgICAgIDxuYW1lPlRyYW1hZG9sIE9yYWw8L25hbWU+CiAgICAgICAgICAgICAgICAgIDwvbWFudWZhY3R1cmVkTWF0ZXJpYWw+CiAgICAgICAgICAgICAgICA8L21hbnVmYWN0dXJlZFByb2R1Y3Q+CiAgICAgICAgICAgICAgPC9jb25zdW1hYmxlPgogICAgICAgICAgICAgIDxlbnRyeVJlbGF0aW9uc2hpcCB0eXBlQ29kZT0iU1VCSiIgaW52ZXJzaW9uSW5kPSJ0cnVlIj4KICAgICAgICAgICAgICAgIDxhY3QgY2xhc3NDb2RlPSJBQ1QiIG1vb2RDb2RlPSJJTlQiPgogICAgICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjIwIi8+CiAgICAgICAgICAgICAgICAgIDxjb2RlIHhzaTp0eXBlPSJDRSIgY29kZT0iOTY3MDA2IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42Ljk2IiBjb2RlU3lzdGVtTmFtZT0iU05PTUVEIENUIiBkaXNwbGF5TmFtZT0iTWVkaWNhdGlvbiBFZHVjYXRpb24iLz4KICAgICAgICAgICAgICAgICAgPHRleHQ+IHF1YW50aXR5IHN1ZmZpY2llbnQgZm9yIDUwIGRheXM7IDAgcmVmaWxsczwvdGV4dD4KICAgICAgICAgICAgICAgICAgPHN0YXR1c0NvZGUgY29kZT0iY29tcGxldGVkIi8+CiAgICAgICAgICAgICAgICA8L2FjdD4KICAgICAgICAgICAgICA8L2VudHJ5UmVsYXRpb25zaGlwPgogICAgICAgICAgICA8L3N1YnN0YW5jZUFkbWluaXN0cmF0aW9uPgogICAgICAgICAgPC9lbnRyeT4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uIG51bGxGbGF2b3I9Ik5JIj4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuNDUiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi40NSIvPgogICAgICAgICAgPGNvZGUgY29kZT0iNjk3MzAtMCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJJbnN0cnVjdGlvbnMiLz4KICAgICAgICAgIDx0aXRsZT5QYXRpZW50IEVkdWNhdGlvbjwvdGl0bGU+CiAgICAgICAgICA8dGV4dD48dGFibGU+Cgk8dGhlYWQ+CgkJPHRyPgoJCQkJCQkJPHRoPkRhdGU8L3RoPgoJCQkJPHRoPlR5cGU8L3RoPgoJCQkJPHRoPlZhbHVlPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQkJPHRyPjx0ZCBjb2xzcGFuPSIzIj5OT05FPC90ZD48L3RyPgoJPC90Ym9keT4KPC90YWJsZT4KPC90ZXh0PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICAgIDxjb21wb25lbnQ+CiAgICAgICAgPHNlY3Rpb24+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjUuMSIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjUiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuNSIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjUuMSIvPgogICAgICAgICAgPGNvZGUgY29kZT0iMTE0NTAtNCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJQcm9ibGVtIExpc3QiLz4KICAgICAgICAgIDx0aXRsZT5Qcm9ibGVtczwvdGl0bGU+CiAgICAgICAgICA8dGV4dD48dGFibGU+Cgk8dGhlYWQ+CgkJPHRyPgoJCQkJCQkJPHRoPkRpYWdub3NpczwvdGg+CgkJCQk8dGg+U3RhdHVzPC90aD4KCQkJCTx0aD5EYXRlIG9mIERpYWdub3NpczwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+CgkJCQk8dHIgSUQ9IlByb2JsZW1PQlMtMTI1MyI+CgkJCQkJCTx0ZD5IaWdoIGJsb29kIHByZXNzdXJlPC90ZD4KCQkJCQkJPHRkPkFjdGl2ZTwvdGQ+CgkJCQkJCTx0ZC8+CgkJCQk8L3RyPgoJCQkJPHRyIElEPSJQcm9ibGVtT0JTLTEyNTQiPgoJCQkJCQk8dGQ+UHJvc3RhdGUgY2FuY2VyPC90ZD4KCQkJCQkJPHRkPkFjdGl2ZTwvdGQ+CgkJCQkJCTx0ZD4wOS8wMS8yMDIxPC90ZD4KCQkJCTwvdHI+Cgk8L3Rib2R5Pgo8L3RhYmxlPgo8L3RleHQ+CiAgICAgICAgICA8ZW50cnk+CiAgICAgICAgICAgIDxhY3QgY2xhc3NDb2RlPSJBQ1QiIG1vb2RDb2RlPSJFVk4iPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMyIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC4zIi8+CiAgICAgICAgICAgICAgPGlkIHJvb3Q9IjJhMTg3NmI5LTVhYzYtNDdhMi1hMzIyLTYzMmU1OTBmOWFkYSIvPgogICAgICAgICAgICAgIDxjb2RlIGNvZGU9IkNPTkMiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjUuNiIgY29kZVN5c3RlbU5hbWU9IkhMN0FjdENsYXNzIiBkaXNwbGF5TmFtZT0iQ29uY2VybiIvPgogICAgICAgICAgICAgIDxzdGF0dXNDb2RlIGNvZGU9ImFjdGl2ZSIvPgogICAgICAgICAgICAgIDxlZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgPGxvdyBudWxsRmxhdm9yPSJVTksiLz4KICAgICAgICAgICAgICA8L2VmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgPGVudHJ5UmVsYXRpb25zaGlwIHR5cGVDb2RlPSJTVUJKIj4KICAgICAgICAgICAgICAgIDxvYnNlcnZhdGlvbiBjbGFzc0NvZGU9Ik9CUyIgbW9vZENvZGU9IkVWTiI+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuNCIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuNCIvPgogICAgICAgICAgICAgICAgICA8aWQgcm9vdD0iOTllYWVlOGUtNzNiNi00OWQxLTk0Y2EtYmNiYmMyYTM2ZmEwIi8+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNvZGU9IjU1NjA3MDA2IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42Ljk2IiBjb2RlU3lzdGVtTmFtZT0iU05PTUVEIENUIiBkaXNwbGF5TmFtZT0iUHJvYmxlbSI+CiAgICAgICAgICAgICAgICAgICAgPHRyYW5zbGF0aW9uIGNvZGU9Ijc1MzI2LTkiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iUHJvYmxlbSIvPgogICAgICAgICAgICAgICAgICA8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDx0ZXh0PjxyZWZlcmVuY2UgdmFsdWU9IiNQcm9ibGVtT0JTLTEyNTMiLz48L3RleHQ+CiAgICAgICAgICAgICAgICAgIDxzdGF0dXNDb2RlIGNvZGU9ImNvbXBsZXRlZCIvPgogICAgICAgICAgICAgICAgICA8ZWZmZWN0aXZlVGltZT4KICAgICAgICAgICAgICAgICAgICA8bG93IG51bGxGbGF2b3I9IlVOSyIvPgogICAgICAgICAgICAgICAgICA8L2VmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZSB4c2k6dHlwZT0iQ0QiIGNvZGU9IjM4MzQxMDAzIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42Ljk2IiBjb2RlU3lzdGVtTmFtZT0iU05PTUVEIENUIiBkaXNwbGF5TmFtZT0iSHlwZXJ0ZW5zaXZlIGRpc29yZGVyLCBzeXN0ZW1pYyBhcnRlcmlhbCAoZGlzb3JkZXIpIj4KICAgICAgICAgICAgICAgICAgICA8dHJhbnNsYXRpb24gY29kZT0iSTEwIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjkwIiBjb2RlU3lzdGVtTmFtZT0iSUNELTEwLUNNIiBkaXNwbGF5TmFtZT0iRXNzZW50aWFsIChwcmltYXJ5KSBoeXBlcnRlbnNpb24iLz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgIDwvb2JzZXJ2YXRpb24+CiAgICAgICAgICAgICAgPC9lbnRyeVJlbGF0aW9uc2hpcD4KICAgICAgICAgICAgPC9hY3Q+CiAgICAgICAgICA8L2VudHJ5PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICAgIDxjb21wb25lbnQ+CiAgICAgICAgPHNlY3Rpb24gbnVsbEZsYXZvcj0iTkkiPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi43LjEiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuMi43Ii8+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjciIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgPGNvZGUgY29kZT0iNDc1MTktNCIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJIaXN0b3J5IG9mIFByb2NlZHVyZXMiLz4KICAgICAgICAgIDx0aXRsZT5Qcm9jZWR1cmVzPC90aXRsZT4KICAgICAgICAgIDx0ZXh0Pjx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+CgkJCQkJCQk8dGg+RGF0ZTwvdGg+CgkJCQk8dGg+Q2F0ZWdvcnk8L3RoPgoJCQkJPHRoPk5hbWU8L3RoPgoJCQkJPHRoPkluc3RydWN0aW9uczwvdGg+CgkJCQk8dGg+U3RhdHVzPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQkJPHRyPjx0ZCBjb2xzcGFuPSI1Ij5OT05FPC90ZD48L3RyPgoJPC90Ym9keT4KPC90YWJsZT4KPC90ZXh0PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICAgIDxjb21wb25lbnQ+CiAgICAgICAgPHNlY3Rpb24gbnVsbEZsYXZvcj0iTkkiPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMS4zLjYuMS40LjEuMTkzNzYuMS41LjMuMS4zLjEiIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMS4zLjYuMS40LjEuMTkzNzYuMS41LjMuMS4zLjEiLz4KICAgICAgICAgIDxjb2RlIGNvZGU9IjQyMzQ5LTEiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iUkVBU09OIEZPUiBSRUZFUlJBTCIvPgogICAgICAgICAgPHRpdGxlPlJlYXNvbiBmb3IgUmVmZXJyYWw8L3RpdGxlPgogICAgICAgICAgPHRleHQ+PHRhYmxlPgoJPHRoZWFkPgoJCTx0cj4KCQkJCQkJCTx0aD5EYXRlPC90aD4KCQkJCTx0aD5SZWFzb248L3RoPgoJCQkJPHRoPlJlZmVycmVkIFRvPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQkJPHRyPjx0ZCBjb2xzcGFuPSIzIj5OT05FPC90ZD48L3RyPgoJPC90Ym9keT4KPC90YWJsZT4KPC90ZXh0PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICAgIDxjb21wb25lbnQ+CiAgICAgICAgPHNlY3Rpb24+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjE3IiBleHRlbnNpb249IjIwMTUtMDgtMDEiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuMTciLz4KICAgICAgICAgIDxjb2RlIGNvZGU9IjI5NzYyLTIiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iU29jaWFsIGhpc3RvcnkiLz4KICAgICAgICAgIDx0aXRsZT5Tb2NpYWwgSGlzdG9yeTwvdGl0bGU+CiAgICAgICAgICA8dGV4dD48dGFibGU+Cgk8dGhlYWQ+CgkJPHRyPgoJCQkJCQkJPHRoPkRhdGU8L3RoPgoJCQkJPHRoPk5hbWU8L3RoPgoJCQkJPHRoPlZhbHVlPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQkJCTx0ciBJRD0iU29jaWFsSGlzdG9yeVJlZi0xMjYwIj4KCQkJCQkJPHRkPjA3LzI2LzIwMjI8L3RkPgoJCQkJCQk8dGQ+U21va2luZyBTdGF0dXM8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Q3VycmVudCBzb21lIGRheSBzbW9rZXI8L3RkPgoJCQkJPC90cj4KCQkJCTx0ciBJRD0iU29jaWFsSGlzdG9yeVJlZi0xMjYxIj4KCQkJCQkJPHRkPjA3LzIxLzIwMjI8L3RkPgoJCQkJCQk8dGQ+QmlydGggU2V4PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPk1hbGU8L3RkPgoJCQkJPC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvdGV4dD4KICAgICAgICAgIDxlbnRyeT4KICAgICAgICAgICAgPG9ic2VydmF0aW9uIGNsYXNzQ29kZT0iT0JTIiBtb29kQ29kZT0iRVZOIj4KICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40Ljc4Ii8+CiAgICAgICAgICAgICAgPGNvZGUgY29kZT0iQVNTRVJUSU9OIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My41LjQiIGNvZGVTeXN0ZW1OYW1lPSJITDcgQWN0IENvZGVzIiBkaXNwbGF5TmFtZT0iQWN0Q29kZS5BU1NFUlRJT04iLz4KICAgICAgICAgICAgICA8dGV4dD48cmVmZXJlbmNlIHZhbHVlPSIjU29jaWFsSGlzdG9yeVJlZi0xMjYwIi8+PC90ZXh0PgogICAgICAgICAgICAgIDxzdGF0dXNDb2RlIGNvZGU9ImNvbXBsZXRlZCIvPgogICAgICAgICAgICAgIDxlZmZlY3RpdmVUaW1lIHZhbHVlPSIyMDIyMDcyNiIvPgogICAgICAgICAgICAgIDx2YWx1ZSB4c2k6dHlwZT0iQ0QiIGNvZGU9IjQyODA0MTAwMDEyNDEwNiIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi45NiIgY29kZVN5c3RlbU5hbWU9IlNOT01FRCBDVCIgZGlzcGxheU5hbWU9IkN1cnJlbnQgc29tZSBkYXkgc21va2VyIi8+CiAgICAgICAgICAgIDwvb2JzZXJ2YXRpb24+CiAgICAgICAgICA8L2VudHJ5PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICAgIDxjb21wb25lbnQ+CiAgICAgICAgPHNlY3Rpb24+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjQuMSIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi4yLjQiLz4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuNCIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICA8Y29kZSBjb2RlPSI4NzE2LTMiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIiBkaXNwbGF5TmFtZT0iVml0YWwgU2lnbnMiLz4KICAgICAgICAgIDx0aXRsZT5WaXRhbCBTaWduczwvdGl0bGU+CiAgICAgICAgICA8dGV4dD48dGFibGU+Cgk8dGhlYWQ+CgkJPHRyPgoJCQkJCQkJPHRoPkRhdGU8L3RoPgoJCQkJPHRoPlR5cGU8L3RoPgoJCQkJPHRoPlZhbHVlPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQkJCTx0ciBJRD0iVml0YWxTaWduc1JlZi0xMjYyIj4KCQkJCQkJPHRkPjA2LzAyLzIwMjA8L3RkPgoJCQkJCQk8dGQ+CgkJCQkJCQlCU0EKCQkJCQkJCQoJCQkJCQk8L3RkPgoJCQkJCQk8dGQ+Mi4xNzwvdGQ+CgkJCQk8L3RyPgoJPC90Ym9keT4KPC90YWJsZT4KPC90ZXh0PgogICAgICAgICAgPGVudHJ5PgogICAgICAgICAgICA8b3JnYW5pemVyIGNsYXNzQ29kZT0iQ0xVU1RFUiIgbW9vZENvZGU9IkVWTiI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC4yNiIgZXh0ZW5zaW9uPSIyMDE1LTA4LTAxIi8+CiAgICAgICAgICAgICAgPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMjIuNC4yNiIvPgogICAgICAgICAgICAgIDxpZCByb290PSJjYzBhMzdjZS0yZWU0LTQ4MGMtOTcyMC1mMGM4ODQzMjljZTYiLz4KICAgICAgICAgICAgICA8Y29kZSBjb2RlPSI0NjY4MDAwNSIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi45NiIgY29kZVN5c3RlbU5hbWU9IlNOT01FRCBDVCIgZGlzcGxheU5hbWU9IlZpdGFsIFNpZ25zIj4KICAgICAgICAgICAgICAgIDx0cmFuc2xhdGlvbiBjb2RlPSI3NDcyOC03IiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9IlZpdGFsIHNpZ25zLCB3ZWlnaHQsIGhlaWdodCwgaGVhZCBjaXJjdW1mZXJlbmNlLCBveGltZXRyeSwgQk1JLCBhbmQgQlNBIHBhbmVsIC0gSEw3LkNDREFyMS4xIi8+CiAgICAgICAgICAgICAgPC9jb2RlPgogICAgICAgICAgICAgIDxzdGF0dXNDb2RlIGNvZGU9ImNvbXBsZXRlZCIvPgogICAgICAgICAgICAgIDxlZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgPGxvdyB2YWx1ZT0iMjAyMjEwMTcyMTQxNDkrMDAwMCIvPgogICAgICAgICAgICAgICAgPGhpZ2ggdmFsdWU9IjIwMjIxMDE3MjE0MTQ5KzAwMDAiLz4KICAgICAgICAgICAgICA8L2VmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgPGNvbXBvbmVudD4KICAgICAgICAgICAgICAgIDxvYnNlcnZhdGlvbiBjbGFzc0NvZGU9Ik9CUyIgbW9vZENvZGU9IkVWTiI+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMjciIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjI3Ii8+CiAgICAgICAgICAgICAgICAgIDxpZCByb290PSI3MTU0YmQyZC1mZmJhLTQ4MjUtYjc1MC0zNTI3MjNkNmYwYTEiLz4KICAgICAgICAgICAgICAgICAgPGNvZGUgY29kZT0iMzE0MC0xIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9IkJTQSIvPgogICAgICAgICAgICAgICAgICA8dGV4dD48cmVmZXJlbmNlIHZhbHVlPSIjVml0YWxTaWduc1JlZi0xMjYyIi8+PC90ZXh0PgogICAgICAgICAgICAgICAgICA8c3RhdHVzQ29kZSBjb2RlPSJjb21wbGV0ZWQiLz4KICAgICAgICAgICAgICAgICAgPGVmZmVjdGl2ZVRpbWU+CiAgICAgICAgICAgICAgICAgICAgPGxvdyB2YWx1ZT0iMjAyMDA2MDIiLz4KICAgICAgICAgICAgICAgICAgPC9lZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgICA8dmFsdWUgeHNpOnR5cGU9IlBRIiB2YWx1ZT0iMi4xNyIgdW5pdD0ibTIiLz4KICAgICAgICAgICAgICAgIDwvb2JzZXJ2YXRpb24+CiAgICAgICAgICAgICAgPC9jb21wb25lbnQ+CiAgICAgICAgICAgICAgPGNvbXBvbmVudD4KICAgICAgICAgICAgICAgIDxvYnNlcnZhdGlvbiBjbGFzc0NvZGU9Ik9CUyIgbW9vZENvZGU9IkVWTiI+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjQuMjciIGV4dGVuc2lvbj0iMjAxNC0wNi0wOSIvPgogICAgICAgICAgICAgICAgICA8dGVtcGxhdGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xMC4yMC4yMi40LjI3Ii8+CiAgICAgICAgICAgICAgICAgIDxpZCByb290PSI4NzFmNmZkYS04MTUzLTQ1ZWQtODk2MS0yNTBjZDMwMWY4ZjYiLz4KICAgICAgICAgICAgICAgICAgPGNvZGUgY29kZT0iOTI3OS0xIiBjb2RlU3lzdGVtPSIyLjE2Ljg0MC4xLjExMzg4My42LjEiIGNvZGVTeXN0ZW1OYW1lPSJMT0lOQyIgZGlzcGxheU5hbWU9IlJlc3BpcmF0b3J5IFJhdGUiLz4KICAgICAgICAgICAgICAgICAgPHRleHQ+PHJlZmVyZW5jZSB2YWx1ZT0iI1ZpdGFsU2lnbnNSZWYtMTI2MyIvPjwvdGV4dD4KICAgICAgICAgICAgICAgICAgPHN0YXR1c0NvZGUgY29kZT0iY29tcGxldGVkIi8+CiAgICAgICAgICAgICAgICAgIDxlZmZlY3RpdmVUaW1lPgogICAgICAgICAgICAgICAgICAgIDxsb3cgdmFsdWU9IjIwMjAwNjAyIi8+CiAgICAgICAgICAgICAgICAgIDwvZWZmZWN0aXZlVGltZT4KICAgICAgICAgICAgICAgICAgPHZhbHVlIHhzaTp0eXBlPSJQUSIgdmFsdWU9IjEyLjAiIHVuaXQ9Ii9taW4iLz4KICAgICAgICAgICAgICAgIDwvb2JzZXJ2YXRpb24+CiAgICAgICAgICAgICAgPC9jb21wb25lbnQ+CiAgICAgICAgICAgIDwvb3JnYW5pemVyPgogICAgICAgICAgPC9lbnRyeT4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvY29tcG9uZW50PgogICAgICA8Y29tcG9uZW50PgogICAgICAgIDxzZWN0aW9uIG51bGxGbGF2b3I9Ik5JIj4KICAgICAgICAgIDx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjIuNjUiIGV4dGVuc2lvbj0iMjAxNi0xMS0wMSIvPgogICAgICAgICAgPGNvZGUgY29kZT0iMzQxMDktOSIgY29kZVN5c3RlbT0iMi4xNi44NDAuMS4xMTM4ODMuNi4xIiBjb2RlU3lzdGVtTmFtZT0iTE9JTkMiIGRpc3BsYXlOYW1lPSJOb3RlIi8+CiAgICAgICAgICA8dGl0bGU+Tm90ZXMgU2VjdGlvbjwvdGl0bGU+CiAgICAgICAgICA8dGV4dD4gICAgTm8gbm90ZXMgYXJlIGF2YWlsYWJsZSBhdCB0aGlzIHRpbWUsIHBsZWFzZSBjaGVjayBhZ2Fpbi4KPC90ZXh0PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9jb21wb25lbnQ+CiAgICA8L3N0cnVjdHVyZWRCb2R5PgogIDwvY29tcG9uZW50Pgo8L0NsaW5pY2FsRG9jdW1lbnQ+",
}, - "format": {
- "system": "urn:oid:1.3.6.1.4.1.19376.1.2.3",
- "code": "urn:hl7-org:sdwg:ccda-structuredBody:2.1",
- "display": "Documents following C-CDA constraints using a structured body"
}
}
]
}
You can use the Encounter REST API to read and search for patient Encounter FHIR resources.
There are three Encounter "type" mappings that may be returned by the iKnowMed FHIR API:
Read operation to return an Encounter resource. The Encounter resource identifier has been previously established via a search or a reference from another resource.
id required | string Example: 123 The resource ID |
{- "resourceType": "Encounter",
- "id": "Appointment.DD876EC9418240F18D41039OP23IEY76",
- "identifier": [
- {
- "id": "Appointment.DD876EC9418240F18D41039OP23IEY76",
- "system": "urn:oid:2.16.840.1.113883.3.623.1",
- "value": "Appointment.DD876EC9418240F18D41039OP23IEY76"
}
], - "status": "planned",
- "class": {
- "code": "AMB",
- "display": "ambulatory"
}, - "type": [
- {
- "coding": [
- {
- "code": "OFFICE",
- "display": "office visit"
}
]
}
], - "subject": {
- "reference": "Patient/268201F1AA9764DCE0540014IW29IQS7",
- "display": "Patient, Example"
}, - "participant": [
- {
- "type": [
- {
- "coding": [
- {
- "code": "PPRF",
- "display": "primary performer"
}
]
}
], - "period": {
- "start": "2017-05-31T17:15:00-07:00",
- "end": "2017-05-31T17:35:00-07:00"
}, - "individual": {
- "id": "E64B7AC1B8F2638FE0440021810YS34S",
- "reference": "Practitioner/E64B7AC1B8F2638FE0440021810YS34S",
- "display": "Practitioner, Example"
}
}
], - "period": {
- "start": "2017-05-31T17:15:00-07:00",
- "end": "2017-05-31T17:35:00-07:00"
}, - "reasonCode": [
- {
- "coding": [
- {
- "code": "254837009",
- "display": "Malignant neoplasm of breast (disorder)"
}
]
}, - {
- "coding": [
- {
- "code": "371992003",
- "display": "Primary malignant neoplasm of intestinal tract (disorder)"
}
]
}
], - "hospitalization": {
- "id": "EncHospComp.Appointment.DD876EC9418240F18D41039OP23IEY76",
- "admitSource": {
- "coding": [
- {
- "code": "OFFICE",
- "display": "office visit"
}
]
}, - "destination": {
- "reference": "Location/C4794BEBE8554338BB7358B5IO24TH76",
- "display": "Suwanee"
}, - "dischargeDisposition": {
- "coding": [
- {
- "code": "OFFICE",
- "display": "office visit"
}
]
}
}, - "location": [
- {
- "location": {
- "reference": "Location/C4794BEBE8554338BB7358B5IO24TH76",
- "display": "Suwanee"
}
}
], - "serviceProvider": {
- "reference": "Organization/CBC3D65483D64E96E0440021910TVY09"
}
}
Recent Clinical Data Best Practice
/Encounter?date=gt{today-30}
Targeted Historical Data Best Practice
/Encounter?date=gt2024-06-03&date=lt2024-09-01
patient required | string The public ID of the patient present at the encounter |
_count | number The number of resources to return |
class | string Classification of patient encounter as outlined in https://hl7.org/fhir/R4/v3/ActEncounterCode/vs.html |
date | string A date within the period the Encounter lasted |
identifier | string Searches for the same identifiers as the Encounter FHIR resource id. This only allows for one identifier to be passed. |
status | string Enum: "planned" "arrived" "finished" "cancelled" "entered-in-error" |
_sort | string Specify which fields to sort by and the direction of the sort (ex: |
{- "resourceType": "Bundle",
- "id": "B123",
- "meta": {
- "lastUpdated": "2022-08-22T13:03:00.807-07:00"
}, - "type": "searchset",
- "total": 1,
- "entry": [
- {
- "resource": {
- "resourceType": "Encounter",
- "id": "Appointment.DD876EC9418240F18D41039OP23IEY76",
- "identifier": [
- {
- "id": "Appointment.DD876EC9418240F18D41039OP23IEY76",
- "system": "urn:oid:2.16.840.1.113883.3.623.1",
- "value": "Appointment.DD876EC9418240F18D41039OP23IEY76"
}
], - "status": "planned",
- "class": {
- "code": "AMB",
- "display": "ambulatory"
}, - "type": [
- {
- "coding": [
- {
- "code": "OFFICE",
- "display": "office visit"
}
]
}
], - "subject": {
- "reference": "Patient/268201F1AA9764DCE0540014IW29IQS7",
- "display": "Patient, Example"
}, - "participant": [
- {
- "type": [
- {
- "coding": [
- {
- "code": "PPRF",
- "display": "primary performer"
}
]
}
], - "period": {
- "start": "2017-05-31T17:15:00-07:00",
- "end": "2017-05-31T17:35:00-07:00"
}, - "individual": {
- "id": "E64B7AC1B8F2638FE0440021810YS34S",
- "reference": "Practitioner/E64B7AC1B8F2638FE0440021810YS34S",
- "display": "Practitioner, Example"
}
}
], - "period": {
- "start": "2017-05-31T17:15:00-07:00",
- "end": "2017-05-31T17:35:00-07:00"
}, - "reasonCode": [
- {
- "coding": [
- {
- "code": "254837009",
- "display": "Malignant neoplasm of breast (disorder)"
}
]
}, - {
- "coding": [
- {
- "code": "371992003",
- "display": "Primary malignant neoplasm of intestinal tract (disorder)"
}
]
}
], - "hospitalization": {
- "id": "EncHospComp.Appointment.DD876EC9418240F18D41039OP23IEY76",
- "admitSource": {
- "coding": [
- {
- "code": "OFFICE",
- "display": "office visit"
}
]
}, - "destination": {
- "reference": "Location/C4794BEBE8554338BB7358B5IO24TH76",
- "display": "Suwanee"
}, - "dischargeDisposition": {
- "coding": [
- {
- "code": "OFFICE",
- "display": "office visit"
}
]
}
}, - "location": [
- {
- "location": {
- "reference": "Location/C4794BEBE8554338BB7358B5IO24TH76",
- "display": "Suwanee"
}
}
], - "serviceProvider": {
- "reference": "Organization/CBC3D65483D64E96E0440021910TVY09"
}
}
}
]
}
Read operation to return an instance of a Goal resource.
id required | string Example: 123 The resource ID |
{- "resourceType": "Goal",
- "id": "123",
- "lifecycleStatus": "planned",
- "description": {
- "text": "Reduce Breathing Issues"
}, - "subject": {
- "reference": "Patient/C9E91737045B409FBDF9F47548C59A3D",
- "display": "Family, Given"
}, - "target": [
- {
- "dueDate": "2024-04-25"
}
]
}
Recent Clinical Data Best Practice
/Goal?patient=123&start-date=gt{today-30}
Targeted Historical Data Best Practice
/Goal?patient=123&start-date=gt2024-06-03&start-date=lt2024-09-01
patient required | string The public ID of the patient who is the subject of this goal |
_count | number The number of resources to return |
start-date | string When goal pursuit begins |
{- "resourceType": "Bundle",
- "id": "ac7cc51f-a2cd-4e4e-b114-28280b7e1e4f",
- "meta": {
- "versionId": "1735592092:dtagent10303241106123517GyDk",
- "lastUpdated": "2024-12-30T12:54:52.651-08:00"
}, - "type": "searchset",
- "total": 1,
- "link": [
], - "entry": [
- {
- "resource": {
- "resourceType": "Goal",
- "id": "123",
- "lifecycleStatus": "planned",
- "description": {
- "text": "Reduce Breathing Issues"
}, - "subject": {
- "reference": "Patient/C9E91737045B409FBDF9F47548C59A3D",
- "display": "Family, Given"
}, - "target": [
- {
- "dueDate": "2024-04-25"
}
]
}
}
]
}
The Immunization APIs provide information about patient immunizations. The resource(s) returned are compliant with the US Core profile.
There are two types of examples shown:
Read Immunization instance
id required | string Example: 123 The resource ID |
{- "resourceType": "Immunization",
- "id": "123456-831d99d3c90738aebe2067756be55c9f",
- "meta": {
- "extension": [
],
}, - "identifier": [
- {
- "system": "urn:oid:2.16.840.1.113883.3.8.287.42",
- "value": "123456-831d99d3c90738aebe2067756be55c9f"
}
], - "status": "completed",
- "statusReason": {
- "coding": [
- {
- "code": "unknown",
- "display": "Unknown"
}
]
}, - "vaccineCode": {
- "coding": [
]
}, - "patient": {
- "reference": "Patient/123",
- "display": "Last, Given"
}, - "occurrenceDateTime": "2022-10-19T00:00:00-07:00",
- "primarySource": false,
- "performer": [
- {
- "actor": {
- "id": "0987654321234567890",
- "reference": "Practitioner/0987654321234567890",
- "display": "Practitioner, Lucy"
}
}
]
}
Search operation to return Immunization resources.
patient required | string The public ID of the patient of the vaccination record |
_sort | string Specify which fields to sort by and the direction of the sort (ex: |
{- "resourceType": "Bundle",
- "id": "111",
- "meta": {
- "lastUpdated": "2022-08-22T12:49:22.584-07:00"
}, - "type": "searchset",
- "total": 1,
- "entry": [
- {
- "resource": {
- "resourceType": "Immunization",
- "id": "123456-831d99d3c90738aebe2067756be55c9f",
- "meta": {
- "extension": [
],
}, - "identifier": [
- {
- "system": "urn:oid:2.16.840.1.113883.3.8.287.42",
- "value": "123456-831d99d3c90738aebe2067756be55c9f"
}
], - "status": "completed",
- "statusReason": {
- "coding": [
- {
- "code": "unknown",
- "display": "Unknown"
}
]
}, - "vaccineCode": {
- "coding": [
]
}, - "patient": {
- "reference": "Patient/123",
- "display": "Last, Given"
}, - "occurrenceDateTime": "2022-10-19T00:00:00-07:00",
- "primarySource": false,
- "performer": [
- {
- "actor": {
- "id": "0987654321234567890",
- "reference": "Practitioner/0987654321234567890",
- "display": "Practitioner, Lucy"
}
}
]
}
}
]
}
The Location APIs provide information about locations within an organization.
{- "resourceType": "Location",
- "id": "11111",
- "status": "active",
- "name": "A Great Location",
- "description": "A Great Location",
- "type": [
- {
- "coding": [
- {
- "system": "urn:oid:2.16.840.1.113883.1.11.17660",
- "code": "ONCL",
- "display": "Medical oncology clinic"
}
], - "text": "Medical oncology clinic"
}
], - "telecom": [
- {
- "system": "phone",
- "value": "111-111-1111"
}, - {
- "system": "fax",
- "value": "111-111-1112"
}
], - "address": {
- "line": [
- "1000 Test Blvd"
], - "city": "San Francisco",
- "state": "CA",
- "postalCode": "94789"
}, - "physicalType": {
- "coding": [
- {
- "system": "urn:oid:2.16.840.1.113883.4.642.2.179",
- "code": "bu",
- "display": "Building"
}
], - "text": "Building"
}, - "managingOrganization": {
- "reference": "Organization/12345",
- "display": "Parent Organization"
}
}
Search for Location instances
address | string The full or partial address of the location |
identifier | string Public id of the Location. Identical to using the _id FHIR search parameter |
name | string A portion of the location's name |
organization | string The practice public id of the managing organization |
_sort | string Specify which fields to sort by and the direction of the sort (ex: |
_count | number The number of resources to return |
{- "resourceType": "Bundle",
- "id": "BL899922",
- "meta": {
- "lastUpdated": "2022-08-25T21:35:57.156-07:00"
}, - "type": "searchset",
- "total": 1,
- "entry": [
- {
- "resource": {
- "resourceType": "Location",
- "id": "11111",
- "status": "active",
- "name": "A Great Location",
- "description": "A Great Location",
- "type": [
- {
- "coding": [
- {
- "system": "urn:oid:2.16.840.1.113883.1.11.17660",
- "code": "ONCL",
- "display": "Medical oncology clinic"
}
], - "text": "Medical oncology clinic"
}
], - "telecom": [
- {
- "system": "phone",
- "value": "111-111-1111"
}, - {
- "system": "fax",
- "value": "111-111-1112"
}
], - "address": {
- "line": [
- "1000 Test Blvd"
], - "city": "San Francisco",
- "state": "CA",
- "postalCode": "94789"
}, - "physicalType": {
- "coding": [
- {
- "system": "urn:oid:2.16.840.1.113883.4.642.2.179",
- "code": "bu",
- "display": "Building"
}
], - "text": "Building"
}, - "managingOrganization": {
- "reference": "Organization/12345",
- "display": "Parent Organization"
}
}
}
]
}
The Medication APIs provide information about patient medications. The resources returned are compliant with the US Core profile.
Each Medication may include two codes:
If the medication is part of an investigational study, an extension with url http://fhir.iknowmed.com/StructureDefinition/study
and valueBoolean true
will be included.
{- "resourceType": "Medication",
- "id": "123456",
- "text": {
- "status": "generated",
- "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Anastrozole Oral</div>"
}, - "contained": [
- {
- "resourceType": "Medication",
- "id": "1",
- "code": {
- "coding": [
], - "text": "anastrozole"
}
}
], - "code": {
- "coding": [
- {
- "system": "urn:oid:2.16.840.1.113883.3.567.13.1",
- "code": "24515",
- "display": "Anastrozole PO"
}, - {
- "code": "84857",
- "display": "Anastrozole PO"
}
], - "text": "Anastrozole Oral"
}, - "ingredient": [
- {
- "itemReference": {
- "reference": "#1"
},
}
]
}
Search operation to return Medication resources
name required | string The name of the medication |
{- "resourceType": "Bundle",
- "id": "111",
- "meta": {
- "lastUpdated": "2022-08-22T12:49:22.584-07:00"
}, - "type": "searchset",
- "total": 1,
- "entry": [
- {
- "resource": {
- "resourceType": "Medication",
- "id": "123456",
- "text": {
- "status": "generated",
- "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Anastrozole Oral</div>"
}, - "contained": [
- {
- "resourceType": "Medication",
- "id": "1",
- "code": {
- "coding": [
], - "text": "anastrozole"
}
}
], - "code": {
- "coding": [
- {
- "system": "urn:oid:2.16.840.1.113883.3.567.13.1",
- "code": "24515",
- "display": "Anastrozole PO"
}, - {
- "code": "84857",
- "display": "Anastrozole PO"
}
], - "text": "Anastrozole Oral"
}, - "ingredient": [
- {
- "itemReference": {
- "reference": "#1"
},
}
]
}
}
]
}
The MedicationAdministration APIs provide information about administered patient medications.
id required | string Example: 123 The resource ID |
{- "resourceType": "MedicationAdministration",
- "id": "12345678",
- "status": "completed",
- "medicationCodeableConcept": {
- "coding": [
- {
- "code": "308770",
- "display": "Bleomycin IV"
}
], - "text": "Bleomycin IV"
}, - "subject": {
- "reference": "Patient/123",
- "display": "Last, Given"
}, - "effectivePeriod": {
- "start": "2018-08-18",
- "end": "2018-08-18"
}, - "request": {
- "reference": "MedicationRequest/5378441",
- "display": "Bleomycin IV\n2040 unit intravenous once. "
}, - "dosage": {
- "route": {
- "coding": [
- {
- "system": "urn:oid:2.16.840.1.113883.3.567.13.1",
- "code": "194",
- "display": "intravenously"
}
], - "text": "IV"
}
}
}
Recent Clinical Data Best Practice
One of:
/MedicationAdministration?patient=123&effective-time=gt{today-30}
Targeted Historical Data Best Practice
One of:
/MedicationAdministration?patient=123&effective-time=gt2024-06-03&effective-time=lt2024-09-01
patient required | string The identity of a patient to list administrations for |
code | string The GCN sequence number(s) of the medication(s) being administered |
effective-time | string Date administration happened (or did not happen) |
_lastUpdated | string Only return resources which were last updated as specified by the given range |
{- "resourceType": "Bundle",
- "id": "111",
- "meta": {
- "lastUpdated": "2022-08-22T12:49:22.584-07:00"
}, - "type": "searchset",
- "total": 1,
- "link": [
], - "entry": [
- {
- "resource": {
- "resourceType": "MedicationAdministration",
- "id": "12345678",
- "status": "completed",
- "medicationCodeableConcept": {
- "coding": [
- {
- "code": "308770",
- "display": "Bleomycin IV"
}
], - "text": "Bleomycin IV"
}, - "subject": {
- "reference": "Patient/123",
- "display": "Last, Given"
}, - "effectivePeriod": {
- "start": "2018-08-18",
- "end": "2018-08-18"
}, - "request": {
- "reference": "MedicationRequest/5378441",
- "display": "Bleomycin IV\n2040 unit intravenous once. "
}, - "dosage": {
- "route": {
- "coding": [
- {
- "system": "urn:oid:2.16.840.1.113883.3.567.13.1",
- "code": "194",
- "display": "intravenously"
}
], - "text": "IV"
}
}
}
}
]
}
The MedicationRequest APIs provide information about orders or requests of patient medications. The resources returned are compliant with the US Core profile
The "medicationCodeableConcept" can hold codes (or just a text field with no code) from
RxNorm, system http://www.nlm.nih.gov/research/umls/rxnorm
First Databank Enhanced Therapeutic Classification System (FDETCS), system urn:oid:2.16.840.1.113883.3.567.13.1
The "dosage" field may contain the following:
extension - custom field describing dose form
timing - the frequency of the medication taken found in the "text" field
route - contains a code from FDETCS
doseAndRate
There may be two extensions that outline medication cycle information (see examples)
id required | string Example: 123 The resource ID |
{- "resourceType": "MedicationRequest",
- "id": "MR1111",
- "text": {
- "status": "generated",
- "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\"><span class='generateShortDescriptionForMedAbstractOrder'>Fluorouracil IV</span><br/><hr/>Fluorouracil IV<br/><hr/>780 mg intravenously Push once. <span class='patOrderDosePrescriptionLabel'>Admin over:</span> 2 minutes <span class='patOrderDosePrescriptionLabel'>to</span> 4 minutes <span class='patOrderDosePrescriptionLabel'></span></div>"
}, - "extension": [
], - "status": "active",
- "intent": "order",
- "reportedBoolean": false,
- "medicationCodeableConcept": {
- "coding": [
- {
- "system": "urn:oid:2.16.840.1.113883.3.567.13.1",
- "display": "Alendronate PO (Weekly)"
}, - {
- "code": "203152",
- "display": "Alendronate PO (Weekly)"
}
], - "text": "Alendronate Oral (Weekly)"
}, - "subject": {
- "reference": "Patient/123",
- "display": "Family, Given"
}, - "encounter": {
- "reference": "Encounter/Appointment.123456789",
- "display": "LAB INFED"
}, - "authoredOn": "2013-08-01T00:00:00-07:00",
- "requester": {
- "id": "D1233",
- "reference": "Practitioner/D1232",
- "display": "Provider, Given"
}, - "dosageInstruction": [
- {
- "text": "description",
- "extension": [
], - "timing": {
- "code": {
- "text": "every week"
}
}, - "route": {
- "coding": [
- {
- "system": "urn:oid:2.16.840.1.113883.3.567.13.1",
- "code": "212",
- "display": "orally"
}
], - "text": "PO"
}, - "doseAndRate": [
- {
- "doseQuantity": {
- "value": 1,
- "unit": "tablet(s)"
}
}
]
}
], - "dispenseRequest": {
- "numberOfRepeatsAllowed": 2,
- "quantity": {
- "value": 30,
- "unit": "Tablet"
}
}
}
Active Clinical Data Best Practice
/MedicationRequest?status=active
Recent Clinical Data Best Practice
This is to find recent MedicationRequest records. Historical MedicationRequest records with recent activity are found by searching for recent MedicationAdministration records and the associated MedicationRequest. If a client needs to know the CarePlan associated with a MedicationRequest, the client must search for CarePlan records that are authored on the same date as the MedicationRequest.
One of:
authoredon (last 30 days)
_lastUpdated (last 30 days)
/MedicationRequest?authoredon=gt{today-30}
Targeted Historical Data Best Practice
One or more of:
/MedicationRequest?status=draft&authoredon=gt2024-06-03&authoredon=lt2024-09-01
patient required | string Returns prescriptions for a specific patient |
authoredon | string Return prescriptions written on this date |
encounter | string Return prescriptions with this encounter identifier |
intent | string Value: "order" Returns prescriptions based on intent. All MedicationRequest resources have intent of "order" so this parameter is not useful |
status | string Enum: "active" "on-hold" "cancelled" "completed" "draft" Status of the prescription |
_lastUpdated | string Only return resources which were last updated as specified by the given range |
_revinclude | string Value: "Provenance:target" Signals to server to return Provenance resources related to the MedicationRequest resources. |
{- "resourceType": "Bundle",
- "id": "BB77766",
- "meta": {
- "lastUpdated": "2022-08-25T22:43:38.937-07:00"
}, - "type": "searchset",
- "total": 1,
- "entry": [
- {
- "resource": {
- "resourceType": "MedicationRequest",
- "id": "MR1111",
- "text": {
- "status": "generated",
- "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\"><span class='generateShortDescriptionForMedAbstractOrder'>Fluorouracil IV</span><br/><hr/>Fluorouracil IV<br/><hr/>780 mg intravenously Push once. <span class='patOrderDosePrescriptionLabel'>Admin over:</span> 2 minutes <span class='patOrderDosePrescriptionLabel'>to</span> 4 minutes <span class='patOrderDosePrescriptionLabel'></span></div>"
}, - "extension": [
], - "status": "active",
- "intent": "order",
- "reportedBoolean": false,
- "medicationCodeableConcept": {
- "coding": [
- {
- "system": "urn:oid:2.16.840.1.113883.3.567.13.1",
- "display": "Alendronate PO (Weekly)"
}, - {
- "code": "203152",
- "display": "Alendronate PO (Weekly)"
}
], - "text": "Alendronate Oral (Weekly)"
}, - "subject": {
- "reference": "Patient/123",
- "display": "Family, Given"
}, - "encounter": {
- "reference": "Encounter/Appointment.123456789",
- "display": "LAB INFED"
}, - "authoredOn": "2013-08-01T00:00:00-07:00",
- "requester": {
- "id": "D1233",
- "reference": "Practitioner/D1232",
- "display": "Provider, Given"
}, - "dosageInstruction": [
- {
- "text": "description",
- "extension": [
], - "timing": {
- "code": {
- "text": "every week"
}
}, - "route": {
- "coding": [
- {
- "system": "urn:oid:2.16.840.1.113883.3.567.13.1",
- "code": "212",
- "display": "orally"
}
], - "text": "PO"
}, - "doseAndRate": [
- {
- "doseQuantity": {
- "value": 1,
- "unit": "tablet(s)"
}
}
]
}
], - "dispenseRequest": {
- "numberOfRepeatsAllowed": 2,
- "quantity": {
- "value": 30,
- "unit": "Tablet"
}
}
}
}
]
}
The MedicationStatement APIs provide records of medications that are being consumed by a patient.
The "medicationCodeableConcept" can hold codes (or just a text field with no code) from
RxNorm, system http://www.nlm.nih.gov/research/umls/rxnorm
First Databank Enhanced Therapeutic Classification System (FDETCS), system urn:oid:2.16.840.1.113883.3.567.13.1
The "dosage" field may contain the following:
extension - custom field describing dose form
timing - the frequency of the medication taken found in the "text" field
route - contains a code from FDETCS
doseAndRate
id required | string Example: 123 The resource ID |
{- "resourceType": "MedicationStatement",
- "id": "MS121111",
- "text": {
- "status": "generated",
- "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Multivitamins Oral Tablet tablet 1 tablet orally every morning</div>"
}, - "status": "active",
- "medicationCodeableConcept": {
- "coding": [
- {
- "code": "4511",
- "display": "Multivitamins Oral Tablet"
}
], - "text": "Multivitamins Oral Tablet"
}, - "subject": {
- "reference": "Patient/123",
- "display": "Family, Given"
}, - "effectivePeriod": {
- "start": "2014-01-24T00:00:00-08:00"
}, - "dateAsserted": "2014-01-24T09:12:16-08:00",
- "informationSource": {
- "reference": "Patient/123",
- "display": "Family, Given"
}, - "dosage": [
- {
- "text": "as directed",
- "extension": [
], - "timing": {
- "code": {
- "text": "every morning"
}
}, - "route": {
- "coding": [
- {
- "system": "urn:oid:2.16.840.1.113883.3.567.13.1",
- "code": "212",
- "display": "orally"
}
], - "text": "PO"
}, - "doseAndRate": [
- {
- "doseQuantity": {
- "value": 1,
- "unit": "tablet"
}
}
]
}
]
}
Recent Clinical Data Best Practice
One of:
/MedicationStatement?patient=123&effective=gt{today-30}
Targeted Historical Data Best Practice
One or more of:
/MedicationStatement?patient=123&effective=gt2024-06-03&effective=lt2024-09-01
patient required | string The public ID of the patient who is the subject of the MedicationStatement |
effective | string Date when patient was taking (or not taking) the medication |
_lastUpdated | string Only return resources which were last updated as specified by the given range |
{- "resourceType": "Bundle",
- "id": "BB188889",
- "meta": {
- "lastUpdated": "2022-08-25T22:50:56.022-07:00"
}, - "type": "searchset",
- "total": 1,
- "link": [
], - "entry": [
- {
- "resource": {
- "resourceType": "MedicationStatement",
- "id": "MS121111",
- "text": {
- "status": "generated",
- "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Multivitamins Oral Tablet tablet 1 tablet orally every morning</div>"
}, - "status": "active",
- "medicationCodeableConcept": {
- "coding": [
- {
- "code": "4511",
- "display": "Multivitamins Oral Tablet"
}
], - "text": "Multivitamins Oral Tablet"
}, - "subject": {
- "reference": "Patient/123",
- "display": "Family, Given"
}, - "effectivePeriod": {
- "start": "2014-01-24T00:00:00-08:00"
}, - "dateAsserted": "2014-01-24T09:12:16-08:00",
- "informationSource": {
- "reference": "Patient/123",
- "display": "Family, Given"
}, - "dosage": [
- {
- "text": "as directed",
- "extension": [
], - "timing": {
- "code": {
- "text": "every morning"
}
}, - "route": {
- "coding": [
- {
- "system": "urn:oid:2.16.840.1.113883.3.567.13.1",
- "code": "212",
- "display": "orally"
}
], - "text": "PO"
}, - "doseAndRate": [
- {
- "doseQuantity": {
- "value": 1,
- "unit": "tablet"
}
}
]
}
]
}
}
]
}
The Observation APIs provide information about patient lab results, vital signs, etc.
Observations types by "category" (caution must be made here since the category is not always assigned correctly):
imaging
laboratory
procedure
social-history
Cognitive status (SNOMED code
: "134419005", "60032008", "247602005", "386807006", "248234008", "419723007", "427645006", "62766000")
Depression status (SNOMED code
: "35489007")
Performance status (SNOMED code
: "425389002", "422512005", "422894000", "423053003", "423237006", "423409001", "273546003")
Travel history and occupation
vital-signs
A custom extension showing whether the Observation has been reviewed and is ready to be/has been released to the patient may be returned in the base extension list.
{- "resourceType": "Observation",
- "id": "35ccbae2-06e6-4227-8d4f-8221e8686aee.12345",
- "meta": {
}, - "text": {
- "status": "generated",
- "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">3.8 x 10^3/uL</div>"
}, - "extension": [
], - "status": "final",
- "category": [
- {
- "coding": [
- {
- "code": "laboratory",
- "display": "Laboratory"
}
]
}
], - "code": {
- "text": "WBC"
}, - "subject": {
- "reference": "Patient/123",
- "display": "Last, Given"
}, - "effectiveDateTime": "2022-01-01T00:00:00-08:00",
}
Recent Clinical Data Best Practice
One of:
/Observation?patient=123&date=gt{today-30}
Targeted Historical Data Best Practice
One or more of:
/Observation?patient=123&date=gt2024-06-03&date=lt2024-09-01&category=social-history&code=72166-2
patient required | string The public ID of the patient who is the subject of the Observation |
category | string Enum: "imaging" "laboratory" "procedure" "social-history" "vital-signs" The classification of the type of observation |
code | string The code of the observation type |
date | string Obtained date/time. If the obtained element is a period, a date that falls in the period |
flowSheetCategoryId | string Custom query parameter to filter by the G2 flowsheet category ID |
status | string Value: "final" The status of the observation. All Observation resources have status of "final" so this parameter is not useful |
_count | number The number of resources to return |
_lastUpdated | string Only return resources which were last updated as specified by the given range |
_sort | string Specify which fields to sort by and the direction of the sort (ex: |
{- "resourceType": "Bundle",
- "id": "BB8888881",
- "meta": {
- "lastUpdated": "2022-08-25T22:56:19.908-07:00"
}, - "type": "searchset",
- "total": 1,
- "entry": [
- {
- "resource": {
- "resourceType": "Observation",
- "id": "35ccbae2-06e6-4227-8d4f-8221e8686aee.12345",
- "meta": {
}, - "text": {
- "status": "generated",
- "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">3.8 x 10^3/uL</div>"
}, - "extension": [
], - "status": "final",
- "category": [
- {
- "coding": [
- {
- "code": "laboratory",
- "display": "Laboratory"
}
]
}
], - "code": {
- "text": "WBC"
}, - "subject": {
- "reference": "Patient/123",
- "display": "Last, Given"
}, - "effectiveDateTime": "2022-01-01T00:00:00-08:00",
}
}
]
}
Each iKnowMed practice is represented as an Organization in the FHIR API.
{- "resourceType": "Organization",
- "id": "CBC3D65483D64E96E04400212861B296",
- "active": true,
- "type": [
- {
- "coding": [
- {
- "code": "prov",
- "display": "Healthcare Provider"
}
], - "text": "Healthcare Provider"
}
], - "name": "Onc Hem of MSH",
- "telecom": [
- {
- "system": "phone",
- "value": "(418) 042-4883",
- "use": "work"
}, - {
- "system": "fax",
- "value": "418-042-4882"
}, - {
- "system": "email",
- "value": "contact@mckesson.com"
}
], - "address": [
- {
- "use": "work",
- "type": "both",
- "line": [
- "2164 Lake Forest Drive",
- "9744 County Line Road"
], - "city": "East Providence",
- "state": "KS",
- "postalCode": "94555",
- "country": "USA"
}
]
}
Search operation to return Organization resources.
identifier | string The iKnowMed public id of the practice. This is also the FHIR ID for the corresponding FHIR Organization representing that practice. |
patient | string Public ID (FHIR ID) of an iKnowMed patient. This will return a single Organization, representing the practice where the patient receives care. |
_count | number The number of resources to return |
{- "resourceType": "Bundle",
- "id": "b14e6385-bbcc-4b2b-906f-1ee056fb0958",
- "meta": {
- "versionId": "1736367161:dtagent10303241106123517GyDk",
- "lastUpdated": "2025-01-08T12:12:41.556-08:00"
}, - "type": "searchset",
- "total": 1,
- "link": [
- {
- "relation": "self",
}
], - "entry": [
- {
- "resource": {
- "resourceType": "Organization",
- "id": "123",
- "active": true,
- "type": [
- {
- "coding": [
- {
- "code": "prov",
- "display": "Healthcare Provider"
}
], - "text": "Healthcare Provider"
}
], - "name": "First Practice",
- "telecom": [
- {
- "system": "phone",
- "value": "(418) 042-4883",
- "use": "work"
}, - {
- "system": "fax",
- "value": "418-042-4882"
}, - {
- "system": "email",
- "value": "email_contact@mckesson.com"
}
], - "address": [
- {
- "use": "work",
- "type": "both",
- "line": [
- "2164 Lake Forest Drive",
- "9744 County Line Road"
], - "city": "East Providence",
- "state": "KS",
- "postalCode": "94555",
- "country": "USA"
}
]
}
}
]
}
{- "resourceType": "Patient",
- "id": "123",
- "extension": [
], - "identifier": [
- {
- "type": {
- "coding": [
- {
- "code": "MR",
- "display": "Medical record number"
}
]
}, - "system": "urn:oid:2.16.840.1.113883.3.623.4",
- "value": "826235"
}
], - "active": true,
- "name": [
- {
- "use": "official",
- "family": "Everyman",
- "given": [
- "Frankie"
]
}
], - "telecom": [
- {
- "system": "phone",
- "value": "2739643585",
- "use": "home",
- "rank": 1
}, - {
- "system": "email",
- "value": "frankie.everyman@example.com",
- "rank": 1
}
], - "gender": "male",
- "birthDate": "1976-11-15",
- "address": [
- {
- "use": "home",
- "type": "physical",
- "line": [
- "111 Dorrance St"
], - "city": "Providence",
- "state": "RI",
- "postalCode": "02903",
- "period": {
- "start": "2024-08-06T00:00:00-07:00"
}
}
], - "maritalStatus": {
- "coding": [
- {
- "code": "UNK",
- "display": "Unknown"
}
]
}, - "generalPractitioner": [
- {
- "id": "123",
- "reference": "Practitioner/123",
- "display": "Ravenscraft, Allison"
}
]
}
A client should remember the resulting Patient FHIR ID(s) for subsequent requests.
Single Patient
When searching for a single patient, a client should provide the medical record number (MRN) and the practicePublicId (either as a query parameter or http header). For the MRN, you need to provide the system and the value:
/Patient?identifier=urn:oid:2.16.840.1.113883.3.623.4%7C{patient-mrn}&practicePublicId={practicePublicId}
Notice that the system and mrn are seperated by %7C
. This is the url encoded value for |
which is the delimiter specified by FHIR for the system and value in a query parameter.
Multiple Patients
When searching for multiple patients, a client should use a combination of parameters to obtain a Bundle of matching patient records.
Two or more of:
The practicePublicId http header or parameter is also required.
/Patient?family={family}&birthdate={birthdate}&practicePublicId={practicePublicId}
_count | number The number of resources to return |
_id | string The ID of the resource |
_lastUpdated | string Only return resources which were last updated as specified by the given range |
birthdate | string The patient's date of birth |
family | string Family name (last name) for the patient (exact match, case insensitive) |
gender | string Gender of the patient |
given | string Given name (first name) for the patient (exact match, case insensitive). |
identifier | string Value: "urn:oid:2.16.840.1.113883.3.623.4%7C[patient-mrn]" A patient identifier. Only the MRN is allowed. |
name | string Partial search across patient first/middle/last names as well as iKM MRN (case insensitive) |
practicePublicId | string |
_include | string Enum: "Patient:generalPractitioner:Practitioner" "*" Includes the full Practitioner if the patient has an assigned |
{- "resourceType": "Bundle",
- "id": "BBP1233",
- "meta": {
- "lastUpdated": "2022-08-25T23:20:09.800-07:00"
}, - "type": "searchset",
- "total": 1,
- "link": [
], - "entry": [
- {
- "resource": {
- "resourceType": "Patient",
- "id": "123",
- "extension": [
], - "identifier": [
- {
- "type": {
- "coding": [
]
}, - "system": "urn:oid:2.16.840.1.113883.3.623.4",
- "value": "Family"
}
], - "name": [
- {
- "use": "official",
- "family": "Family",
- "given": [
- "Given"
]
}
], - "gender": "female",
- "birthDate": "1965-12-12"
}, - "generalPractitioner": [
- {
- "id": "P123",
- "reference": "Practitioner/P123",
- "display": "Provider, Given"
}
], - "maritalStatus": {
- "coding": [
- {
- "code": "UNK",
- "display": "Unknown"
}
]
}
}
]
}
The Practitioner APIs provide information about practitioners within Iknowmed practices. This resource is compliant with the US Core profile
{- "resourceType": "Practitioner",
- "id": "1234567890",
- "text": {
- "status": "generated",
- "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Given Family MD</div>"
}, - "identifier": [
- {
- "id": "5179351703",
- "type": {
}, - "value": "5179351703"
}
], - "name": [
- {
- "use": "official",
- "family": "Family",
- "given": [
- "Given"
]
}
], - "telecom": [
- {
- "system": "email",
- "value": "family@gmail.com"
}, - {
- "system": "phone",
- "value": "(418) 042-4883"
}, - {
- "system": "fax",
- "value": "418-042-4882"
}
], - "qualification": [
- {
- "code": {
- "coding": [
- {
- "display": "MD"
}
], - "text": "MD"
}
}
]
}
Procedure allows searching for a patient's historical procedures/treatments.
{- "resourceType": "Procedure",
- "id": "PatTreatmentHistory.1501",
- "text": {
- "status": "generated",
- "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Chemotherapy care education (procedure)</div>"
}, - "status": "completed",
- "code": {
- "coding": [
], - "text": "Chemotherapy class ; Chemotherapy care education (procedure)"
}, - "subject": {
- "reference": "Patient/268201F1AF1A64DCE05400144FFAAA34",
- "display": "Pensick, Janella"
}
}
Recent Clinical Data Best Practice
One of:
/MedicationAdministration?patient=123&date=gt{today-30}
Targeted Historical Data Best Practice
One of:
/MedicationAdministration?patient=123&date=gt2024-06-03&date=lt2024-09-01
patient required | string Patient who is the subject of the procedure, identified by the FHIR ID (iKnowMed public ID) of the patient resource |
date | string When the procedure was performed. |
_count | number The number of resources to return |
{- "resourceType": "Bundle",
- "id": "b981713a-35ad-46ae-8cef-8faa8bf3f86e",
- "meta": {
- "versionId": "1736450549:dtagent10303241106123517GyDk",
- "lastUpdated": "2025-01-09T11:22:29.100-08:00"
}, - "type": "searchset",
- "total": 1,
- "entry": [
- {
- "resource": {
- "resourceType": "Procedure",
- "id": "PatTreatmentHistory.1501",
- "text": {
- "status": "generated",
- "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Chemotherapy care education (procedure)</div>"
}, - "status": "completed",
- "code": {
- "coding": [
], - "text": "Chemotherapy class ; Chemotherapy care education (procedure)"
}, - "subject": {
- "reference": "Patient/123",
- "display": "Pensick, Janella"
}
}
}
]
}
See Server Details > Provenance for more information. This resource is compliant with the US Core profile.
{- "resourceType": "Provenance",
- "id": "CRT3.123456-0987654321",
- "target": [
- {
- "reference": "CareTeam/123456"
}
], - "recorded": "2022-07-21T20:36:17.486-07:00",
- "activity": {
- "coding": [
- {
- "code": "CREATE",
- "display": "create"
}
]
}, - "agent": [
- {
- "type": {
- "coding": [
- {
- "code": "author",
- "display": "Author"
}
]
}, - "who": {
- "id": "0987654321234567890",
- "reference": "Practitioner/0987654321234567890",
- "display": "Practitioner, Lucy"
}, - "onBehalfOf": {
- "reference": "Organization/1234567890987654321",
- "display": "Organization1"
}
}, - {
- "type": {
- "coding": [
- {
- "code": "transmitter",
- "display": "Transmitter"
}
]
}, - "who": {
- "reference": "Organization/1234567890987654321",
- "display": "Organization1"
}
}
]
}
Search operation to return Provenance resources
target required | string Target Reference(s) (CareTeam/1235, Patient/4321, etc.) |
_sort | string Specify which fields to sort by and the direction of the sort (ex: |
_count | number The number of resources to return |
{- "resourceType": "Bundle",
- "id": "111",
- "meta": {
- "lastUpdated": "2022-08-22T12:49:22.584-07:00"
}, - "type": "searchset",
- "total": 1,
- "link": [
], - "entry": [
- {
- "resource": {
- "resourceType": "Provenance",
- "id": "CRT3.123456-0987654321",
- "target": [
- {
- "reference": "CareTeam/123456"
}
], - "recorded": "2022-07-21T20:36:17.486-07:00",
- "activity": {
- "coding": [
- {
- "code": "CREATE",
- "display": "create"
}
]
}, - "agent": [
- {
- "type": {
- "coding": [
- {
- "code": "author",
- "display": "Author"
}
]
}, - "who": {
- "id": "0987654321234567890",
- "reference": "Practitioner/0987654321234567890",
- "display": "Practitioner, Lucy"
}, - "onBehalfOf": {
- "reference": "Organization/1234567890987654321",
- "display": "Organization1"
}
}, - {
- "type": {
- "coding": [
- {
- "code": "transmitter",
- "display": "Transmitter"
}
]
}, - "who": {
- "reference": "Organization/1234567890987654321",
- "display": "Organization1"
}
}
]
}
}
]
}