Mijn Communities
Help

Kennisbank Youforce API & bestandsuitwisseling

Sorteren op:
Deze pagina beschrijft de benodigde stappen om een Youforce-bestand te koppelen aan de File API.
Volledig artikel weergeven
04-10-2022 16:32 (Bijgewerkt op 13-11-2023)
  • 7 Antwoorden
  • 5 kudos
  • 4785 Weergaven
  Introductie Voor de overgang van de IBU (Automatisch) naar File API kun je de volgende opties in overweging nemen:   Je kunt dit volledig zelf doen Consultancy afspraak van een uur waarin wij de file API en benodigde stappen uitleggen. Consultancy afspraak van 4 uur (Intake 1 uur + 3 uur verdere inrichting)  waarin we onderstaande stappen gezamenlijk doorlopen. Voor optie 2 en 3 (het inplannen van een consultancy afspraak) kan je in Mijn Support een nieuwe aanvraag indienen, kiezen voor soort consultancy (API), optie Aanvraag consultancy en vervolgens de benodigde informatie velden invullen.    Indien je ervoor kiest om de inrichting zelf te doen, volg dan onderstaande stappen zoals beschreven in dit artikel: Inventariseer om welke bestanden het gaat. Maak een account aan op het Visma Developer Portal Maak een applicatie aan op het Visma Developer Portal Maak een invitatiecode aan op Visma Developer Portal Dien een ticket in via ‘Mijn support’ Pas zonodig de modules aan om gebruik te maken van File API Implementeer de nieuwe File API oplossing in uw eigen omgeving.  1 - Inventariseer om welke bestanden het gaat Jullie Customer Success Manager heeft inzicht in het gebruik van IBU en kan daar op verzoek een lijst van aanleveren.   2 - Account aanmaken op Visma Developer Portal De Visma Developer portal is te bereiken via  https://oauth.developers.visma.com/service-registry/home   en maak via Create account een account aan         De portal zal via do.not.reply@mail.connect.visma.com  je een e-mail sturen met een Activatie account link.   Gebruik bij het registreren het Kvk-nummer als Organization number     Startscherm na inloggen     Desgewenst kun je een collega toevoegen via My team en New member. Jullie hebben dan beiden inzicht in de gegevens van de applicatie.     De volgende stap is het aanmaken van een applicatie (zie stap 3). 3 - Een applicatie aanmaken   Door een applicatie aan te maken ontstaat er een API Key en een Secret Key die je gebruikt om de authenticatietoken op te halen. Bij het inrichten van de File API vragen we je om een aparte applicatie aan te maken per file type (bijv. Datafeed, Aktes Export). Volg de stappen 3 tot en met 5 uit dit document voor elke applicatie die je aanmaakt.   Kies via het tabblad My Applications voor Add Application   Als application type selecteer Service, dit is het enige type wat door Visma|Raet wordt ondersteund.     Het aanmaken van de applicatie gaat via vier tabbladen, vul de gegevens in op het eerste tabblad Details. Weet dat de opgegeven Client Id wordt gebruikt als API key bij de API-aanroepen.    Je moet zelf de Client Id opgeven en om je bij vragen sneller van dienst te kunnen zijn, vragen wij je om bij het inrichten van de File API de waarde alsvolgt te kiezen: VRA_fileapi_6412345_Datafeed oftewel VRA_fileapi_ met daarachter je Visma|Raet-klantnummer en file type.  De 'isv'-prefix wordt standaard altijd toegevoegd   Let op: De Applicatienaam en Client Id heb je nodig in stap 5 om de autorisatie aan te vragen.   Let op:  Testomgeving - Indien je de API wilt koppelen aan jullie eigen testomgeving vragen wij je om bij het inrichten van de File API de waarde als volgt te kiezen: VRA_fileapi_6412346_BINT oftewel VRA_fileapi_ met daarachter je Visma|Raet-klantnummer van de testomgeving en file type.    Om je File API inrichting te testen kun je tevens gebruik maken van onze sandbox. Met deze sandbox kun je 3 dummy files ontvangen en ook testbestanden insturen. De applicatie voor de productieomgeving kan ook gekoppeld worden aan deze sandbox. Maak hiervoor een 2e invitatie code aan in stap 4.    Via deze applicatie met bijbehorende Client Id en Secret krijg je toegang de data en of bestanden uit de Youforce/HRCoreEducation-omgeving(en). Eén API key-set kan toegang geven tot meerdere klantomgevingen.   Via de Tenant Id die je als Header meestuurt bij het aanvragen van een authenticatie token bepaal je de benodigde klantomgeving.   Access Token Lifetime mag op de default waarde blijven staan. Een aanpassing van deze waarde heeft geen effect op werking van de API, alsmede de opties Include JSON Web Token ID en TestApplication.   Gebruik eerst Save as a draft om vervolgens de applicatie aan te maken via Create, via Next ga je naar het volgende tabblad.     Het tabblad Credentials stelt je in staat om de API Secret aan te maken. Let op, de Secret waarde wordt alleen getoond via de pop up bij het aanmaken, dus neem dit direct over. De pop up toont ook je eerder gekozen ID (API key).   Let op: Wordt de bestaande secret vergeten dan dien je een nieuwe aan te maken, deze wordt dan toegevoegd.     Via het tabblad Integrations selecteer je Youforce File (voor de bestanden), oftewel je ‘basis’ API, je gebruikt hiervoor New integration.       Visma | Raet zal de opgegeven API’s goedkeuren. Dit gaat via een workflow in de portal, je hoeft daar niks voor te doen. De goedkeuring door Visma | Raet kan enkele dagen duren.       Per API dien je de Scope(s) te selecteren welke gebruikt gaat worden in deze applicatie. Op deze manier kun je bepaalde functionaliteiten binnen de Youforce API uitsluiten van je applicatie. Je kunt vanzelfsprekend ook alle Scopes selecteren, maar een API kan ook slechts 1 Scope gebruiken.   Onder het volgende screenshot vind je een tabel met de beschikbare scopes voor de verschillende file types.     Scopes Betekenis businesstypes list  In de toekomst zal deze scope inzenders en ontvangers toestaan om informatie te krijgen over file types (businesstypes). Op dit moment is het alleen mogelijk voor een inzender om op te vragen of er een ontvanger is voor een specifieke tenant/file type combinatie. files delete Deze scope staat ontvangers toe om bestanden te verwijderen die je niet wilt downloaden. files download Deze scope staat ontvangers toe om bestanden te downloaden, alsook inzenders om bestanden die zij zelf geüpload hebben te downloaden. files upload Deze scope staat inzenders toe om bestanden te uploaden. files list Deze scope staat ontvangers toe om bestanden weer te geven die klaar staan voor ontvangen, alsook inzenders voor de bestanden die zij zelf geüpload hebben. Onderstaande tabel bevat alle beschikbare file types en de scopes die beschikbaar zijn voor dat file type. Kies het file type waar je de applicatie voor aan het aanmaken bent en maak een keuze uit de scopes die daarvoor beschikbaar zijn. (Meerdere opties zijn dus mogelijk) Tabel file types   HR Core Education gebruik makend van de IBU  IBU: Module Id - Naam File API: File Type Id - Name Scopes 3 - Payroll Gemal Engine - Download 128001 - Payroll Gemal Exports businesstypes list files delete files download files list 17 - PayrollZend - Upload 129001 - Gemal Direct import Integratiebestanden (WIG*.im) businesstypes list files upload files download files list 34-Betaalmanager Downloads - Download 135000 - RBM Gemal Downloads (csv)  businesstypes list files delete files download files list 36-Betaalmanager Opdrachten - Download 135001 - RBM Gemal Payment Files (xml, zip) businesstypes list files delete files download files list 33 - Salarisdossier - Download 106000 - Salarisdossier Gemal Export businesstypes list files delete files download files list 35 - Personeelsdossier - Upload 107003 - Personeelsdossier Imports businesstypes list files upload files download files list 38 - Personeelsdossier - Download 107001 - Personeelsdossier Exports businesstypes list files delete files download files list 41 - Gebruikersbeheer - Upload 121003 - IAM XSSO businesstypes list files upload files download files list 80 - HR Core Edu Bulk Import - Upload 120000 HRCE Bulk import businesstypes list files upload files download files list 81 - Management Informatie - Download 117000 - MI Education Datafeed Exports businesstypes list files delete files download files list 81 - Management Informatie - Download 117001 MI Education Aktes Exports businesstypes list files delete files download files list 81 - Management Informatie - Download 120001 HR Core Declaration Exports businesstypes list files delete files download files list   Het tabblad Integrations kan je niet direct bevestigen via Save, dat kan pas op het moment dat Visma|Raet de gekozen API’s bij de applicatie heeft goedgekeurd, dit gaat via een flow je hoeft hier niks voor te doen.    Je moet wachten op de bevestigings email van de goedkeuring door Visma|Raet voordat je met de volgende stappen verder kunt gaan.   Je kan door te klikken op de knop ‘Visma App store’ naar de laatste stap.   Tabblad Visma App Store   Voor toegang tot de klantdata genereer je straks in stap 4 een Invitatie Code. Hiervoor moet in de Visma App Store eerst het Access level - Audience configureren.     Na Start setup for Visma App Store ziet u onderstaand scherm en dan kies je bij Access level - Audience voor Invite only       Je bent nu klaar met het aanmaken van de applicatie, de optie Save is zichtbaar op het moment dat Visma | Raet de applicatie heeft goedgekeurd. Zo niet dan kun je dit scherm sluiten door bijvoorbeeld op Back to my Applications te klikken.  4 - Invitatiecode aanmaken Met een invitatiecode maak je het mogelijk de klantgegevens op te halen via je applicatie. Ga naar de Developer Portal https://oauth.developers.visma.com/service-registry/home  Kies voor My Applications. En klik op het potloodje achter de applicatie (Edit).    Kies voor het tabblad Visma App Store. En vervolgens New Invitation Code.     Bij Invitation description vul je de naam van de betreffende klant in. En klik vervolgens op Generate.       Let op: De Invitation Code heb je nodig in stap 5 om toegang te vragen tot de klant-data.   Visma | Raet zal de toegang tot de klant-data goedkeuren en dan direct de koppeling van klantdata aan je applicatie gereedmaken.   Binnen het beheer van je applicatie en het scherm Integrations is via de tabblad Tenants (default wordt het tabblad Scopes getoond) terug te zien welke klanten (tenants) gekoppeld zijn aan je applicatie. Dit scherm laat ook de bijbehorende TenantID zien. De TenantID is benodigd bij het opvragen van de authenticatie token.   Voorbeeld van een Tenant ID   5 - Dien een ticket in via Mijn Support Dien ticket in via Mijn Support met de invitation code en het verzoek om autorisatie voor de File API. Vermeld in het ticket de volgende gegevens:   Klantnummer: Je Visma|Raet relatienummer Naam IT medewerker Degene die de File API bij jullie installeert Telefoonnummer IT medewerker   Email IT medewerker   Invitatiecode Deze code heb je aangemaakt in stap 4 Client Id De Client Id heb je aangemaakt in stap 3 Applicatienaam De Applicatienaam heb je aangemaakt in stap 3 File type Het file type wat je met deze applicatie gaat zenden of ontvangen. Bijv 117000 - MI Education Datafeed Exports   6 - Pas systemen aan om gebruik te maken van File API Als je Payroll Gemal Direct en/of Betaalmanager gebruikt dan moet je deze applicaties  configureren voor de File API. Zie deze  link voor meer informatie per module.   Voor andere modules hoef je niets te doen.   7 - Implementeer de nieuwe File API oplossing in uw eigen omgeving.  Vraag een IT collega met verstand van schedulen en het opstellen van powershell scripts om het stappenplan te volgen. Je vind de voorbeeld powershell scripts op deze pagina.    
Volledig artikel weergeven
06-11-2023 10:40 (Bijgewerkt op 06-11-2023)
  • 4 Antwoorden
  • 0 kudos
  • 371 Weergaven
Developer portal, een account aanmaken, applicatie registreren en toegang tot de klantgegevens
Volledig artikel weergeven
12-10-2022 13:33 (Bijgewerkt op 03-11-2023)
  • 1 Antwoorden
  • 4 kudos
  • 7077 Weergaven
Om de veiligheid van jouw en onze systemen en gegevens beter te kunnen waarborgen zijn wij genoodzaakt enige beperkingen te stellen aan de naamgevingsconventie voor bestanden die worden ingezonden naar Youforce m.b.v. IBU, Bestandsuitwisseling en File API (bv Powershell scripts). Vanaf heden zijn bij de naamgeving van in te zenden bestanden alleen de volgende karakters toegestaan: Alle alfanumerieke karakters: Letters (klein en hoofd) en Cijfers underscore (_), min-teken (-), punt (.), komma (,), dollar-teken ($) en ronde haakjes ( en ). Spatie Tevens zijn de volgende bestand-extensies NIET meer toegestaan: action,apk,app,asa,asax,asp,axd,bat,bin,cer,cfc, cfm,cgi,cmd,com,command,cpl,csh,css,dbm,dll,do, exe,gadget,htm,html,inc,inf,ins,inx,ipa,isu,jar, job,js,jse,jsp,jsv,jsw,jsx,ksh,lnk,msc,msi,msp, mst,osx,out,paf,phar,php,php2,php3,php4,php5,php6, php7,phps,pht,phtm,phtml,pif,pl,prg,ps1,rem,reg, rgs,run,scr,sct,shb,shs,shtml,swf,u3p,vb,vbe,vbs, vbscript,workflow,ws,wsf,wsg,wss,xap   LET OP! Bij inzenden met Bestandsuitwisseling en File API (powershell scripts) krijg je direct een foutmelding als je het bestand probeert in te zenden. Bij IBU lijkt het bestand echter normaal ingezonden, echter wordt het bestand verderop in onze systemen afgekeurd. We kunnen voor deze afkeuring helaas geen terugkoppeling geven, maar het bestand wordt niet afgeleverd op de gewenste bestemming.
Volledig artikel weergeven
13-10-2023 16:06 (Bijgewerkt op 19-10-2023)
  • 0 Antwoorden
  • 1 kudos
  • 258 Weergaven
Visma|Raet maakt nu gebruik van de Developer portal van Visma, een portal waar u API-applicaties kunt aanmaken en beheren. Met deze portal heeft u niet alleen toegang maar hebben uw collega's ook toegang tot de aangemaakte applicaties.   Wat moet u doen om gebruik te maken van de nieuwe portal?
Volledig artikel weergeven
25-01-2023 11:31 (Bijgewerkt op 24-05-2023)
  • 0 Antwoorden
  • 0 kudos
  • 966 Weergaven
Veel arbodiensten gebruiken een eigen systeem om terugkoppelingsdocumenten op te stellen. Deze documenten zijn bedoeld voor betrokkenen binnen de klantorganisatie. Om deze terugkoppelingsdocumenten ook in Verzuim Management beschikbaar te krijgen, is het nodig om deze documenten handmatig in te voeren. Dit leidt echter tot dubbele invoer van de documenten en is bovendien foutgevoelig. Om deze dubbele invoer én eventuele fouten te voorkomen, is de SIVI documenten interface ontwikkeld. Bij gebruikmaking van SIVI documenten leveren de arbodiensten de bestanden geautomatiseerd aan Visma Raet, via een beveiligde verbinding. Deze bestanden worden gekoppeld aan in Verzuim Management bestaande acties die zijn ingericht met een verwijzing naar de Identificatie document soort van SIVI.   Het aanleveren van de bestanden aan Visma Raet gebeurt via onze File API, de werking van de File API is hier gedocumenteerd. De pagina Getting Started beschrijft hoe je een access token opvraagt en via Publishers/Multipart upload staat de API call beschreven die zorgt voor de upload.   Het bestand is het door SIVI voorgeschreven (XML)format versie 2020, de XML-bestandsnaam moet bij insturen via de File API voldoen aan het volgende formaat:   DO-XXXXXXXXXXXXXXX_YYYYMMDDHHMMSSFFF.xml of DO-XXXXXXXXXXXXXXX_YYYYMMDDHHMMSSFF.xml of DO-XXXXXXXXXXXXXXX_YYYYMMDDHHMMSS.xml   Toelichting: Onderdeel inhoud DO- Vaste waarde XXXXXXXXX Vrij in te vullen waarde. Variabel, minimaal 1 positie, maximaal 160 posities. Toegestane waarden:  alfa numeriek: A-Z, a-z, 0-9. punten. spaties _ Vast waarde, scheidingsteken YYYY Jaar, 4 posities MM Maand, 2 posities dd Dag, 2 posities HH Uur, 2 posities MM Minuut, 2 posities SS Seconden, 2 posities FF of FFF Milliseconden 0, 2 of 3 posities .xml Vaste waarde, extensie   Voorbeelden:  DO-Tussentijdse evaluatie_20180622010203444.xml DO-Evaluatie n.a.v. gesprek 1_20180622010203444.xml   Om het bestand via een File API-call te versturen naar Visma Raet dient businessTypeID 124000 gebruikt te worden in de call. Dit businessTypeID staat in Youforce voor de SIVI Documenten en dient samen met de bestandsnaam als metadata worden toegevoegd aan de API call. Een voorbeeld van de API-call:       Je kan de upload testen door gebruik te maken van onderstaande API-credentials  API Key: VRA_fileapi_4001401_uploadsivi Secret Key: F0m9N5kbdXB4xEPQTkQRpd76H4JZw6CYoJQbskQ9zAJDdtu8WalC687ozkjoZ6tm TenantID: f556855c-a0c4-42c7-88f1-98bf5b209393   Met onderstaande variabelen in het SIVI document-XML-bestand: Hoofd tag Tag Inhoud Opmerking Voor FileAPI test <BrAlg> <IdOntvngr> “Visma Raet” Statische waarde Visma Raet <Wrkgvr> <HndlsnmOrg> [naam arbo dienst]  Door arbodienst in te vullen. Zelf in te vullen <Wrkgvr> <IdWrkgvrArbdnst> [identificatie van klant] Verschilt per klant-omgeving. test12345test <Document> <SrtDocumentCd> Identificatie document soort Statische lijst zoals in het SIVI format beschreven. 999 staat voor 'Overig' 999 <Document> <DatDocument> Creatie datum van het document   Zelf in te vullen <Document> <Bestandsnm> Bestandsnaam   Zelf in te vullen <Document> <Datastring> Document inhoud gecodeerd in Base64 formaat   Zelf in te vullen <Document>   <Wrknmr> <IdWrknmr> Personeelsnummer van werknemer   1945 <Document>   <Dnstvbnd>     <Vrzm> <DatEerstVrzmdg> Eerste verzuimdag van het verzuim waar het document aan gekoppeld wordt   2022-05-24   Wanneer de File API een 201 (Created) teruggeeft dan is de upload succesvol geweest, neem met Visma Raet contact op om samen te controleren of het document daadwerkelijk is toegevoegd aan het verzuimdossier van de betreffende medewerker (persoonsnummer 1945, verzuimdossier 24-05-2022), een specifieke bestandsnaam van het document (<Bestandsnm>) helpt bij de controle.    Voorbeeld van het Sivi document XML-bestand: <?xml version="1.0" encoding="UTF-8"?> <Documenten xmlns="http://www.sivi.org/Verzuimmanagement/Documenten/2020" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <BrAlg xmlns="http://www.sivi.org/Verzuimmanagement/Documenten/2020"> <BrCd>00001</BrCd> <VnrBrCd>00004</VnrBrCd> <AandatBr>2022-03-17</AandatBr> <AantijdBr>11:22:09</AantijdBr> <IdInzndr>ArbodienstX</IdInzndr> <IdOntvngr>Visma - Raet</IdOntvngr> <Berrefnr>39989003</Berrefnr> <TestJN>J</TestJN> <OntvngstbevJN>N</OntvngstbevJN> </BrAlg> <Wrkgvr xmlns="http://www.sivi.org/Verzuimmanagement/Documenten/2020"> <HndlsnmOrg>RAET SIVI TEST</HndlsnmOrg> <IdWrkgvrArbdnst>test12345test</IdWrkgvrArbdnst> <AansltnrGeguitwlngArbdnst>6431</AansltnrGeguitwlngArbdnst> <Lhnr>999999999999</Lhnr> </Wrkgvr> <Document xmlns="http://www.sivi.org/Verzuimmanagement/Documenten/2020"> <IdDocument>39989003</IdDocument> <DatDocument>2022-03-17</DatDocument> <SrtDocumentCd>999</SrtDocumentCd> <SrtDocumentOms>Overig</SrtDocumentOms> <StatDocumentCd>01</StatDocumentCd> <KenmerkZendPartij>ArbodienstX</KenmerkZendPartij> <BestandTypCd>06</BestandTypCd> <Bestandsnm>Inzetbaarheidsadvies.pdf</Bestandsnm> <AdresseringCd>01</AdresseringCd> <Datastring>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Ci9GaXJzdENoYXIgMzIKL0ZvbnREZXNjcmlwdG9yIDExIDAgUgovTmFtZSAvRjEKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKL0Jhc2VGb250IC9BcmlhbE1UCi9TdWJ0eXBlIC9UcnVlVHlwZQovTGFzdENoYXIgMjMzCi9XaWR0aHMgMTIgMCBSCi9UeXBlIC9Gb250Cj4+CmVuZG9iaiAKMTEgMCBvYmogCjw8Ci9Gb250TmFtZSAvQXJpYWxNVAovU3RlbVYgNDQKL0xlYWRpbmcgMzMKL0FzY2VudCA5MDUKL0ZsYWdzIDMyCi9Gb250V2VpZ2h0IDQwMAovWEhlaWdodCAyNTAKL0Rlc2NlbnQgLTIxMAovQXZnV2lkdGggNDQxCi9JdGFsaWNBbmdsZSAwCi9NYXhXaWR0aCAyNjY1Ci9Gb250QkJveCBbLTY2NSAtMjEwIDIwMDAgNzI4XQovVHlwZSAvRm9udERlc2NyaXB0b3IKL0NhcEhlaWdodCA3MjgKPj4KZW5kb2JqIAo2IDAgb2JqIAo8PAovY2EgMQovQk0gL05vcm1hbAovVHlwZSAvRXh0R1N0YXRlCj4+CmVuZG9iaiAKNSAwIG9iaiAKPDwKL0NBIDEKL0JNIC9Ob3JtYWwKL1R5cGUgL0V4dEdTdGF0ZQo+PgplbmRvYmogCjcgMCBvYmogCjw8Ci9GaXJzdENoYXIgMzIKL0ZvbnREZXNjcmlwdG9yIDEzIDAgUgovTmFtZSAvRjIKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKL0Jhc2VGb250IC9UaW1lc05ld1JvbWFuUFNNVAovU3VidHlwZSAvVHJ1ZVR5cGUKL0xhc3RDaGFyIDExOAovV2lkdGhzIDE0IDAgUgovVHlwZSAvRm9udAo+PgplbmRvYmogCjEzIDAgb2JqIAo8PAovRm9udE5hbWUgL1RpbWVzTmV3Um9tYW5QU01UCi9TdGVtViA0MAovTGVhZGluZyA0MgovQXNjZW50IDg5MQovRmxhZ3MgMzIKL0ZvbnRXZWlnaHQgNDAwCi9YSGVpZ2h0IDI1MAovRGVzY2VudCAtMjE2Ci9BdmdXaWR0aCA0MDEKL0l0YWxpY0FuZ2xlIDAKL01heFdpZHRoIDI2MTQKL0ZvbnRCQm94IFstNTY4IC0yMTYgMjA0NiA2OTNdCi9UeXBlIC9Gb250RGVzY3JpcHRvcgovQ2FwSGVpZ2h0IDY5Mwo+PgplbmRvYmogCjkgMCBvYmogCjw8Ci9GaXJzdENoYXIgMzIKL0ZvbnREZXNjcmlwdG9yIDE1IDAgUgovTmFtZSAvRjMKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKL0Jhc2VGb250IC9BcmlhbC1Cb2xkTVQKL1N1YnR5cGUgL1RydWVUeXBlCi9MYXN0Q2hhciAxMTgKL1dpZHRocyAxNiAwIFIKL1R5cGUgL0ZvbnQKPj4KZW5kb2JqIAoxNSAwIG9iaiAKPDwKL0ZvbnROYW1lIC9BcmlhbC1Cb2xkTVQKL1N0ZW1WIDQ3Ci9MZWFkaW5nIDMzCi9Bc2NlbnQgOTA1Ci9GbGFncyAzMgovRm9udFdlaWdodCA3MDAKL1hIZWlnaHQgMjUwCi9EZXNjZW50IC0yMTAKL0F2Z1dpZHRoIDQ3OQovSXRhbGljQW5nbGUgMAovTWF4V2lkdGggMjYyOAovRm9udEJCb3ggWy02MjggLTIxMCAyMDAwIDcyOF0KL1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9DYXBIZWlnaHQgNzI4Cj4+CmVuZG9iaiAKMyAwIG9iaiAKPDwKL1BhcmVudFRyZWUgMTcgMCBSCi9Sb2xlTWFwIDE4IDAgUgovUGFyZW50VHJlZU5leHRLZXkgMQovSyBbMTkgMCBSXQovVHlwZSAvU3RydWN0VHJlZVJvb3QKPj4KZW5kb2JqIAoxOCAwIG9iaiAKPDwKL0RpYWdyYW0gL0ZpZ3VyZQovSGVhZGVyIC9TZWN0Ci9Xb3Jrc2hlZXQgL1BhcnQKL0Zvb3RlciAvU2VjdAovSW5saW5lU2hhcGUgL1NlY3QKL1NsaWRlIC9QYXJ0Ci9Gb290bm90ZSAvTm90ZQovQW5ub3RhdGlvbiAvU2VjdAovQ2hhcnQgL1NlY3QKL0RpYWxvZ3NoZWV0IC9QYXJ0Ci9FbmRub3RlIC9Ob3RlCi9BcnRpZmFjdCAvU2VjdAovQ2hhcnRzaGVldCAvUGFydAovV29ya2Jvb2sgL0RvY3VtZW50Ci9NYWNyb3NoZWV0IC9QYXJ0Ci9UZXh0Ym94IC9TZWN0Cj4+CmVuZG9iaiAKMTcgMCBvYmogCjw8Ci9OdW1zIFswIDIwIDAgUl0KPj4KZW5kb2JqIAoxOSAwIG9iaiAKPDwKL1AgMyAwIFIKL0sgWzIxIDAgUiAyMiAwIFIgMjMgMCBSIDI0IDAgUiAyNSAwIFIgMjYgMCBSIDI3IDAgUiAyOCAwIFIgMjkgMCBSIDMwIDAgUiAzMSAwIFIgMzIgMCBSIDMzIDAgUiAzNCAwIFIgMzUgMCBSIDM2IDAgUiAzNyAwIFJdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QYXJ0Cj4+CmVuZG9iaiAKMjEgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxOSAwIFIKL0sgWzBdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QCj4+CmVuZG9iaiAKMjAgMCBvYmogWzIxIDAgUiAyMiAwIFIgMjMgMCBSIDI0IDAgUiAyNSAwIFIgMjYgMCBSIDM4IDAgUiAzOSAwIFIgMzkgMCBSIDM5IDAgUiA0MCAwIFIgNDEgMCBSIDQxIDAgUiA0MSAwIFIgNDIgMCBSIDQzIDAgUiA0MyAwIFIgNDMgMCBSIDQ0IDAgUiA0NSAwIFIgNDYgMCBSIDQ2IDAgUiA0NiAwIFIgNDcgMCBSIDQ4IDAgUiA0OCAwIFIgNDggMCBSIDQ5IDAgUiA1MCAwIFIgNTAgMCBSIDUwIDAgUiA1MSAwIFIgNTIgMCBSIDUzIDAgUiA1MyAwIFIgNTMgMCBSIDU0IDAgUiA1NSAwIFIgNTUgMCBSIDU1IDAgUiA1NiAwIFIgNTcgMCBSIDU3IDAgUiA1NyAwIFIgNTggMCBSIDU5IDAgUiA2MCAwIFIgNjAgMCBSIDYwIDAgUiA2MSAwIFIgNjIgMCBSIDYyIDAgUiA2MiAwIFIgNjMgMCBSIDY0IDAgUiA2NCAwIFIgNjUgMCBSIDY2IDAgUiA2NyAwIFIgNjcgMCBSIDY3IDAgUiA2OCAwIFIgNjkgMCBSIDY5IDAgUiA2OSAwIFIgNzAgMCBSIDcxIDAgUiA3MSAwIFIgNzEgMCBSIDcxIDAgUiA3MSAwIFIgNzEgMCBSIDcxIDAgUiA3MiAwIFIgMjggMCBSIDI5IDAgUiAzMCAwIFIgNzMgMCBSIDc0IDAgUiA3NCAwIFIgNzQgMCBSIDc1IDAgUiA3NiAwIFIgNzYgMCBSIDc2IDAgUiA3NyAwIFIgNzggMCBSIDc4IDAgUiA3OCAwIFIgNzkgMCBSIDgwIDAgUiA4MSAwIFIgODEgMCBSIDgxIDAgUiA4MiAwIFIgODIgMCBSIDgzIDAgUiA4NCAwIFIgODQgMCBSIDg0IDAgUiA4NSAwIFIgODUgMCBSIDg2IDAgUiA4NyAwIFIgODcgMCBSIDg4IDAgUiA4OCAwIFIgODggMCBSIDg5IDAgUiA5MCAwIFIgOTEgMCBSIDkxIDAgUiA5MSAwIFIgOTIgMCBSIDkzIDAgUiA5MyAwIFIgOTMgMCBSIDk0IDAgUiA5NSAwIFIgOTUgMCBSIDk2IDAgUiA5NyAwIFIgOTggMCBSIDk4IDAgUiA5OCAwIFIgOTkgMCBSIDEwMCAwIFIgMTAwIDAgUiAxMDAgMCBSIDEwMSAwIFIgMTAyIDAgUiAxMDIgMCBSIDEwMiAwIFIgMTAzIDAgUiAzMiAwIFIgMzMgMCBSIDM0IDAgUiAzNSAwIFIgMzYgMCBSIDM3IDAgUl0KZW5kb2JqIAoyMiAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDE5IDAgUgovSyBbMV0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1AKPj4KZW5kb2JqIAoyMyAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDE5IDAgUgovSyBbMl0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1AKPj4KZW5kb2JqIAoyNCAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDE5IDAgUgovSyBbM10KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1AKPj4KZW5kb2JqIAoyNSAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDE5IDAgUgovSyBbNF0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1AKPj4KZW5kb2JqIAoyNiAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDE5IDAgUgovSyBbNV0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1AKPj4KZW5kb2JqIAoyNyAwIG9iaiAKPDwKL1AgMTkgMCBSCi9LIFsxMDQgMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVGFibGUKPj4KZW5kb2JqIAoxMDQgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAyNyAwIFIKL0sgWzEwNSAwIFIgMTA2IDAgUiAxMDcgMCBSIDEwOCAwIFIgMTA5IDAgUl0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1RCb2R5Cj4+CmVuZG9iaiAKMTA1IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTA0IDAgUgovSyBbNDQgMCBSIDExMCAwIFIgMTExIDAgUiAxMTIgMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVFIKPj4KZW5kb2JqIAo0NCAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEwNSAwIFIKL0sgMTgKL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1NwYW4KPj4KZW5kb2JqIAoxMTAgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMDUgMCBSCi9LIFszOCAwIFIgMzkgMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVEQKPj4KZW5kb2JqIAozOCAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDExMCAwIFIKL0sgNgovVHlwZSAvU3RydWN0RWxlbQovUyAvU3Bhbgo+PgplbmRvYmogCjM5IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTEwIDAgUgovSyBbNyA4IDldCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QCj4+CmVuZG9iaiAKMTExIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTA1IDAgUgovSyBbNDAgMCBSIDQxIDAgUl0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1RECj4+CmVuZG9iaiAKNDAgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMTEgMCBSCi9LIDEwCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9TcGFuCj4+CmVuZG9iaiAKNDEgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMTEgMCBSCi9LIFsxMSAxMiAxM10KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1AKPj4KZW5kb2JqIAoxMTIgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMDUgMCBSCi9LIFs0MiAwIFIgNDMgMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVEQKPj4KZW5kb2JqIAo0MiAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDExMiAwIFIKL0sgMTQKL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1NwYW4KPj4KZW5kb2JqIAo0MyAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDExMiAwIFIKL0sgWzE1IDE2IDE3XQovVHlwZSAvU3RydWN0RWxlbQovUyAvUAo+PgplbmRvYmogCjEwNiAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEwNCAwIFIKL0sgWzUxIDAgUiAxMTMgMCBSIDExNCAwIFIgMTE1IDAgUl0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1RSCj4+CmVuZG9iaiAKNTEgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMDYgMCBSCi9LIDMxCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9TcGFuCj4+CmVuZG9iaiAKMTEzIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTA2IDAgUgovSyBbNDUgMCBSIDQ2IDAgUl0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1RECj4+CmVuZG9iaiAKNDUgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMTMgMCBSCi9LIDE5Ci9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9TcGFuCj4+CmVuZG9iaiAKNDYgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMTMgMCBSCi9LIFsyMCAyMSAyMl0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1AKPj4KZW5kb2JqIAoxMTQgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMDYgMCBSCi9LIFs0NyAwIFIgNDggMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVEQKPj4KZW5kb2JqIAo0NyAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDExNCAwIFIKL0sgMjMKL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1NwYW4KPj4KZW5kb2JqIAo0OCAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDExNCAwIFIKL0sgWzI0IDI1IDI2XQovVHlwZSAvU3RydWN0RWxlbQovUyAvUAo+PgplbmRvYmogCjExNSAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEwNiAwIFIKL0sgWzQ5IDAgUiA1MCAwIFJdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9URAo+PgplbmRvYmogCjQ5IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTE1IDAgUgovSyAyNwovVHlwZSAvU3RydWN0RWxlbQovUyAvU3Bhbgo+PgplbmRvYmogCjUwIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTE1IDAgUgovSyBbMjggMjkgMzBdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QCj4+CmVuZG9iaiAKMTA3IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTA0IDAgUgovSyBbNTggMCBSIDExNiAwIFIgMTE3IDAgUiAxMTggMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVFIKPj4KZW5kb2JqIAo1OCAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEwNyAwIFIKL0sgNDQKL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1NwYW4KPj4KZW5kb2JqIAoxMTYgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMDcgMCBSCi9LIFs1MiAwIFIgNTMgMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVEQKPj4KZW5kb2JqIAo1MiAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDExNiAwIFIKL0sgMzIKL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1NwYW4KPj4KZW5kb2JqIAo1MyAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDExNiAwIFIKL0sgWzMzIDM0IDM1XQovVHlwZSAvU3RydWN0RWxlbQovUyAvUAo+PgplbmRvYmogCjExNyAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEwNyAwIFIKL0sgWzU0IDAgUiA1NSAwIFJdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9URAo+PgplbmRvYmogCjU0IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTE3IDAgUgovSyAzNgovVHlwZSAvU3RydWN0RWxlbQovUyAvU3Bhbgo+PgplbmRvYmogCjU1IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTE3IDAgUgovSyBbMzcgMzggMzldCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QCj4+CmVuZG9iaiAKMTE4IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTA3IDAgUgovSyBbNTYgMCBSIDU3IDAgUl0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1RECj4+CmVuZG9iaiAKNTYgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMTggMCBSCi9LIDQwCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9TcGFuCj4+CmVuZG9iaiAKNTcgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMTggMCBSCi9LIFs0MSA0MiA0M10KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1AKPj4KZW5kb2JqIAoxMDggMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMDQgMCBSCi9LIFs2NSAwIFIgMTE5IDAgUiAxMjAgMCBSIDEyMSAwIFJdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9UUgo+PgplbmRvYmogCjY1IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTA4IDAgUgovSyA1NgovVHlwZSAvU3RydWN0RWxlbQovUyAvU3Bhbgo+PgplbmRvYmogCjExOSAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEwOCAwIFIKL0sgWzU5IDAgUiA2MCAwIFJdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9URAo+PgplbmRvYmogCjU5IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTE5IDAgUgovSyA0NQovVHlwZSAvU3RydWN0RWxlbQovUyAvU3Bhbgo+PgplbmRvYmogCjYwIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTE5IDAgUgovSyBbNDYgNDcgNDhdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QCj4+CmVuZG9iaiAKMTIwIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTA4IDAgUgovSyBbNjEgMCBSIDYyIDAgUl0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1RECj4+CmVuZG9iaiAKNjEgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMjAgMCBSCi9LIDQ5Ci9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9TcGFuCj4+CmVuZG9iaiAKNjIgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMjAgMCBSCi9LIFs1MCA1MSA1Ml0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1AKPj4KZW5kb2JqIAoxMjEgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMDggMCBSCi9LIFs2MyAwIFIgNjQgMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVEQKPj4KZW5kb2JqIAo2MyAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEyMSAwIFIKL0sgNTMKL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1NwYW4KPj4KZW5kb2JqIAo2NCAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEyMSAwIFIKL0sgWzU0IDU1XQovVHlwZSAvU3RydWN0RWxlbQovUyAvUAo+PgplbmRvYmogCjEwOSAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEwNCAwIFIKL0sgWzcyIDAgUiAxMjIgMCBSIDEyMyAwIFIgMTI0IDAgUl0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1RSCj4+CmVuZG9iaiAKNzIgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMDkgMCBSCi9LIDczCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9TcGFuCj4+CmVuZG9iaiAKMTIyIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTA5IDAgUgovSyBbNjYgMCBSIDY3IDAgUl0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1RECj4+CmVuZG9iaiAKNjYgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMjIgMCBSCi9LIDU3Ci9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9TcGFuCj4+CmVuZG9iaiAKNjcgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMjIgMCBSCi9LIFs1OCA1OSA2MF0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1AKPj4KZW5kb2JqIAoxMjMgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMDkgMCBSCi9LIFs2OCAwIFIgNjkgMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVEQKPj4KZW5kb2JqIAo2OCAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEyMyAwIFIKL0sgNjEKL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1NwYW4KPj4KZW5kb2JqIAo2OSAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEyMyAwIFIKL0sgWzYyIDYzIDY0XQovVHlwZSAvU3RydWN0RWxlbQovUyAvUAo+PgplbmRvYmogCjEyNCAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEwOSAwIFIKL0sgWzcwIDAgUiA3MSAwIFJdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9URAo+PgplbmRvYmogCjcwIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTI0IDAgUgovSyA2NQovVHlwZSAvU3RydWN0RWxlbQovUyAvU3Bhbgo+PgplbmRvYmogCjcxIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTI0IDAgUgovSyBbNjYgNjcgNjggNjkgNzAgNzEgNzJdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QCj4+CmVuZG9iaiAKMjggMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxOSAwIFIKL0sgWzc0XQovVHlwZSAvU3RydWN0RWxlbQovUyAvUAo+PgplbmRvYmogCjI5IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTkgMCBSCi9LIFs3NV0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1AKPj4KZW5kb2JqIAozMCAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDE5IDAgUgovSyBbNzZdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QCj4+CmVuZG9iaiAKMzEgMCBvYmogCjw8Ci9QIDE5IDAgUgovSyBbMTI1IDAgUl0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1RhYmxlCj4+CmVuZG9iaiAKMTI1IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMzEgMCBSCi9LIFsxMjYgMCBSIDEyNyAwIFIgMTI4IDAgUiAxMjkgMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVEJvZHkKPj4KZW5kb2JqIAoxMjYgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMjUgMCBSCi9LIFs3OSAwIFIgMTMwIDAgUiAxMzEgMCBSIDEzMiAwIFJdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9UUgo+PgplbmRvYmogCjc5IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTI2IDAgUgovSyA4OQovVHlwZSAvU3RydWN0RWxlbQovUyAvU3Bhbgo+PgplbmRvYmogCjEzMCAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEyNiAwIFIKL0sgWzczIDAgUiA3NCAwIFJdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9URAo+PgplbmRvYmogCjczIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTMwIDAgUgovSyA3NwovVHlwZSAvU3RydWN0RWxlbQovUyAvU3Bhbgo+PgplbmRvYmogCjc0IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTMwIDAgUgovSyBbNzggNzkgODBdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QCj4+CmVuZG9iaiAKMTMxIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTI2IDAgUgovSyBbNzUgMCBSIDc2IDAgUl0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1RECj4+CmVuZG9iaiAKNzUgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMzEgMCBSCi9LIDgxCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9TcGFuCj4+CmVuZG9iaiAKNzYgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMzEgMCBSCi9LIFs4MiA4MyA4NF0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1AKPj4KZW5kb2JqIAoxMzIgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMjYgMCBSCi9LIFs3NyAwIFIgNzggMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVEQKPj4KZW5kb2JqIAo3NyAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEzMiAwIFIKL0sgODUKL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1NwYW4KPj4KZW5kb2JqIAo3OCAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEzMiAwIFIKL0sgWzg2IDg3IDg4XQovVHlwZSAvU3RydWN0RWxlbQovUyAvUAo+PgplbmRvYmogCjEyNyAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEyNSAwIFIKL0sgWzg5IDAgUiAxMzMgMCBSIDEzNCAwIFIgMTM1IDAgUl0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1RSCj4+CmVuZG9iaiAKODkgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMjcgMCBSCi9LIDEwOAovVHlwZSAvU3RydWN0RWxlbQovUyAvU3Bhbgo+PgplbmRvYmogCjEzMyAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEyNyAwIFIKL0sgWzgwIDAgUiA4MSAwIFIgODIgMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVEQKPj4KZW5kb2JqIAo4MCAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEzMyAwIFIKL0sgOTAKL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1NwYW4KPj4KZW5kb2JqIAo4MSAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEzMyAwIFIKL0sgWzkxIDkyIDkzXQovVHlwZSAvU3RydWN0RWxlbQovUyAvUAo+PgplbmRvYmogCjgyIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTMzIDAgUgovSyBbOTQgOTVdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QCj4+CmVuZG9iaiAKMTM0IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTI3IDAgUgovSyBbODMgMCBSIDg0IDAgUiA4NSAwIFJdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9URAo+PgplbmRvYmogCjgzIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTM0IDAgUgovSyA5NgovVHlwZSAvU3RydWN0RWxlbQovUyAvU3Bhbgo+PgplbmRvYmogCjg0IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTM0IDAgUgovSyBbOTcgOTggOTldCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QCj4+CmVuZG9iaiAKODUgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMzQgMCBSCi9LIFsxMDAgMTAxXQovVHlwZSAvU3RydWN0RWxlbQovUyAvUAo+PgplbmRvYmogCjEzNSAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEyNyAwIFIKL0sgWzg2IDAgUiA4NyAwIFIgODggMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVEQKPj4KZW5kb2JqIAo4NiAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEzNSAwIFIKL0sgMTAyCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9TcGFuCj4+CmVuZG9iaiAKODcgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMzUgMCBSCi9LIFsxMDMgMTA0XQovVHlwZSAvU3RydWN0RWxlbQovUyAvUAo+PgplbmRvYmogCjg4IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTM1IDAgUgovSyBbMTA1IDEwNiAxMDddCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QCj4+CmVuZG9iaiAKMTI4IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTI1IDAgUgovSyBbOTYgMCBSIDEzNiAwIFIgMTM3IDAgUiAxMzggMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVFIKPj4KZW5kb2JqIAo5NiAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEyOCAwIFIKL0sgMTIwCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9TcGFuCj4+CmVuZG9iaiAKMTM2IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTI4IDAgUgovSyBbOTAgMCBSIDkxIDAgUl0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1RECj4+CmVuZG9iaiAKOTAgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMzYgMCBSCi9LIDEwOQovVHlwZSAvU3RydWN0RWxlbQovUyAvU3Bhbgo+PgplbmRvYmogCjkxIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTM2IDAgUgovSyBbMTEwIDExMSAxMTJdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QCj4+CmVuZG9iaiAKMTM3IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTI4IDAgUgovSyBbOTIgMCBSIDkzIDAgUl0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1RECj4+CmVuZG9iaiAKOTIgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMzcgMCBSCi9LIDExMwovVHlwZSAvU3RydWN0RWxlbQovUyAvU3Bhbgo+PgplbmRvYmogCjkzIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTM3IDAgUgovSyBbMTE0IDExNSAxMTZdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QCj4+CmVuZG9iaiAKMTM4IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTI4IDAgUgovSyBbOTQgMCBSIDk1IDAgUl0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1RECj4+CmVuZG9iaiAKOTQgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMzggMCBSCi9LIDExNwovVHlwZSAvU3RydWN0RWxlbQovUyAvU3Bhbgo+PgplbmRvYmogCjk1IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTM4IDAgUgovSyBbMTE4IDExOV0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1AKPj4KZW5kb2JqIAoxMjkgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMjUgMCBSCi9LIFsxMDMgMCBSIDEzOSAwIFIgMTQwIDAgUiAxNDEgMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVFIKPj4KZW5kb2JqIAoxMDMgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxMjkgMCBSCi9LIDEzMwovVHlwZSAvU3RydWN0RWxlbQovUyAvU3Bhbgo+PgplbmRvYmogCjEzOSAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEyOSAwIFIKL0sgWzk3IDAgUiA5OCAwIFJdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9URAo+PgplbmRvYmogCjk3IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTM5IDAgUgovSyAxMjEKL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1NwYW4KPj4KZW5kb2JqIAo5OCAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEzOSAwIFIKL0sgWzEyMiAxMjMgMTI0XQovVHlwZSAvU3RydWN0RWxlbQovUyAvUAo+PgplbmRvYmogCjE0MCAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDEyOSAwIFIKL0sgWzk5IDAgUiAxMDAgMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVEQKPj4KZW5kb2JqIAo5OSAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDE0MCAwIFIKL0sgMTI1Ci9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9TcGFuCj4+CmVuZG9iaiAKMTAwIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTQwIDAgUgovSyBbMTI2IDEyNyAxMjhdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QCj4+CmVuZG9iaiAKMTQxIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTI5IDAgUgovSyBbMTAxIDAgUiAxMDIgMCBSXQovVHlwZSAvU3RydWN0RWxlbQovUyAvVEQKPj4KZW5kb2JqIAoxMDEgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxNDEgMCBSCi9LIDEyOQovVHlwZSAvU3RydWN0RWxlbQovUyAvU3Bhbgo+PgplbmRvYmogCjEwMiAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDE0MSAwIFIKL0sgWzEzMCAxMzEgMTMyXQovVHlwZSAvU3RydWN0RWxlbQovUyAvUAo+PgplbmRvYmogCjMyIDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTkgMCBSCi9LIFsxMzRdCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QCj4+CmVuZG9iaiAKMzMgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxOSAwIFIKL0sgWzEzNV0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1AKPj4KZW5kb2JqIAozNCAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDE5IDAgUgovSyBbMTM2XQovVHlwZSAvU3RydWN0RWxlbQovUyAvUAo+PgplbmRvYmogCjM1IDAgb2JqIAo8PAovUGcgNCAwIFIKL1AgMTkgMCBSCi9LIFsxMzddCi9UeXBlIC9TdHJ1Y3RFbGVtCi9TIC9QCj4+CmVuZG9iaiAKMzYgMCBvYmogCjw8Ci9QZyA0IDAgUgovUCAxOSAwIFIKL0sgWzEzOF0KL1R5cGUgL1N0cnVjdEVsZW0KL1MgL1AKPj4KZW5kb2JqIAozNyAwIG9iaiAKPDwKL1BnIDQgMCBSCi9QIDE5IDAgUgovSyBbMTM5XQovVHlwZSAvU3RydWN0RWxlbQovUyAvUAo+PgplbmRvYmogCjEyIDAgb2JqIFsyNzggMCAwIDAgMCAwIDAgMCAzMzMgMzMzIDAgMCAyNzggMzMzIDI3OCAyNzggNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiAwIDU1NiAyNzggMCAwIDU4NCAwIDAgMCA2NjcgNjY3IDcyMiA3MjIgNjY3IDYxMSA3NzggMCAyNzggNTAwIDY2NyA1NTYgODMzIDcyMiA3NzggNjY3IDAgNzIyIDY2NyA2MTEgMCA2NjcgOTQ0IDAgMCAwIDAgMCAwIDAgMCAwIDU1NiA1NTYgNTAwIDU1NiA1NTYgMjc4IDU1NiA1NTYgMjIyIDIyMiA1MDAgMjIyIDgzMyA1NTYgNTU2IDU1NiAwIDMzMyA1MDAgMjc4IDU1NiA1MDAgNzIyIDAgNTAwIDUwMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTU2XQplbmRvYmogCjE0IDAgb2JqIFsyNTAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAyNTAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDU2NCAwIDAgOTIxIDcyMiA2NjcgNjY3IDcyMiA2MTEgMCA3MjIgNzIyIDMzMyAzODkgMCA2MTEgODg5IDcyMiA3MjIgNTU2IDAgNjY3IDU1NiA2MTEgNzIyIDAgMCAwIDcyMiAwIDMzMyAwIDMzMyAwIDAgMCA0NDQgMCA0NDQgNTAwIDQ0NCAwIDUwMCA1MDAgMjc4IDAgMCAwIDc3OCA1MDAgNTAwIDAgMCAzMzMgMzg5IDI3OCAwIDUwMF0KZW5kb2JqIAoxNiAwIG9iaiBbMjc4IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNjExIDAgMCAwIDAgMCA2MTEgODMzIDAgMCAwIDAgMCAwIDAgMCAwIDk0NCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTU2IDYxMSA1NTYgMCA2MTEgNjExIDI3OCAyNzggNTU2IDI3OCA4ODkgNjExIDYxMSAwIDAgMzg5IDU1NiAzMzMgNjExIDU1Nl0KZW5kb2JqIAoxNDIgMCBvYmogCjw8Ci9SIDMKL1AgLTE4NTIKL08gKHWrmG5uxFnOITeqbmFcXKCuAnccw/R2+L2kqV1cdIhccvhnKQovRmlsdGVyIC9TdGFuZGFyZAovTGVuZ3RoIDEyOAovViAyCi9VICjBoRwhoaepIwH58NjqHiuxAAAAAAAAAAAAAAAAAAAAACkKPj4KZW5kb2JqIAoxNDMgMCBvYmogCjw8Ci9DcmVhdG9yIChu2Jq6Z1V5b+BBXGaHSmy4WVtcKPLG/VxiWSJhmWXjFdaS8LpMBMBcKSRK7mziKQovVGl0bGUgKNtV84MOTxpkhRNqnSR8zF8+Y9LXk4Y0bQarXHTlf8/68d5cdGrSRX0grBjuKQovQXV0aG9yICjVVfOcKQovUHJvZHVjZXIgKG7YmrpnVXlv4EFcZodKbLhZW1wo8sb9XGJZImGZZeMV1pLwukwEwFwpJErubOIpCi9Nb2REYXRlICjUHajHVQ5JP9EEPdl4LYgPcH7Dlc2WfikKL0NyZWF0aW9uRGF0ZSAo1B2ox1UOST/RBD3ZeC2ID3B+w5XNln4pCj4+CmVuZG9iaiB4cmVmCjAgMTQ0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAwMTMyIDAwMDAwIG4gCjAwMDAwMDU4ODkgMDAwMDAgbiAKMDAwMDAwMDE5MSAwMDAwMCBuIAowMDAwMDA0OTY1IDAwMDAwIG4gCjAwMDAwMDQ5MDcgMDAwMDAgbiAKMDAwMDAwNTAyMyAwMDAwMCBuIAowMDAwMDA0NDg5IDAwMDAwIG4gCjAwMDAwMDU0NjEgMDAwMDAgbiAKMDAwMDAwMDUxOSAwMDAwMCBuIAowMDAwMDA0NjY1IDAwMDAwIG4gCjAwMDAwMTc3ODUgMDAwMDAgbiAKMDAwMDAwNTIwOSAwMDAwMCBuIAowMDAwMDE4MzM0IDAwMDAwIG4gCjAwMDAwMDU2NDIgMDAwMDAgbiAKMDAwMDAxODYwNSAwMDAwMCBuIAowMDAwMDA2Mjg4IDAwMDAwIG4gCjAwMDAwMDYwMDIgMDAwMDAgbiAKMDAwMDAwNjMyOSAwMDAwMCBuIAowMDAwMDA2NTg4IDAwMDAwIG4gCjAwMDAwMDY1MTMgMDAwMDAgbiAKMDAwMDAwNzU5NSAwMDAwMCBuIAowMDAwMDA3NjcwIDAwMDAwIG4gCjAwMDAwMDc3NDUgMDAwMDAgbiAKMDAwMDAwNzgyMCAwMDAwMCBuIAowMDAwMDA3ODk1IDAwMDAwIG4gCjAwMDAwMDc5NzAgMDAwMDAgbiAKMDAwMDAxMjg1OCAwMDAwMCBuIAowMDAwMDEyOTM0IDAwMDAwIG4gCjAwMDAwMTMwMTAgMDAwMDAgbiAKMDAwMDAxMzA4NiAwMDAwMCBuIAowMDAwMDE3MzIzIDAwMDAwIG4gCjAwMDAwMTc0MDAgMDAwMDAgbiAKMDAwMDAxNzQ3NyAwMDAwMCBuIAowMDAwMDE3NTU0IDAwMDAwIG4gCjAwMDAwMTc2MzEgMDAwMDAgbiAKMDAwMDAxNzcwOCAwMDAwMCBuIAowMDAwMDA4NDM4IDAwMDAwIG4gCjAwMDAwMDg1MTUgMDAwMDAgbiAKMDAwMDAwODY4NSAwMDAwMCBuIAowMDAwMDA4NzYzIDAwMDAwIG4gCjAwMDAwMDg5MzYgMDAwMDAgbiAKMDAwMDAwOTAxNCAwMDAwMCBuIAowMDAwMDA4MjcwIDAwMDAwIG4gCjAwMDAwMDkzNzIgMDAwMDAgbiAKMDAwMDAwOTQ1MCAwMDAwMCBuIAowMDAwMDA5NjIzIDAwMDAwIG4gCjAwMDAwMDk3MDEgMDAwMDAgbiAKMDAwMDAwOTg3NCAwMDAwMCBuIAowMDAwMDA5OTUyIDAwMDAwIG4gCjAwMDAwMDkyMDQgMDAwMDAgbiAKMDAwMDAxMDMxMCAwMDAwMCBuIAowMDAwMDEwMzg4IDAwMDAwIG4gCjAwMDAwMTA1NjEgMDAwMDAgbiAKMDAwMDAxMDYzOSAwMDAwMCBuIAowMDAwMDEwODEyIDAwMDAwIG4gCjAwMDAwMTA4OTAgMDAwMDAgbiAKMDAwMDAxMDE0MiAwMDAwMCBuIAowMDAwMDExMjQ4IDAwMDAwIG4gCjAwMDAwMTEzMjYgMDAwMDAgbiAKMDAwMDAxMTQ5OSAwMDAwMCBuIAowMDAwMDExNTc3IDAwMDAwIG4gCjAwMDAwMTE3NTAgMDAwMDAgbiAKMDAwMDAxMTgyOCAwMDAwMCBuIAowMDAwMDExMDgwIDAwMDAwIG4gCjAwMDAwMTIxODMgMDAwMDAgbiAKMDAwMDAxMjI2MSAwMDAwMCBuIAowMDAwMDEyNDM0IDAwMDAwIG4gCjAwMDAwMTI1MTIgMDAwMDAgbiAKMDAwMDAxMjY4NSAwMDAwMCBuIAowMDAwMDEyNzYzIDAwMDAwIG4gCjAwMDAwMTIwMTUgMDAwMDAgbiAKMDAwMDAxMzU0NiAwMDAwMCBuIAowMDAwMDEzNjI0IDAwMDAwIG4gCjAwMDAwMTM3OTcgMDAwMDAgbiAKMDAwMDAxMzg3NSAwMDAwMCBuIAowMDAwMDE0MDQ4IDAwMDAwIG4gCjAwMDAwMTQxMjYgMDAwMDAgbiAKMDAwMDAxMzM3OCAwMDAwMCBuIAowMDAwMDE0NDkyIDAwMDAwIG4gCjAwMDAwMTQ1NzAgMDAwMDAgbiAKMDAwMDAxNDY1MyAwMDAwMCBuIAowMDAwMDE0ODMwIDAwMDAwIG4gCjAwMDAwMTQ5MDggMDAwMDAgbiAKMDAwMDAxNDk5MSAwMDAwMCBuIAowMDAwMDE1MTcwIDAwMDAwIG4gCjAwMDAwMTUyNDkgMDAwMDAgbiAKMDAwMDAxNTMzMSAwMDAwMCBuIAowMDAwMDE0MzE2IDAwMDAwIG4gCjAwMDAwMTU2OTMgMDAwMDAgbiAKMDAwMDAxNTc3MiAwMDAwMCBuIAowMDAwMDE1OTQ4IDAwMDAwIG4gCjAwMDAwMTYwMjcgMDAwMDAgbiAKMDAwMDAxNjIwMyAwMDAwMCBuIAowMDAwMDE2MjgyIDAwMDAwIG4gCjAwMDAwMTU1MjQgMDAwMDAgbiAKMDAwMDAxNjY0MiAwMDAwMCBuIAowMDAwMDE2NzIxIDAwMDAwIG4gCjAwMDAwMTY4OTggMDAwMDAgbiAKMDAwMDAxNjk3NyAwMDAwMCBuIAowMDAwMDE3MTU2IDAwMDAwIG4gCjAwMDAwMTcyMzYgMDAwMDAgbiAKMDAwMDAxNjQ3MiAwMDAwMCBuIAowMDAwMDA4MDQ1IDAwMDAwIG4gCjAwMDAwMDgxNjMgMDAwMDAgbiAKMDAwMDAwOTA5NyAwMDAwMCBuIAowMDAwMDEwMDM1IDAwMDAwIG4gCjAwMDAwMTA5NzMgMDAwMDAgbiAKMDAwMDAxMTkwOCAwMDAwMCBuIAowMDAwMDA4MzQ4IDAwMDAwIG4gCjAwMDAwMDg1OTUgMDAwMDAgbiAKMDAwMDAwODg0NiAwMDAwMCBuIAowMDAwMDA5MjgyIDAwMDAwIG4gCjAwMDAwMDk1MzMgMDAwMDAgbiAKMDAwMDAwOTc4NCAwMDAwMCBuIAowMDAwMDEwMjIwIDAwMDAwIG4gCjAwMDAwMTA0NzEgMDAwMDAgbiAKMDAwMDAxMDcyMiAwMDAwMCBuIAowMDAwMDExMTU4IDAwMDAwIG4gCjAwMDAwMTE0MDkgMDAwMDAgbiAKMDAwMDAxMTY2MCAwMDAwMCBuIAowMDAwMDEyMDkzIDAwMDAwIG4gCjAwMDAwMTIzNDQgMDAwMDAgbiAKMDAwMDAxMjU5NSAwMDAwMCBuIAowMDAwMDEzMTYxIDAwMDAwIG4gCjAwMDAwMTMyNzEgMDAwMDAgbiAKMDAwMDAxNDIwOSAwMDAwMCBuIAowMDAwMDE1NDE3IDAwMDAwIG4gCjAwMDAwMTYzNjQgMDAwMDAgbiAKMDAwMDAxMzQ1NiAwMDAwMCBuIAowMDAwMDEzNzA3IDAwMDAwIG4gCjAwMDAwMTM5NTggMDAwMDAgbiAKMDAwMDAxNDM5NSAwMDAwMCBuIAowMDAwMDE0NzMzIDAwMDAwIG4gCjAwMDAwMTUwNzMgMDAwMDAgbiAKMDAwMDAxNTYwMyAwMDAwMCBuIAowMDAwMDE1ODU4IDAwMDAwIG4gCjAwMDAwMTYxMTMgMDAwMDAgbiAKMDAwMDAxNjU1MiAwMDAwMCBuIAowMDAwMDE2ODA3IDAwMDAwIG4gCjAwMDAwMTcwNjQgMDAwMDAgbiAKMDAwMDAxODg0MiAwMDAwMCBuIAowMDAwMDE4OTk1IDAwMDAwIG4gCnRyYWlsZXIKCjw8Ci9FbmNyeXB0IDE0MiAwIFIKL0luZm8gMTQzIDAgUgovUm9vdCAxIDAgUgovU2l6ZSAxNDQKL0lEIFs8OWUzYTM3MzI0ZjhlYjVjMDA0YjFkMGM3NGJhY2U5MjA+PDJhNGVhYjMwYWQ1MDI5MDljZDlmMDBiYjI3YWY0NzY2Pl0KPj4Kc3RhcnR4cmVmCjE5MjgwCiUlRU9GCg==</Datastring> <Wrknmr> <IdWrknmr>1945</IdWrknmr> </Wrknmr> <Dnstvbnd> <IdDnstvbnd>252</IdDnstvbnd> <PersNr>1945</PersNr> <Vrzm> <VrzmgvlId>1945 1 1809</VrzmgvlId> <DatEerstVrzmdg>2022-05-24</DatEerstVrzmdg> </Vrzm> </Dnstvbnd> </Document> </Documenten>              
Volledig artikel weergeven
16-11-2022 15:25 (Bijgewerkt op 24-05-2023)
  • 0 Antwoorden
  • 0 kudos
  • 752 Weergaven
The File API allows you to download or upload files directly from Youforce, over HTTPS using the tool of your choice.    This API is controlled available and has consumption limitations. See API statuses   Concepts Concept Description File API Public endpoint to upload/list/download the files. In the request to File API, application id, business type and tenant are being identified. Once the files are uploaded to File API by a publisher application, the authorized subscriber application can list, download and delete the files. Business Type The files which are related to the same “business” are functionally grouped in File types called “Business types”. File types are represented by an integer called Business Type Id. Client Application Client Applications are the users of the system. They are identified by an application Id. Client Applications are also authorized to tenantId(s).Client application needs to obtain a authentication token by using credentials (client id and client secret).The token includes application id, tenant and permission of the application. Client Applications could be authorized either as publisher or subscriber of a business type. Publisher Publisher is a Client Application that can upload files of authorized business types and authorized tenants. Subscriber Subscriber is a Client Application that can download/list the files of authorized business types and authorized tenants. Tenant HR Core Client. Tenants are represented by tenant ids. Authentication We follow current industry standards and best practices. Authentication/authorization is not an exception. As part of the Identity and Access Management Strategy for system-to-system integrations, the File API is based on OAuth 2.0 and the authorization grant Client Credentials. Every API consumer system will be provisioned in our API Gateway as a Client Application (App). Client ID and Client Secret will be provided to be used by Apps as credentials. Thus, Apps will be able then to authenticate and get an access token (JWT) within the response payload. Subsequent requests authorization will be based on that access token previously retrieved.   Tenant Authorization Client Applications (apps) need to be authorized to the corresponding Tenant (HR Core Client) in order to consume the API. By default, the applications are authorized to TenantId: sandbox.   File Type Authorization Client applications (apps) need to be authorized as publisher or subscriber of business types By default,sandbox apps are authorized to the Sandbox File Types.   Supported File Types The File API has been designed to support a specific set of use cases. This may be extended over time, based on customer feedback. See list of Supported File Types.   Retention Period The files will be physically deleted from Storage automatically after the retention period expires (1 month). The metadata of the files (FileName, tenantId , BusinessTypeId, etc) is deleted after 6 months.   Samples Here is an example of downloading a file using curl, available on most operating systems:  curl.exe https://api.raet.com/mft/v1.0/files/%fileid%?role=subscriber ^ --header "Authorization: Bearer eyJhbGciOiJSUzI1NiIs..." ^ --header "x-raet-tenant-id: 1234567" ^ --header "Accept: application/octet-stream"  ^ --output @C:\Youforce\somefile.xml   See complete examples for curl (Batch), Powershell and .Net in Github. Getting started See the File API documentation to get started  
Volledig artikel weergeven
17-01-2022 19:12 (Bijgewerkt op 31-01-2022)
  • 0 Antwoorden
  • 0 kudos
  • 791 Weergaven